
Système multi-agent pour les tests de pénétration automatisés (MASAPT)
❗ Avertissement
Cet outil est développé à des fins académiques et de recherche dans le cadre d'un cours universitaire. L'utilisation de MASAPT pour attaquer des cibles sans consentement préalable est illégale.
Les développeurs déclinent toute responsabilité pour les dommages causés par cet outil et condamnent toute utilisation malveillante de MASAPT. Cet outil n'est pas destiné à être utilisé dans un environnement professionnel à ce stade, il s'agit simplement d'une preuve de concept pour le modèle théorique sous-jacent.
Système Multi-Agent pour le Test d'Intrusion Automatisé 🐱💻

Un système autonome d'agents SPADE communiquant via XMPP pour coordonner et effectuer des tests d'intrusion. Dans un outil CLI !
Entrez l'URL, attendez un peu, lisez le rapport !

C'est une preuve de concept, un système multi-agent, développé en Python, destiné à être utilisé pour automatiser le processus de tests d'intrusion de manière structurée et intelligente.
L'objectif ultime est de créer un outil de pentesting fonctionnel, flexible, distribué, basé sur CLI, pouvant être utilisé pour automatiser les tâches de tests d'intrusion.
Fonctionnalités actuelles :
Les projets et fonctionnalités futurs sont listés ici.
Difficile.
Il y a un certain nombre de prérequis et dépendances à installer :
En plus de Python et des outils de pentesting disponibles sur Kali, vous avez également besoin d'accéder à un service XMPP. Pour tester le système, j'ai utilisé ejabberd fonctionnant localement.
Pour exécuter les agents sur votre serveur XMPP de choix, vous devrez créer les utilisateurs suivants. Vous pouvez bien sûr créer d'autres utilisateurs, mais vous devrez alors passer les nouveaux paramètres JID et PWD lors de la création des agents dans le script masapt.
| JID | MOT DE PASSE |
|---|---|
| repoter@domain | repoterSecret |
Après avoir installé les prérequis et configuré XMPP :
cd dans le dossier du projet
cd ../MASAPT
Ajouter le répertoire au PATH
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
Installer les dépendances Python
pip install -r requirements.txt
Rendre le script masapt exécutable
chmod +x masapt
Lancer le système avec :
masapt -t url/to/target
Plus d'agents :
Étendre Explorer.py pour qu'il puisse :
Étendre SQLinjector.py pour qu'il puisse :
Étendre Coordinator.py pour qu'il puisse :
Le système MASAPT a été conçu pour être modulaire, distribué et pragmatique. Cela signifie que les agents qui composent le système sont indépendants du processus principal, évolutifs et utilisent des outils de pentesting existants et 'éprouvés'.
Pour atteindre les objectifs visés, les agents sont développés dans le cadre d'un modèle à trois niveaux dérivé des phases standard du pentest (planification - exécution - post-exécution). Un aperçu général de ce modèle peut être vu sur Img1 ci-dessous.
Tous les concepts théoriques de cet aperçu ont déjà été implémentés dans le code (à l'exception de l'idée pour le futur - Img 8.). Ces concepts devraient continuer à être implémentés dans toute future mise à niveau du système.
L'idée principale derrière le modèle à trois niveaux est de fournir un cadre pour organiser et classer les agents dans ce système.
Le premier niveau contient le(s) agent(s) Explorer chargés de mener des OSINT et de recueillir des renseignements utiles sur la cible.
Le deuxième niveau contient l'agent Coordinateur et les agents Exploit. Le Coordinateur est un agent unique qui décide quels agents d'exploitation vont participer aux tests en cours. Les agents d'exploitation, comme leur nom l'indique, exécutent les exploits - injection SQL, XSS, DoS, débordement de tampon... Il peut y avoir plusieurs de ces agents d'exploitation.
Le troisième niveau contient le Rapporteur dont la tâche est de collecter toutes les données d'exploitation, les résultats, les vidages de données de tous les agents d'exploitation et de les résumer dans un rapport final. Le rapport est ensuite affiché à l'utilisateur et stocké localement.
Dans la première image, les flèches épaisses représentent le flux de données dans le modèle.

Img2 montre le même modèle que la première image mais avec plus de détails - les agents peuvent être clairement vus dans leurs niveaux respectifs. Les flèches pleines dans cette image représentent à nouveau le flux de données dans le modèle, ce qui montre par conséquent quels agents communiquent entre eux. On peut voir que l'agent Explorer envoie des données à l'agent Coordinateur, qui à son tour envoie certaines données aux agents Exploit (SQLinjector, agent2, agent3). Enfin, toutes les données que les agents d'exploitation collectent sont transmises à l'agent Rapporteur qui les compile, les résume et les présente à l'utilisateur.
On peut également voir que seuls les agents Explorer et Exploit (SQLinjector) interagissent avec l'environnement extérieur (cible de test). Ceci est représenté par des flèches pointillées à double sens.
Comme mentionné précédemment, l'une des caractéristiques du système MASAPT est d'être distribué. Un aspect de cela a déjà été implémenté, car tous les agents sont implémentés comme des programmes indépendants, exécutés par le script principal (masapt).
Img 3. montre comment le système actuel a été configuré et testé. On peut voir que les agents utilisent l'environnement SPADE pour communiquer via un serveur XMPP (ejabberd) installé sur le système local. La cible de test (SQLi Labs) est également installée sur le système local. Cette configuration est bonne pour tester le système mais ne montre pas toute la capacité de MASAPT en tant que système distribué.
Img 4. montre quant à elle une possible implémentation future de MASAPT. Elle montre un système multi-agent distribué qui utilise XMPP pour communiquer et Docker pour s'exécuter sur de nombreux systèmes différents. Les flèches pleines montrent à nouveau l'aspect communication et flux de données du système, indiquant comment les agents envoient et reçoivent leurs données via un serveur XMPP central.
La principale raison pour laquelle les agents communiquent via XMPP est de fournir un moyen fiable et indépendant du langage pour les agents de communiquer. Avec cette approche, tous les futurs agents n'ont pas besoin d'être écrits en Python ou d'utiliser l'environnement SPADE.
Le raisonnement derrière cela est qu'il pourrait y avoir un cas d'utilisation pour un système différent de faire partie de MASAPT à l'avenir (ex. agents écrits dans d'autres langages de programmation). Ainsi, cette 'approche XMPP' est la meilleure façon de fournir ce genre de flexibilité au système.
Outre sa capacité à communiquer, le comportement est le deuxième aspect le plus important de tout agent. Les agents MASAPT et leur comportement sont modélisés avec un ensemble d'états, ce qui en fait des machines à états finis. L'environnement SPADE offre un bon support pour la création de machines à états finis.
Les diagrammes ci-dessous montrent tous les états possibles dans lesquels un agent peut se trouver à tout moment. Les diagrammes montrent également quels événements provoquent le passage de l'agent à l'état suivant. Tous les futurs agents devraient être implémentés de la même manière.
Tous les futurs agents d'exploitation (ex. DoS, XSS...) devraient être implémentés en utilisant le diagramme Img 8. comme modèle.


[1] Un grand merci à Audi-1 et à ses excellents SQLI labs pour avoir testé les injections SQL basées sur les erreurs, booléennes aveugles et temporelles !
| explorer@domain |
| explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |