Detection rules › Splunk

Potential DCSync (Windows Event Log)

Group by
_time, host
Source
github.com/anvilogic-forge/armory

Adversaries may attempt to access credentials and other sensitive information by abusing a Windows Domain Controller's application programming interface (API) to simulate the replication process from a remote domain controller using a technique called DCSync

MITRE ATT&CK coverage

TacticTechniques
Credential AccessT1003.006 OS Credential Dumping: DCSync

References

Event coverage

Rule body yaml

id: '13811.20280'
title: Potential DCSync
description: 'Adversaries may attempt to access credentials and other sensitive information
  by abusing a Windows Domain Controller''s application programming interface (API)
  to simulate the replication process from a remote domain controller using a technique
  called DCSync. -- Threat Actor Association: FIN8 (Syssphinx), Muddled Libra'
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4662) OR
  "<EventID>4662<") "0x100" ("Replicating Directory Changes all" OR "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
  OR "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" OR "9923a32a-3607-11d2-b9be-0000f87a36b2"
  OR "89e95b76-444d-4c62-991a-0facbeda640c") |regex user!=".*\$" | table _time, host,
  user process, process_*, signature_id, parent_*, parameters | bin span=1s | stats
  values(*) as * by _time, host '
techniques:
- credential-access:os credential dumping:dcsync
technique_id:
- T1003.006
data_category:
- Windows event logs
references:
- https://blog.blacklanternsecurity.com/p/detecting-dcsync

Stages and Predicates

Stage 1: search

`get_endpoint_data` `get_endpoint_data_winevent` (TERM(EventCode=4662) OR "<EventID>4662<") "0x100" ("Replicating Directory Changes all" OR "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" OR "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" OR "9923a32a-3607-11d2-b9be-0000f87a36b2" OR "89e95b76-444d-4c62-991a-0facbeda640c")

Stage 2: regex

| regex user!=".*\$"

Stage 3: table

| table _time, host, user process, process_*, signature_id, parent_*, parameters

Stage 4: bucket

| bin span=1s

Stage 5: stats

| stats values(*) as * by _time, host

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
userregex_match".*$"

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
EventCodeeq
  • 4662 corpus 13 (splunk 7, kusto 4, elastic 1, chronicle 1)

Search terms

Bare-string tokens in the SPL search body. Splunk matches each token against _raw (the untyped raw event text) anywhere it appears, not against a specific field. These don't surface in the Indicators table because they aren't predicates on a known field.

StageTerm
1TERM
1"<EventID>4662<"
1"0x100"
1"Replicating Directory Changes all"
1"1131f6ad-9c07-11d1-f79f-00c04fc2dcd2"
1"1131f6aa-9c07-11d1-f79f-00c04fc2dcd2"
1"9923a32a-3607-11d2-b9be-0000f87a36b2"
1"89e95b76-444d-4c62-991a-0facbeda640c"