ContainerWrite
Summary
Description
Identification
# Importing ActiveDirectory Module
Import-Module ActiveDirectory
Import-Module GroupPolicy
# Access Control Type of Access Control Entry (Allow or Deny)
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow;
# Active Directory Rights of Access Control Entry
$ActiveDirectoryRights = "WriteProperty";
$ActiveDirectoryRights2 = "GenericAll";
$ActiveDirectoryRights3 = "GenericWrite";
$ContainerWritePermissionGuid = "00000000-0000-0000-0000-000000000000";
# Iterating all GPOs
Get-GPO -All |
ForEach-Object {
# Extracting Path
$GPOPath = $_.Path;
$DisplayName = $_.DisplayName
# Retrieving Access Control Entries of GPO
(Get-Acl -Path "AD:$GPOPath").Access |
# Filtering Non-Inherited Allowed ACEs
Where-Object {
$_.AccessControlType -eq $AccessControlType -and
$_.ActiveDirectoryRights -like "*$ActiveDirectoryRights*" -or
$_.ActiveDirectoryRights -like "*$ActiveDirectoryRights2*" -or
$_.ActiveDirectoryRights -like "*$ActiveDirectoryRights3*" -and
$_.ObjectType -eq $ContainerWritePermissionGuid -and
$_.IsInherited -eq $false
} |
# Selecting GPO's Name and ACE Holder
Select-Object @{Name="Vulnerable GPO";Expression={$DisplayName}},
@{Name="Internal Threat";Expression={$_.IdentityReference}},
@{Name="Permissions";Expression={$_.ActiveDirectoryRights}}
} |
# Exporting found Access Control Entries into CSV file
Export-Csv -Path "ContainerWrite.csv" -NoTypeInformation
Exploitation

Important Note
Mitigation

Detection
Event ID
Description
Fields/Attributes
References
References
Last updated
Was this helpful?