Enumeración desde Linux en Active Directory


Info

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)

Tip

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'

Info

CME muestra información útil como badPwdCount de usuarios, grupos con privilegios, usuarios logueados, y acceso a shares (READ/WRITE).


🔹 SMBMap

Tip

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
Info

Permite descubrir shares interesantes como Department Shares, User Shares, ZZZ_archive que pueden contener datos sensibles.


🔹 rpcclient

Tip

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

{B7ABE823-6C42-4856-BAC2-F259337B43CD}.png

Info

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.


Tip

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
Info

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

Tip

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
Info

Permite encontrar usuarios con privilegios ocultos en grupos anidados y generar datos útiles para reporting.


Info

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)
Tip

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

  1. Iniciar Neo4j:

    sudo neo4j start
    
  2. Abrir GUI BloodHound:

    bloodhound
    
  3. Credenciales iniciales de Neo4j:

user: neo4j
pass: HTB_@cademy_stdnt!

🔹 Cargar datos en la GUI

Tip

Puedes cargar archivos JSON individuales o comprimirlos en un ZIP:

zip -r inlanefreight_bh.zip *.json

Pasted image 20251116194845.png


🔹 Analizando relaciones en BloodHound

🔹 Funciones principales:

Pasted image 20251116194852.png

Tip

Explora las hojas de trucos de Cypher para consultas avanzadas y personalizadas.


🔹 Tips de visualización y configuración


🔹 Resumen del flujo de trabajo

  1. Recolectar datos con bloodhound-python desde Linux con credenciales de dominio.

  2. Verificar los archivos JSON generados en tu directorio de trabajo.

  3. Iniciar Neo4j y abrir la GUI de BloodHound.

  4. Subir datos (JSON o ZIP) a la GUI.

  5. Explorar nodos, relaciones y consultas predefinidas.

  6. Realizar consultas Cypher personalizadas según objetivos de escalación.

Info

Este flujo permite descubrir rutas de escalación a Domain Admin, usuarios con privilegios especiales, relaciones entre hosts, ACLs y GPOs.