
Una shell interactiva de línea de comandos para la API de BloodHound.
Un shell de línea de comandos interactivo para BloodHound. Busca objetos de Active Directory, caza debilidades y encuentra rutas de ataque desde la terminal, sin abrir la interfaz web.
Requiere Python 3.11+ y un servidor BloodHound CE v9 (probado en v9.7.1).
pipx install bhshell # recomendado
# o
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
Los mismos comandos se ejecutan de forma no interactiva para scripting: bhshell -c "hunt --json" > hunt.json.
| Comando | Muestra |
|---|---|
user, computer, group, lookup | Kerberoastable / AS-REP roastable, delegación, antigüedad de contraseña, indicadores Tier Zero y owned, además de anidamiento de grupos, control de ACL entrante/saliente, sesiones y derechos de administrador local |
search | Objetos que coinciden con filtros de propiedades (search -t user hasspn enabled), con fechas, antigüedades (90d) y comodines |
path | Rutas más cortas hacia un objetivo o hacia Tier Zero, desde todo lo owned, o a través de pasos --via; impresas como cadenas de saltos, un grafo de terminal, o SVG/PNG para informes |
hunt | Comprobaciones a nivel de dominio por severidad: DCSync, control de Tier Zero, AD CS (ESC*), Kerberoasting, sesiones privilegiadas, lectores de LAPS/gMSA, contraseñas en atributos, primitivas de toma de control (Shadow Credentials, RBCD), control de GPO, NTLM relay, trusts, posibles honeytokens...; hunt --owned las limita a lo que pueden hacer tus objetos owned |
cypher, query | Cypher en bruto, y una biblioteca de consultas guardadas: incluidas, tus propios archivos .cyp (~/.bhshell/queries/ o cualquier carpeta configurada con config query_dirs) y las guardadas en el servidor |
owned, hvt | Marcar o desmarcar objetos owned y Tier Zero |
domains, trusts | Recuentos por dominio, y el mapa de trusts con el estado del filtrado de SID |
Para añadir tu propia consulta, guárdala como un archivo .cyp en ~/.bhshell/queries/ y ejecútala por nombre:
$ 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
Consulta Query library para el formato y para mantener consultas en otras carpetas (un repositorio de equipo, una carpeta por encargo).
La mayoría de los comandos aceptan --json y -o FILE (JSON o CSV). El inicio de sesión funciona con contraseña (más MFA) o
con un token de API; los secretos se solicitan o se leen del entorno, nunca se pasan como argumentos.
La guía de uso completa (cada comando, flag de vista, filtro de búsqueda, opción de path, comprobación de hunt y
ajuste de configuración) está en docs/USAGE.md.
Dentro del shell, ejecuta help o help <command>.
Los informes de errores y las pull requests son bienvenidos en 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
Las pruebas simulan la API de BloodHound con responses, por lo que no se necesita un servidor BloodHound.
Distribuido bajo la Licencia MIT. Consulta LICENSE para más detalles.
BloodHound es una marca registrada de SpecterOps. bhshell es un proyecto independiente y no está afiliado ni respaldado por SpecterOps.