Enumeración desde Linux en Active Directory
La enumeración credencial se realiza una vez que tenemos un usuario de dominio con acceso limitado.
Permite extraer información sobre: usuarios, grupos, GPOs, ACLs, permisos, trusts y más.
Requiere credenciales válidas (contraseña en texto claro, hash NTLM o SYSTEM en un host unido al dominio).
🔹 CrackMapExec (CME / NetExec)
CME es un “Swiss Army Knife” para pentesting AD desde Linux. Funciona con SMB, MSSQL, SSH y WinRM.
📌 Comandos básicos
# Mostrar ayuda
crackmapexec -h
# Enumerar usuarios en un DC vía SMB
sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --users
# Enumerar grupos
sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --groups
# Ver usuarios conectados a un host
sudo crackmapexec smb 172.16.5.130 -u forend -p Klmcargo2 --loggedon-users
# Enumerar shares
sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 --shares
# Spidering dentro de un share
sudo crackmapexec smb 172.16.5.5 -u forend -p Klmcargo2 -M spider_plus --share 'Department Shares'
CME muestra información útil como badPwdCount de usuarios, grupos con privilegios, usuarios logueados, y acceso a shares (READ/WRITE).
🔹 SMBMap
Herramienta para enumerar SMB shares y permisos desde Linux.
📌 Comandos útiles
# Listar shares y permisos
smbmap -u forend -p Klmcargo2 -d INLANEFREIGHT.LOCAL -H 172.16.5.5
# Listar directorios recursivamente (solo directorios)
smbmap -u forend -p Klmcargo2 -d INLANEFREIGHT.LOCAL -H 172.16.5.5 -R 'Department Shares' --dir-only
Permite descubrir shares interesantes como Department Shares, User Shares, ZZZ_archive que pueden contener datos sensibles.
🔹 rpcclient
rpcclient permite enumerar y modificar objetos AD usando MS-RPC.
📌 Comandos de ejemplo
# Conexión NULL session
rpcclient -U "" -N 172.16.5.5
# Enumerar todos los usuarios y sus RID
rpcclient $> enumdomusers
# Obtener info de un usuario por RID
rpcclient $> queryuser 0x457

Cada usuario tiene un RID único, que junto con el SID del dominio, crea el SID completo del usuario.
Ej: htb-student → RID 0x457 → SID completo: S-1-5-21-3842939050-3880317879-2865463114-1111.
🔹 Impacket (psexec.py, wmiexec.py)
Herramientas para ejecutar comandos remotos en Windows.
psexec.py da shell SYSTEM, wmiexec.py shell semi-interactiva sin dejar archivos.
📌 Ejemplo de uso
# Con psexec.py
psexec.py inlanefreight.local/wley:'transporter@4'@172.16.5.125
# Con wmiexec.py
wmiexec.py inlanefreight.local/wley:'transporter@4'@172.16.5.5
psexec.py crea un servicio remoto y da control SYSTEM.
wmiexec.py es más sigiloso, pero no interactivo y cada comando se ejecuta como proceso separado.
🔹 Windapsearch
Python script para enumerar usuarios, grupos y computadores vía LDAP.
📌 Comandos útiles
# Enumerar Domain Admins
python3 windapsearch.py --dc-ip 172.16.5.5 -u forend@inlanefreight.local -p Klmcargo2 --da
# Buscar usuarios con privilegios (nested groups)
python3 windapsearch.py --dc-ip 172.16.5.5 -u forend@inlanefreight.local -p Klmcargo2 -PU
Permite encontrar usuarios con privilegios ocultos en grupos anidados y generar datos útiles para reporting.
🔹 BloodHound.py
BloodHound permite mapear relaciones de Active Directory y paths de escalación de privilegios.
Desde Linux, usamos bloodhound-python para recolectar datos LDAP con credenciales válidas.
🔹 Ejecución del recolector desde Linux
sudo bloodhound-python -u 'forend' -p 'Klmcargo2' -ns 172.16.5.5 -d inlanefreight.local -c all
🔹 Explicación de parámetros
| Parámetro | Descripción |
|---|---|
-u |
Usuario con acceso válido |
-p |
Contraseña del usuario |
-ns |
Servidor de nombres (DC) |
-d |
Dominio a enumerar |
-c all |
Ejecuta todas las comprobaciones (usuarios, grupos, computadoras, ACLs, trusts, GPOs) |
BloodHound genera archivos JSON por tipo de objeto, p. ej.:
20220307163102_computers.json
20220307163102_users.json
20220307163102_groups.json
20220307163102_domains.json
🔹 Preparar la GUI de BloodHound
-
Iniciar Neo4j:
sudo neo4j start -
Abrir GUI BloodHound:
bloodhound -
Credenciales iniciales de Neo4j:
user: neo4j
pass: HTB_@cademy_stdnt!
🔹 Cargar datos en la GUI
Puedes cargar archivos JSON individuales o comprimirlos en un ZIP:
zip -r inlanefreight_bh.zip *.json
-
En la GUI:
-
Click en Upload Data
-
Seleccionar ZIP o archivos JSON
-
Presionar Open
-

🔹 Analizando relaciones en BloodHound
🔹 Funciones principales:
-
Analysis Tab → Consultas predefinidas como:
-
Find Shortest Paths To Domain Admins -
Users with DCSync rights -
Local Admins
-
-
Database Info → Info general de nodos cargados
-
Node Info → Detalle de usuarios, grupos y hosts
-
Raw Query (Cypher) → Consultas personalizadas

Explora las hojas de trucos de Cypher para consultas avanzadas y personalizadas.
🔹 Tips de visualización y configuración
-
Configurar modo oscuro en Settings
-
Activar Debug Mode para consultas
-
Ajustar visualización de nodos y edges según la preferencia
🔹 Resumen del flujo de trabajo
-
Recolectar datos con bloodhound-python desde Linux con credenciales de dominio.
-
Verificar los archivos JSON generados en tu directorio de trabajo.
-
Iniciar Neo4j y abrir la GUI de BloodHound.
-
Subir datos (JSON o ZIP) a la GUI.
-
Explorar nodos, relaciones y consultas predefinidas.
-
Realizar consultas Cypher personalizadas según objetivos de escalación.
Este flujo permite descubrir rutas de escalación a Domain Admin, usuarios con privilegios especiales, relaciones entre hosts, ACLs y GPOs.