Overview
impacket-getTGT requests a Ticket Granting Ticket (TGT) from a domain controller’s KDC. The TGT is saved as a .ccache file that can be used with other Kerberos-aware tools for pass-the-ticket attacks.
Authentication Methods
With Password
With NTLM Hash (Overpass-the-Hash)
With AES Key
AES256:Using the .ccache File
getTGT outputs a file named jdoe.ccache in the current directory. Set it as the active Kerberos credential cache:
Using the TGT with Other Impacket Tools
OnceKRB5CCNAME is set, use -k -no-pass to authenticate via Kerberos:
Renewing Tickets
getTGT cannot renew an existing ticket — it has no -renew option and always performs a fresh AS-REQ using the supplied password/hash/AES key. To get a new TGT, just re-run it with credentials. Actual ticket renewal in Impacket is done with getST -renew.
Common Errors
| Error | Cause | Fix |
|---|---|---|
KRB_AP_ERR_SKEW | Clock difference > 5 minutes between attacker and DC | Sync time: sudo ntpdate -u <DC_IP> or sudo timedatectl set-ntp off && sudo date -s "$(curl -s http://<DC_IP>)" |
KDC_ERR_PREAUTH_FAILED | Wrong password or hash | Verify credentials |
KDC_ERR_C_PRINCIPAL_UNKNOWN | User does not exist | Check username and domain |
KDC_ERR_CLIENT_REVOKED | Account disabled or locked | Account is unusable |
KDC_ERR_ETYPE_NOSUPP | DC doesn’t support the encryption type | Try a different key type (password vs AES vs NTLM) |
KRB_ERR_RESPONSE_TOO_BIG | KDC response exceeded the UDP size limit (user in many groups) | Impacket automatically retries over TCP — no action needed |
Quick Reference
| Flag | Description |
|---|---|
-hashes LMHASH:NTHASH | Authenticate with NTLM hash |
-aesKey KEY | Authenticate with AES key |
-dc-ip IP | Domain controller IP address |
-k | Use Kerberos authentication |
-no-pass | Don’t ask for password (use with -k) |