T1558.001

Golden Ticket

Adversaries who have obtained the KRBTGT account password hash may forge Kerberos ticket-granting tickets (TGT), known as golden tickets. Golden tickets enable adversaries to generate authentication material for any account in Active Directory with arbitrary group memberships, privilege levels, and ticket lifetimes — including non-existent accounts. The KRBTGT hash is typically obtained via OS Credential Dumping (DCSync or direct LSASS dump) against a domain controller. Tools including Mimikatz (kerberos::golden), Rubeus (golden /rc4: or /aes256:), Impacket ticketer.py, and the Empire/Sliver frameworks can generate forged TGTs locally without contacting the KDC. The forged ticket is then injected into memory (Pass-the-Ticket) and used to request Kerberos Service Tickets (TGS) for any resource in the domain. Golden tickets are highly persistent: they remain valid until the KRBTGT password is reset twice, and the attacker can regenerate them at will as long as the KRBTGT hash is known.

Microsoft Sentinel / Defender
kusto
// Golden Ticket Detection — Tool execution and Kerberos encryption anomaly signals
let LookbackPeriod = 24h;
let MimikatzGoldenPatterns = dynamic([
    "kerberos::golden", "kerberos::silver", "kerberos::ptt",
    "kerberos::purge", "kerberos::list", "sekurlsa::krbtgt",
    "/ptt", "/rc4:", "/aes256:", "/ticket:", "/sid:"
]);
let RubeusGoldenPatterns = dynamic([
    "golden /rc4:", "golden /aes128:", "golden /aes256:",
    "golden /des:", "silver /rc4:", "silver /aes256:",
    "ptt /ticket:", "asktgt /user:"
]);
// Component 1: Golden ticket tool execution (Mimikatz, Rubeus)
let ToolExecution = DeviceProcessEvents
| where Timestamp > ago(LookbackPeriod)
| where FileName =~ "mimikatz.exe"
    or FileName =~ "rubeus.exe"
    or ProcessCommandLine has "kerberos::golden"
    or ProcessCommandLine has "kerberos::silver"
    or ProcessCommandLine has_any (MimikatzGoldenPatterns)
    or ProcessCommandLine has_any (RubeusGoldenPatterns)
| extend DetectionType = "GoldenTicket_ToolExecution"
| extend ToolIndicator = case(
    ProcessCommandLine has "kerberos::golden", "Mimikatz_kerberos::golden",
    ProcessCommandLine has "kerberos::silver", "Mimikatz_kerberos::silver",
    ProcessCommandLine has "kerberos::ptt",   "Mimikatz_Pass-the-Ticket",
    ProcessCommandLine has "golden /rc4:",     "Rubeus_golden_RC4",
    ProcessCommandLine has "golden /aes256:",  "Rubeus_golden_AES256",
    ProcessCommandLine has "ptt /ticket:",     "Rubeus_PTT",
    FileName =~ "mimikatz.exe",               "Mimikatz_binary",
    FileName =~ "rubeus.exe",                 "Rubeus_binary",
    "Unknown_KerberosTool"
)
| project
    Timestamp,
    DeviceName,
    AccountName,
    FileName,
    ProcessCommandLine,
    InitiatingProcessFileName,
    InitiatingProcessCommandLine,
    DetectionType,
    ToolIndicator;
// Component 2: Kerberos TGS requests using RC4-HMAC encryption (Event 4769)
// In environments with AES enforcement, RC4 (0x17) ticket requests indicate forged tickets
// Golden tickets default to RC4 when attacker only has NT hash, not AES key
let KerberosRC4 = SecurityEvent
| where TimeGenerated > ago(LookbackPeriod)
| where EventID == 4769
| parse EventData with * 'ServiceName">' ServiceName '<' *
| parse EventData with * 'TicketEncryptionType">' TicketEncryptionType '<' *
| parse EventData with * 'IpAddress">' ClientAddress '<' *
| parse EventData with * 'Status">' TicketStatus '<' *
| where TicketEncryptionType =~ "0x17"          // RC4-HMAC — golden ticket default
| where TicketStatus =~ "0x0"                   // Successful requests only
| where ServiceName !endswith "$"               // Exclude machine account TGS requests
| where ServiceName !in~ ("krbtgt", "kadmin/changepw") // Exclude KDC internal
| where ClientAddress !in ("::1", "127.0.0.1", "-")
| extend DetectionType = "GoldenTicket_KerberosRC4Encryption"
| extend ToolIndicator = "RC4-HMAC_TGS_Request"
| project
    Timestamp = TimeGenerated,
    DeviceName = Computer,
    AccountName = Account,
    ServiceName,
    ClientAddress,
    TicketEncryptionType,
    DetectionType,
    ToolIndicator;
union ToolExecution, KerberosRC4
| sort by Timestamp desc
critical severity high confidence

Data Sources

Process: Process Creation Command: Command Execution Microsoft Defender for Endpoint Windows Security Event Log — Event ID 4769 (Kerberos Service Ticket Request)

Required Tables

DeviceProcessEvents SecurityEvent

False Positives

  • Legacy applications, services, and printers that do not support AES Kerberos and legitimately request RC4-encrypted TGS tickets (Event 4769 TicketEncryptionType 0x17) — common with older SQL Server service accounts, legacy IIS application pools, and SMB shares on Windows Server 2008
  • Authorized penetration testing or red team exercises using Mimikatz or Rubeus under a signed rules of engagement — verify against change management records and pentest scheduling windows
  • Security operations tooling that monitors Kerberos ticket state using Mimikatz kerberos::list for read-only inspection without ticket forgery
  • IT provisioning scripts or identity governance tools that interact with Kerberos ticket handling on admin workstations

Unlock Pro Content

Get the full detection package for T1558.001 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections