A rogue domain controller attack, usually called DCShadow, registers a machine as a domain controller just long enough to push changes into Active Directory through replication. Those changes can skip the logging a SIEM depends on, so attackers use it to plant SID history or backdoors. It needs administrator rights on the domain or a DC, or the KRBTGT hash.
Practice the detection skills around Rogue Domain Controller on realistic SIEM, Firewall alerts in SOCSimulator Operations.
“Rogue Domain Controller is documented as technique T1207 in MITRE ATT&CK® v19.1 under the Defense Impairment tactic. Detection requires visibility into SIEM, Firewall telemetry.”
Vincent Le Toux and Benjamin Delpy presented DCShadow at BlueHat IL and Black Hat USA in 2018. It lives in Mimikatz's lsadump module next to DCSync, and the authors describe three moves. First the attacker registers the machine as a domain controller by creating two objects in the Configuration partition, a server object and an nTDSDSA object, and altering the SPN of the computer account being used. Second, the changes are pushed, triggered with DrsReplicaAdd, the KCC or other internal AD events. Third, the objects are removed so the machine stops being a DC.
In practice it runs from two Mimikatz consoles. One stages the change with lsadump::dcshadow and the /stack, /object, /attribute and /value arguments, and the main console issues /push. Because the pushed changes arrive as replication traffic, the normal write path never sees them. The authors state that the modifications are made without logging, including attributes only a DC may set, such as SID history. MITRE adds that the actor can alter or delete replication metadata to obstruct forensics.
What cannot be hidden is the registration itself. The new objects and the SPN change are ordinary directory writes that the real DC records when auditing is on, and the replication calls cross the network between two hosts that should not be talking like peers. That is the surface this page covers: the setup and teardown, not the payload.
Where Rogue Domain Controller fits in an attack
DCShadow comes late in an intrusion. The authors say it requires domain or enterprise admin privileges, and MITRE lists either Administrator rights (domain or local to the DC) or the KRBTGT hash. By the time DCShadow fires, the attacker has usually dumped credentials already, with OS Credential Dumping such as DCSync (T1003.006) as the close cousin, and is looking for access that survives a password reset. Treat a hit as proof that the domain is already compromised.
What gets injected is persistence. MITRE highlights SID-History Injection (T1134.005) and edits to accounts, ACLs and schema objects that leave backdoors. The authors name SIDHistory and password history values as examples, and replication metadata and schema signature info as traces the tool can erase. A typical payload gives an ordinary account the SID of a privileged group through SID history, so a normal-looking user carries domain admin rights that group membership reports never show.
On the ATT&CK map, T1207 now sits under Defense Impairment, one of the two tactics that ATT&CK v19 created by splitting Defense Evasion into Stealth and Defense Impairment, so older write-ups file it elsewhere. The label fits: the point of the technique is to change the directory without the controls that would normally record or block the change.
Detection Strategies
The following detection strategies help SOC analysts identify Rogue Domain Controller activity. These methods apply across SIEM, Firewall environments and can be implemented as detection rules, correlation queries, or behavioral analytics in your security platform.
Adapted from Splunk's Windows AD Short Lived Server Object detection. It pairs a server object creation with its deletion inside 30 seconds. Splunk hardcodes the default site name, and the wildcard here covers any site. Set the index to wherever your Security log lands, and expect a few hits during real domain controller promotions.
SPL
index=wineventlog source="XmlWinEventLog:Security" EventCode=5136 AttributeLDAPDisplayName=servicePrincipalName (AttributeValue="GC/*" OR AttributeValue="E3514235-4B06-11D1-AB04-00C04FC2DCD2/*")
| stats min(_time) as _time range(_time) as duration values(OperationType) as OperationType values(SubjectUserName) as SubjectUserName values(Computer) as dest values(ObjectDN) as ObjectDN by Logon_ID
| where duration < 30 AND mvcount(OperationType) > 1
| replace "%%14674" with "Value Added", "%%14675" with "Value Deleted" in OperationType
Adapted from Splunk's Windows AD Short Lived Domain Controller SPN Attribute detection. It groups 5136 events by logon session and keeps the sessions where a replication SPN was both added and removed within 30 seconds. The %%14674 and %%14675 codes are how the event stores the operation type.
Simulated example generated by SOCSimulator Research
Computer: DC01.contoso.local
EventID 5137 A directory service object was created. 2026-10-02 11:42:09
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Object DN: CN=WS-0412,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=contoso,DC=local
Object Class: server
EventID 5137 A directory service object was created. 2026-10-02 11:42:09
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Object DN: CN=NTDS Settings,CN=WS-0412,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=contoso,DC=local
Object Class: nTDSDSA
EventID 5136 A directory service object was modified. 2026-10-02 11:42:10
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Object DN: CN=WS-0412,OU=Workstations,DC=contoso,DC=local Class: computer
Attribute: servicePrincipalName Operation: Value Added
Value: GC/WS-0412.contoso.local/contoso.local
EventID 5136 A directory service object was modified. 2026-10-02 11:42:10
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Attribute: servicePrincipalName Operation: Value Added
Value: E3514235-4B06-11D1-AB04-00C04FC2DCD2/6b3f9a1e-2c4d-4e8a-9d71-0c5a8f3e1b22/contoso.local
EventID 5136 A directory service object was modified. 2026-10-02 11:42:20
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Attribute: servicePrincipalName Operation: Value Deleted
Value: GC/WS-0412.contoso.local/contoso.local
EventID 5136 A directory service object was modified. 2026-10-02 11:42:20
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Attribute: servicePrincipalName Operation: Value Deleted
Value: E3514235-4B06-11D1-AB04-00C04FC2DCD2/6b3f9a1e-2c4d-4e8a-9d71-0c5a8f3e1b22/contoso.local
EventID 5141 A directory service object was deleted. 2026-10-02 11:42:20
Subject: svc-patch (CONTOSO) Logon ID: 0x7A31C4
Object DN: CN=WS-0412,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=contoso,DC=local
Object Class: server
// Result of the first query: duration 11 seconds, ObjectDN as above
SPL
sourcetype="zeek:rpc:json" (operation=DRSReplicaAdd OR operation=DRSGetNCChanges OR operation=DRSAddEntry)
| rename id.orig_h AS src, id.resp_h AS dest
| lookup domain_controllers.csv ip AS src OUTPUT ip AS src_is_dc
| lookup domain_controllers.csv ip AS dest OUTPUT ip AS dest_is_dc
| where isnull(src_is_dc) OR isnull(dest_is_dc)
| table _time src dest endpoint operation
Based on Splunk's Windows AD Rogue Domain Controller Network Activity analytic, which Splunk marks experimental. It needs Zeek DCE/RPC logs, so it runs on network sensor data and not on a plain firewall allow log, and it assumes a domain_controllers.csv lookup with an ip column that you keep current. Any replication call where either end is not a known DC is a hit.
Simulated example generated by SOCSimulator Research
The loudest false positive is a legitimate promotion. Install-ADDSDomainController and dcpromo create the same server and nTDSDSA objects, register the same SPNs and start replication from the new machine, so a freshly built DC looks like a non-DC to any network rule until it is added to your DC list. The short-lived pairing filters most of this out, because a real promotion leaves its objects in place, but a failed promotion that rolls back can leave the same create-then-delete trace. Demotions delete the objects, though only the deletion event fires.
Keep the DC inventory current and wired into the detection. The Splunk network analytic depends on Assets and Identities categories for exactly this reason. Pair the rules with change management: a build ticket for the host, a known admin, a maintenance window. Lab and test forests that share a SIEM deserve their own tag, because rebuilt test DCs produce the same pattern every week. Anything that survives those filters, especially from a workstation or a member server, deserves immediate escalation.
Example Alerts
These realistic alert examples show what Rogue Domain Controller looks like in your security tools. Use them to tune detection rules and train analysts to recognize true positives versus false positives in live environments.
CriticalSIEM
Short-Lived Server Object in the Configuration Partition
DC01 logged a server object and an nTDSDSA object created for WS-0412 under CN=Sites,CN=Configuration by svc-patch, and both were deleted 11 seconds later. WS-0412 is a workstation and is not in the domain controller list.
HighSIEM
Replication SPNs Added and Removed on a Workstation Account
Within one logon session, the servicePrincipalName of the computer WS-0412 gained a GC/ value and a Directory Replication Service value, then lost both ten seconds later. The account that made the change is a domain administrator.
HighFirewall
Replication RPC Between a Workstation and a Domain Controller
Zeek logged DRSReplicaAdd from 10.20.4.57 to DC01 and then DRSGetNCChanges from DC01 back to 10.20.4.57. 10.20.4.57 is not in the domain controller list.
Responding to Rogue Domain Controller
Escalate as a domain compromise. DCShadow needs domain admin or the KRBTGT hash, so the question is less what this host did than who controls the domain. Take the logon ID from the 5137 and 5136 events, resolve it in the matching 4624 logon on the DC, and identify the account, the source host and the source IP. Preserve the DC security logs and the Zeek data before anything is rotated, and treat the account as burned.
Then find out what was pushed. Replication metadata records which DC originated each attribute change, so repadmin /showobjmeta against sensitive objects shows changes whose originating server is the rogue machine. Start with privileged groups, AdminSDHolder and the ACLs on the domain root. MITRE warns the actor can alter or delete that metadata, so a clean result does not clear you. Compare against a known-good source instead, and list every account that carries SID history with Get-ADUser -Filter {SIDHistory -like "*"} -Properties SIDHistory. Explain each one.
Recovery follows the usual playbook for a domain-level compromise: remove the malicious objects and SID history, reset the KRBTGT password twice with the interval your replication needs, rotate privileged and service credentials, and review the DCs for other persistence. Build the detections you were missing before you close the case: the audit policy, the Configuration-partition SACL and a DC list the SIEM can trust.
Frequently Asked Questions
How do SOC analysts detect Rogue Domain Controller?
Detection centers on SIEM, Firewall telemetry for the defense impairment phase of the attack. Look for a short-lived server object in the Configuration partition. DCShadow creates a server object and an nTDSDSA object under CN=Sites,CN=Configuration, then deletes them once the push is done, so the pattern is Event 5137 (object created) followed by Event 5141 (object deleted) for the same ObjectDN within seconds. Splunk's detection uses a 30-second window. These events exist only if Audit Directory Service Changes is on and a SACL covers the Configuration partition. Check for a short-lived SPN change on a computer that is not a domain controller. DCShadow adds a global catalog SPN (GC/...) and a Directory Replication Service SPN that starts with the interface GUID E3514235-4B06-11D1-AB04-00C04FC2DCD2 to the attacker's computer account, then removes them. In Event 5136 that is servicePrincipalName changing with Value Added and Value Deleted operations inside the same logon session, again within seconds.
What does a Rogue Domain Controller alert look like?
A representative SIEM detection is "Short-Lived Server Object in the Configuration Partition" (critical severity): DC01 logged a server object and an nTDSDSA object created for WS-0412 under CN=Sites,CN=Configuration by svc-patch, and both were deleted 11 seconds later. WS-0412 is a workstation and is not in the domain controller list.
Which tools detect Rogue Domain Controller, and how can I practice?
Rogue Domain Controller (T1207) is best surfaced with SIEM, Firewall telemetry, which exposes the defense impairment signals described above. There is no dedicated SOCSimulator room for it yet; practice the surrounding detection skills on those consoles in SOCSimulator Operations, free.
Build the Skills Behind Rogue Domain Controller
We don't have a dedicated room for Rogue Domain Controller yet. Practice the surrounding detection skills across SOCSimulator Operations, free.