
Um shell de linha de comando interativo para a API do BloodHound.
Um shell de linha de comando interativo para o BloodHound. Consulte objetos do Active Directory, procure por vulnerabilidades e encontre caminhos de ataque a partir do terminal, sem abrir a interface web.
Requer Python 3.11+ e um servidor BloodHound CE v9 (testado na v9.7.1).
pipx install bhshell # recomendado
# ou
pip install bhshell
$ bhshell --url http://127.0.0.1:8080
[bh: shell] > login -u admin
[+] Logged in as admin on 127.0.0.1:8080
[bh: shell] > hunt
Severity Check Count Example Description
critical dcsync 2 [email protected] Non-Tier-Zero principals with replication rights
high kerberoastable 2 [email protected] Kerberoastable users
...
[*] Details: 'hunt CHECK' (e.g. 'hunt kerberoastable'), or 'hunt --all'.
[bh: shell] > user CORP\svc_sql --all -o svc_sql.csv
[bh: shell] > path --owned -g
Os mesmos comandos são executados de forma não interativa para scripts: bhshell -c "hunt --json" > hunt.json.
| Comando | Mostra |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, delegação, idade da senha, flags de Tier Zero e owned, além de aninhamento de grupos, controle de ACL de entrada/saída, sessões e direitos de administrador local |
search | Objetos que correspondem a filtros de propriedades (search -t user hasspn enabled), com datas, idades (90d) e curingas |
path | Caminhos mais curtos até um alvo ou até o Tier Zero, a partir de tudo que é owned, ou através de etapas --via; impressos como cadeias de saltos, um grafo no terminal, ou SVG/PNG para relatórios |
hunt | Verificações em todo o domínio por severidade: DCSync, controle de Tier Zero, AD CS (ESC*), Kerberoasting, sessões privilegiadas, leitores de LAPS/gMSA, senhas em atributos, primitivas de takeover (Shadow Credentials, RBCD), controle de GPO, NTLM relay, trusts, possíveis honeytokens...; hunt --owned limita-as ao que seus objetos owned podem fazer |
cypher, query | Cypher bruto, e uma biblioteca de consultas salvas: incluídas, seus próprios arquivos .cyp (~/.bhshell/queries/ ou qualquer pasta definida com config query_dirs) e aquelas salvas no servidor |
owned, hvt | Marcar ou desmarcar objetos owned e Tier Zero |
domains, trusts | Contagens por domínio, e o mapa de trusts com status de filtragem de SID |
Para adicionar sua própria consulta, salve-a como um arquivo .cyp em ~/.bhshell/queries/ e execute-a pelo nome:
$ cat ~/.bhshell/queries/stale-admins.cyp
// description: Enabled adminCount users who have not logged on for a year
MATCH (u:User) WHERE u.admincount = true AND u.enabled = true
AND u.lastlogontimestamp < (datetime().epochseconds - 31536000) RETURN u
[bh: shell] > query run stale-admins -o stale-admins.csv
Consulte Query library para o formato e para manter consultas em outras pastas (um repositório de equipe, uma pasta por engajamento).
A maioria dos comandos aceita --json e -o FILE (JSON ou CSV). O login funciona com senha (mais MFA) ou
um token de API; os segredos são solicitados ou lidos do ambiente, nunca passados como argumentos.
O guia de uso completo (cada comando, flag de visualização, filtro de busca, opção de path, verificação de hunt e
configuração) está em docs/USAGE.md.
Dentro do shell, execute help ou help <command>.
Relatórios de bugs e pull requests são bem-vindos em github.com/kr0no/bloodhound-shell/issues.
git clone https://github.com/kr0no/bloodhound-shell.git
cd bloodhound-shell
python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
python -m pytest
Os testes simulam a API do BloodHound com responses, então nenhum servidor BloodHound é necessário.
Distribuído sob a Licença MIT. Consulte LICENSE para detalhes.
BloodHound é uma marca registrada da SpecterOps. bhshell é um projeto independente e não é afiliado nem endossado pela SpecterOps.