cd ~/blog

~/vulns/active-directory-windows-ad.md

Active Directory (Windows AD)

misc 19-06-2026
WindowsActiveDirectorypentesting

~3 min de lectura


1. Descripción técnica

Active Directory (AD) es el servicio de directorio de Microsoft que centraliza la gestión de identidades, autenticación y autorización en redes Windows. Un Domain Controller (DC) mantiene la base de datos del dominio (NTDS.dit), aplica las políticas (GPO) y atiende la autenticación de usuarios y equipos.

Desde el punto de vista ofensivo, AD no es una vulnerabilidad única, sino un ecosistema con una gran superficie de ataque. La mayoría de los compromisos no explotan un CVE, sino malas configuraciones, reutilización de credenciales y abuso de funcionalidades legítimas de los protocolos del dominio (Kerberos, LDAP, SMB, NTLM).

Servicios típicos de un DC (útiles para fingerprint):

PuertoServicio
53DNS
88Kerberos
135 / 49xxxRPC / DCOM
139 / 445NetBIOS / SMB
389 / 636LDAP / LDAPS
3268 / 3269Global Catalog
5985 / 5986WinRM
9389AD Web Services

2. Impacto

  • Compromiso total del dominio: obtener el hash de krbtgt o acceso al DC permite forjar tickets (Golden Ticket) y persistir indefinidamente.
  • Movimiento lateral entre todos los equipos unidos al dominio.
  • Acceso a datos sensibles, despliegue de ransomware a escala, persistencia difícil de erradicar.

3. Conceptos y vectores de ataque clave

Enumeración (a menudo el 80% del trabajo):

  • enum4linux-ng, crackmapexec/netexec, rpcclient, ldapsearch, BloodHound/SharpHound (mapea rutas de ataque y relaciones de privilegio).
  • Null/guest sessions, enumeración de usuarios, grupos, GPOs, ACLs y SPNs.

Ataques sobre Kerberos:

  • AS-REP Roasting: usuarios con "Do not require Kerberos preauth" → se obtiene un hash crackeable (GetNPUsers.py).
  • Kerberoasting: cualquier usuario autenticado puede pedir un TGS de cuentas con SPN → hash crackeable offline (GetUserSPNs.py).
  • Golden / Silver Ticket: con el hash de krbtgt (golden) o de una cuenta de servicio (silver) se forjan TGTs/TGSs arbitrarios.
  • Pass-the-Ticket / Overpass-the-Hash.

Ataques sobre credenciales NTLM:

  • Pass-the-Hash (PtH): autenticarse con el hash NTLM sin conocer la contraseña.
  • NTLM Relay (con SMB signing desactivado) y captura con Responder.
  • Volcado de hashes: DCSync (secretsdump.py, requiere privilegios de replicación), NTDS.dit, LSASS (mimikatz).

Abuso de ACLs / delegación:

  • Permisos peligrosos (GenericAll, WriteDACL, GenericWrite) sobre usuarios/grupos.
  • Unconstrained / Constrained / Resource-Based Constrained Delegation (RBCD).

CVEs de alto impacto frecuentes en CTFs:

  • MS17-010 EternalBlue (CVE-2017-0143) — RCE vía SMBv1.
  • Zerologon (CVE-2020-1472) — reset de la contraseña de la cuenta del DC → compromiso del dominio.
  • PrintNightmare (CVE-2021-1675 / CVE-2021-34527) — RCE/LPE vía Print Spooler.
  • noPac (CVE-2021-42278 / 42287), PetitPotam.

4. Factores que lo hacen posible

  1. Reutilización de contraseñas y credenciales en texto claro en shares/GPOs (p. ej. cpassword en Groups.xml).
  2. SMB signing desactivado (habilita NTLM relay).
  3. Cuentas de servicio con SPN y contraseñas débiles (Kerberoasting).
  4. ACLs mal configuradas y delegaciones excesivas.
  5. Parches ausentes (Zerologon, EternalBlue, PrintNightmare).

5. Detección / Enumeración

# Fingerprint del DC
nmap -sCV -p 53,88,135,139,389,445,464,593,636,3268,5985,9389 <ip>

# Enumeración con netexec (antes crackmapexec)
netexec smb <ip> -u '' -p ''                 # null session
netexec smb <ip> -u user -p pass --shares --users --pass-pol

# Kerberos
GetNPUsers.py dominio/ -usersfile users.txt -no-pass     # AS-REP Roasting
GetUserSPNs.py dominio/user:pass -request                # Kerberoasting

# Mapeo de rutas de ataque
bloodhound-python -d dominio -u user -p pass -c All -ns <ip>

6. Mitigación

  1. Aplicar parches (especialmente Zerologon, EternalBlue, PrintNightmare).
  2. Forzar SMB signing y deshabilitar NTLM donde sea posible.
  3. Contraseñas largas para cuentas de servicio; usar gMSA.
  4. Principio de mínimo privilegio en ACLs y delegaciones; revisar con BloodHound.
  5. Proteger LSASS (Credential Guard) y monitorizar DCSync/replicación.
  6. Habilitar preautenticación de Kerberos en todas las cuentas.

7. Ejemplo de explotación real

Compromiso directo de un DC vulnerable a EternalBlue (máquina Zero de HMV):

msf6 auxiliary(scanner/smb/smb_ms17_010) > run
[+] 192.168.1.29:445 - Host is likely VULNERABLE to MS17-010!

msf6 exploit(windows/smb/ms17_010_psexec) > run
[+] 192.168.1.29:445 - Overwrite complete... SYSTEM session obtained!

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

Volcado de credenciales del dominio con DCSync una vez se tienen privilegios:

secretsdump.py dominio/administrator@<ip> -just-dc

8. Clasificación

  • Tipo: Identity / Directory Services Attack Surface (no es un único CWE).
  • CWEs frecuentemente implicados:
    • CWE-287 – Improper Authentication
    • CWE-522 – Insufficiently Protected Credentials
    • CWE-269 – Improper Privilege Management

9. Resumen

Active Directory es el corazón de la mayoría de las redes corporativas Windows y su compromiso suele equivaler a controlar toda la organización. El pentesting de AD se basa más en enumeración exhaustiva, reutilización de credenciales y abuso de protocolos (Kerberos, NTLM, LDAP, SMB) que en exploits puntuales, aunque CVEs como EternalBlue, Zerologon y PrintNightmare ofrecen caminos directos. La defensa pasa por parcheo, mínimo privilegio, SMB signing y protección de credenciales.

// relacionados