Introduction à Pollenisator
Pollenisator est un projet de recherche et développement chez AlgoSecure qui a progressé au cours des dernières années pour répondre à nos besoins. Parce que nous pensons qu'il peut aider à répondre aux vôtres et ainsi participer à la sécurité du plus grand nombre, nous avons décidé de le rendre open source.
Ce projet a pour but de simplifier le processus d'un pentest collaboratif. Il répond à des problématiques que chaque auditeur de sécurité a déjà rencontrées : "Où en sont mes scans ?", "Qu'ont trouvé mes collègues pentesters ?", "Quels défauts sont présents ?", "J'aurais dû lancer ce scan avant...". Tout cela depuis une interface graphique permettant de rapidement parcourir l'ensemble des menus et données.
Le principe de base de Pollenisator est de pré-rentrer des lignes de commandes qui vont appeler des outils à votre place automatiquement en respectant certains paramètres (périmètre, priorités, nombre d'exécution parallèle max...). Par conséquent, vous pouvez remplacer toutes les commandes par celles de VOTRE choix et/ou en ajouter de nouvelles.
Vous pourrez implémenter votre propre logique métier, par exemple:
- Reconnaissance rapide de port avec nmap
- Pour chaque service web identifié:
- Déterminer le type avec whatweb
- Si c'est un WordPress -> wpscan
- Si c'est un joomla -> joomscan...
- Lister les répertoires avec dirsearch
- Si 200 - Trace.axd -> Marqué comme "intéressant"
- ...
- Déterminer le type avec whatweb
- Pour chaque service samba identifié:
- ...
Architecture
Pollenisator est découpé en trois acteurs:
- Le serveur: Il s'agit simplement d'une base de données et d'un dépôt de fichier accessible par tous les acteurs.
- Les clients: chaque pentester doit installer le client graphique pour interagir avec les données du pentest.
- Les workers: les workers sont simplement des machines (ou Docker) désignées pour exécuter les outils de sécurité de votre choix (nmap, dirsearch ...)
Paramétrage des commandes
Pollenisator supporte par défaut un certains nombres de commandes pré-chargée dans sa base de commandes. Ces commandes correspondent à des outils très répendus dans le milieu des pentesters et permettent d'avoir une bonne base pour les pentests Web et LAN.
Ensuite chaque auditeur peut les compléter par celles de son choix et profiter des plugins de commandes développés par la communauté.
Des paramètres sont proposés pour ajuster les cibles de l'outil mais aussi la charge qu'ils vont provoquer sur les cibles du pentest.
Paramétrage du pentest
Pollenisator vous permet de renseigner le périmètre du pentest, l'intervalle de temps durant lequel des outils pourront être exécutés, le type de pentest et les pentesteurs participant au projet.
Les objets périmètres (scope) peuvent représenter : Une plage d'ip, une ip ou un domaine. Et là encore, des options vous permettent de contrôler l'extension du périmètre à de nouvelles cibles, permettant ainsi d'explorer les sous-domaines de la cible par exemple.
Toutes les commandes renseignées ne sont pas lancés pour chaque pentest. Le type du pentest renseigné permet d'écarter ceux inadaptés au contexte, par exemple, il est assez rare d'exécuter CrackMapExec (outil de prise de contrôle de machines Windows) lors d'un pentest web.
Lancer un scan automatique
Chaque commande renseignée sera instanciée sous forme de "tool" qui est associé à un scope, une IP ou un port selon son paramétrage. Un outil de reconnaissance réseau comme nmap est considéré comme niveau network et va donc être associé à un scope.
Une des forces de Pollenisator est le scan automatique. L'orchestrateur Celery intégré dans Pollenisator va répartir les commandes renseignées parmi les workers. Pour lancer un worker avec les outils correspondant aux commandes pré-installés il suffit de démarrer le Docker fourni et de cliquer sur un bouton dans l'interface.
Les outils vont se lancer progressivement et il est possible de suivre l'avancée des résultats de plusieurs façons :
- Les outils dans la vue principale vont changer d'icône
- Un onglet "Dashboard" offre un récapitulatif du pentest
- Les plugins remontent des flags comme ToDo, P0wned, Intéressant lorsqu'un résultat est pertinent ou demande une analyse humaine.
Terminal
Les commandes pré-existantes sont nécessaires pour gagner du temps sur les cas génériques. Il est toutefois utile de pouvoir utiliser ses outils depuis la ligne de commande avec des options particulières.
Pour cela, il est possible d'utiliser un terminal préconfiguré (gnome-terminal, xterm ou xfce4-terminal) ou bien encore renseigner votre terminal préféré dans les options de Pollenisator. Puis un clic sur l'onglet Terminal permet de le démarrer avec une configuration préconçu:
Comme indiqué, il suffit alors de préfixer les commandes que vous voulez charger dans Pollenisator avec 'pollex'.
Si un plugin reconnaît l'outil qui est lancé, ce plugin sera exécuté (par exemple "pollex nmap 10.0.0.0/24" fera le scan nmap et importera automatiquement le résultat dans la base). Si l'outil est inconnu des plugins, il sera exécuté avec le plugin par défaut qui redirige sa sortie dans un fichier et créer un outil dans la vue principale de Pollenisator afin de journaliser son heure de début et fin d'exécution et de prévenir le pentesteur lors de sa finalisation.
Interagir avec la vue principale
Pour faciliter le travail collaboratif plusieurs actions sont possibles depuis la vue principale.
- Cacher des éléments
- Tagguer des élements
- Exporter les données des éléments selectionnés.
- Naviguer avec les flèches ou Shift+flèches
- Supprimer avec la touche 'Suppr' ...
Rapports
Une liste de défauts est remplie par les plugins ou par les auditeurs dans l'onglet "Report" au fur et à mesure du pentest.
Ces défauts peuvent être exportés au format Excel, Word et PowerPoint. Un mécanisme de template pour les fichiers Word et PowerPoint vous permet de préparer un format de rapport agréable à lire en utilisant des "variables" qui vont être remplacées par le moteur de génération de rapport. Des variables sont disponibles pour insérer des défauts, une récapitulatif des défauts, le nom du projet...
Mot de la fin
L'une des forces d'AlgoSecure est de proposer à nos clients des tests d'intrusion réalisés en équipe, c'est à dire au minimum par binômes de deux auditeurs, afin de bénéficier de plusieurs expériences et points de vue. L'outil Pollenisator permet de faciliter grandement ce travail collaboratif entre nos auditeurs, en synchronisant la remontée d'informations entre eux, et en leur permettant de suivre le déroulement d'un audit.
Nous allons bien sûr continuer à l'améliorer en étant attentifs à vos retours. Si vous rencontrez des bugs ou que vous souhaitez des fonctionnalités supplémentaires, nous vous invitons à créer un ticket sur notre GitHub.
Installer Pollenisator
La procédure d'installation est décrite entièrement dans le wiki de la page Github du projet.
À propos : Le blog d'AlgoSecure est un espace sur lequel notre équipe toute entière peut s'exprimer. Notre personnel marketing et commercial vous donne des informations sur la vie et l'évolution de notre société spécialisée en sécurité sur Lyon. Nos consultants techniques, entre deux tests d'intrusion ou analyses de risque, vous donnent leur avis ainsi que des détails techniques sur l'exploitation d'une faille de sécurité informatique. Ils vous expliqueront également comment sécuriser votre système d'informations ou vos usages informatiques particuliers, avec autant de méthodologie et de pédagogie que possible. Vous souhaitez retrouver sur ce blog des informations spécifiques sur certains sujets techniques ? N'hésitez pas à nous en faire part via notre formulaire de contact, nous lirons vos idées avec attention. Laissez-vous guider par nos rédacteurs : Alexandre, Amine, Antonin, Arnaud, Benjamin, Enzo, Fabien, Françoise, Gilles, Jean-Charles, Jean-Philippe, Jonathan, Joël, Joëlie, Julien, Jéromine, Ludovic, Lyse, Nancy, Natacha, Nicolas, Pierre, PierreG, Sébastien, Tristan, Yann, et bonne visite !