TL;DR for defenders. Turn on Audit Kerberos Service Ticket Operations
on your domain controllers, then watch Event ID 4769 for two things: (1) service-ticket requests
using RC4 (TicketEncryptionType 0x17) in an environment that should be using AES,
and (2) a single account requesting tickets for an unusual number of distinct service principals.
A decoy "honeypot" SPN turns this from anomaly-hunting into a near-zero-false-positive alarm. Rules below.
Why this is still worth your time in 2026
Kerberoasting has been public since Tim Medin presented it in 2014, so it's tempting to file it under "solved." It isn't. CrowdStrike's 2023 Threat Hunting Report recorded a 583% year-over-year increase in Kerberoasting attacks, and IBM's 2024 X-Force Threat Intelligence Index reported a 100% increase in Kerberoasting attacks across 2023. Those figures are a few years old now, but the mechanics they describe haven't changed. The reason it persists is structural: the attack abuses how Kerberos is supposed to work, so there's no patch that makes it disappear.
There's also a 2026-specific wrinkle. Microsoft is finally retiring RC4 in Kerberos, and it's doing it
in phases on every domain controller version it still updates (Windows Server 2012 under ESU through
Windows Server 2025), not just in new domains. The January 2026 Windows updates added
KDC audit events (System log, events 201 to 209) that flag RC4 use without changing behaviour. The
April 2026 updates switched the domain controller default to AES-only for accounts
that have no explicit msDS-SupportedEncryptionTypes value, with a registry rollback to
audit mode still available. The July 2026 updates will remove that rollback. (Windows Server 2025
domain controllers already refuse to issue RC4 ticket-granting tickets, but the service
tickets Kerberoasting targets follow the account's encryption settings, which is why this change is
the one that matters.) That's real progress - but any account whose
msDS-SupportedEncryptionTypes explicitly includes RC4 still gets RC4 service tickets, and
Microsoft's own guidance is to set exactly that on anything that still needs RC4. Those tend to be the
old, over-privileged service accounts an attacker wants anyway. So for most organizations, the weak
encryption that makes Kerberoasting fast is still sitting on some accounts, and detection still matters.
How the attack actually works
Kerberos lets any authenticated domain user request a service ticket (a TGS) for any account that has a Service Principal Name (SPN). That's not a bug - it's how a user gets access to, say, a SQL service. The catch is what's inside the ticket: a portion encrypted with a key derived from the service account's password.
- The attacker, using any low-privilege domain account, enumerates accounts that have an SPN set (these are usually service accounts).
- They request a TGS for one or more of those SPNs. The domain controller happily issues the tickets.
- They extract the encrypted blob and crack it offline, on their own hardware, to recover the service account's plaintext password.
- Because the cracking happens off the network, there are no failed logons, no account lockouts, and nothing to trip a brute-force alarm.
Service accounts are a juicy target precisely because they're often over-privileged, rarely rotated, and set up years ago with passwords that predate any modern policy. Crack one and you may inherit a foothold that's effectively permanent.
RC4 is the part that hurts
The crackability depends almost entirely on the ticket's encryption type. When a ticket is issued with
RC4-HMAC (etype 0x17, decimal 23), the key is derived directly from the
account's unsalted NT hash - fast to attack with a GPU. Be careful with the headline numbers, though:
the figures in the hundreds of billions per second that get quoted are for raw NTLM. A single RTX 4090
running Hashcat 7.0.0 benchmarks at about 272 billion NTLM guesses per second (hash-mode 1000) but
about 3.4 billion per second against an RC4 TGS-REP (hash-mode 13100), because each guess
also has to run the HMAC key derivation and an RC4 decryption. Three billion a second on one consumer
card is still enough that a short or dictionary-based service-account password falls in minutes to
hours, and a multi-GPU rig multiplies it.
AES tickets (0x11/AES-128 and 0x12/AES-256) are dramatically harder - on the
same GPU, Hashcat runs AES-256 TGS-REP (hash-mode 19700) roughly a thousand times slower than the RC4
variant, and AES-128 (hash-mode 19600) several hundred times slower - because the key comes from salted
PBKDF2 rather than straight from the NT hash. That's
why Kerberoasting tooling frequently requests RC4 on purpose: the attacker downgrades to
the weakest option the domain will hand out. That deliberate downgrade is your single best detection
signal.
What you need flowing into your SIEM
Everything here keys off one Windows event generated on domain controllers:
Event ID 4769 - "A Kerberos service ticket was requested." If you're not collecting it yet:
- Enable Audit Kerberos Service Ticket Operations (Success) via Group Policy:
Computer Configuration → Policies → Windows Settings → Security Settings → Advanced Audit Policy → Account Logon. - Make sure your collector ships the Security log from every domain controller - a Kerberoasting request can be serviced by any DC, so a gap on one DC is a blind spot.
- Expect volume. 4769 fires constantly during normal operation, which is why the filtering below matters as much as the matching.
The fields you'll lean on in each 4769 event:
| Field | Why it matters |
|---|---|
TicketEncryptionType | 0x17 = RC4 (the downgrade signal). 0x12 = AES-256, 0x11 = AES-128. |
ServiceName / ServiceSid | The account whose ticket was requested - i.e. the roast target. Names ending in $ are computer accounts (usually benign). |
TargetUserName / Account Name | The principal that made the request - the account you'd investigate. |
TicketOptions | Roasting tools often produce recognizable option flags (commonly 0x40810000), though this varies and shouldn't be relied on alone. |
Status | 0x0 = the ticket was successfully issued. |
Detection strategy
No single rule is a silver bullet. The reliable approach layers three detections, from highest-precision to broadest. This mirrors MITRE ATT&CK's own detection strategy for the technique (DET0157).
1. RC4 ticket requested in an AES environment (high precision)
If your domain functional level and accounts support AES, legitimate clients should almost never request
RC4. So an RC4 4769 becomes a strong signal. We exclude computer accounts ($) and
krbtgt, which generate benign RC4 traffic in many environments.
title: Kerberoasting - RC4 Service Ticket Requested
id: 8f1e2c33-6a4b-4d9e-9a1f-2b7c0d5e4a10
status: experimental
description: >
A Kerberos TGS (Event 4769) was issued using RC4-HMAC encryption.
In AES-capable domains this is a common indicator of Kerberoasting,
where tooling downgrades to RC4 to ease offline cracking.
references:
- https://attack.mitre.org/techniques/T1558/003/
- https://umbrasec.dev/research/detecting-kerberoasting.html
author: UMBRASEC
date: 2026/06/10
tags:
- attack.credential_access
- attack.t1558.003
logsource:
product: windows
service: security
detection:
selection:
EventID: 4769
TicketEncryptionType: '0x17' # RC4-HMAC
TicketOptions: '0x40810000' # see tuning note - remove if too narrow
Status: '0x0' # only count successfully issued tickets
filter_machine:
ServiceName|endswith: '$'
filter_krbtgt:
ServiceName: 'krbtgt'
condition: selection and not 1 of filter_*
falsepositives:
- Legacy applications or appliances that genuinely require RC4
- Some Linux/macOS or third-party Kerberos clients
- Accounts whose msDS-SupportedEncryptionTypes still allow only RC4
level: medium
Tuning note. The TicketOptions: '0x40810000' line tightens
precision but will miss tools that vary their flags. Start without it to measure your baseline of
RC4 requests, identify the legitimate RC4-only accounts, add those to filter_machine as an
allowlist, and only then decide whether the TicketOptions constraint earns its keep.
2. One account, many service principals (velocity / fan-out)
Roasting frameworks frequently pull tickets for every SPN they can find in one burst. A normal
user touches a handful of services a day; an account requesting tickets for dozens of distinct SPNs in
minutes is anomalous regardless of encryption type. This one is best expressed as an aggregation, so it's
a natural fit for a Sigma correlation rule (or the equivalent stats query in your
SIEM):
title: Kerberoasting - High Volume of Distinct SPN Requests
id: 1c9d4b77-2e55-4f01-bb3a-6d8e9f0a1b22
status: experimental
description: >
A single account requested Kerberos service tickets (4769) for an
unusually large number of distinct service principals in a short
window - consistent with bulk Kerberoasting enumeration.
references:
- https://attack.mitre.org/techniques/T1558/003/
author: UMBRASEC
date: 2026/06/10
tags:
- attack.credential_access
- attack.t1558.003
correlation:
type: value_count
rules:
- kerberoasting_4769_base
group-by:
- TargetUserName
timespan: 5m
condition:
gte: 15
field: ServiceName
---
title: Kerberoasting 4769 base
id: 2d0e5c88-3f66-4012-cc4b-7e9f0a1b2c33
name: kerberoasting_4769_base
logsource:
product: windows
service: security
detection:
selection:
EventID: 4769
Status: '0x0'
filter_machine:
TargetUserName|endswith: '$'
condition: selection and not filter_machine
The gte: 15 threshold and 5m window are starting points, not gospel. Run it in
report-only mode for a week, look at your top talkers (vulnerability scanners and monitoring accounts will
show up - allowlist them), and set the threshold above your noisiest legitimate account.
3. The honeypot SPN (near-zero false positives)
This is the highest-value, lowest-effort detection in the whole post, and it deserves more attention than it gets. Create a decoy service account:
- Give it a tempting SPN (e.g.
MSSQLSvc/sql-prod-01.corp.example:1433) so it shows up in any SPN enumeration. - Make sure nothing legitimately uses it - no real service, no app config points at it.
- Give it a long, random password (so even if cracked, it's worthless) and minimal privileges.
Now any 4769 naming that account is suspicious by construction, because no honest workload ever requests its ticket. This converts a fuzzy anomaly problem into a binary alarm.
title: Kerberoasting - Honeypot SPN Ticket Requested
id: 3e1f6d99-4a77-4123-dd5c-8f0a1b2c3d44
status: experimental
description: >
A Kerberos service ticket (4769) was requested for a decoy service
account that no legitimate workload uses. Any hit is high-confidence
evidence of SPN enumeration / Kerberoasting.
references:
- https://attack.mitre.org/techniques/T1558/003/
author: UMBRASEC
date: 2026/06/10
tags:
- attack.credential_access
- attack.t1558.003
- attack.deception
logsource:
product: windows
service: security
detection:
selection:
EventID: 4769
ServiceName: 'svc-honeypot-sql' # <-- your decoy sAMAccountName
condition: selection
falsepositives:
- A misconfigured scanner that was pointed at the decoy (investigate anyway)
level: high
Mitigation, not just detection
Detection buys you time; these changes shrink the attack surface. Microsoft's October 2024 guidance is the authoritative reference and worth reading in full.
- Use Group Managed Service Accounts (gMSAs) where you can. They use 120-character, automatically-rotated passwords that are not practically crackable.
- Kill RC4. Move accounts and domains to AES-only (
msDS-SupportedEncryptionTypes), after you've used detection #1 to find what still needs RC4. This is the same direction Microsoft is pushing with its 2026 Kerberos RC4 hardening updates. - Fix weak service-account passwords. Long and random beats clever. AES raises the cost, but a short AES-protected password still falls eventually.
- Audit SPNs and privilege. Remove SPNs from accounts that don't need them, and strip service accounts of Domain Admin-tier rights they were over-granted years ago.
Honest limitations
A "low and slow" attacker who requests a single high-value ticket and waits will sail past the velocity rule (#2) and, if they target an account that's still RC4-only for legitimate reasons, may not stand out in rule #1 either. That's not a reason to skip these - it's the reason the honeypot (#3) exists, and the reason mitigation matters as much as detection. Layer all three, and pair them with the non-crackable passwords that make a stolen ticket useless even if it slips through.
These rules are written to be readable and tunable, not dropped in blind. Test them in report-only mode, baseline your own environment, and treat the thresholds as dials. If one misbehaves for you, that's a great GitHub issue - corrections make the next version better.
References
- Microsoft Support - KB5073381: How to manage Kerberos KDC usage of RC4 for service account ticket issuance changes related to CVE-2026-20833 (Jan 2026)
- Microsoft Tech Community - Phase 2 of Kerberos RC4 hardening begins with the April 2026 Windows security update (Apr 2026)
- Microsoft Learn - Detect and Remediate RC4 Usage in Kerberos (Feb 2026)
- Microsoft Security Blog - Guidance to help mitigate Kerberoasting (Oct 2024)
- MITRE ATT&CK - T1558.003: Steal or Forge Kerberos Tickets: Kerberoasting
- MITRE ATT&CK - Detection Strategy DET0157 (Detect Kerberoasting Attempts)
- CrowdStrike Blog - Amid Sharp Increase in Identity-Based Attacks, CrowdStrike Unveils New Threat Hunting Capability (Aug 2023)
- CrowdStrike - What is a Kerberoasting Attack? (Mar 2025)
- IBM Newsroom - IBM Report: Identity Comes Under Attack, Straining Enterprises' Recovery Time from Breaches (Feb 2024)
- hashcat Forum - NVIDIA RTX 4090 Benchmark HC 7.0.0 (Aug 2025)
- Chick3nman (GitHub Gist) - Hashcat v6.1.1 benchmark on the Nvidia RTX 3090 (Sep 2020)
- The Hacker News - Kerberoasting Detections: A New Approach to a Decade-Old Challenge (Jul 2025)
Scope note. This is a defensive writeup. It explains the technique only to the depth needed to detect and mitigate it, and deliberately does not provide roasting tooling or cracking instructions. UMBRASEC publishes defense, not offense.