PASS-THE-TICKET
EVENT 4768
EVENT 4769
RC4 DOWNGRADE
DetectionBlue TeamSOCOctober 12, 2026•9 min read

Detecting Pass-the-Ticket and Overpass-the-Hash

A stolen Kerberos ticket is valid anywhere it is presented. The giveaway is a ticket in use by a host that never asked for it.

Scroll

Pass-the-ticket injects a stolen TGT or service ticket into another session; overpass-the-hash converts an NT hash or AES key into a fresh TGT. Both produce Kerberos events on the domain controller and the target that do not line up the way an honest logon does. That mismatch, and the encryption type of the request, are what you detect.

Signals at a Glance

SignalWhereATT&CK
TGT request (4768) using RC4 (0x17) for an account that supports AESDC Event 4768T1550.003
Service ticket (4769) with RC4 encryption in an AES-enabled domainDC Event 4769T1558
Type 3 Kerberos logon from a source with no matching 4768/4769 for that accountEvent 4624 + DC eventsT1550.003
Ticket lifetime beyond policy or used long after issueEvent 4768/4769, 4624T1558.001
Logon type 9 with seclogo on the source host before the Kerberos activityEvent 4624 type 9T1550.002

Encryption Downgrade and Missing Requests

Modern clients request AES tickets. Overpass-the-hash with an NT hash can only build an RC4 key, so a 4768 with TicketEncryptionType 0x17 for an account configured for AES is a strong lead. Kerberoasting also produces RC4 requests, so separate the two by the requester and the pattern:

// Sentinel (KQL) - RC4 TGT requests for accounts that normally receive AES tickets
let aes_users = SecurityEvent
| where EventID == 4768 and TimeGenerated between (ago(14d) .. ago(1d))
| where TicketEncryptionType in ("0x12", "0x11")
| distinct TargetUserName;
SecurityEvent
| where EventID == 4768 and TimeGenerated > ago(1d)
| where TicketEncryptionType == "0x17"
| where TargetUserName in (aes_users) and TargetUserName !endswith "$"
| project TimeGenerated, Computer, TargetUserName, IpAddress, TicketEncryptionType, PreAuthType
// tune/validate: legacy systems and service accounts without AES keys will appear; allowlist them.

For pass-the-ticket proper, compare where a ticket was issued with where it is used. A type 3 logon with the Kerberos package from a source IP that never requested a TGT or service ticket for that account is a ticket imported from elsewhere:

// Sentinel (KQL) - Kerberos network logon from a source with no ticket request in the last 10 hours
let tickets = SecurityEvent
| where EventID in (4768, 4769) and TimeGenerated > ago(10h)
| extend Src = replace_string(tostring(IpAddress), "::ffff:", "")
| distinct TargetUserName, Src;
SecurityEvent
| where EventID == 4624 and LogonType == 3 and AuthenticationPackageName == "Kerberos"
| where TargetUserName !endswith "$"
| extend Src = replace_string(tostring(IpAddress), "::ffff:", "")
| join kind=leftanti tickets on TargetUserName, Src
| project TimeGenerated, Computer, TargetUserName, Src, LogonProcessName
// tune/validate: NAT, load balancers and delegation (S4U) change the apparent source address.

Forged Tickets and Operational Checks

Vetted sources

Use the SigmaHQ Kerberos and overpass-the-hash rules, Elastic and Splunk ESCU Kerberos content and MITRE CAR analytics for ticket abuse. Microsoft documents the Kerberos events and encryption-type values, and Atomic Red Team provides test cases. Baseline your own environment: service accounts, trusts and Linux Kerberos clients legitimately use RC4.

Build Detections That Fire

Mjolnir Security helps blue teams turn threat intelligence into high-fidelity detections across endpoint, network, identity and cloud telemetry.

Detection EngineeringManaged Detection & ResponseThreat HuntingIncident ResponsePurple Teaming
  • Detection Engineering We build and tune detections mapped to ATT&CK from your own telemetry.
  • Threat Hunting as a Service Hypothesis-driven hunts for the behaviours on this page.
  • 24/7 Incident Response Containment when a detection fires. Call +1 833 403 5875.
Written by: Mjolnir Threat Research (MTAC)  |  Published: October 12, 2026  |  Last reviewed: October 12, 2026