Skip to main content
Group Policy Objects (GPOs) control configuration across all machines and users in their linked OUs. If you have write permissions on a GPO (GenericAll, GenericWrite, WriteProperty), you can push a scheduled task to every computer in scope and get SYSTEM. The Default Domain Controllers Policy is the highest-value target because it applies to every DC.

Enumeration

These GUIDs are identical across every Active Directory environment.
GenericAll on the Default Domain Controllers Policy means SYSTEM on every DC in the domain.

pyGPOAbuse

Tool by Hackndo for writing scheduled tasks into GPOs directly over LDAP without requiring SYSVOL write access.
One is required.

One-Liners

SharpGPOAbuse

.NET tool by FSecureLABS for abusing GPO write permissions from a Windows host (requires SYSVOL write access, unlike pyGPOAbuse). Must be run as the user with GPO edit rights, or under runas /netonly.
One is required.
One is required.

One-Liners

After running SharpGPOAbuse, the change still waits for the next Group Policy refresh interval unless you force it — see Post-Abuse below.

ACL Prerequisite Chain

GPO abuse usually sits at the end of an ACL chain. A common path is WriteDacl or WriteOwner on a user that already has GPO write access.
1

Grant yourself GenericAll on the victim account

2

Reset the victim's password

3

Confirm GPO write permissions

4

Abuse the GPO

Attack Scenarios

Highest-value path. The Default Domain Controllers Policy applies to every DC OU. Push a task and get SYSTEM on all DCs.
Applies to all domain computers and users. Broad execution — every machine in the domain runs the task on next GP refresh. Noisy.
Use -filter-enabled -target-dns-name to restrict execution to one machine. Much stealthier than domain-wide deployment.

Post-Abuse

1

Force GP refresh on target (if you have a shell)

2

Verify the backdoor account landed

3

Get a shell

4

Dump credentials

5

Cleanup

--cleanup removes the scheduled task XML from SYSVOL and rolls back the GPO version counter.