Detection rules › Splunk

Kerberos Service Ticket Request Using RC4 Encryption

Status
production
Severity
medium
Group by
TicketEncryptionType, TicketOptions, dest, service, service_id
Author
Mauricio Velazco, Splunk
Source
github.com/splunk/security_content

The following analytic detects Kerberos service ticket requests using RC4 encryption, leveraging Kerberos Event 4769. This method identifies potential Golden Ticket attacks, where adversaries forge Kerberos Granting Tickets (TGT) using the Krbtgt account NTLM password hash to gain unrestricted access to an Active Directory environment. Monitoring for RC4 encryption usage is significant as it is rare in modern networks, indicating possible malicious activity. If confirmed malicious, attackers could move laterally and execute code on remote systems, compromising the entire network. Note: This detection may be bypassed if attackers use the AES key instead of the NTLM hash.

Known false positives

  • Based on Microsoft documentation, legacy systems or applications will use RC4-HMAC as the default encryption for Kerberos Service Ticket requests. Specifically, systems before Windows Server 2008 and Windows Vista. Newer systems will use AES128 or AES256.

MITRE ATT&CK coverage

Telemetry coverage

Rule body

name: Kerberos Service Ticket Request Using RC4 Encryption
id: 7d90f334-a482-11ec-908c-acde48001122
version: 13
creation_date: '2022-03-15'
modification_date: '2026-05-13'
author: Mauricio Velazco, Splunk
status: production
type: TTP
description: 'The following analytic detects Kerberos service ticket requests using RC4 encryption, leveraging Kerberos Event 4769. This method identifies potential Golden Ticket attacks, where adversaries forge Kerberos Granting Tickets (TGT) using the Krbtgt account NTLM password hash to gain unrestricted access to an Active Directory environment. Monitoring for RC4 encryption usage is significant as it is rare in modern networks, indicating possible malicious activity. If confirmed malicious, attackers could move laterally and execute code on remote systems, compromising the entire network. Note: This detection may be bypassed if attackers use the AES key instead of the NTLM hash.'
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 dest, service, service_id,
           TicketEncryptionType, TicketOptions
      | `security_content_ctime(lastTime)`
      | `security_content_ctime(firstTime)`
      | `kerberos_service_ticket_request_using_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.
known_false_positives: Based on Microsoft documentation, legacy systems or applications will use RC4-HMAC as the default encryption for Kerberos Service Ticket requests. Specifically, systems before Windows Server 2008 and Windows Vista. Newer systems will use AES128 or AES256.
references:
    - https://attack.mitre.org/techniques/T1558/001/
    - https://docs.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4769
    - https://adsecurity.org/?p=1515
    - https://gist.github.com/TarlogicSecurity/2f221924fef8c14a1d8e29f3cb5c5c4a
    - https://en.hackndo.com/kerberos-silver-golden-tickets/
finding:
    title: A Kerberos Service TTicket request with RC4 encryption was requested from $dest$
    entity:
        field: dest
        type: system
        score: 50
analytic_story:
    - Active Directory Kerberos Attacks
    - Active Directory Privilege Escalation
    - Scattered Lapsus$ Hunters
asset_type: Endpoint
mitre_attack_id:
    - T1558.001
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: endpoint
security_domain: endpoint

Stages and Predicates

Stage 1: search

`wineventlog_security` EventCode=4769 ServiceName="*$" (TicketOptions=0x40810000 OR TicketOptions=0x40800000 OR TicketOptions=0x40810010) TicketEncryptionType=0x17

Stage 2: stats

| stats count min(_time) as firstTime max(_time) as lastTime
    BY dest, service, service_id,
       TicketEncryptionType, TicketOptions

Stage 3: search

| `security_content_ctime(lastTime)`

Stage 4: search

| `security_content_ctime(firstTime)`

Stage 5: search

| `kerberos_service_ticket_request_using_rc4_encryption_filter`

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
EventCodeeq
  • 4769 corpus 11 (splunk 6, kusto 4, elastic 1)
field:"EventID" kind:eq value:"4769"
ServiceNameeq
  • "*$" corpus 4 (sigma 2, splunk 2)
field:"ServiceName" kind:eq
TicketEncryptionTypeeq
  • 0x17 corpus 9 (splunk 4, sigma 3, elastic 1, kusto 1)
field:"TicketEncryptionType" kind:eq value:"0x17"
TicketOptionseq
  • 0x40800000 corpus 2 (splunk 2)
  • 0x40810000 corpus 4 (splunk 2, sigma 1, kusto 1)
  • 0x40810010 corpus 2 (splunk 2)
field:"TicketOptions" kind:eq