
Mapeo de rutas de ataque para Active Directory, ADCS, SCCM y MSSQL utilizando datos de BloodHound CE + OpenGraph.
# ADPathFinder
[](https://github.com/NetSPI/AD-PathFinder/actions/workflows/test.yml)
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.
> **Blog:** [OpenGraph attack-path mapping in BloodHound CE](https://www.netspi.com/blog/technical-blog/network-pentesting/adpathfinder-opengraph-attack-path-mapping-in-bloodhound-ce/)
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/demo-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/da8b4155e654c3272e19b1158bbaa3bc4632356196ea17dae76a4ad0c51aa3c0.webp" alt="ADPathFinder CLI demo showing grouped risk findings and attack paths" width="850">
</a>
</p>
**Ir a:** [Inicio rápido](#quickstart) · [Cobertura](#coverage) · [Cómo funciona](#how-it-works) · [Informes](#outputs) · [Configuración](#configuration) · [Contribuidores](#contributors)
## Cobertura
| Á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 |
## Requisitos
- Python 3.9 o posterior.
- BloodHound CE y Neo4j disponibles localmente por defecto en `neo4j://localhost:7687`.
- Credenciales de la API de BloodHound CE para operaciones de importación y borrado.
- Un zip de BloodHound CE / SharpHound para la cobertura de auditoría de AD.
- Zips opcionales de plugins OpenGraph de MSSQLHound y ConfigManBearPig para cobertura de MSSQL y SCCM.
- Volcado de hashes NTDS y potfile de hashcat opcionales para auditorías de contraseñas.
## Inicio rápido
<details open>
<summary><strong>Instalar desde el código fuente</strong></summary>
```bash
git clone https://github.com/NetSPI/AD-PathFinder.git
cd AD-PathFinder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```
</details>
<details>
<summary><strong>Configurar el acceso a la API de BloodHound</strong></summary>
```bash
adpathfinder --setup-bloodhound-api
```
Esto guarda los ajustes de la API de BloodHound CE utilizados para las operaciones de importación y borrado.
</details>
<details>
<summary><strong>Importar datos de SharpHound</strong></summary>
```bash
adpathfinder --import SharpHound.zip
```
Se pueden importar varios zips de SharpHound y de plugins OpenGraph en un solo comando:
```bash
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
```
</details>
<details>
<summary><strong>Importar datos y ejecutar una auditoría completa</strong></summary>
```bash
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.
</details>
<details>
<summary><strong>Ejecutar una auditoría de dominio</strong></summary>
```bash
adpathfinder --ad
```
</details>
<details>
<summary><strong>Ejecutar una auditoría de contraseñas</strong></summary>
```bash
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.
</details>
<details>
<summary><strong>Generar diagnósticos</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
```
</details>
## Cómo funciona
| 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](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) 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 |
<p align="center">
<img src="https://raw.githubusercontent.com/netspi/ad-pathfinder/HEAD/docs/images/workflow.svg" alt="ADPathFinder workflow diagram" width="850">
</p>
## Informe HTML de AD
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/ad-report-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/039c3cda9d34b24185b439d441359ed63a5b4f03002d400a88a8fbf04717c98c.webp" alt="ADPathFinder AD report walkthrough showing overview, mitigation, and confirmation steps" width="850">
</a>
</p>
## Informe HTML de Auditoría de Contraseñas
<p align="center">
<a href="https://github.com/netspi/ad-pathfinder/blob/main/docs/images/password-audit-slideshow.mp4">
<img src="https://assets.kitploit.com/production/public/readmes/35238/0d3b193537b32399c070e2f2caf32c8de6149ee267dfaa497a0c7b500f8f987d.webp" alt="ADPathFinder password audit report walkthrough showing cracked categories, policy compliance, password lengths, and roastable accounts" width="850">
</a>
</p>
## Configuración
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:
```bash
adpathfinder --setup-bloodhound-api
```
Consulte [Configuration](https://github.com/NetSPI/AD-PathFinder/wiki/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](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) para filtrar la salida de rutas de ataque.
## Salidas
Los informes se escriben en `report_<domain>/`, por ejemplo `report_training.local/`.
| 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` |
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/`](https://github.com/netspi/ad-pathfinder/blob/main/sample_reports) para ver ejemplos de salida de auditoría de dominio y de contraseñas.
## Contribuidores
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](https://github.com/NetSPI/AD-PathFinder/wiki/Adding-New-Checks), [Working with OpenGraph plugins](https://github.com/netspi/ad-pathfinder/blob/main/docs/OPENGRAPH.md) y la [Framework Guide](https://github.com/NetSPI/AD-PathFinder/wiki/Framework-Guide) en la wiki.
### Pruebas
`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`](https://github.com/netspi/ad-pathfinder/blob/main/tests/README.md) para ver la suite de fixtures de Neo4j y el flujo de trabajo completo de pruebas local.
## Agradecimientos
ADPathFinder se basa en datos recopilados por otros proyectos; gracias a sus autores y al equipo de SpecterOps:
- [BloodHound CE](https://github.com/SpecterOps/BloodHound) — los datos del grafo de Active Directory.
- [MSSQLHound](https://github.com/SpecterOps/MSSQLHound) de Chris Thompson — recopilación de MSSQL.
- [ConfigManBearPig](https://github.com/SpecterOps/ConfigManBearPig) de Chris Thompson — recopilación de SCCM.