
Multi-Agenten-System für automatisierte Penetrationstests (MASAPT)
❗ Haftungsausschluss
Dieses Tool wurde für akademische und Forschungszwecke im Rahmen eines Universitätskurses entwickelt. Die Verwendung von MASAPT zum Angriff auf Ziele ohne vorherige Zustimmung ist illegal.
Die Entwickler übernehmen keine Verantwortung für Schäden, die mit diesem Tool verursacht werden, und lehnen jede böswillige Nutzung von MASAPT ab. Dieses Tool ist zu diesem Zeitpunkt nicht für den Einsatz in einer professionellen Umgebung gedacht, es ist nur ein Proof-of-Concept für das zugrundeliegende theoretische Modell.
Multi-Agenten-System für automatisiertes Penetration Testing 🐱💻

Ein autonomes System von SPADE-Agenten, die über XMPP kommunizieren, um Penetrationstests zu koordinieren und durchzuführen. In einem CLI-Tool!
Gib die URL ein, warte ein wenig, lies den Bericht!

Es ist ein Proof-of-Concept, ein Multi-Agenten-System, entwickelt in Python, das dazu gedacht ist, den Prozess des Penetrationstests auf strukturierte und intelligente Weise zu automatisieren.
Das ultimative Ziel ist es, ein funktionierendes, flexibles, verteiltes, CLI-basiertes Pentesting-Tool zu schaffen, das zur Automatisierung von Penetrationstestaufgaben verwendet werden kann.
Aktuelle Funktionen:
Zukünftige Pläne und Funktionen sind hier aufgelistet.
Schwierig.
Es gibt eine ganze Reihe von Voraussetzungen und Anforderungen, die installiert werden müssen:
Neben Python und Pentesting-Tools, die auf Kali zu finden sind, benötigen Sie auch Zugang zu einem XMPP-Dienst. Zum Testen des Systems habe ich ejabberd verwendet, das lokal läuft.
Um die Agenten auf Ihrem XMPP-Server Ihrer Wahl auszuführen, müssen Sie die folgenden Benutzer erstellen. Sie können natürlich andere Benutzer erstellen, aber dann müssen Sie die neuen JID- und PWD-Parameter beim Erstellen von Agenten im masapt-Skript übergeben.
| JID | PASSWORD |
|---|---|
| repoter@domain | repoterSecret |
Nachdem die Voraussetzungen installiert und XMPP eingerichtet wurde:
In das Projektverzeichnis wechseln
cd ../MASAPT
Verzeichnis zum PATH hinzufügen
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
Python-Anforderungen installieren
pip install -r requirements.txt
masapt-Skript ausführbar machen
chmod +x masapt
Starten Sie das System mit:
masapt -t url/to/target
Weitere Agenten:
Erweitern Sie Explorer.py, damit es:
Erweitern Sie SQLinjector.py, damit es:
Erweitern Sie Coordinator.py, damit es:
Das MASAPT-System wurde als modular, verteilt und pragmatisch konzipiert. Das bedeutet, dass die Agenten, die das System bilden, unabhängig vom Hauptprozess sind, erweiterbar und vorhandene, 'kampferprobte' Pentesting-Tools verwenden.
Um die angestrebten Ziele zu erreichen, werden Agenten als Teil eines Drei-Ebenen-Modells entwickelt, das von den Standard-Pentest-Phasen (Planung - Ausführung - Nachbereitung) abgeleitet ist. Eine hohe Übersicht des genannten Modells ist unten auf Img1 zu sehen.
Alle theoretischen Konzepte in dieser Übersicht wurden bereits im Code implementiert (abgesehen von der Idee für die Zukunft - Img 8.). Diese Konzepte sollten auch bei zukünftigen Upgrades des Systems implementiert werden.
Die Hauptidee hinter dem Drei-Ebenen-Modell ist es, ein Framework bereitzustellen, das zur Organisation und Klassifizierung von Agenten in diesem System verwendet wird.
Die erste Ebene des Modells enthält den/die Explorer-Agenten, die mit der Durchführung von OSINT und dem Sammeln nützlicher Informationen über das Ziel beauftragt sind.
Die zweite Ebene enthält den Coordinator-Agenten und die Exploit-Agenten. Der Coordinator ist ein einzelner Agent, der entscheidet, welche Exploit-Agenten an den aktuellen Tests teilnehmen. Exploit-Agenten sind, wie der Name schon sagt, diejenigen, die Exploits ausführen - SQL-Injection, XSS, DoS, Buffer Overflow... Es kann viele dieser Exploit-Agenten geben.
Die dritte Ebene enthält den Reporter, dessen Aufgabe es ist, alle Exploit-Daten, Ergebnisse und Datendumps von allen Exploit-Agenten zu sammeln und in einem abschließenden Bericht zusammenzufassen. Der Bericht wird dann dem Benutzer angezeigt und lokal gespeichert.
Im ersten Bild stellen dicke Pfeile den Datenfluss im Modell dar.

Img2 zeigt dasselbe Modell wie das erste Bild, jedoch detaillierter - die Agenten sind deutlich in ihren jeweiligen Ebenen zu sehen. Die durchgehenden Pfeile in diesem Bild stellen wieder den Datenfluss im Modell dar, was folglich zeigt, welche Agenten miteinander kommunizieren. Es ist ersichtlich, dass der Explorer-Agent Daten an den Coordinator-Agenten sendet, der dann wiederum einige Daten an die Exploit-Agenten (SQLinjector, agent2, agent3) sendet. Schließlich werden alle von den Exploit-Agenten gesammelten Daten an den Reporter-Agenten weitergegeben, der sie dann zusammenstellt, zusammenfasst und dem Benutzer präsentiert.
Es ist auch ersichtlich, dass nur Explorer- und Exploit-Agenten (SQLinjector) mit der äußeren Umgebung (Testziel) interagieren. Dies wird durch zweiseitige gepunktete Pfeile dargestellt.
Wie bereits erwähnt, ist eines der Merkmale des MASAPT-Systems, dass es verteilt ist. Ein Aspekt davon wurde bereits implementiert, da alle Agenten als unabhängige Programme implementiert und vom Hauptskript (masapt) ausgeführt werden.
Img 3. zeigt, wie das aktuelle System eingerichtet und getestet wurde. Es ist ersichtlich, dass die Agenten die SPADE-Umgebung verwenden, um über den XMPP-Server (ejabberd) zu kommunizieren, der auf dem lokalen System eingerichtet ist. Das Testziel (SQLi Labs) ist ebenfalls auf dem lokalen System eingerichtet. Diese Einrichtung eignet sich gut zum Testen des Systems, zeigt aber nicht die volle Leistungsfähigkeit von MASAPT als verteiltes System.
Img 4. zeigt hingegen eine mögliche zukünftige Implementierung von MASAPT. Es zeigt ein verteiltes Multi-Agenten-System, das XMPP zur Kommunikation und Docker zur Ausführung auf vielen verschiedenen Systemen verwendet. Durchgehende Pfeile zeigen wieder den Kommunikations- und Datenflussaspekt des Systems und veranschaulichen, wie die Agenten ihre Daten über einen zentralen XMPP-Server senden und empfangen.
Der Hauptgrund für die Kommunikation der Agenten über XMPP ist die Bereitstellung einer zuverlässigen, sprachunabhängigen Möglichkeit für die Agenten zur Kommunikation. Mit diesem Ansatz müssen nicht alle zukünftigen Agenten in Python geschrieben werden oder die SPADE-Umgebung verwenden.
Der Grund dafür ist, dass es in Zukunft einen Anwendungsfall für ein anderes System als Teil von MASAPT geben könnte (z. B. Agenten, die in anderen Programmiersprachen geschrieben sind). Dieser 'XMPP-Ansatz' ist daher der beste Weg, um diese Art von Flexibilität für das System zu bieten.
Neben der Kommunikationsfähigkeit ist das Verhalten der zweitwichtigste Aspekt eines jeden Agenten. MASAPT-Agenten und ihr Verhalten werden mit einer Reihe von Zuständen modelliert, was sie zu endlichen Zustandsmaschinen macht. Die SPADE-Umgebung bietet gute Unterstützung für die Erstellung endlicher Zustandsmaschinen.
Die folgenden Diagramme zeigen alle möglichen Zustände, in denen sich ein Agent zu jedem Zeitpunkt befinden kann. Die Diagramme zeigen auch, welche Ereignisse dazu führen, dass der Agent in den nächsten Zustand wechselt. Alle zukünftigen Agenten sollten auf die gleiche Weise implementiert werden.
Alle zukünftigen Exploit-Agenten (z. B. DoS, XSS...) sollten unter Verwendung des Diagramms aus Img 8. als Vorlage implementiert werden.


[1] Großer Dank an Audi-1 und seine hervorragenden SQLI labs zum Testen von fehlerbasierter, blinder boolescher und zeitbasierter SQL-Injection!
| explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |