Golden Ticket and Silver Ticket Attacks
A Golden Ticket is a forged TGT signed with the krbtgt account's hash. Because the KDC trusts its own signature, the ticket is accepted as valid for any service in the domain, for any user, including non-existent ones (pre-November 2021 patches) or any existing user (post-patch). A Golden Ticket gives you persistent, domain-wide lateral movement for as long as the krbtgt password is unchanged.
A Silver Ticket is a forged TGS for a specific service, signed with the service account's hash. It bypasses the KDC entirely, the target host validates the ticket using its own account hash, with no KDC contact required. Silver Tickets are more surgical and harder to detect, but limited to a single host and service.
Both techniques are lateral movement and post-access persistence tools, not privilege escalation. You need DA or the relevant hashes first. Getting those is covered in the Post-Exploitation phase.
For using tickets once forged, see Pass-the-Ticket at https://hackindex.io/platforms/active-directory/lateral-movement/pass-the-ticket.
Golden Ticket: What You Need
krbtgtNT hash (or AES key)Domain SID
Domain FQDN
A valid domain username to put on the ticket (required post-November 2021 patches)
Getting the krbtgt Hash and Domain SID
With DA credentials via DCSync:
The NT hash is the second field after krbtgt::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:e6b43234ea2ce6d8bafa4b17c7b3790f:::
Get the domain SID:
[*] Domain SID is: S-1-5-21-2365897340-51848609-3160590671
Forging a Golden Ticket with Impacket
This creates Administrator.ccache in the current directory. Use AES256 for stealth if you have the key:
Set the ticket and use it:
Forging a Golden Ticket with Mimikatz
kerberos::golden /user:Administrator /domain:$DOMAIN /sid:$DOMAIN_SID /krbtgt:$KRBTGT_HASH /id:500 /ptt/ptt injects directly into memory. Drop /ptt and add /ticket:golden.kirbi to save to disk for later use.
Silver Ticket: What You Need
NT hash of the target service account or computer account
Domain SID
Domain FQDN
Target SPN (service class and hostname)
A valid domain username to impersonate
Forging a Silver Ticket with Impacket
Useful SPNs by access type:
cifs/$TARGET_HOSTNAME.$DOMAIN: SMB file system access, psexechttp/$TARGET_HOSTNAME.$DOMAIN: WinRM / PowerShell remotinghost/$TARGET_HOSTNAME.$DOMAIN: PsExec shellMSSQLSvc/$TARGET_HOSTNAME.$DOMAIN:1433: SQL Server accessldap/$TARGET_HOSTNAME.$DOMAIN: LDAP / DCSync
Set and use the ticket the same way as a Golden Ticket:
Forging a Silver Ticket with Mimikatz
Despite using kerberos::golden, supplying /target and /service creates a Silver Ticket.
Service Name Substitution (AnySPN)
Impacket attempts SPN substitution by default when using tickets, allowing a CIFS ticket to be swapped to HTTP for WinRM access. This is called AnySPN. Use impacket-tgssub to manually substitute the service class in a ticket if automatic substitution fails:
Ticket Lifetime
Tickets created by Impacket and Mimikatz default to 10-year lifetimes. For authorized engagements, limit the lifetime to match your engagement window to reduce risk:
-duration sets hours. Silver Tickets expire when the target computer account rotates its password (default every 30 days). Golden Tickets persist until the krbtgt password is changed.
References
-
Fortra ticketer.py, tgssub.py, and execution tools source and documentation.
-
Benjamin Delpy kerberos::golden and kerberos::silver module documentation.
Was this helpful?
Your feedback helps improve this page.