Pass-the-Ticket
Arsenal completo de comandos en la cheatsheetPass-the-Ticket (PtT) consiste en reutilizar un ticket Kerberos ajeno (un TGT o un TGS) inyectándolo en nuestra sesión para autenticarnos como su dueño, sin conocer su contraseña ni su hash. Es el equivalente Kerberos del Pass-the-Hash: en vez de una clave, robamos el ticket ya emitido.
Por qué funciona. Kerberos guarda los tickets en la memoria de la sesión (LSASS) o, en Linux, en un fichero de caché (ccache). Un ticket es un portador: quien lo presente es tratado como la identidad que contiene, mientras no caduque. Si extraemos el TGT de una cuenta de un host comprometido, podemos actuar como esa cuenta contra cualquier servicio del dominio hasta que expire (por defecto ~10 horas el TGT).
El abuso. En Windows se exportan los tickets de memoria y se reinyecta el que interese (/ptt). En Linux se apunta la variable KRB5CCNAME al ccache robado y se usan las herramientas de Impacket con -k -no-pass.
# Windows: listar/exportar de memoria y reinyectar el ticket
Rubeus.exe triage
Rubeus.exe ptt /ticket:<ticket.kirbi>
# mimikatz: sekurlsa::tickets /export -> kerberos::ptt <ticket.kirbi>
# Linux: usar un ccache robado con Kerberos
export KRB5CCNAME=<ticket>.ccache
klist
psexec.py <domain>/<user>@<dc> -k -no-pass -target-ip <ip>Conversión de formatos y localización de tickets:
ticketConverter.py ticket.kirbi ticket.ccache # kirbi (Windows) -> ccache (Linux)
ticketConverter.py ticket.ccache ticket.kirbi # y a la inversa
klist -k -t /etc/krb5.keytab # tickets guardados en un keytab
ls -la /tmp/krb5cc_* # ccaches de otros usuarios en LinuxRequisitos. Hace falta acceso a los tickets: privilegios para volcar la memoria de LSASS (en Windows) o leer el ccache/keytab de otro usuario (en Linux). Un TGT abre cualquier servicio; un TGS solo el servicio para el que se emitió. Si el ticket caduca, deja de valer.
Cómo detectarlo. Un ticket reutilizado provoca peticiones de TGS (Event ID 4769) desde una IP o un equipo distintos de donde se emitió el TGT, a veces sin el 4768 correspondiente en ese host. Señales de apoyo: un mismo TGT usándose desde varias máquinas, o accesos Kerberos desde un host que nunca antes había autenticado a esa cuenta. Correlacionar la IP de origen del ticket con la de su emisión delata el traslado.
Defensa. Proteger LSASS (Credential Guard) para que no se puedan extraer tickets, meter las cuentas sensibles en Protected Users (limita el cacheo de tickets y su tiempo de vida), y responder a un compromiso invalidando sesiones. Encadena con Overpass-the-Hash (que primero pide un TGT con la clave y luego lo pasa) y con el Golden Ticket (donde el ticket, en vez de robado, es forjado).