
Mapeamento de caminhos de ataque para Active Directory, ADCS, SCCM e MSSQL usando BloodHound CE + dados OpenGraph.
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
Saltar para: Quickstart · Cobertura · Como funciona · Relatórios · Configuração · Contribuidores
| Á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 |
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
Isto armazena as definições da API do BloodHound CE usadas para operações de importação e eliminação.
adpathfinder --import SharpHound.zip
Vários ficheiros zip do SharpHound e de plugins OpenGraph podem ser importados num único 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
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.
adpathfinder --ad
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.
adpathfinder --ad --pwd Contoso,ContosoIT --ntds ntds.txt -p hashcat.potfile --diagnostics
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:
adpathfinder --setup-bloodhound-api
Consulte Configuração 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 para filtrar a saída de caminhos de ataque.
Os relatórios são escritos em report_<domain>/, por exemplo report_training.local/.
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/ para exemplos de saída de auditoria de domínio e auditoria de palavras-passe.
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, Trabalhar com plugins OpenGraph e o Guia do Framework na wiki.
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 para a suíte de fixtures Neo4j e o fluxo de trabalho completo de testes local.
O ADPathFinder baseia-se em dados recolhidos por outros projetos; agradecemos aos seus autores e à equipa SpecterOps:
| 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 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 |
| 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 |