T1550.003 Splunk · SPL

Detect Pass the Ticket in Splunk

Adversaries may 'pass the ticket' using stolen Kerberos tickets to move laterally within an environment, bypassing normal system access controls and credential requirements. Pass the Ticket (PtT) involves injecting a valid Kerberos Ticket Granting Ticket (TGT) or service ticket into a current Windows logon session, allowing authentication to resources as the ticket's owner without knowing the account password. Tickets are typically obtained via OS credential dumping against LSASS memory (using tools like Mimikatz sekurlsa::tickets or Rubeus dump) and then injected with Mimikatz kerberos::ptt or Rubeus ptt. A Silver Ticket attack forges a service ticket using a compromised service account's NTLM hash, granting access to that specific service. A Golden Ticket forges a TGT using the krbtgt account hash, effectively granting domain-wide persistence. 'Overpass the Hash' uses an NTLM hash to request a legitimate Kerberos TGT, bridging Pass the Hash and Pass the Ticket. Real-world users of this technique include APT29 (Kerberos ticket attacks during Nobelium campaigns), APT32 (Cobalt Kitty operation), BRONZE BUTLER (forged TGTs for persistent administrative access), and the SeaDuke malware. The technique is operationalized primarily through Mimikatz (kerberos::ptt, sekurlsa::tickets), Rubeus (asktgt, dump, ptt, tgtdeleg), Kekeo, and Impacket (getTGT.py, getST.py, psexec.py with ccache files).

MITRE ATT&CK

Tactic
Defense Evasion Lateral Movement
Technique
T1550 Use Alternate Authentication Material
Sub-technique
T1550.003 Pass the Ticket
Canonical reference
https://attack.mitre.org/techniques/T1550/003/

SPL Detection Query

Splunk (SPL)
spl
// T1550.003 — Pass the Ticket: Tool execution detection via Sysmon + Kerberos anomaly detection
// Signal 1: PtT tool execution via Sysmon EventCode=1 (Process Create)
index=wineventlog sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1
(
    Image IN ("*\\mimikatz.exe", "*\\rubeus.exe", "*\\kekeo.exe")
    OR CommandLine IN ("*kerberos::ptt*", "*sekurlsa::tickets*", "*sekurlsa::krbtgt*")
    OR CommandLine IN ("*asktgt*", "*asktgs*", "*tgtdeleg*", "*s4u2self*", "*s4u2proxy*")
    OR CommandLine IN ("*/ptt*", "*ptt /ticket*", "*/ticket:*", "*dump /nowrap*")
    OR CommandLine IN ("*ticketer*", "*ticketConverter*", "*getTGT*", "*getST*")
    OR (CommandLine="*.kirbi*" AND (CommandLine="*ptt*" OR CommandLine="*inject*" OR CommandLine="*import*"))
    OR CommandLine IN ("*harvest /interval*", "*.ccache*")
)
| eval DetectionSignal="PtT Tool Execution"
| eval IsMimikatz=if(match(lower(Image), "mimikatz") OR match(lower(CommandLine), "kerberos::ptt|sekurlsa::tickets"), 1, 0)
| eval IsRubeus=if(match(lower(Image), "rubeus") OR match(lower(CommandLine), "asktgt|asktgs|tgtdeleg|/ptt|\.kirbi"), 1, 0)
| eval IsImpacket=if(match(lower(CommandLine), "getTGT|getST|ticketer|ccache"), 1, 0)
| table _time, host, User, Image, CommandLine, ParentImage, ParentCommandLine, DetectionSignal, IsMimikatz, IsRubeus, IsImpacket
| eval source_query="sysmon_process"

| append [
    // Signal 2: RC4 Kerberos service ticket requests (Event 4769 — possible ticket forgery)
    search index=wineventlog sourcetype="WinEventLog:Security" EventCode=4769
    | rex field=_raw "TicketEncryptionType\:\s+(?<TicketEncryptionType>0x\w+)"
    | rex field=_raw "ServiceName\:\s+(?<ServiceName>[^\r\n]+)"
    | rex field=_raw "Account Name\:\s+(?<TargetUserName>[^\r\n]+)"
    | rex field=_raw "Client Address\:\s+(?<SrcIP>[^\r\n]+)"
    | rex field=_raw "Failure Code\:\s+(?<FailureCode>0x\w+)"
    | where TicketEncryptionType="0x17"
    | where FailureCode="0x0" OR isnull(FailureCode)
    | where NOT match(ServiceName, "\\$$")
    | where NOT match(TargetUserName, "\\$$")
    | eval DetectionSignal="RC4 Kerberos Downgrade (Possible Forgery)"
    | eval IsMimikatz=0, IsRubeus=0, IsImpacket=0
    | table _time, host, TargetUserName as User, ServiceName as Image, TicketEncryptionType as CommandLine, SrcIP as ParentImage, DetectionSignal, IsMimikatz, IsRubeus, IsImpacket
    | eval source_query="kerberos_rc4"
]

| append [
    // Signal 3: Kerberos NewCredentials logon (Event 4624 LogonType=9) — PtT local injection pattern
    search index=wineventlog sourcetype="WinEventLog:Security" EventCode=4624
    | rex field=_raw "Logon Type\:\s+(?<LogonType>\d+)"
    | rex field=_raw "Authentication Package\:\s+(?<AuthPackage>[^\r\n]+)"
    | rex field=_raw "Account Name\:\s+(?<SubjectUser>[^\r\n]+)"
    | rex field=_raw "New Logon.*?Account Name\:\s+(?<TargetUser>[^\r\n]+)" flags=s
    | where LogonType="9"
    | where AuthPackage="Kerberos"
    | where SubjectUser!=TargetUser
    | eval DetectionSignal="Kerberos NewCredentials Logon (Possible PtT Injection)"
    | eval IsMimikatz=0, IsRubeus=0, IsImpacket=0
    | table _time, host, SubjectUser as User, TargetUser as Image, AuthPackage as CommandLine, LogonType as ParentImage, DetectionSignal, IsMimikatz, IsRubeus, IsImpacket
    | eval source_query="newcreds_logon"
]

| sort - _time
critical severity high confidence

Detects Pass the Ticket attacks across three detection signals using a union of Sysmon and Windows Security event data. Signal 1 uses Sysmon EventCode=1 (Process Create) to identify execution of Mimikatz, Rubeus, Kekeo, and Impacket PtT utilities by both filename matching and command line pattern matching across all major PtT operations (dump, inject, ptt, asktgt, asktgs). Signal 2 uses Windows Security EventCode=4769 (Kerberos Service Ticket Operations) to detect RC4 (0x17) encryption type requests — a strong indicator of ticket forgery or downgrade attacks. Signal 3 uses EventCode=4624 with LogonType=9 (NewCredentials) combined with Kerberos authentication package and a differing target account, the Windows pattern produced when injected Kerberos tickets are used for outbound lateral movement.

Data Sources

Process: Process CreationLogon Session: Logon Session CreationActive Directory: Active Directory Credential RequestSysmon Event ID 1Windows Security Event IDs 4769, 4624

Required Sourcetypes

XmlWinEventLog:Microsoft-Windows-Sysmon/OperationalWinEventLog:Security

False Positives & Tuning

  • Security scanning tools (BloodHound, PingCastle) requesting Kerberos service tickets for SPN enumeration, producing high volumes of 4769 events
  • RC4 encryption remaining in use for legacy compatibility (older Unix Kerberos, Windows Server 2003 clients), creating large numbers of legitimate 0x17 tickets
  • Legitimate application servers using Kerberos constrained delegation (S4U2Proxy) to impersonate users, matching s4u2self/s4u2proxy command line patterns
  • Security researchers and red team operators using Rubeus, Mimikatz, or Impacket in authorized lab environments or pentest engagements
  • NewCredentials logon events from legitimate RunAs /netonly usage by administrators managing multiple domain accounts simultaneously
Download portable Sigma rule (.yml)

Other platforms for T1550.003


Testing Methodology

Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Mimikatz kerberos::ptt — Inject Existing Kerberos Ticket

    Expected signal: Sysmon Event ID 1: Process Create with Image=mimikatz.exe, CommandLine containing 'sekurlsa::tickets /export' and 'kerberos::ptt'. Sysmon Event ID 10: ProcessAccess event targeting lsass.exe from mimikatz.exe with GrantedAccess 0x1010 or 0x1438. Sysmon Event ID 11: File Create events for .kirbi files in the working directory. Windows Security Event ID 4769 may appear on the domain controller if tickets are subsequently used for network authentication.

  2. Test 2Rubeus asktgt + ptt — Request and Inject TGT

    Expected signal: Sysmon Event ID 1: Process Create with Image=Rubeus.exe, CommandLine containing 'asktgt', '/rc4', and '/ptt'. Windows Security Event ID 4768 on the domain controller: Kerberos Authentication Service with TicketEncryptionType=0x17 (RC4). Windows Security Event ID 4769 with TicketEncryptionType=0x17 if the TGT is then used to request service tickets. Sysmon Event ID 3: NetworkConnect from Rubeus.exe to the domain controller on port 88 (Kerberos).

  3. Test 3Rubeus dump — Extract All Tickets from LSASS

    Expected signal: Sysmon Event ID 1: Process Create with Image=Rubeus.exe, CommandLine='dump /nowrap'. Sysmon Event ID 10: ProcessAccess targeting lsass.exe from Rubeus.exe with GrantedAccess values indicating memory read (0x1010 or similar). Sysmon Event ID 11: File Create for %TEMP%\rubeus_tickets.txt. Windows Defender (if enabled) may generate alert for Rubeus.exe based on signature or behavior detection.

  4. Test 4Impacket getTGT.py + psexec.py — Linux-to-Windows Pass the Ticket

    Expected signal: Domain Controller Windows Security Event ID 4768: Kerberos Authentication Service for <USERNAME> from the Linux attack host IP. Domain Controller Event ID 4769: Service ticket request for HOST SPN on <TARGET_HOST>. Target Windows host Event ID 4624: Network Logon (Type 3) from the Linux attack host IP authenticated via Kerberos. Sysmon Event ID 1 on target host: cmd.exe spawned by psexecsvc.exe (Impacket's service executable). Target host Event ID 7045: New service 'PSEXESVC' or similar installed.

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections