Detection: Windows AD Cross Domain SID History Addition

Description

The following analytic detects changes to the sIDHistory attribute of user or computer objects across different domains. It leverages Windows Security Event Codes 4738 and 4742 to identify when the sIDHistory attribute is modified. This activity is significant because the sIDHistory attribute allows users to inherit permissions from other AD accounts, which can be exploited by adversaries for inter-domain privilege escalation and persistence. If confirmed malicious, this could enable attackers to gain unauthorized access to resources, maintain persistence, and escalate privileges across domain boundaries.

 1`wineventlog_security` (EventCode=4742 OR EventCode=4738) NOT SidHistory IN ("%%1793", -) 
 2| rex field=SidHistory "(^%{
 3|^)(?P<SidHistoryMatch>.*)(\-
 4|\\\)" 
 5| rex field=TargetSid "^(?P<TargetSidmatch>.*)(\-
 6|\\\)" 
 7| where SidHistoryMatch!=TargetSidmatch AND SidHistoryMatch!=TargetDomainName 
 8| rename TargetSid as userSid 
 9| table _time action status host user userSid SidHistory Logon_ID src_user 
10| `windows_ad_cross_domain_sid_history_addition_filter`

Data Source

Name Platform Sourcetype Source Supported App
Windows Event Log Security 4738 Windows icon Windows 'xmlwineventlog' 'XmlWinEventLog:Security' N/A

Macros Used

Name Value
wineventlog_security eventtype=wineventlog_security OR Channel=security OR source=XmlWinEventLog:Security
windows_ad_cross_domain_sid_history_addition_filter search *
windows_ad_cross_domain_sid_history_addition_filter is an empty macro by default. It allows the user to filter out any results (false positives) without editing the SPL.

Annotations

- MITRE ATT&CK
+ Kill Chain Phases
+ NIST
+ CIS
- Threat Actors
ID Technique Tactic
T1134.005 SID-History Injection Defense Evasion
T1134 Access Token Manipulation Privilege Escalation
KillChainPhase.EXPLOITAITON
NistCategory.DE_CM
Cis18Value.CIS_10
Blue Mockingbird
FIN6

Default Configuration

This detection is configured by default in Splunk Enterprise Security to run with the following settings:

Setting Value
Disabled true
Cron Schedule 0 * * * *
Earliest Time -70m@m
Latest Time -10m@m
Schedule Window auto
Creates Notable Yes
Rule Title %name%
Rule Description %description%
Notable Event Fields user, dest
Creates Risk Event True
This configuration file applies to all detections of type TTP. These detections will use Risk Based Alerting and generate Notable Events.

Implementation

To successfully implement this search, you need to be ingesting eventcodes 4738 and 4742. The Advanced Security Audit policy settings Audit User Account Management and Audit Computer Account Management within Account Management all need to be enabled.

Known False Positives

Domain mergers and migrations may generate large volumes of false positives for this analytic.

Associated Analytic Story

Risk Based Analytics (RBA)

Risk Message Risk Score Impact Confidence
Active Directory SID History Attribute was added to $user$ by $src_user$ 80 100 80
The Risk Score is calculated by the following formula: Risk Score = (Impact * Confidence/100). Initial Confidence and Impact is set by the analytic author.

References

Detection Testing

Test Type Status Dataset Source Sourcetype
Validation Passing N/A N/A N/A
Unit Passing Dataset XmlWinEventLog:Security XmlWinEventLog
Integration ✅ Passing Dataset XmlWinEventLog:Security XmlWinEventLog

Replay any dataset to Splunk Enterprise by using our replay.py tool or the UI. Alternatively you can replay a dataset into a Splunk Attack Range


Source: GitHub | Version: 2