Read-Only Domain Controllers (RODC): Promises, Limits, and Forensic Reality
Concept
Section titled βConceptβIntroduced in Windows Server 2008, the Read-Only Domain Controller (RODC) hosts read-only replicas of Active Directory directory partitions:
- Read-Only NTDS Database: Applications and administrators cannot commit directory modifications on the RODC; write operations are forwarded via LDAP referrals to a standard Writable Domain Controller (RWDC).
- Isolated KDC and Dedicated
krbtgtAccount: Each RODC possesses a distinct, dedicatedkrbtgtaccount (namedkrbtgt_XXXXX), ensuring that compromise of an RODC does not permit forging Golden Tickets across the rest of the enterprise. - Password Replication Policy (PRP): A strict access control list defining which accounts are permitted to have their credential hashes cached on the local RODC (
Allowed ListvsDenied List).
Why It Matters in DFIR
Section titled βWhy It Matters in DFIRβWhen responding to an incident at a branch office hosting an RODC:
- Blast Radius Containment: If an adversary physically steals the RODC server or dumps its
ntds.ditfile, they acquire only the credential hashes of locally cached accounts. High-privilege administrative groups (Domain Admins,Enterprise Admins) reside in the defaultDenied Listand are never cached on an RODC. - Surgical Credential Remediation: The RWDC maintains an authoritative record of every identity whose secret was replicated to that RODC (via the
msDS-RevealedUsersattribute). Incident responders know exactly which accounts must be rotated without forcing an enterprise-wide password reset. - Targeted
krbtgt_XXXXXRevocation: Rotating the domainβs primarykrbtgtaccount is completely unnecessary during an isolated RODC breach: only the specifickrbtgt_XXXXXaccount tied to that RODC must be rotated or deleted.
How It Works
Section titled βHow It WorksβThe Password Replication Policy (PRP) and Authentication Workflow
Section titled βThe Password Replication Policy (PRP) and Authentication WorkflowβBranch Client Workstation RODC Hub RWDC β β β β 1. TGT-REQ β β ββββββββββββββββββββββββββββββββββββββββββΊβ β β β 2. Is hash cached locally? β β β -> NO β β β 3. Forward request β β βββββββββββββββββββββββββββββββββββΊβ β β β 4. Validate credentials β β β Evaluate PRP β β 5. Return TGT + Hash (if allowed)β β ββββββββββββββββββββββββββββββββββββ€ β β 6. Cache hash (PRP Allowed) β βββββββββββββββββββββββββββββββββββββββββββ€ β β 7. Return TGT signed by krbtgt_XXXXX β β- Default Denied List Blocks All Privileged Principals:
Enterprise Admins,Domain Admins,Administrators,Backup Operators,Account Operators,Server Operators.- All domain controller computer accounts (
Domain Controllers).
- Allowed List Encompasses Local Branch Personas:
- Typically a designated group such as
Branch-Office-Usersrepresenting physical staff on site.
- Typically a designated group such as
What Is Possible
Section titled βWhat Is Possibleβ- Extracting the Exact Inventory of Exposed Credentials: Inspecting
msDS-RevealedUserson the RWDC returns all accounts whose credentials were cached on the compromised RODC. - Issuing Locally Authoritative TGTs: The RODC KDC encrypts TGTs using its own
krbtgt_XXXXXkey, accepted across the forest because the key is mirrored on RWDCs. - Delegating Local RODC Administration: A branch technician can be granted local administrator rights over the RODC OS without possessing any rights over the Active Directory directory.
What Is Not Possible
Section titled βWhat Is Not Possibleβ- Forging Domain-Wide Golden Tickets from an RODC: The
krbtgt_XXXXXkey is only accepted for accounts permitted by the PRP. A ticket forged forDomain Adminsusing this key is rejected by writable DCs. - Direct Directory Writes on the RODC: LDAP write attempts return
LDAP_REFERRALdirecting the client to an RWDC. - Caching
Domain AdminsCredentials Under Default Policies: Even if an administrator attempts to add an admin into the Allowed List, theDenied Listtakes precedence during PRP evaluation.
Common DFIR Confusions
Section titled βCommon DFIR Confusionsβ| Frequent Confusion | Verifiable Forensic Reality |
|---|---|
| βThe adversary extracted ntds.dit from the RODC, therefore the entire enterprise domain is compromised.β | False. An RODC ntds.dit contains only credential hashes permitted by the PRP and actively cached. |
| βWe must reset the primary domain krbtgt account after an RODC theft.β | Unnecessary. Only the specific krbtgt_XXXXX account belonging to the stolen RODC must be revoked. |
| βAn attacker can invoke DCSync against an RODC.β | An RODC does not possess replication secrets for arbitrary principals and cannot fulfill DCSync requests. |
Concrete Forensic Example
Section titled βConcrete Forensic ExampleβA physical burglary occurs at a regional branch in Lyon. The physical server hosting RODC-LYON is stolen:
- The DFIR team connects to the headquarters RWDC.
- Executing PowerShell:
Get-ADDomainControllerPasswordReplicationPolicyUsage -Identity "RODC-LYON" -Revealed - Output lists 42 local employee accounts and 2 local print service accounts.
- Zero Tier 0 or enterprise administrative accounts appear in the list.
- Remediation Executed:
- Immediate password rotation for the 44 revealed identities.
- Deletion of the
RODC-LYONcomputer object (automatically purgingkrbtgt_12894). - Headquarters domain remains entirely secure with zero operational disruption.
Key Forensic Artefacts
Section titled βKey Forensic Artefactsβ- Active Directory Attributes (on RWDC):
msDS-RevealedUsers: SIDs of identities cached on the RODC.msDS-KrbTgtLinkBl: Pointer to the associatedkrbtgt_XXXXXaccount.
- RWDC Security Event Logs:
- Event ID 4929: RODC password replication policy change.
- Event ID 4930: Secret replicated to an RODC.
- RODC Security Event Logs:
- Event ID 4768: Local TGT issued by
krbtgt_XXXXX.
- Event ID 4768: Local TGT issued by
Investigation Methods
Section titled βInvestigation Methodsβ- Extract Revealed Users from Central RWDC:
Run
Get-ADDomainControllerPasswordReplicationPolicyUsage -Revealedtargeting an RWDC. - Audit PRP Configuration Integrity: Verify that administrative groups remain firmly enclosed in the PRP Denied List.
- Revoke the Dedicated RODC KDC Secret:
Delete the orphaned RODC computer account to invalidate its associated
krbtgt_XXXXXprincipal.
Investigative Tooling
Section titled βInvestigative Toolingβ- PowerShell AD Module:
Terminal window # List accounts cached on the RODCGet-ADDomainControllerPasswordReplicationPolicyUsage -Identity "RODC01" -Revealed |Select-Object SamAccountName, DistinguishedName# Audit PRP configurationGet-ADDomainControllerPasswordReplicationPolicy -Identity "RODC01" - Repadmin:
Terminal window repadmin /prp view RODC01repadmin /prp query RODC01 revealed
Key Takeaways
Section titled βKey Takeawaysβ- RODCs isolate branch locations by limiting the credential footprint on disk and in memory.
- Administrative groups are strictly excluded from replication by default.
- Each RODC operates with a dedicated
krbtgt_XXXXXkey, preventing global Golden Ticket forgery. - The
msDS-RevealedUsersattribute provides a verifiable forensic boundary in the event of hardware theft.
References & Further Reading
Section titled βReferences & Further Readingβ- Microsoft Learn: Read-Only Domain Controller Planning and Deployment
- Card 03 β Built-in Accounts and Privileged Accounts
- Card 26 β DCSync: Mechanics, Prerequisites, and Forensic Artefacts
- Card 27 β Golden Ticket vs Silver Ticket: Creation, Scope, and Detection
- Card 28 β Domain Controllers as Lateral Movement Hubs