Detection rules › Splunk

Windows AD Dangerous Deny ACL Modification

Author
Dean Luxton
Source
upstream

This detection identifies an Active Directory access-control list (ACL) modification event, which applies permissions that deny the ability to enumerate permissions of the object.

MITRE ATT&CK coverage

TacticTechniques
Privilege EscalationT1484 Domain or Tenant Policy Modification
Defense EvasionT1222.001 File and Directory Permissions Modification: Windows File and Directory Permissions Modification, T1484 Domain or Tenant Policy Modification

Event coverage

ProviderEvent IDTitle
Security-Auditing5136A directory service object was modified.

Stages and Predicates

Stage 1: search

search EventCode=5136

Stage 2: stats

stats BY ObjectClass, ObjectDN, OpCorrelationID, src_user, SubjectLogonId

Stage 3: rex

rex field=old_value ...

Stage 4: rex

rex field=new_value ...

Stage 5: mvexpand

mvexpand

Stage 6: where

where NOT new_ace="old_values"

Stage 7: rex

rex field=new_ace ...

Stage 8: rex

rex field=aceAccessRights ...

Stage 9: rex

rex field=aceFlags ...

Stage 10: lookup

lookup <lookup> ControlAccessRights, aceObjectGuid, displayName, guid

Stage 11: lookup

lookup <lookup> AccessRights, access_rights_string, access_rights_value

Stage 12: lookup

lookup <lookup> aceType, ace_type_string, ace_type_value

Stage 13: lookup

lookup <lookup> aceFlags, ace_flag_value, flag_string, flag_value

Stage 14: lookup

lookup <lookup> aceSid, builtin_group, builtin_group_name, builtin_group_string

Stage 15: eval

eval ... using (AccessRights, ControlAccessRights, access_rights_value, aceObjectGuid, aceSid, ace_flag_value, ace_type_value, builtin_group, group)

Stage 16: stats

stats BY _time, ObjectClass, ObjectDN, src_user, SubjectLogonId, user, OpCorrelationID

Stage 17: eval

eval ...

Stage 18: search

search aceAccessRights IN ("Full control", "Read permissions", "RC") aceType IN ("Access denied", "D")

Stage 19: search

search `macro`

Exclusions

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

StageFieldKindExcluded values
1new_aceeqold_values

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
  • 5136 corpus 22 (splunk 22)
aceAccessRightsin
  • "Full control" corpus 4 (splunk 4)
  • "Read permissions"
  • RC
aceTypein
  • "Access denied" corpus 2 (splunk 2)
  • D corpus 2 (splunk 2)

Neighbors

Stricter alternatives (narrower than this rule)

The rules below may be useful if you find the current rule is too noisy / lacks specificity.