Parte: 7 — Red Team y operaciones ofensivas · Fuente: SpecterOps — BloodHound documentation ⏱️ Duración estimada: 100 min · Nivel: Avanzado
Usar BloodHound para modelar Active Directory como un grafo y descubrir rutas de ataque hacia el compromiso de dominio que serían invisibles a simple vista. El alumno recolectará datos con SharpHound/bloodhound-python, importará el grafo y usará las consultas para encontrar el camino más corto de un usuario de bajo privilegio a Domain Admin.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Modelo de grafo | Nodos (usuarios/equipos) y aristas (permisos) |
| 2 | Collectors | SharpHound, bloodhound-python, métodos |
| 3 | Aristas abusables | GenericAll, WriteDACL, ForceChangePassword... |
| 4 | Consultas predefinidas | "Shortest path to Domain Admins" |
| 5 | Cypher personalizado | Consultas a medida sobre el grafo |
| 6 | Priorización de rutas | Sigilo vs facilidad |
| 7 | Uso defensivo | El Blue Team también lo usa |
Una auditoría puede listar miembros de grupos privilegiados y no detectar que una cuenta ordinaria controla indirectamente a uno de ellos. BloodHound modela identidades, equipos, grupos, sesiones y permisos como un grafo dirigido. La pregunta deja de ser «¿quién es administrador?» y pasa a ser «¿qué secuencia de relaciones conecta una identidad controlada con un activo crítico?».
Un nodo representa una entidad; una arista expresa una relación con dirección y semántica. MemberOf no significa lo mismo que GenericAll, y HasSession describe estado observado, no un permiso permanente. Leer solo la línea visual sin consultar el significado de la arista produce conclusiones falsas.
El camino es una hipótesis: hay que confirmar que los datos siguen vigentes, que la ACE no está condicionada por herencia, que el servidor es alcanzable y que la sesión continúa existiendo. BloodHound prioriza la validación; no garantiza todos los saltos.
La recolección combina objetos relativamente estables —grupos o ACL— con estados volátiles —sesiones—. Cada conjunto necesita marca de tiempo, identidad recolectora, métodos habilitados y cobertura. Importar datos antiguos con datos nuevos puede dibujar rutas que nunca coexistieron. Antes de informar una ruta se registra cuándo se observó cada relación y se vuelve a consultar el salto crítico.
La cuenta colectora también condiciona visibilidad. Que no aparezca una relación puede significar que no existe, que no fue consultada o que la identidad no pudo verla. Ausencia en el grafo no equivale automáticamente a ausencia de riesgo.
El camino con menos aristas ayuda a explorar, pero el control defensivo se elige por alcance y efecto. Quitar una ACE heredada mal concedida puede cortar cientos de rutas; cerrar una sesión corta una relación transitoria. La remediación identifica el punto de control que reduce mayor exposición sin romper administración legítima.
Conviene etiquetar activos de alto valor y puntos de entrada realistas, y comparar rutas antes y después de un cambio. Así BloodHound valida delegaciones de helpdesk, separación de niveles, cuentas de servicio y lugares donde inician sesión administradores.
El informe conserva consulta, versión de datos y aristas relevantes. Para cada salto explica requisito, evidencia, limitación y medida defensiva. La demostración se detiene cuando el impacto queda probado; no hace falta recorrer hasta el control total si una modificación segura y reversible valida la relación crítica.
GenericAll). Característica: define un "salto" en la ruta.⚠️ La recolección se realiza en tu AD lab / GOAD. En engagements reales, SharpHound genera telemetría notable (consultas LDAP masivas): planifícalo con OPSEC. Nunca ejecutes collectors contra dominios ajenos sin autorización.
curl -L https://ghst.ly/getbhce | docker compose -f - up (o el método del repo) y accede a la consola web.bash
bloodhound-python -u lowuser -p 'Passw0rd' -d lab.local -ns 10.10.10.10 -c All
o SharpHound.exe -c All desde una máquina del dominio.
3. Importa los archivos zip/JSON en BloodHound y confirma que aparecen usuarios, equipos y grupos.
4. Marca tu punto de partida. Señala tu usuario de bajo privilegio como "Owned".
5. Ejecuta la consulta clave: "Shortest Path to Domain Admins from Owned Principals" y analiza las aristas del camino.
6. Explora aristas. Haz clic en una arista GenericAll y lee la ayuda de abuso (cómo explotarla con net, PowerView, Impacket).
7. Cypher a medida. Escribe una consulta para listar usuarios kerberoastables con camino a DA y prioriza la ruta más sigilosa.
WriteDACL sobre un grupo.Con BloodHound, identifica y documenta una ruta completa desde un usuario de bajo privilegio hasta Domain Admins en tu AD lab, explicando cómo se abusa de cada arista del camino. Criterio de aceptación: presentas el grafo con la ruta resaltada, listas cada arista en orden con la técnica concreta de abuso, y señalas cuál es el "salto" más ruidoso de la cadena.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| No hay caminos a DA | Datos incompletos; recolecta con -c All y marca "Owned" |
| Importación falla | Versión de collector incompatible con BloodHound CE; usa versiones emparejadas |
| Grafo vacío | Neo4j no conectado o import erróneo; revisa credenciales de Neo4j |
| SharpHound detectado | Recolección ruidosa; usa métodos más selectivos y espaciados |
| Aristas sin sentido | Datos viejos; vuelve a recolectar tras cambios en el lab |
❓ ¿BloodHound explota por mí? No; identifica las rutas y explica cómo abusarlas, pero la explotación la ejecutas tú con otras herramientas (PowerView, Impacket, Rubeus).
❓ ¿CE o legacy? BloodHound CE es la versión actual y recomendada. La legacy sigue documentada, pero CE trae mejor rendimiento y despliegue con Docker.
❓ ¿También sirve para defender? Sí. Los defensores lo usan para encontrar y cortar rutas peligrosas (relaciones ACL excesivas) antes de que un atacante las explote.
Clase 172 — Active Directory: Pass-the-Hash y Pass-the-Ticket
Clase 174 — Compromiso total de dominio: DCSync y Golden Ticket