bloodhound-python permite mapear relaciones de Active Directory (usuarios, grupos, permisos, GPOs)
bloodhound-python permite mapear relaciones de Active Directory (usuarios, grupos, permisos, GPOs)
bloodhound-python (también conocido como ingestor de Python) es la herramienta oficial de recolección de datos remota para BloodHound. Permite mapear relaciones de Active Directory (usuarios, grupos, permisos, GPOs) desde una máquina Linux sin interactuar directamente con la interfaz gráfica de Windows.Instalación en Kali Linux
Bash
sudo apt update
sudo apt install bloodhound.py
Nota: Si prefieres la versión más reciente de Python, puedes usar:
pip install bloodhoundComando de Ejecución Básico
Bash
bloodhound-python -u 'Usuario' -p 'Contraseña' -d 'dominio.local' -dc 'dc01.dominio.local' -c All
| Parámetro | Descripción |
-u | Nombre de usuario de Active Directory |
-p | Contraseña del usuario |
-d | Nombre del dominio FQDN |
-dc | Nombre de host o FQDN del Controlador de Dominio |
-c All | Método de recolección (obtiene objetos, ACLs, sesiones y grupos) |
Sintaxis según el Método de Autenticación
- Con Hash NTLM (Pass-the-Hash):Bash
bloodhound-python -u 'Usuario' --hashes 'LM:NTLM' -d 'dominio.local' -dc 'dc01.dominio.local' -c All - Con Ticket Kerberos (.ccache):Bash
export KRB5CCNAME=/path/to/ticket.ccache bloodhound-python -k -no-pass -d 'dominio.local' -dc 'dc01.dominio.local' -c All
Exportación de Resultados
Al finalizar la ejecución, la herramienta generará varios archivos comprimidos en formato
.json (o un .zip único) en tu directorio actual. Estos archivos son los que debes importar en la interfaz visual de BloodHound GUI o BloodHound CE para analizar las rutas de escalada de privilegios.El módulo
-c (CollectionMethod) y los modificadores de red de bloodhound-python permiten ajustar la profundidad del escaneo para reducir el ruido generado en la red y evadir la detección por parte de un SIEM o EDR.1. Selección Granular del Método de Recolección (
-c)El uso predeterminado de
-c All o -c Default genera un volumen alto de tráfico LDAP y llamadas RPC (como la consulta de sesiones en endpoints). Para evitar activar alertas por comportamiento anómalo de enumeración:| Método | Qué recolecta | Nivel de Ruido / Detección |
Group | Miembros de grupos y estructura de OUs. | Muy Bajo (Solo consultas LDAP estándar). |
LocalGroup | Administradores locales y Remote Desktop Users. | Medio (Requiere conexiones RPC a hosts remotos). |
Session | Sesiones de usuarios activos en equipos. | Alto (Abre puertos RPC/SMB hacia múltiples hosts). |
Trusts | Relaciones de confianza entre dominios. | Mínimo. |
ACL | Permisos explícitos (DACLs) en objetos de AD. | Bajo-Medio (Tráfico LDAP intensivo pero legítimo). |
DCNonly | Información accesible exclusivamente desde el DC. | Bajo (No contacta estaciones de trabajo). |
- Ejemplo para evasión (solo consultas LDAP al DC):Bash
bloodhound-python -u 'Usuario' -p 'Pass' -d 'dominio.local' -dc 'dc01.dominio.local' -c DCNonly
2. Técnicas de Evasión y Optimización de Red
- Restringir la recolección de sesiones (
--disable-lac/--disable-sechd):Evita que la herramienta enumere credenciales almacenadas o administradores locales mediante llamadas RPC ruidosas a cada equipo de la red. - Limitación de subredes y rangos:En lugar de escanear toda la red, limita el alcance de las consultas RPC especificando subredes concretas o excluyendo sistemas críticos monitoreados.
- Uso de Kerberos sobre NTLM (
-k):La autenticación NTLM genera eventos específicos en los registros de auditoría de Windows (Event ID 4624 con tipo de autenticación NTLM). El uso de Kerberos simula el comportamiento nativo del dominio:Bashexport KRB5CCNAME=/path/to/ticket.ccache bloodhound-python -k -no-pass -d 'dominio.local' -dc 'dc01.dominio.local' -c Group,Trusts,ACL - Modo Sigiloso mediante Proxies (SOCKS / Proxychains):Si estás dentro de una sesión pivotada (ej. mediante Chisel, Ligolo-ng o Metasploit), puedes enrutar las peticiones LDAP a través de un proxy local evitando conexiones directas desde tu máquina atacante:Bash
proxychains bloodhound-python -u 'Usuario' -p 'Pass' -d 'dominio.local' -dc 'dc01.dominio.local' -c DCNonly - DNS y LDAPS (Encriptación de tráfico):Utilizar LDAP sobre SSL (
--use-ldapso puerto 636) evita que un IDS/IPS inspeccione en texto plano las consultas enviadas al Controlador de Dominio:Bashbloodhound-python -u 'Usuario' -p 'Pass' -d 'dominio.local' -dc 'dc01.dominio.local' --use-ldaps -c DCNonly
Resumen de la estrategia silenciosa:
Para mantener la máxima discreción, la mejor práctica es ejecutar
bloodhound-python únicamente contra el Controlador de Dominio usando el método DCNonly y autenticación por Kerberos o LDAPS, evitando hacer peticiones directas de sesión o administración local a las estaciones de trabajo de la red.