Group Policy Object


During the BloodHound enumeration, it has been identified that the anirudh user has extensive rights, WriteDacl, WriteOwner, and GenericWrite,granted over the default domain policy object that has a complete control over the target domain.

Confirmation


┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/vault]
└─$ KRB5CCNAME=anirudh@dc.vault.offsec.ccache bloodyAD -d VAULT.OFFSEC -k --host dc.vault.offsec --dc-ip $IP get writable
 
distinguishedName: CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
permission: CREATE_CHILD; WRITE
OWNER: WRITE
DACL: WRITE
 
distinguishedName: CN=User,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
permission: CREATE_CHILD; WRITE
OWNER: WRITE
DACL: WRITE
 
distinguishedName: CN=Machine,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
permission: CREATE_CHILD; WRITE
OWNER: WRITE
DACL: WRITE
 
distinguishedName: CN=S-1-5-11,CN=ForeignSecurityPrincipals,DC=vault,DC=offsec
permission: WRITE
 
distinguishedName: CN=Anirudh,CN=Users,DC=vault,DC=offsec
permission: WRITE
 
 
┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/vault]
└─$ KRB5CCNAME=anirudh@dc.vault.offsec.ccache powerview VAULT.OFFSEC/anirudh@dc.vault.offsec -k --no-pass --dc-ip $IP -q 'Get-ObjectAcl -SecurityIdentifier anirudh -ResolveGUIDs'
Logging directory is set to /home/kali/.powerview/logs/vault-anirudh-dc.vault.offsec
[2025-05-02 17:16:27] [Storage] Using cache directory: /home/kali/.powerview/storage/ldap_cache
[2025-05-02 17:16:27] User anirudh has adminCount attribute set to 1. Might be admin somewhere somehow :)
[2025-05-02 17:16:27] [Get-DomainObjectAcl] Recursing all domain objects. This might take a while
ObjectDN                    : CN=Machine,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
ObjectSID                   : []
ACEType                     : ACCESS_ALLOWED_ACE
ACEFlags                    : CONTAINER_INHERIT_ACE, INHERITED_ACE
ActiveDirectoryRights       : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
AccessMask                  : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
InheritanceType             : None
SecurityIdentifier          : VAULT\anirudh
 
ObjectDN                    : CN=User,CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
ObjectSID                   : []
ACEType                     : ACCESS_ALLOWED_ACE
ACEFlags                    : CONTAINER_INHERIT_ACE, INHERITED_ACE
ActiveDirectoryRights       : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
AccessMask                  : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
InheritanceType             : None
SecurityIdentifier          : VAULT\anirudh
 
ObjectDN                    : CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
ObjectSID                   : []
ACEType                     : ACCESS_ALLOWED_ACE
ACEFlags                    : CONTAINER_INHERIT_ACE
ActiveDirectoryRights       : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
AccessMask                  : WriteOwner,WriteDACL,ReadControl,Delete,WriteProperties,ReadProperties,ListChildObjects,DeleteChild,CreateChild
InheritanceType             : None
SecurityIdentifier          : VAULT\anirudh

This could be confirmed using both powerview and bloodyAD They all points to the DN; CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec

┌──(kali㉿kali)-[~/PEN-200/PG_PRACTICE/vault]
└─$ KRB5CCNAME=anirudh@dc.vault.offsec.ccache powerview VAULT.OFFSEC/anirudh@dc.vault.offsec -k --no-pass --dc-ip $IP -q 'Get-DomainGPO -Identity 31B2F340-016D-11D2-945F-00C04FB984F9'
Logging directory is set to /home/kali/.powerview/logs/vault-anirudh-dc.vault.offsec
[2025-05-02 18:26:59] [Storage] Using cache directory: /home/kali/.powerview/storage/ldap_cache
[2025-05-02 18:26:59] User anirudh has adminCount attribute set to 1. Might be admin somewhere somehow :)
objectClass                  : top
                               container
                               groupPolicyContainer
cn                           : {31B2F340-016D-11D2-945F-00C04FB984F9}
distinguishedName            : CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=vault,DC=offsec
instanceType                 : 4
whenCreated                  : 19/11/2021 08:50:33 (3 years, 5 months ago)
whenChanged                  : 19/11/2021 09:00:32 (3 years, 5 months ago)
displayName                  : Default Domain Policy
uSNCreated                   : 5672
uSNChanged                   : 12778
showInAdvancedViewOnly       : TRUE
name                         : {31B2F340-016D-11D2-945F-00C04FB984F9}
objectGUID                   : {93130581-3375-49c7-88d3-afdc915a9526}
flags                        : 0
versionNumber                : 4
systemFlags                  : -1946157056
objectCategory               : CN=Group-Policy-Container,CN=Schema,CN=Configuration,DC=vault,DC=offsec
isCriticalSystemObject       : TRUE
gPCFunctionalityVersion      : 2
gPCFileSysPath               : \\vault.offsec\sysvol\vault.offsec\Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}
gPCMachineExtensionNames     : [{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{53D6AB1B-2488-11D1-A28C-00C04FB94F17}][{827D319E-6EAC-11D2-A
                               4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}][{B1BE8D72-6EAC-11D2-A4EA-00C04F79F83A}{53D6
                               AB1B-2488-11D1-A28C-00C04FB94F17}]
dSCorePropagationData        : 20211119090032.0Z
                               20211119085114.0Z
                               16010101000000.0Z

Querying for the CN, 31B2F340-016D-11D2-945F-00C04FB984F9, reveals that it is indeed the Default Domain Policy object There are many tools out there that can be used to manipulate GPO, and it mostly leads to a complete domain compromise