BloodHound MCP: Análise de Active Directory com IA — Do Cypher à Conversa Natural
BloodHound revolucionou a segurança do Active Directory ao transformar relações de доверие em grafos navegáveis. Mas a interface sempre exigiu habilidade com Cypher (a linguagem de query do Neo4j) e paciência para clicar nós um por um. Dois projetos open-source estão mudando isso: o [BloodHound-MCP-AI](https://github.com/MorDavid/BloodHound-MCP-AI) (353 stars) e o [bloodhound_mcp](https://github.com/mwnickerson/bloodhound_mcp) — ambos integram BloodHound ao Model Context Protocol, permitindo que um LLM faça o trabalho pesado de análise de attack paths usando linguagem natural.
Por que BloodHound + MCP faz sentido
A curva de aprendizado do BloodHound não é a query em si — é saber o que perguntar. Um red teamer experiente sabe procurar Kerberoasting, DCSync, e paths para Domain Admins. Mas em ambientes grandes (milhares de nós, dezenas de domains), enumerar manualmente cada vetor é trabalho de Sísifo. Um LLM com acesso ao grafo pode:
- Consultar attack paths sem escrever Cypher
- Correlacionar múltiplos vetores simultaneamente
- Gerar relatórios executivos a partir de dados técnicos
- Iterar: “e se esse usuário tiver também delegação constrainada?”
O MCP fornece a ponte padronizada entre o LLM e o Neo4j/BloodHound CE REST API. A questão é: qual implementação usar?
BloodHound-MCP-AI (MorDavid)
O projeto do MorDavid foi a primeira integração BloodHound-AI via MCP, anunciada em abril 2025. Usa Neo4j diretamente (conexão bolt://) e expõe 75+ ferramentas baseadas nas queries originais do BloodHound CE.
Instalação
“`bash
git clone https://github.com/MorDavid/BloodHound-MCP-AI.git
cd BloodHound-MCP-AI
pip install -r requirements.txt
“`
Configuração MCP:
“`json
{
“mcpServers”: {
“BloodHound-MCP”: {
“command”: “python”,
“args”: [“
“env”: {
“BLOODHOUND_URI”: “bolt://localhost:7687”,
“BLOODHOUND_USERNAME”: “neo4j”,
“BLOODHOUND_PASSWORD”: “bloodhoundcommunityedition”
}
}
}
}
“`
O que dá para fazer
As queries seguem as categorias do BloodHound CE:
- Estrutura do domínio (domains, OUs, GPOs, DCs)
- Privilege escalation paths
- Kerberos (Kerberoasting, AS-REP Roasting)
- Certificate services (ADCS)
- Delegation (constrained, unconstrained, RBCD)
- NTLM relay vectors
- AD hygiene assessment
Exemplos em linguagem natural:
- “Show me all paths from kerberoastable users to Domain Admins”
- “Find computers where Domain Users have local admin rights”
- “Identify Domain Controllers vulnerable to NTLM relay attacks”
- “Map all Active Directory certificate services vulnerabilities”
Limitações
A abordagem direta ao Neo4j tem trade-offs. Qualquer mudança no schema do BloodHound CE pode quebrar as queries. O projeto não tem testes automatizados documentados. A licença não está especificada. E conectar um LLM ao Neo4j de produção significa que dados sensíveis de AD transitam pelos servidores do provedor de IA — risco que precisa ser avaliado.
bloodhound_mcp (mwnickerson)
O projeto do mwnickerson toma uma abordagem mais robusta: usa a REST API do BloodHound CE ao invés de acessar o Neo4j diretamente. Resultado: mais estável, versionado, e compatível com mudanças futuras do BloodHound. É GPL v3, com 307 testes automatizados.
Arquitetura
A genialidade aqui está nos 13 composite tools com parâmetro `info_type`. Em vez de expor 75 ferramentas separadas, cada tool aceita um tipo de informação, mantendo a superfície pequena e eficiente em tokens:
| Tool | info_type |
|——|———–|
| `domain_info` | list, info, users, groups, computers, ous, gpos, dc_syncers, foreign_admins |
| `user_info` | info, sessions, memberships, admin_rights, rdp_rights, dcom_rights, constrained_delegation, controllables |
| `group_info` | info, members, memberships, admin_rights, rdp_rights, dcom_rights, controllers |
| `computer_info` | info, sessions, local_admins, rdp_rights, constrained_delegation, controllables |
| `graph_analysis` | shortest_path, edge_composition, search |
| `adcs_info` | templates, esc_paths |
| `cypher_query` | run, saved_list, saved_get |
Alem das tools, expõe 10 recursos que o LLM carrega sob demanda — guias de metodologia AD, Azure, ADCS (ESC1-ESC13), templates de queries ofensivas, e referência Cypher. Isso economiza tokens e melhora a qualidade das respostas sem chamadas API extras.
Instalação
“`bash
git clone https://github.com/mwnickerson/bloodhound_mcp.git
cd bloodhound-mcp
uv sync
“`
`.env`:
“`env
BLOODHOUND_DOMAIN=seu-bloodhound.dominio.com
BLOODHOUND_TOKEN_ID=seu-token-id
BLOODHOUND_TOKEN_KEY=seu-token-key
“`
Configuração Claude Code:
“`json
{
“mcpServers”: {
“bloodhound_mcp”: {
“type”: “stdio”,
“command”: “uv”,
“args”: [“–directory”, “/caminho/para/bloodhound-mcp”, “run”, “main.py”]
}
}
}
“`
Exemplos práticos
Recon:
“`
What domains are in BloodHound?
Show me all Domain Admins in CORP.LOCAL
Find all kerberoastable users
Which computers have unconstrained delegation?
“`
Attack paths:
“`
Find the shortest path from jsmith@corp.local to Domain Admins
Who has DCSync rights in the domain?
Show me all GPO abuse paths
Find ADCS ESC1 paths in the domain
“`
Análise customizada com Cypher:
“`
Run a Cypher query to find all users with SPN set and admincount=1
Find all computers where DOMAIN USERS can RDP
“`
Comparação direta
| Aspecto | BloodHound-MCP-AI | bloodhound_mcp |
|———|——————-|—————-|
| Backend | Neo4j direto (bolt://) | BloodHound CE REST API |
| Tools | 75+ | 13 composite |
| Recursos/Guias | Não | 10 resources integrados |
| Testes | Não documentados | 307 testes |
| Licença | Não especificada | GPL v3 |
| Azure/Entra ID | Não | Sim |
| OpenGraph | Não | Sim (v8.0+) |
| File upload | Não | Sim |
| Instabilidade | Alta (schema changes) | Baixa (REST versioned) |
A minha recomendação: use o bloodhound_mcp para trabalho sério. A abordagem via REST API é mais sustentável, os testes dão confiança, e o suporte a Azure/OpenGraph é diferencial. O BloodHound-MCP-AI serve como referência e prova de conceito, mas não tem a maturidade para produção.
Riscos de segurança
Exfiltração de dados via LLM. Todo query ao BloodHound passa pelo provedor de IA. Dados de AD — usuários, grupos, hierarquias de privilégio, sessões ativas — são sensíveis por definição. O bloodhound_mcp é explícito: “Do not use this with production AD data unless you have assessed that risk.”
Abuso de tokens API. Tokens do BloodHound CE com acesso de leitura ainda expõem a topologia completa do AD. Rotation regular e tokens read-only são mandatórios.
LLM como attack surface. Um adversário com acesso à sessão MCP pode induzir o LLM a executar queries que exfiltrem dados ou a manipular resultados. O system prompt do bloodhound_mcp inclui regras comportamentais, mas não é blindagem.
Over-reliance. “O BloodHound não mostrou attack paths, então está seguro” é uma conclusão perigosa. BloodHound analisa relações coletadas — se a coleta foi incompleta (SharpHound não coletou tudo), os resultados são falsamente tranquilizadores. Um LLM não compensa dados de input ruins.
Metodologia recomendada
1. Coleta completa. Execute SharpHound/AzureHound com todos os collection methods antes de analisar. Dados parciais = análise enganosa.
2. Ambiente isolado. Use um LLM local (Ollama com modelo capaz) ou garanta que o contrato do provedor de IA não treina com seus dados.
3. Validação manual. Deixe o LLM identificar candidates; valide manualmente antes de atuar. Attack paths existem no grafo, mas exploitabilidade depende de fatores que o grafo não captura (patch level, firewall rules, monitoramento).
4. Iteração com contexto. A vantagem real do MCP é iterar: “essa path passa por qual GPO?” “E se eu comprometer essa máquina, quais outros caminhos se abrem?”
Conclusão
A integração BloodHound + MCP é uma das aplicações mais práticas de IA em segurança ofensiva que existem hoje. Não é hype — é automação de um trabalho tedioso (escrever Cypher, interpretar grafos, correlacionar vetores) com uma interface que qualquer profissional de segurança consegue usar.
O bloodhound_mcp do mwnickerson é o mais maduro: 13 composite tools eficientes, 307 testes, suporte a Azure/OpenGraph, e licença GPL v3. Para red teamers que vivem no AD, é instalação obrigatória.
O ponto de cautela é o mesmo de sempre com IA em segurança: o LLM é um assistente, não um oráculo. Os dados que ele analisa são tão bons quanto a coleta que alimentou o BloodHound. A IA acelera a análise; não substitui o julgamento de quem entende o contexto.
Repositórios:
- [MorDavid/BloodHound-MCP-AI](https://github.com/MorDavid/BloodHound-MCP-AI)
- [mwnickerson/bloodhound_mcp](https://github.com/mwnickerson/bloodhound_mcp)