
Sistema Multi-Agente per Test di Penetrazione Automatici (MASAPT)
❗ Avvertenza
Questo strumento è sviluppato per scopi accademici e di ricerca come parte di un corso universitario. L'uso di MASAPT per attaccare bersagli senza previo consenso è illegale.
Gli sviluppatori non si assumono alcuna responsabilità per eventuali danni causati da questo strumento e condannano qualsiasi uso malintenzionato di MASAPT. Questo strumento non è destinato a essere utilizzato in alcun ambiente professionale in questo momento, è solo una prova di concetto per il modello teorico sottostante.
Multi-Agent System for Automated Penetration Testing 🐱💻

Un sistema autonomo di agenti SPADE che comunicano tramite XMPP per coordinare ed eseguire test di penetrazione. In uno strumento CLI!
Inserisci l'URL, attendi un po', leggi il report!

È un proof-of-concept, sistema multi-agente, sviluppato in Python, destinato a essere utilizzato per automatizzare il processo di test di penetrazione in modo strutturato e intelligente.
L'obiettivo finale è creare uno strumento di penetration testing funzionante, flessibile, distribuito e basato su CLI che possa essere utilizzato per automatizzare le attività di test di penetrazione.
Funzionalità attuali:
I piani e le funzionalità future sono elencati qui.
Difficile.
C'è un discreto numero di prerequisiti e requisiti da installare:
Oltre a Python e agli strumenti di penetration testing che si trovano su Kali, è necessario anche l'accesso a un servizio XMPP. Per testare il sistema ho utilizzato ejabberd in esecuzione locale.
Per eseguire gli agenti sul server XMPP di tua scelta, dovrai creare i seguenti utenti. Ovviamente puoi creare altri utenti, ma poi dovrai passare i nuovi parametri JID e PWD quando crei gli agenti nello script masapt.
| JID | PASSWORD |
|---|---|
| repoter@domain | repoterSecret |
| explorer@domain | explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |
Dopo aver installato i prerequisiti e aver configurato XMPP:
Entra nella cartella del progetto
cd ../MASAPT
Aggiungi la directory al PATH
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
Installa i requisiti Python
pip install -r requirements.txt
Rendi eseguibile lo script masapt
chmod +x masapt
Avvia il sistema con:
masapt -t url/to/target
Più agenti:
Espandi Explorer.py in modo che possa:
Espandi SQLinjector.py in modo che possa:
Espandi Coordinator.py in modo che possa:
Il sistema MASAPT è stato concepito per essere modulare, distribuito e pragmatico. Ciò significa che gli agenti che compongono il sistema sono indipendenti dal processo principale, aggiornabili e utilizzano strumenti di penetration testing esistenti e 'testati sul campo'.
Per raggiungere gli obiettivi previsti, gli agenti sono sviluppati come parte di un modello a tre livelli che deriva dalle fasi standard del pentest (pianificazione - esecuzione - post-esecuzione). Una panoramica di tale modello può essere vista nell'Immagine 1 qui sotto.
Tutti i concetti teorici in questa panoramica sono già stati implementati nel codice (tranne l'idea per il futuro - Imm. 8.). Questi concetti dovrebbero continuare a essere implementati in qualsiasi aggiornamento futuro del sistema.
L'idea principale alla base del modello a tre livelli è fornire un framework da utilizzare per organizzare e classificare gli agenti in questo sistema.
Il primo livello del modello contiene l'agente Explorer (o gli agenti) incaricato di condurre OSINT e raccogliere informazioni utili sul bersaglio.
Il secondo livello contiene l'agente Coordinator e gli agenti Exploit. Il Coordinator è un singolo agente che decide quali agenti exploit parteciperanno al test corrente. Gli agenti exploit, come suggerisce il nome, sono quelli che eseguono exploit - SQL injection, XSS, DoS, buffer overflow... Possono esserci molti di questi agenti exploit.
Il terzo livello contiene il Reporter il cui compito è raccogliere tutti i dati degli exploit, i risultati, i dump di dati da tutti gli agenti exploit e riassumerli in un report finale. Il report viene poi mostrato all'utente e archiviato localmente.
Nella prima immagine, le frecce spesse rappresentano il flusso di dati nel modello.

Immagine 2 mostra lo stesso modello della prima immagine ma in maggiore dettaglio: gli agenti possono essere chiaramente visti nei rispettivi livelli. Le frecce piene in questa immagine rappresentano nuovamente il flusso di dati nel modello, che di conseguenza mostra quali agenti comunicano tra loro. Si può vedere che l'agente Explorer invia dati all'agente Coordinator, che a sua volta invia alcuni dati agli agenti Exploit (SQLinjector, agent2, agent3). Infine, tutti i dati raccolti dagli agenti exploit vengono passati all'agente Reporter che li compila, li riassume e li presenta all'utente.
Si può anche vedere che solo gli agenti Explorer e Exploit (SQLinjector) interagiscono con l'ambiente esterno (bersaglio di test). Ciò è rappresentato con frecce tratteggiate bidirezionali.
Come accennato in precedenza, una delle caratteristiche del sistema MASAPT è che sia distribuito. Un aspetto di ciò è già stato implementato, poiché tutti gli agenti sono implementati come programmi indipendenti, eseguiti dallo script principale (masapt).
Imm. 3. mostra come il sistema attuale è stato configurato e testato. Si può vedere che gli agenti utilizzano l'ambiente SPADE per comunicare tramite server XMPP (ejabberd) che è configurato sul sistema locale. Anche il bersaglio di test (SQLi Labs) è configurato sul sistema locale. Questa configurazione è buona per testare il sistema ma non mostra la piena capacità di MASAPT come sistema distribuito.
Imm. 4. d'altra parte, mostra una possibile implementazione futura di MASAPT. Mostra un sistema multi-agente distribuito che utilizza XMPP per comunicare e Docker per essere eseguito su molti sistemi diversi. Le frecce piene mostrano ancora una volta l'aspetto della comunicazione e del flusso di dati del sistema, mostrando come gli agenti inviano e ricevono i loro dati tramite un server XMPP centrale.
Il motivo principale per cui gli agenti comunicano tramite XMPP è fornire un modo affidabile e indipendente dal linguaggio per gli agenti di comunicare. Con questo approccio, non tutti gli agenti futuri devono essere scritti in Python o utilizzare l'ambiente SPADE.
Il ragionamento alla base di ciò è che potrebbe esserci un caso d'uso per un sistema diverso per far parte di MASAPT in futuro (es. agenti scritti in altri linguaggi di programmazione). Quindi questo 'approccio XMPP' è il modo migliore per fornire quel tipo di flessibilità al sistema.
Oltre alla capacità di comunicare, il comportamento è il secondo aspetto più importante di qualsiasi agente. Gli agenti MASAPT e il loro comportamento sono modellati con un insieme di stati, che li rendono macchine a stati finiti. L'ambiente SPADE ha un buon supporto per la creazione di macchine a stati finiti.
I diagrammi seguenti mostrano tutti i possibili stati in cui un agente può trovarsi in qualsiasi momento. I diagrammi mostrano anche quali eventi fanno passare l'agente allo stato successivo. Tutti gli agenti futuri dovrebbero essere implementati allo stesso modo.
Tutti i futuri agenti exploit (es. DoS, XSS...) dovrebbero essere implementati utilizzando il diagramma Imm. 8. come modello.


[1] Un grande ringraziamento a Audi-1 e ai suoi eccellenti SQLI labs per aver testato l'iniezione SQL basata su errori, booleana cieca e basata sul tempo!