Pass-the-Ticket and Overpass-the-Hash
Pass-the-Ticket injects a stolen or forged Kerberos ticket into a session to authenticate as another user without knowing their password. Overpass-the-Hash converts an NTLM hash into a Kerberos TGT, giving you a ticket-based session from a hash. Both techniques are standard lateral movement paths in AD environments.
For forged tickets (Golden and Silver), see https://hackindex.io/platforms/active-directory/exploitation/golden-ticket-silver-ticket.
Stealing Tickets from a Compromised Host
From Linux: dump cached tickets from LSASS or from a ccache file on a compromised system. If you have a shell on a Linux host joined to the domain, ccache tickets are stored in /tmp/:
Copy the file to your attack box and set the variable:
From Windows with Rubeus: dump all tickets in memory:
Dump tickets for a specific service:
The base64 ticket blob in the output can be injected directly.
From Windows with Mimikatz: export tickets as .kirbi files:
This drops .kirbi files to disk for every active Kerberos session. Look for [0;XXXXXX]-2-0-40e10000-Administrator@@krbtgt-DOMAIN.LOCAL.kirbi, that is a TGT.
Converting Tickets Between Formats
Impacket tools on Linux consume .ccache format. Rubeus and Mimikatz on Windows use .kirbi. Convert between them:
Using a Ticket on Linux
Set KRB5CCNAME to the path of your .ccache file, then use any Impacket tool with -k -no-pass:
Use the hostname rather than the IP when possible, Kerberos authentication is hostname-based and may fail against raw IPs depending on configuration. Add the target to /etc/hosts if needed:
Injecting a Ticket on Windows with Rubeus
Inject a base64 ticket directly into the current session:
Inject from a .kirbi file:
Verify the injection worked:
After injection, access resources natively with standard Windows tools, dir \\target\C$, PsExec, PowerShell remoting, etc.
Overpass-the-Hash
Overpass-the-Hash converts an NTLM hash into a Kerberos TGT. Use this when you have a hash from secretsdump or Mimikatz and want a Kerberos session rather than an NTLM-based one.
With Rubeus: request a TGT using the NT hash:
With an AES256 key (stealthier, matches normal ticket encryption):
/ptt injects the ticket into the current session immediately. Omit it to save the ticket to disk as a .kirbi instead.
With Impacket: request a TGT and save as ccache:
Then use the ticket with any Impacket tool as shown above.
With Mimikatz: spawn a new process under the impersonated identity:
This opens a new cmd.exe with the impersonated user's Kerberos identity. Standard Windows tools in that window will use the Kerberos ticket.
Requesting a TGT from a ccache Ticket
If you already have a TGS or a partial ticket and need a full TGT for further use:
This uses the current session's Kerberos context to request a usable TGT via the delegation mechanism, useful when you are on a machine as a service account and need to extract a TGT for that account.
References
-
Fortra getTGT.py, ticketConverter.py, and Kerberos-enabled execution tools.
-
GhostPack ptt, dump, asktgt, and tgtdeleg module documentation.
-
A little tool to play with Windows security
Was this helpful?
Your feedback helps improve this page.