Detection rules › Splunk
Windows AD Rogue Domain Controller Network Activity
The following analytic identifies unauthorized replication RPC calls from non-domain controller devices. It leverages Zeek wire data to detect specific RPC operations like DrsReplicaAdd and DRSGetNCChanges, filtering out legitimate domain controllers. This activity is significant as it may indicate an attempt to introduce a rogue domain controller, which can compromise the integrity of the Active Directory environment. If confirmed malicious, this could allow attackers to manipulate directory data, escalate privileges, and persist within the network, posing a severe security risk.
MITRE ATT&CK coverage
| Tactic | Techniques |
|---|---|
| Defense Impairment | T1207 Rogue Domain Controller |
Rule body splunk
name: Windows AD Rogue Domain Controller Network Activity
id: c4aeeeef-da7f-4338-b3ba-553cbcbe2138
version: 9
creation_date: '2023-04-11'
modification_date: '2026-05-13'
author: Dean Luxton
status: experimental
type: TTP
description: The following analytic identifies unauthorized replication RPC calls from non-domain controller devices. It leverages Zeek wire data to detect specific RPC operations like DrsReplicaAdd and DRSGetNCChanges, filtering out legitimate domain controllers. This activity is significant as it may indicate an attempt to introduce a rogue domain controller, which can compromise the integrity of the Active Directory environment. If confirmed malicious, this could allow attackers to manipulate directory data, escalate privileges, and persist within the network, posing a severe security risk.
data_source: []
search: |-
`zeek_rpc` DrsReplicaAdd OR DRSGetNCChanges
| where NOT (dest_category="Domain Controller") OR NOT (src_category="Domain Controller")
| fillnull value="Unknown" src_category, dest_category
| table _time endpoint operation src src_category dest dest_category
| `windows_ad_rogue_domain_controller_network_activity_filter`
how_to_implement: Run zeek on domain controllers to capture the DCE RPC calls, ensure the domain controller categories are defined in Assets and Identities.
known_false_positives: No false positives have been identified at this time.
references:
- https://adsecurity.org/?p=1729
finding:
title: Rogue DC Activity Detected from $src_category$ device $src$ to $dest$ ($dest_category$)
entity:
field: dest
type: system
score: 50
threat_objects:
- field: src
type: ip_address
analytic_story:
- Sneaky Active Directory Persistence Tricks
asset_type: Endpoint
mitre_attack_id:
- T1207
product:
- Splunk Enterprise
- Splunk Enterprise Security
- Splunk Cloud
category: network
security_domain: network
Stages and Predicates
Stage 1: search
`zeek_rpc` DrsReplicaAdd OR DRSGetNCChanges
Stage 2: where
| where NOT (dest_category="Domain Controller") OR NOT (src_category="Domain Controller")
Stage 3: fillnull
| fillnull value="Unknown" src_category, dest_category
Stage 4: table
| table _time endpoint operation src src_category dest dest_category
Stage 5: search
| `windows_ad_rogue_domain_controller_network_activity_filter`
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.
| Field | Kind | Values |
|---|---|---|
sourcetype | eq |
|
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.
| Stage | Term |
|---|---|
| 1 | DrsReplicaAdd |
| 1 | DRSGetNCChanges |