Skip to main content

Detecting Kerberoasting

Status: Scaffold — content in progress

Paired Attack: Kerberoasting
DRL Level: DRL-5 (lab-validated, production tuning needed)
Detection Confidence: High (strong signal when properly filtered)

Required Telemetry

SourceEvent / FieldRequirement
Windows Security Log (DC)Event ID 4769Must audit Kerberos Service Ticket Operations
4769 fieldsTicketEncryptionType, ServiceName, ClientAddressKey filtering fields
MDI (optional)Kerberoasting detectionBehavioral enrichment

Enable audit policy on all DCs:

auditpol /set /subcategory:"Kerberos Service Ticket Operations" /success:enable /failure:enable

Sigma Rule

title: Kerberoasting — Bulk RC4 Service Ticket Requests
status: test
description: Detects multiple Kerberos service ticket requests using RC4 encryption (etype 0x17) from a single source — pattern consistent with Kerberoasting enumeration.
references:
- https://attack.mitre.org/techniques/T1558/003/
author: ITDR Handbook
date: 2026-06-10
tags:
- attack.credential_access
- attack.t1558.003
logsource:
product: windows
service: security
detection:
selection:
EventID: 4769
TicketEncryptionType: '0x17'
Status: '0x0'
filter_service_accounts:
ServiceName|endswith:
- '$' # Machine accounts (normal RC4 in some environments)
- 'krbtgt'
timeframe: 5m
condition: selection and not filter_service_accounts | count(ServiceName) by ClientAddress > 5
falsepositives:
- Legacy applications that only support RC4 (rare — legacy Java, old .NET apps)
- Service account testing
level: high

KQL — Microsoft Sentinel

SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17"
| where Status == "0x0"
| where ServiceName !endswith "$"
| where ServiceName != "krbtgt"
| summarize
RequestCount = count(),
TargetAccounts = make_set(ServiceName),
SourceIPs = make_set(IpAddress)
by Account, TimeGenerated = bin(TimeGenerated, 5m)
| where RequestCount > 5
| project TimeGenerated, Account, RequestCount, TargetAccounts, SourceIPs

KQL — MDE (Microsoft Defender for Endpoint)

DeviceEvents
| where ActionType == "LsassProcessOpened"
// Complement with network events for Kerberos ticket requests

SPL — Splunk

index=wineventlog EventCode=4769 TicketEncryptionType=0x17 Status=0x0
| where ServiceName!=krbtgt AND NOT(ServiceName LIKE "%$")
| stats count as RequestCount values(ServiceName) as TargetAccounts by src_ip, user
| where RequestCount > 5
| sort -RequestCount

False Positive Handling

FP ScenarioMitigation
Legacy app using RC4 onlyWhitelist the known service account / source IP
Security scan / pentestTime-correlate with approved testing schedule
New machine with old Kerberos clientInvestigate and upgrade

Response Actions

  1. Identify source machine and account making the requests
  2. Check if source is expected to query those service accounts
  3. Examine what services were targeted (are they high-value? Domain Admin equivalents?)
  4. Check if any service account passwords were changed after the requests (may indicate successful crack)
  5. Consider temporary Kerberos pre-auth enforcement review
TopicLink
Attackkerberoasting
Detection Frameworkdetection-framework