
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 |
| explorer@domain | explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |
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).