EXPLORE
← Back to Explore
splunk_escuTTP

Kerberoasting spn request with RC4 encryption

The following analytic detects potential Kerberoasting attacks by identifying Kerberos service ticket requests with RC4 encryption through Event ID 4769. It leverages specific Ticket_Options values commonly used by Kerberoasting tools. This activity is significant as Kerberoasting allows attackers to request service tickets for domain accounts, typically service accounts, and crack them offline to gain privileged access. If confirmed malicious, this could lead to unauthorized access, privilege escalation, and further compromise of the Active Directory environment.

MITRE ATT&CK

Detection Query

`wineventlog_security` EventCode=4769 ServiceName!="*$" (TicketOptions=0x40810000 OR TicketOptions=0x40800000 OR TicketOptions=0x40810010) TicketEncryptionType=0x17
  | stats count min(_time) as firstTime max(_time) as lastTime
    BY Computer, user, service_id,
       service, TicketEncryptionType, TicketOptions
  | rename Computer as dest
  | `security_content_ctime(lastTime)`
  | `security_content_ctime(firstTime)`
  | `kerberoasting_spn_request_with_rc4_encryption_filter`

Author

Jose Hernandez, Patrick Bareiss, Mauricio Velazco, Dean Luxton, Splunk

Created

2026-03-10

Data Sources

Windows Event Log Security 4769

Tags

Windows Privilege EscalationData DestructionActive Directory Kerberos AttacksCompromised Windows HostHermetic Wiper
Raw Content
name: Kerberoasting spn request with RC4 encryption
id: 5cc67381-44fa-4111-8a37-7a230943f027
version: 13
date: '2026-03-10'
author: Jose Hernandez, Patrick Bareiss, Mauricio Velazco, Dean Luxton, Splunk
status: production
type: TTP
description: The following analytic detects potential Kerberoasting attacks by identifying Kerberos service ticket requests with RC4 encryption through Event ID 4769. It leverages specific Ticket_Options values commonly used by Kerberoasting tools. This activity is significant as Kerberoasting allows attackers to request service tickets for domain accounts, typically service accounts, and crack them offline to gain privileged access. If confirmed malicious, this could lead to unauthorized access, privilege escalation, and further compromise of the Active Directory environment.
data_source:
    - Windows Event Log Security 4769
search: |-
    `wineventlog_security` EventCode=4769 ServiceName!="*$" (TicketOptions=0x40810000 OR TicketOptions=0x40800000 OR TicketOptions=0x40810010) TicketEncryptionType=0x17
      | stats count min(_time) as firstTime max(_time) as lastTime
        BY Computer, user, service_id,
           service, TicketEncryptionType, TicketOptions
      | rename Computer as dest
      | `security_content_ctime(lastTime)`
      | `security_content_ctime(firstTime)`
      | `kerberoasting_spn_request_with_rc4_encryption_filter`
how_to_implement: To successfully implement this search, you need to be ingesting Domain Controller and Kerberos events. The Advanced Security Audit policy setting `Audit Kerberos Authentication Service` within `Account Logon` needs to be enabled. Whithin environments where this type of communication is common, consider dropping the risk score and add throttling based on the user and service_id for 30 days. This will allow RBA to alert when there is an anomalous spike of these kerberoastable SPN requests within a short period of time.
known_false_positives: Older systems that support kerberos RC4 by default like NetApp may generate false positives. Filter as needed
references:
    - https://github.com/redcanaryco/atomic-red-team/blob/4e3e9c8096dde00639a6b98845ec349135554ed5/atomics/T1208/T1208.md
    - https://www.hub.trimarcsecurity.com/post/trimarc-research-detecting-kerberoasting-activity
drilldown_searches:
    - name: View the detection results for - "$dest$"
      search: '%original_detection_search% | search  dest = "$dest$"'
      earliest_offset: $info_min_time$
      latest_offset: $info_max_time$
    - name: View risk events for the last 7 days for - "$dest$"
      search: '| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") starthoursago=168  | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
      earliest_offset: $info_min_time$
      latest_offset: $info_max_time$
rba:
    message: User $user$ requested a service ticket for SPN $service_id$ with RC4 encryption
    risk_objects:
        - field: user
          type: user
          score: 50
    threat_objects: []
tags:
    analytic_story:
        - Windows Privilege Escalation
        - Data Destruction
        - Active Directory Kerberos Attacks
        - Compromised Windows Host
        - Hermetic Wiper
    asset_type: Endpoint
    mitre_attack_id:
        - T1558.003
    product:
        - Splunk Enterprise
        - Splunk Enterprise Security
        - Splunk Cloud
    security_domain: endpoint
tests:
    - name: True Positive Test
      attack_data:
        - data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1558.003/kerberoasting_spn_request_with_rc4_encryption/windows-xml.log
          source: XmlWinEventLog:Security
          sourcetype: XmlWinEventLog