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):
| Puerto | Servicio |
|---|---|
| 53 | DNS |
| 88 | Kerberos |
| 135 / 49xxx | RPC / DCOM |
| 139 / 445 | NetBIOS / SMB |
| 389 / 636 | LDAP / LDAPS |
| 3268 / 3269 | Global Catalog |
| 5985 / 5986 | WinRM |
| 9389 | AD Web Services |
2. Impacto
- Compromiso total del dominio: obtener el hash de
krbtgto 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. Técnicas 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 mediante SMBv1.
- Zerologon (CVE-2020-1472): alteración de la contraseña de la cuenta del DC.
- PrintNightmare (CVE-2021-1675 y CVE-2021-34527): ejecución o escalada mediante Print Spooler según el escenario.
- noPac (CVE-2021-42278 y CVE-2021-42287): encadenamiento de errores de identidad y emisión de tickets Kerberos.
4. Condiciones necesarias
- Reutilización de contraseñas y credenciales en texto claro en shares/GPOs (p. ej.
cpasswordenGroups.xml). - SMB signing desactivado (habilita NTLM relay).
- Cuentas de servicio con SPN y contraseñas débiles (Kerberoasting).
- ACLs mal configuradas y delegaciones excesivas.
- Parches ausentes (Zerologon, EternalBlue, PrintNightmare).
5. Validación y detección
La presencia de puertos asociados a AD permite reconocer un posible Domain Controller, pero no confirma ninguna técnica ofensiva. Cada hallazgo debe validarse por separado: configuración de preautenticación para AS-REP Roasting, existencia de SPN y credenciales válidas para Kerberoasting, permisos de replicación para DCSync o una versión vulnerable para una CVE concreta.
# 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
- Aplicar parches (especialmente Zerologon, EternalBlue, PrintNightmare).
- Forzar SMB signing y deshabilitar NTLM donde sea posible.
- Contraseñas largas para cuentas de servicio; usar gMSA.
- Principio de mínimo privilegio en ACLs y delegaciones; revisar con BloodHound.
- Proteger LSASS (Credential Guard) y monitorizar DCSync/replicación.
- Habilitar preautenticación de Kerberos en todas las cuentas.
7. Explotación documentada en los writeups
7.1. 114-zero
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\SYSTEMVolcado de credenciales del dominio con DCSync una vez se tienen privilegios:
secretsdump.py dominio/administrator@<ip> -just-dc7.2. 115-dc01
La enumeración de DNS, Kerberos, LDAP, SMB y WinRM identifica el controlador del dominio SOUPEDECODE.LOCAL. El writeup desarrolla después las técnicas concretas utilizadas sobre ese entorno, sin tratar la presencia de Active Directory como una vulnerabilidad por sí sola.
7.3. 141-warfare
El conjunto de servicios y la información expuesta por LDAP permiten reconocer un Domain Controller de Samba para warfare.local. La nota de la máquina separa esa identificación de las debilidades que habilitan el acceso posterior.
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