
Mapeo de rutas de ataque para Active Directory, ADCS, SCCM y MSSQL utilizando datos de BloodHound CE + OpenGraph.
ADPathFinder es una herramienta de mapeo de ataques para pentesters y red teamers. Analiza datos de SharpHound y los unifica con plugins de OpenGraph para descubrir rutas de ataque hacia objetivos de alto valor, como administradores de dominio y controladores de dominio, partiendo de usuarios y equipos con privilegios bajos. MSSQLHound y ConfigManBearPig son compatibles de forma nativa, ampliando la cobertura a AD, ADCS, SCCM y MSSQL.
Ir a: Inicio rápido · Cobertura · Cómo funciona · Informes · Configuración · Contribuidores
| Área | Ejemplos |
|---|---|
| AD principal | Rutas de escalada, delegación, derechos de administrador, BadSuccessor, sesiones de alto valor expuestas |
| Contraseñas | Contraseñas débiles, contraseñas en blanco, reutilización, similitud de nombres de usuario, uso de hash LM, exposición de Kerberoast y AS-REP combinada con contraseñas débiles |
| ADCS | Riesgos de plantillas de certificado y CA estilo ESC |
| MSSQL (datos OpenGraph de MSSQLHound) | Inicios de sesión, servidores vinculados, suplantación, relay y rutas de escalada de privilegios |
| SCCM (datos OpenGraph de ConfigManBearPig) | Rutas de toma de control y relay, puntos de distribución habilitados para PXE y recuperación de directivas desde puntos de administración |
| Entre dominios | Relaciones de confianza, contraseñas compartidas y rutas de escalada entre dominios |
neo4j://localhost:7687.git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
adpathfinder --setup-bloodhound-api
Esto guarda los ajustes de la API de BloodHound CE utilizados para las operaciones de importación y borrado.
adpathfinder --import SharpHound.zip
Se pueden importar varios zips de SharpHound y de plugins OpenGraph en un solo comando:
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Utilice únicamente los zips que tenga. El valor de --pwd no es el dominio de AD; es una lista separada por comas de términos de empresa, marca u organización para marcar en contraseñas crackeadas.
adpathfinder --ad
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
Utilice --unsafe-report solo cuando los informes deban incluir contraseñas en texto claro.
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
ADPathFinder lee config.ini desde el directorio de trabajo. Los valores también pueden establecerse con variables de entorno ADPF_*.
Ejecute esto para configurar el acceso a la API de BloodHound CE para importaciones y borrados:
adpathfinder --setup-bloodhound-api
Consulte Configuration en la wiki para ver todas las opciones, ajustes de conexión a Neo4j, permisos de archivos y ejemplos de configuración. Consulte Excluded relationships para filtrar la salida de rutas de ataque.
Los informes se escriben en report_<domain>/, por ejemplo report_training.local/.
Trate los datos NTDS, los potfiles y los informes generados como datos sensibles de evaluación. La opción --unsafe-report escribe contraseñas en texto claro en los archivos de salida; úsela solo cuando necesite específicamente texto claro en el informe y almacene los archivos _unsafe resultantes en consecuencia.
Consulte sample_reports/ para ver ejemplos de salida de auditoría de dominio y de contraseñas.
Los checks son clases pequeñas que se registran con un decorador, declaran sus requisitos de datos y devuelven diccionarios de hallazgos. Los checks de plataforma declaran su fuente de datos, por lo que las auditorías normales de AD omiten los checks de MSSQL o SCCM cuando los datos OpenGraph correspondientes no están presentes.
Consulte Adding new checks, Working with OpenGraph plugins y la Framework Guide en la wiki.
pip install -e ".[test]" y luego pytest tests/ -m "not neo4j and not integration" ejecuta las pruebas rápidas del framework sin Neo4j. Consulte tests/README.md para ver la suite de fixtures de Neo4j y el flujo de trabajo completo de pruebas local.
ADPathFinder se basa en datos recopilados por otros proyectos; gracias a sus autores y al equipo de SpecterOps:
| Etapa | Qué ocurre |
|---|
| Ingesta | Fusiona SharpHound y los zips OpenGraph compatibles en un único grafo. Los datos de MSSQLHound y ConfigManBearPig son compatibles directamente |
| Mapeo | Encuentra las rutas más cortas desde usuarios y equipos hasta objetivos de alto valor. Puede configurar el conjunto de relaciones para eliminar relaciones ruidosas como HasSession |
| Agrupación | Agrupa cuentas que comparten una ruta, de modo que las rutas repetidas se notifican como un único hallazgo en lugar de muchos casi duplicados |
| Emparejamiento | Compara los hashes NTDS y los potfiles de hashcat con los datos del grafo para mostrar qué rutas son utilizables durante la evaluación |
| Capa | Notifica hallazgos independientes, como la firma SMB deshabilitada o grupos privilegiados por defecto, y eleva la severidad cuando el mismo host o grupo también se encuentra en una ruta hacia objetivos de alto valor |
| Renderizado | Escribe informes HTML con gráficos de rutas SVG, notas de mitigación, pasos de validación en PowerShell y seguimiento del estado remediado, además de salidas de texto, JSON y diagnósticos |
| Salida | Propósito |
|---|
<domain>_AD_report.html | Informe HTML para clientes con hallazgos agrupados, gráficos de rutas, notas de mitigación, pasos de validación y seguimiento del estado remediado |
<domain>_domain_audit.txt / <domain>_domain_audit.json | Salidas de auditoría de dominio en texto y JSON para revisión, automatización y análisis posterior |
<domain>_password_audit.html / <domain>_password_audit.txt / <domain>_password_audit.json | Salidas de auditoría de contraseñas cuando se proporcionan hashes NTDS y un potfile de hashcat |
<domain>_*_unsafe.* | Informes no seguros opcionales generados solo con --unsafe-report; pueden incluir contraseñas en texto claro |
diagnostics.json | Estadísticas de ejecución y datos de depuración opcionales generados con --diagnostics |