
Mapeamento de caminhos de ataque para Active Directory, ADCS, SCCM e MSSQL usando BloodHound CE + dados OpenGraph.
# ADPathFinder
[](https://github.com/NetSPI/AD-PathFinder/actions/workflows/test.yml)
ADPathFinder é uma ferramenta de mapeamento de ataques para pentesters e red teamers. Ela analisa dados do SharpHound e os unifica com plugins OpenGraph para revelar caminhos de ataque a alvos de alto valor, como Administradores de Domínio e Controladores de Domínio, partindo de utilizadores e computadores de baixos privilégios. O MSSQLHound e o ConfigManBearPig são suportados nativamente, estendendo a cobertura através de AD, ADCS, SCCM e MSSQL.
> **Blog:** [Mapeamento de caminhos de ataque OpenGraph no 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="Demonstração CLI do ADPathFinder mostrando achados de risco agrupados e caminhos de ataque" width="850">
</a>
</p>
**Saltar para:** [Quickstart](#quickstart) · [Cobertura](#coverage) · [Como funciona](#how-it-works) · [Relatórios](#outputs) · [Configuração](#configuration) · [Contribuidores](#contributors)
## Cobertura
| Área | Exemplos |
| --- | --- |
| AD principal | Caminhos de escalada, delegação, direitos de administrador, BadSuccessor, sessões de alto valor expostas |
| Palavras-passe | Palavras-passe fracas, palavras-passe em branco, reutilização, semelhança de nomes de utilizador, uso de hash LM, exposição Kerberoast e AS-REP combinadas com palavras-passe fracas |
| ADCS | Riscos de modelos de certificado e CA do tipo ESC |
| MSSQL (dados OpenGraph do MSSQLHound) | Logins, servidores ligados, impersonação, relay e caminhos de escalada de privilégios |
| SCCM (dados OpenGraph do ConfigManBearPig) | Caminhos de takeover e relay, pontos de distribuição com PXE ativado e recuperação de políticas de ponto de gestão |
| Através de domínios | Confianças, palavras-passe partilhadas e caminhos de escalada entre domínios |
## Requisitos
- Python 3.9 ou posterior.
- BloodHound CE e Neo4j disponíveis localmente por predefinição em `neo4j://localhost:7687`.
- Credenciais API do BloodHound CE para operações de importação e eliminação.
- Um zip do BloodHound CE / SharpHound para cobertura de auditoria AD.
- Zips opcionais de plugins OpenGraph do MSSQLHound e ConfigManBearPig para cobertura MSSQL e SCCM.
- Dump de hash NTDS e ficheiro potfile do hashcat opcionais para auditorias de palavras-passe.
## Quickstart
<details open>
<summary><strong>Instalar a partir da fonte</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 acesso à API do BloodHound</strong></summary>
```bash
adpathfinder --setup-bloodhound-api
```
Isto armazena as definições da API do BloodHound CE usadas para operações de importação e eliminação.
</details>
<details>
<summary><strong>Importar dados do SharpHound</strong></summary>
```bash
adpathfinder --import SharpHound.zip
```
Vários ficheiros zip do SharpHound e de plugins OpenGraph podem ser importados num único comando:
```bash
adpathfinder --import SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip
```
</details>
<details>
<summary><strong>Importar dados e executar uma auditoria completa</strong></summary>
```bash
adpathfinder -i SharpHound.zip MSSQLHound.zip ConfigManBearPig.zip --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
```
Use apenas os ficheiros zip que tem. O valor `--pwd` não é o domínio AD; é uma lista separada por vírgulas de termos de empresa, marca ou organização para sinalizar em palavras-passe quebradas.
</details>
<details>
<summary><strong>Executar uma auditoria de domínio</strong></summary>
```bash
adpathfinder --ad
```
</details>
<details>
<summary><strong>Executar uma auditoria de palavras-passe</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile
```
Use `--unsafe-report` apenas quando os relatórios devem incluir palavras-passe em texto claro.
</details>
<details>
<summary><strong>Escrever diagnósticos</strong></summary>
```bash
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
```
</details>
## Como funciona
| Etapa | O que acontece |
| --- | --- |
| **Ingestão** | Combina zips do SharpHound e OpenGraph suportados num único grafo. Dados do MSSQLHound e ConfigManBearPig são suportados diretamente |
| **Mapeamento** | Encontra os caminhos mais curtos de utilizadores e computadores para alvos de alto valor. Pode [configurar o conjunto de arestas](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) para remover arestas ruidosas como `HasSession` |
| **Agrupamento** | Agrupa contas que partilham um caminho, de modo a que caminhos repetidos sejam reportados como um único achado em vez de muitos quase duplicados |
| **Emparelhamento** | Compara hashes NTDS e ficheiros potfile do hashcat com dados do grafo para mostrar quais caminhos são utilizáveis durante a avaliação |
| **Camada** | Reporta achados independentes, como SMB signing desativado ou grupos privilegiados predefinidos, e aumenta a gravidade quando o mesmo anfitrião ou grupo também está num caminho para alvos de alto valor |
| **Renderização** | Escreve relatórios HTML com gráficos de caminhos SVG, notas de mitigação, passos de validação PowerShell e estado de remediação rastreado, além de saídas de texto, JSON e diagnósticos |
<p align="center">
<img src="https://raw.githubusercontent.com/netspi/ad-pathfinder/HEAD/docs/images/workflow.svg" alt="Diagrama do fluxo de trabalho do ADPathFinder" width="850">
</p>
## Relatório HTML 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="Demonstração do relatório AD do ADPathFinder mostrando visão geral, mitigação e passos de confirmação" width="850">
</a>
</p>
## Relatório HTML de Auditoria de Palavras-passe
<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="Demonstração do relatório de auditoria de palavras-passe do ADPathFinder mostrando categorias quebradas, conformidade de políticas, comprimentos de palavras-passe e contas roastáveis" width="850">
</a>
</p>
## Configuração
O ADPathFinder lê o `config.ini` do diretório de trabalho. Os valores também podem ser definidos com variáveis de ambiente `ADPF_*`.
Execute isto para configurar o acesso à API do BloodHound CE para importações e eliminações:
```bash
adpathfinder --setup-bloodhound-api
```
Consulte [Configuração](https://github.com/NetSPI/AD-PathFinder/wiki/Configuration) na wiki para todas as opções, definições de conexão Neo4j, permissões de ficheiros e exemplos de configuração. Consulte [Relações excluídas](https://github.com/NetSPI/AD-PathFinder/wiki/Excluded-Relationships) para filtrar a saída de caminhos de ataque.
## Saídas
Os relatórios são escritos em `report_<domain>/`, por exemplo `report_training.local/`.
| Saída | Propósito |
| --- | --- |
| `<domain>_AD_report.html` | Relatório HTML para clientes com achados agrupados, gráficos de caminhos, notas de mitigação, passos de validação e estado de remediação rastreado |
| `<domain>_domain_audit.txt` / `<domain>_domain_audit.json` | Saídas de auditoria de domínio em texto e JSON para revisão, automação e análise posterior |
| `<domain>_password_audit.html` / `<domain>_password_audit.txt` / `<domain>_password_audit.json` | Saídas de auditoria de palavras-passe quando hashes NTDS e um ficheiro potfile do hashcat são fornecidos |
| `<domain>_*_unsafe.*` | Relatórios inseguros opcionais gerados apenas com `--unsafe-report`; podem incluir palavras-passe em texto claro |
| `diagnostics.json` | Estatísticas de execução e dados de depuração opcionais gerados com `--diagnostics` |
Trate dados NTDS, ficheiros potfile e relatórios gerados como dados sensíveis de avaliação. A flag `--unsafe-report` escreve palavras-passe em texto claro nos ficheiros de saída; use-a apenas quando precisar especificamente de texto claro no relatório, e armazene os ficheiros `_unsafe` resultantes adequadamente.
Consulte [`sample_reports/`](https://github.com/netspi/ad-pathfinder/blob/main/sample_reports) para exemplos de saída de auditoria de domínio e auditoria de palavras-passe.
## Contribuidores
As verificações são pequenas classes que se registam com um decorador, declaram os seus requisitos de dados e devolvem dicionários de achados. As verificações de plataforma declaram a sua fonte de dados, para que auditorias AD normais saltem verificações MSSQL ou SCCM quando os dados OpenGraph correspondentes não estão presentes.
Consulte [Adicionar novas verificações](https://github.com/NetSPI/AD-PathFinder/wiki/Adding-New-Checks), [Trabalhar com plugins OpenGraph](https://github.com/netspi/ad-pathfinder/blob/main/docs/OPENGRAPH.md) e o [Guia do Framework](https://github.com/NetSPI/AD-PathFinder/wiki/Framework-Guide) na wiki.
### Testes
`pip install -e ".[test]"` depois `pytest tests/ -m "not neo4j and not integration"` executa os testes rápidos do framework sem Neo4j. Consulte [`tests/README.md`](https://github.com/netspi/ad-pathfinder/blob/main/tests/README.md) para a suíte de fixtures Neo4j e o fluxo de trabalho completo de testes local.
## Agradecimentos
O ADPathFinder baseia-se em dados recolhidos por outros projetos; agradecemos aos seus autores e à equipa SpecterOps:
- [BloodHound CE](https://github.com/SpecterOps/BloodHound) — os dados do grafo do Active Directory.
- [MSSQLHound](https://github.com/SpecterOps/MSSQLHound) por Chris Thompson — recolha MSSQL.
- [ConfigManBearPig](https://github.com/SpecterOps/ConfigManBearPig) por Chris Thompson — recolha SCCM.