
Sistema Multiagente para Pruebas de Penetración Automatizadas (MASAPT)
❗ Aviso
Esta herramienta se desarrolla con fines académicos y de investigación como parte del curso universitario. El uso de MASAPT para atacar objetivos sin consentimiento previo es ilegal.
Los desarrolladores no asumen ninguna responsabilidad por cualquier daño causado con esta herramienta y condenan cualquier uso malicioso de MASAPT. Esta herramienta no está diseñada para ser utilizada en ningún entorno profesional en este momento, es solo una prueba de concepto del modelo teórico subyacente.
Sistema Multiagente para Pruebas de Penetración Automatizadas 🐱💻

Un sistema autónomo de agentes SPADE que se comunican a través de XMPP para coordinar y realizar pruebas de penetración. ¡En una herramienta CLI!
Pasa la URL, espera un poco, lee el informe!

Es un prueba de concepto, sistema multiagente, desarrollado en Python, destinado a utilizarse para automatizar el proceso de pruebas de penetración de manera estructurada e inteligente.
El objetivo final es crear una herramienta de pentesting funcional, flexible, distribuida y basada en CLI que pueda utilizarse para automatizar tareas de pruebas de penetración.
Funcionalidades actuales:
Los planes y funciones futuros se enumeran aquí.
Difícil.
Hay una cantidad considerable de requisitos previos y requisitos que instalar:
Además de Python y las herramientas de pentesting que se pueden encontrar en Kali, también necesitas acceso a algún servicio XMPP. Para probar el sistema, usé ejabberd ejecutándose localmente.
Para ejecutar los agentes en el servidor XMPP de tu elección, deberás crear los siguientes usuarios. Por supuesto, puedes crear otros usuarios, pero entonces necesitarás pasar los nuevos parámetros JID y PWD al crear agentes en el script masapt.
| JID | CONTRASEÑA |
|---|---|
| repoter@domain | repoterSecret |
Después de que los requisitos previos se hayan instalado y se haya configurado XMPP:
cd a la carpeta del proyecto
cd ../MASAPT
Agregar el directorio al PATH
export PATH=$PATH:/path/to/MASAPT
source ~/.bashrc
Instalar los requisitos de Python
pip install -r requirements.txt
Hacer ejecutable el script masapt
chmod +x masapt
Iniciar el sistema con:
masapt -t url/to/target
Más agentes:
Expandir Explorer.py para que pueda:
Expandir SQLinjector.py para que pueda:
Expandir Coordinator.py para que pueda:
El sistema MASAPT fue concebido para ser modular, distribuido y pragmático. Esto significa que los agentes que componen el sistema son independientes del proceso principal, actualizables y utilizan herramientas de pentesting existentes y 'probadas en batalla'.
Para lograr los objetivos previstos, los agentes se desarrollan como parte de un modelo de tres niveles que se deriva de las fases estándar de pentest (planificación - ejecución - post-ejecución). Una visión general de dicho modelo se puede ver en la Imagen 1 a continuación.
Todos los conceptos teóricos de este resumen ya se han implementado en código (a excepción de la idea para el futuro - Imagen 8.). Estos conceptos deben seguir implementándose en cualquier actualización futura del sistema.
La idea principal detrás del modelo de tres niveles es proporcionar un marco para organizar y clasificar los agentes en este sistema.
El primer nivel del modelo contiene el/los agente(s) Explorador que tienen la tarea de realizar OSINT y recopilar cualquier inteligencia útil sobre el objetivo.
El segundo nivel contiene el agente Coordinador y los agentes Exploit. El Coordinador es un agente único que decide qué agentes de exploit participarán en las pruebas actuales. Los agentes Exploit, como su nombre indica, son los que ejecutan exploits: inyección SQL, XSS, DoS, desbordamiento de búfer... Puede haber muchos de estos agentes de exploit.
El tercer nivel contiene el Reportero cuya tarea es recopilar todos los datos de exploit, resultados, volcados de datos de todos los agentes de exploit y resumirlos en un informe final. Luego, el informe se muestra al usuario y se almacena localmente.
En la primera imagen, las flechas gruesas representan el flujo de datos en el modelo.

Imagen 2 muestra el mismo modelo que la primera imagen pero con mayor detalle: los agentes se pueden ver claramente en sus respectivos niveles. Las flechas completas en esta imagen representan nuevamente el flujo de datos en el modelo, lo que consecuentemente muestra qué agentes se comunican entre sí. Se puede ver que el agente Explorador envía datos al agente Coordinador, quien a su vez envía algunos datos a los agentes Exploit (SQLinjector, agente2, agente3). Finalmente, todos los datos que recopilan los agentes exploit se pasan al agente Reportero quien los compila, los resume y los presenta al usuario.
También se puede ver que solo los agentes Explorador y Exploit (SQLinjector) interactúan con el entorno externo (objetivo de prueba). Esto se representa con flechas discontinuas bidireccionales.
Como se mencionó anteriormente, una de las características del sistema MASAPT es que sea distribuido. Un aspecto de esto ya se ha implementado, ya que todos los agentes se implementan como programas independientes, ejecutados por el script principal (masapt).
Imagen 3. muestra cómo se configuró y probó el sistema actual. Se puede ver que los agentes utilizan el entorno SPADE para comunicarse a través del servidor XMPP (ejabberd) que está configurado en el sistema local. El objetivo de prueba (SQLi Labs) también está configurado en el sistema local. Esta configuración es buena para probar el sistema pero no muestra toda la capacidad de MASAPT como sistema distribuido.
Imagen 4. por otro lado, muestra una posible implementación futura de MASAPT. Muestra un sistema multiagente distribuido que utiliza XMPP para comunicarse y Docker para ejecutarse en muchos sistemas diferentes. Las flechas completas muestran una vez más el aspecto de comunicación y flujo de datos del sistema, mostrando cómo los agentes envían y reciben sus datos a través de un servidor XMPP central.
La razón principal para que los agentes se comuniquen a través de XMPP es proporcionar una forma confiable e independiente del lenguaje para que los agentes se comuniquen. Con este enfoque, no todos los agentes futuros tienen que estar escritos en Python o incluso usar el entorno SPADE.
La razón detrás de esto es que puede haber algún caso de uso para que un sistema diferente sea parte de MASAPT en el futuro (por ejemplo, agentes escritos en otros lenguajes de programación). Por lo tanto, este 'enfoque XMPP' es la mejor manera de proporcionar ese tipo de flexibilidad al sistema.
Además de su capacidad para comunicarse, el comportamiento es el segundo aspecto más importante de cualquier agente. Los agentes de MASAPT y su comportamiento se modelan con un conjunto de estados, lo que los convierte en máquinas de estados finitos. El entorno SPADE tiene buen soporte para crear máquinas de estados finitos.
Los diagramas a continuación muestran todos los estados posibles en los que un agente puede estar en cualquier momento. Los diagramas también muestran qué eventos hacen que el agente cambie al siguiente estado. Todos los agentes futuros deben implementarse de la misma manera.
Todos los futuros agentes de exploit (por ejemplo, DoS, XSS...) deben implementarse utilizando el diagrama de la Imagen 8. como plantilla.


[1] Muchas gracias a Audi-1 y sus excelentes SQLI labs por probar inyección SQL basada en errores, booleana ciega y basada en tiempo!
| explorerSecret |
| coordinator@domain | coordinatorSecret |
| sqlinjector@domain | injectorSecret |