Ataques Kerberos
Kerberos es el protocolo de autenticación de AD. En vez de enviar contraseñas, usa tickets cifrados emitidos por el KDC (el Domain Controller): un TGT (Ticket Granting Ticket) identifica al usuario, y con él pide TGS (service tickets) para acceder a servicios concretos. El diseño es sólido, pero varios detalles de implementación —tickets cifrados con la clave del servicio, cuentas sin pre-autenticación, reutilización de claves— abren ataques potentísimos que no tocan el canal de red, solo piden tickets de forma legítima.
Modelo de amenaza
Sección titulada «Modelo de amenaza»El atacante no rompe la criptografía de Kerberos: abusa de a quién le confía qué. El KDC entrega, a cualquier usuario autenticado, tickets cifrados con la clave (el hash) de la cuenta de servicio → se crackean offline (Kerberoasting). A cuentas sin preauth, entrega material cifrado con su clave sin pedir contraseña (AS-REP roasting). Y cualquier clave/hash robado permite pedir tickets como esa identidad (overpass-the-hash). Todo “dentro de las reglas”.
Flujo Kerberos (resumido)
Sección titulada «Flujo Kerberos (resumido)»sequenceDiagram
participant C as Cliente
participant KDC as KDC (DC)
participant S as Servicio (SPN)
C->>KDC: AS-REQ (preauth con su clave)
KDC-->>C: AS-REP (entrega el TGT)
C->>KDC: TGS-REQ (con el TGT, pide ticket para el SPN)
KDC-->>C: TGS-REP (TGS cifrado con el hash del servicio)
C->>S: AP-REQ (presenta el TGS y el servicio lo valida)
Note over C,KDC: Kerberoasting — cualquier usuario pide el TGS-REP<br/>y lo crackea offline (hashcat -m 13100)
El punto clave: el TGS va cifrado con el hash de la cuenta del servicio (la que posee el SPN).
Red Team
Sección titulada «Red Team»Kerberoasting
Sección titulada «Kerberoasting»Cualquier usuario puede pedir un TGS para cualquier SPN. Ese TGS está cifrado con el hash de la cuenta de servicio → se crackea offline hasta recuperar su contraseña. Objetivo: cuentas de servicio (SQL, IIS, etc.), a menudo con contraseñas antiguas y débiles, y a veces en grupos privilegiados.
# remoto, sin tocar WindowsGetUserSPNs.py dominio/user:pass -dc-ip <DC> -request -outputfile hashes.txtnxc ldap <DC> -u user -p pass --kerberoasting kerb.txt# crackeohashcat -m 13100 hashes.txt rockyou.txtVariante targeted Kerberoasting: si tienes GenericWrite sobre un usuario, le pones un SPN temporal, lo rostizas, y se lo quitas.
AS-REP Roasting
Sección titulada «AS-REP Roasting»Las cuentas con “no requiere pre-autenticación Kerberos” entregan en el AS-REP material cifrado con su clave sin que pruebes su contraseña → crackeo offline directo, sin credenciales previas (solo necesitas el nombre de usuario).
GetNPUsers.py dominio/ -dc-ip <DC> -usersfile users.txt -no-pass -requesthashcat -m 18200 asrep.txt rockyou.txtOverpass-the-Hash / Pass-the-Key
Sección titulada «Overpass-the-Hash / Pass-the-Key»Con el hash NT (o clave AES) de un usuario, pides un TGT legítimo sin su contraseña → lo usas para todo Kerberos. Convierte un hash en acceso Kerberos completo.
getTGT.py dominio/user -hashes :<NThash> # -> user.ccacheexport KRB5CCNAME=user.ccachepsexec.py -k -no-pass dominio/user@host# en Windows: mimikatz sekurlsa::pth /user /ntlm /run:...Pass-the-Ticket
Sección titulada «Pass-the-Ticket»Robar un TGT/TGS de la memoria (LSASS) o de disco (.ccache, .kirbi) e inyectarlo para actuar como ese usuario.
mimikatz # sekurlsa::tickets /exportmimikatz # kerberos::ptt ticket.kirbiGolden / Silver / Diamond tickets
Sección titulada «Golden / Silver / Diamond tickets»Forjar tickets desde una clave robada (krbtgt → Golden; clave de servicio → Silver). Son técnicas de persistencia/escalada total; se tratan en ad-persist.
Herramientas
Sección titulada «Herramientas»- impacket (
GetUserSPNs.py,GetNPUsers.py,getTGT.py,ticketer.py) — Kerberos desde Linux. - Rubeus — la navaja de Kerberos en Windows (
kerberoast,asreproast,asktgt,ptt,s4u). - mimikatz — PtH/PtT, export de tickets.
- hashcat — crack de TGS (13100) y AS-REP (18200).
Impacto
Sección titulada «Impacto»De una cuenta cualquiera a credenciales de cuentas de servicio (a veces privilegiadas), y de un hash a acceso Kerberos pleno. Kerberoasting y AS-REP roasting son de los vectores de escalada más rentables en AD real.
Blue Team
Sección titulada «Blue Team»Detección
Sección titulada «Detección»- Kerberoasting: muchos 4769 (TGS request) por una cuenta, especialmente con cifrado RC4 (type 0x17) solicitado para muchos SPN.
- AS-REP roasting: 4768 con preauth no requerida; cuentas con
DONT_REQ_PREAUTH. - Tickets con lifetime/flags anómalos; RC4 donde debería ser AES.
Telemetría
Sección titulada «Telemetría»Audita 4768/4769 con tipo de cifrado; alerta sobre RC4 y sobre un volumen alto de TGS por cuenta. Honeypot: cuenta con SPN señuelo que, si se rostiza, dispara alerta.
Hardening
Sección titulada «Hardening»- Contraseñas largas y aleatorias (25+ chars) en cuentas de servicio → el crack de Kerberoasting se vuelve inviable. Mejor aún: gMSA/dMSA (contraseñas gestionadas de 120+ chars).
- Quita
DONT_REQ_PREAUTHde todas las cuentas (elimina AS-REP roasting). - Fuerza AES, deshabilita RC4 en Kerberos donde sea posible.
- Quita SPNs innecesarios; no pongas cuentas de servicio en grupos privilegiados.
- Protected Users (bloquea RC4/NTLM/delegación para esas cuentas), LSASS protegido (frena PtT/PtH).
Respuesta
Sección titulada «Respuesta»Resetea las cuentas de servicio comprometidas (dos veces si era krbtgt — ver Persistencia en Active Directory), revisa qué servicios tocó, y migra a gMSA; purga tickets robados invalidando sesiones.
CVEs y casos reales
Sección titulada «CVEs y casos reales»- Kerberoasting/AS-REP roasting no son CVEs: son abusos de protocolo (MITRE T1558.003, T1558.004), estándar en toda evaluación de AD.
- Bronze Bit (CVE-2020-17049) — bypass de restricciones de delegación en Kerberos.
- Sapphire/Diamond ticket y S4U abuse documentados por investigadores (Rubeus, impacket).
- Aparecen en playbooks de ransomware (Conti, Ryuk) para escalar a cuentas de servicio y de ahí a DA.
Checklist de prueba
Sección titulada «Checklist de prueba»- SPNs presentes → Kerberoasting (GetUserSPNs -request)
- Cuentas sin preauth → AS-REP roasting (GetNPUsers)
- ¿Los hashes rostizados crackean? (hashcat 13100/18200)
- Targeted Kerberoasting vía GenericWrite (SPN temporal)
- Overpass-the-hash: hash → TGT (getTGT)
- Pass-the-ticket desde LSASS/.ccache/.kirbi
- ¿RC4 permitido en vez de AES?
- Blue: ¿4769 RC4 monitorizado y gMSA en uso?