BloodHound

BloodHound recoge usuarios, grupos, sesiones, ACL y delegaciones del dominio y los dibuja como un grafo. Marca como owned lo que ya controlas y pide el camino más corto a Domain Admins: casi toda máquina de AD se resuelve siguiendo esas flechas.

Plataforma
Docker (CE) · recolectores en Python, C# y Rust
Web oficial
github.com/SpecterOps/BloodHound
En HTB
22 máquinas
Instalación
curl -L https://ghst.ly/getbhce | docker compose -f - up

Chuleta de BloodHound

Tus datos Se guardan en este navegador y se aplican a todas las chuletas.
15 comandos

Recolectores

RustHound-CE desde Linux
rusthound-ce -d box.htb -u usuario -p 'Password123!' -z
SharpHound solo con lo que cambia rápido (sesiones) Víctima
.\SharpHound.exe -c Session --loop --loopduration 00:10:00

En nuestras chuletas

Escalada en Windows y Active Directory › Active Directory

Recoger datos para BloodHound
bloodhound-python -u 'usuario' -p 'Password123!' -d box.htb -ns 10.10.11.20 -c All --zip

Active Directory a fondo › BloodHound

Recolector remoto en Python (CE) Atacante
bloodhound-ce-python -u usuario -p 'Password123!' -d box.htb -ns 10.10.11.20 -dc dc01.box.htb -c All --zip
Con NetExec, sin instalar nada más Atacante
nxc ldap 10.10.11.20 -u usuario -p 'Password123!' --bloodhound -c All --dns-server 10.10.11.20
SharpHound desde la víctima Windows Víctima
.\SharpHound.exe -c All --zipfilename datos
Marcar como pwned lo que ya controlas
MATCH (u:User) WHERE u.name STARTS WITH 'usuario' SET u.owned=true RETURN u
Caminos más cortos desde lo que controlas hasta Domain Admins
MATCH p=shortestPath((n {owned:true})-[*1..]->(g:Group)) WHERE g.name STARTS WITH 'DOMAIN ADMINS@' RETURN p
Usuarios kerberoastables (tienen SPN)
MATCH (u:User {hasspn:true}) RETURN u.name, u.serviceprincipalnames
Usuarios AS-REP roastables (sin preautenticación)
MATCH (u:User {dontreqpreauth:true}) RETURN u.name
Qué puede abusar el usuario que controlas (ACL de salida)
MATCH p=(u:User {owned:true})-[:GenericAll|GenericWrite|WriteDacl|WriteOwner|AddKeyCredentialLink|ForceChangePassword|AddMember|AllowedToDelegate*1..]->(n) RETURN p
Equipos con delegación sin restricciones
MATCH (c:Computer {unconstraineddelegation:true}) RETURN c.name
Sesiones de usuarios de alto valor (dónde capturar credenciales)
MATCH (u:User)-[:MemberOf*1..]->(g:Group) WHERE g.highvalue=true MATCH (c:Computer)-[:HasSession]->(u) RETURN c.name, u.name
Quién puede leer la contraseña de un gMSA
MATCH p=(n)-[:ReadGMSAPassword]->(m:User) RETURN p
Quién puede leer LAPS en qué equipos
MATCH p=(n)-[:ReadLAPSPassword]->(c:Computer) RETURN p

Máquinas de HTB donde se usa BloodHound

Sacadas de los capítulos de los vídeos de IppSec en los que aparece BloodHound. El enlace ▶ salta al minuto de esa parte.

Guías que usan BloodHound