---
title: "Kerberos Delegasyon Mimarisi: Çok Katmanlı Windows Uygulamaları Neden İhtiyaç Duyar ve Nerede Kırılır?"
description: "Kerberos double-hop problemi ve Windows'taki üç nesil delegasyon: Unconstrained, Constrained (S4U2Self / S4U2Proxy) ve Resource-Based Constrained Delegation (RBCD) modellerinin GOAD laboratuvarındaki LDAP izleri, protokol davranışları ve istismar yüzeyleri."
date: 2026-11-03
author: Sevban Dönmez (@jankesec)
canonical: https://jankesec.com/tr/yazilar/inside-kerberos-delegation-architecture/
---

## Kurumsal Mimaride Kerberos Çift Sıçrama (Double-Hop) Problemi

Standart tek sıçramalı Kerberos kimlik doğrulamasında (`RFC 4120`), bir etki alanı istemcisi Key Distribution Center (KDC) ile `AS-REQ` alışverişi yaparak Ticket Granting Ticket (`TGT`) alır ve ardından hedef servis için `TGS-REQ` isteğinde bulunur. Uygulama sunucusu (örneğin `192.168.56.22` adresindeki `CASTELBLACK` üzerinde barındırılan bir IIS web portalı), gelen Servis Biletini (`TGS`) kendi gizli anahtarıyla çözerek biletin içindeki Privilege Attribute Certificate (`PAC`) üzerinden istemcinin kimliğini doğrular.

Mimari problem, bu orta katman uygulama sunucusunun arka uçtaki bağımsız bir kaynakla (örneğin `192.168.56.11` adresindeki `WINTERFELL` üzerindeki bir veritabanı veya SMB dosya paylaşımı) *oturum açmış istemcinin güvenlik bağlamında* konuşması gerektiğinde ortaya çıkar.

Kerberos servis biletleri sıkı bir biçimde aracı servisin gizli anahtarıyla (`HTTP/castelblack`) şifrelendiğinden, `CASTELBLACK` gelen bileti `WINTERFELL` sunucusuna doğrudan iletemez. Hedef servis, kendi anahtarıyla çözemediği bu bileti reddeder ve bağlantı kurulmaz. Dahası, uygulama sunucusu kullanıcının açık metin parolasına veya ana anahtarına (master key) sahip olmadığından istemci adına bağımsız bir `AS-REQ` ya da `TGS-REQ` başlatamaz. Yani ortada ne iletilebilir bir bilet ne de kullanıcının sırrı vardır.

Microsoft bu **çift sıçrama (double-hop) sınırını** aşabilmek için üç nesil Kerberos delegasyon mimarisi geliştirdi. Her model, kurumsal çok katmanlı operasyon ihtiyacı ile en düşük yetki ilkesi (least-privilege) arasındaki gerilimi çözmeyi hedefler. Her yeni nesil, bir öncekinin bıraktığı yetki fazlasını daraltmak için tasarlanmıştır; ama her biri kendi istismar yüzeyini de beraberinde getirir. Aşağıdaki model karşılaştırması, bu dengeyi ve her neslin hangi güven varsayımına dayandığını gösterir.

<figure class="diagram">
<svg viewBox="0 0 760 365" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="İstemci, ön uç sunucu (CASTELBLACK veya jon.snow) ve arka uç hedef (DC02 winterfell) arasındaki çift sıçrama sınırında üç Kerberos delegasyon modelinin karşılaştırması: Unconstrained delegasyon tam TGT'yi iletir; Klasik Kısıtlı Delegasyon (KCD) giden SPN'leri ön uç nesnesinde sınırlar; Kaynak Tabanlı Delegasyon (RBCD) ise delegasyon denetimini doğrudan arka uç hedef kaynağına taşır.">
<defs>
  <marker id="del-tr-m-right" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="6" markerHeight="6" orient="auto"><path d="M0,0 L8,4 L0,8 z" class="dg-arrow" /></marker>
  <marker id="del-tr-m-crit" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="6" markerHeight="6" orient="auto"><path d="M0,0 L8,4 L0,8 z" class="dg-arrow-crit" /></marker>
</defs>
<text x="12" y="18" class="dg-muted">ÇİFT SIÇRAMA (DOUBLE-HOP) PROBLEMİ · KERBEROS DELEGASYONUNUN ÜÇ NESLİ</text>
<rect x="12" y="28" width="736" height="142" rx="8" class="dg-box-accent" />
<text x="22" y="44" class="dg-accent dg-compact">ACTIVE DIRECTORY KERBEROS DELEGASYONUNUN ÜÇ NESLİ</text>
<rect x="22" y="52" width="228" height="106" rx="6" class="dg-box" />
<text x="32" y="70" class="dg-label">1 · Kısıtlamasız (Win2000)</text>
<text x="32" y="86" class="dg-mono dg-compact">UAC: 0x80000 (524288)</text>
<text x="32" y="100" class="dg-muted dg-compact">İstemci AP-REQ içine tam TGT koyar</text>
<text x="32" y="114" class="dg-muted dg-compact">TGT ön uç sunucuda LSASS'ta saklanır</text>
<text x="32" y="128" class="dg-crit dg-compact">Risk: Ön uç sunucu her yerde kimliğe bürünür</text>
<text x="32" y="142" class="dg-accent dg-compact">Savunma: Protected Users / NO_DELEGATION</text>
<rect x="262" y="52" width="236" height="106" rx="6" class="dg-box" />
<text x="272" y="70" class="dg-label">2 · Kısıtlı / KCD (2003)</text>
<text x="272" y="86" class="dg-mono dg-compact">msDS-AllowedToDelegateTo</text>
<text x="272" y="100" class="dg-muted dg-compact">Ön uç hesap nesnesi üzerinde tutulur</text>
<text x="272" y="114" class="dg-muted dg-compact">S4U2Self (Protokol Geçişi) + S4U2Proxy</text>
<text x="272" y="128" class="dg-accent dg-compact">Belirli hedef SPN'ler ile sınırlandırılır</text>
<text x="272" y="142" class="dg-mono dg-compact">Yapılandırma için Domain Admin yetkisi şart</text>
<rect x="510" y="52" width="228" height="106" rx="6" class="dg-box-danger" />
<text x="520" y="70" class="dg-label">3 · Kaynak Tabanlı (2012)</text>
<text x="520" y="86" class="dg-mono dg-compact">msDS-AllowedToActOnBehalf...</text>
<text x="520" y="100" class="dg-muted dg-compact">Hedef sunucunun Güvenlik Tanımlayıcısında</text>
<text x="520" y="114" class="dg-muted dg-compact">Güven kararını arka uç kaynak sahibi verir</text>
<text x="520" y="128" class="dg-crit dg-compact" font-weight="700">Sunucuda GenericWrite = Yerel Admin</text>
<text x="520" y="142" class="dg-accent dg-compact">Domain sınırları ötesinde de çalışır</text>
<rect x="12" y="180" width="736" height="150" rx="8" class="dg-box" />
<text x="22" y="196" class="dg-muted dg-compact">ÇİFT SIÇRAMA SINIRI · S4U PROTOKOL GEÇİŞLERİ HEDEFE NASIL ULAŞIR?</text>
<rect x="22" y="206" width="194" height="112" rx="6" class="dg-box" />
<text x="32" y="224" class="dg-accent dg-compact">[İSTEMCİ / ÇAĞIRAN]</text>
<text x="32" y="242" class="dg-label">samwell.tarly</text>
<text x="32" y="258" class="dg-mono dg-compact">Domain Kullanıcısı · İstemci</text>
<text x="32" y="274" class="dg-muted dg-compact">Web portalında kimlik doğrular</text>
<text x="32" y="290" class="dg-mono dg-compact">HTTP/castelblack bileti ister</text>
<text x="32" y="304" class="dg-accent dg-compact">Adım 1: TGS Üretildi</text>
<line x1="216" y1="262" x2="260" y2="262" class="dg-line" marker-end="url(#del-tr-m-right)" />
<rect x="220" y="238" width="38" height="16" rx="3" class="dg-box" />
<text x="239" y="250" text-anchor="middle" class="dg-mono dg-compact" font-size="8">Adım 1</text>
<rect x="266" y="206" width="228" height="112" rx="6" class="dg-box-accent" />
<text x="276" y="224" class="dg-accent dg-compact">[ORTA KATMAN · ÖN UÇ]</text>
<text x="276" y="242" class="dg-label">CASTELBLACK$ / jon.snow</text>
<text x="276" y="258" class="dg-mono dg-compact">IIS Web Sunucusu · 192.168.56.22</text>
<text x="276" y="274" class="dg-muted dg-compact">İstemci TGS biletini iletemez</text>
<text x="276" y="290" class="dg-accent dg-compact">S4U2Self + S4U2Proxy çağırır</text>
<text x="276" y="304" class="dg-crit dg-compact">CIFS/winterfell için bilet üretir</text>
<line x1="494" y1="262" x2="538" y2="262" class="dg-line-crit" marker-end="url(#del-tr-m-crit)" />
<rect x="498" y="238" width="38" height="16" rx="3" class="dg-box-danger" />
<text x="517" y="250" text-anchor="middle" class="dg-crit dg-compact" font-size="8">Adım 2</text>
<rect x="544" y="206" width="194" height="112" rx="6" class="dg-box-danger" />
<text x="554" y="224" class="dg-crit dg-compact" font-weight="700">[ARKA UÇ HEDEF]</text>
<text x="554" y="242" class="dg-label">DC02 · winterfell</text>
<text x="554" y="258" class="dg-mono dg-compact">CIFS / SQL · 192.168.56.11</text>
<text x="554" y="274" class="dg-muted dg-compact">Delegasyon ACL kaydını denetler</text>
<text x="554" y="290" class="dg-mono dg-compact">samwell.tarly olarak yürütülür</text>
<text x="554" y="304" class="dg-crit dg-compact" font-weight="700">Erişim İzin Verildi / Uygulandı</text>
<rect x="12" y="338" width="736" height="20" rx="4" class="dg-box" style="fill: #0a0c0d; stroke: rgba(255,255,255,0.12);" />
<text x="380" y="352" text-anchor="middle" class="dg-muted dg-compact">GELİŞİM: Kısıtlamasız tam TGT'yi ifşa eder ➔ KCD hedef SPN'e kilitler ➔ RBCD güveni hedef DACL'a aktarır</text>
</svg>
<figcaption>İki sıçramalı sınır boyunca üç Kerberos delegasyon modeli: Kısıtlamasız delegasyon canlı TGT'yi iletir; Klasik Kısıtlı Delegasyon (<code>KCD</code>) giden SPN'leri orta katman nesnesinde sınırlar; Kaynak Tabanlı Delegasyon (<code>RBCD</code>) güven kararını doğrudan arka uç kaynağın kendisine taşır.</figcaption>
</figure>

---

## 1. Nesil: Kısıtlamasız Delegasyon (`TRUSTED_FOR_DELEGATION`)

Windows 2000, delegasyonu istemcinin birincil kimlik doğrulama belirtecini (TGT) doğrudan aracı sunucuya iletmesine izin vererek uyguladı. Bu modelde aracı sunucu, kullanıcının kimliğini yalnızca o anki istek için değil, sonraki tüm istekler için elinde tutar.

Bir bilgisayar veya kullanıcı nesnesinin `userAccountControl` özniteliğinde `TRUSTED_FOR_DELEGATION` (`0x80000` / `524288`) biti ayarlandığında, KDC bilet istekleri sırasında bu bayrağı inceler.

GOAD laboratuvarında bit düzeyinde LDAP filtresi (`LDAP_MATCHING_RULE_BIT_AND` için `1.2.840.113556.1.4.803`) ile yapılan sorgu:

```bash
$ ldapsearch -x -H ldap://192.168.56.10 -D "samwell.tarly@north.sevenkingdoms.local" -w "Heartsbane" \
    -b "DC=sevenkingdoms,DC=local" "(userAccountControl:1.2.840.113556.1.4.803:=524288)" \
    sAMAccountName dNSHostName userAccountControl | grep -E "^(sAMAccountName|dNSHostName|userAccountControl)"
sAMAccountName: KINGSLANDING$
userAccountControl: 532480
dNSHostName: kingslanding.sevenkingdoms.local
```

Dönen `userAccountControl` değeri `532480`, `0x80000 (TRUSTED_FOR_DELEGATION) | 0x2000 (SERVER_TRUST_ACCOUNT)` bayraklarının birleşimidir.

### Protokol Mekaniği ve İstismar Dinamikleri

1. Bir istemci kısıtlamasız delegasyona sahip bir sunucu için servis bileti istediğinde KDC, `TGS-REP` yanıtında `OK-AS-DELEGATE` bayrağını işaretler.
2. İstemcinin Kerberos Güvenlik Sağlayıcısı (SSP), KDC'den **iletilebilir bir TGT (forwardable TGT)** talep eder.
3. İstemci, elde ettiği bu delege TGT'yi `AP-REQ` alışverişinin `GSS-API` doğrulayıcı sağlama toplamı içindeki `KRB_CRED` yapısına gömer.
4. `AP-REQ` paketini çözen aracı sunucu, çağıranın TGT'sini ayıklar ve doğrudan `LSASS` süreç belleğinde, çağıranın LSA logon session'ı altında önbelleğe alır.
5. Aracı sunucu artık bu TGT ile çağıran adına **ormanın tamamındaki herhangi bir hosttaki herhangi bir servise** bilet talep edebilir.

Domain Controller olmayan bir üye sunucuya kısıtlamasız delegasyon verilmesi, bu nedenle kritik bir güvenlik açığıdır. Bu sunucuda yerel yönetici hakkı elde eden bir saldırgan, zorlama primitiflerini (`MS-RPRN` `RpcRemoteFindFirstPrinterChangeNotificationEx` veya `MS-EFSR` `EfsRpcOpenFileRaw`) kullanarak bir Domain Controller makine hesabını (`DC01$`) kimlik doğrulamaya zorlayabilir. `DC01$`'ın TGT'si saldırganın LSASS belleğine düşer ve orman köküne `DCSync` atılarak tam etki alanı kontrolü sağlanır. Buradaki kilit nokta, TGT'nin çalınması değil, hedefin kendi iradesiyle o bileti saldırganın belleğine bırakmasıdır. Bu yüzden kısıtlamasız delegasyon, tek bir sunucunun ele geçirilmesini tüm ormanın ele geçirilmesine çevirebilir.

---

## 2. Nesil: Klasik Kısıtlı Delegasyon (KCD / `[MS-SFU]`)

Windows Server 2003, orta katman sunucuların belleğinde sınırsız TGT tutulmasını engellemek için **Service for User (`[MS-SFU]`)** protokol uzantılarını getirdi. Kısıtlı delegasyonda orta katman sunucusu, yalnızca `msDS-AllowedToDelegateTo` özniteliğinde önceden tanımlanmış açık SPN listesi için bilet talep edebilecek şekilde sınırlandırılır. Buradaki fark, kimin hangi servise gidebileceğini artık ön uç nesnesinin belirlemesidir; hedef kaynak bu kararın dışında kalır.

```bash
$ ldapsearch -x -H ldap://192.168.56.11 -D "samwell.tarly@north.sevenkingdoms.local" -w "Heartsbane" \
    -b "DC=north,DC=sevenkingdoms,DC=local" "(msDS-AllowedToDelegateTo=*)" \
    sAMAccountName userAccountControl msDS-AllowedToDelegateTo | grep -E "^(sAMAccountName|userAccountControl|msDS-Allowed)"
sAMAccountName: CASTELBLACK$
userAccountControl: 4096
msDS-AllowedToDelegateTo: HTTP/winterfell.north.sevenkingdoms.local
msDS-AllowedToDelegateTo: HTTP/winterfell

sAMAccountName: jon.snow
userAccountControl: 16842752
msDS-AllowedToDelegateTo: CIFS/winterfell.north.sevenkingdoms.local
msDS-AllowedToDelegateTo: CIFS/winterfell
```

### Protokol Geçişi (`S4U2Self`) ve Kısıtlı Vekil (`S4U2Proxy`)

Klasik Kısıtlı Delegasyon, `userAccountControl` bayraklarına bağlı olarak iki farklı modda çalışır:

1. **Standart Kısıtlı Delegasyon (Yalnızca Kerberos - `CASTELBLACK$`, `UAC = 4096`):**
   `CASTELBLACK$`, protocol transition olmadan `WORKSTATION_TRUST_ACCOUNT (0x1000)` bayrağını taşır. Yalnızca **`S4U2Proxy`** çağırabilir; KDC'nin hedef SPN için bilet vermesi için, sunucuya gerçekten Kerberos ile oturum açmış bir istemciden aldığı geçerli ve iletilebilir servis biletini (`evidence ticket`) sunmak zorundadır.
2. **Protocol Transition'lı Kısıtlı Delegasyon (`jon.snow`, `UAC = 16842752`):**
   `jon.snow` hesabında `0x1000000` (`TRUSTED_TO_AUTH_FOR_DELEGATION`) biti açıktır. Bu bit, istemcilerin web formları, NTLM veya SAML ile giriş yaptığı ve hiç Kerberos bileti almadığı ortamlar için tasarlanmış **Protocol Transition**'ı etkinleştirir. Yani sunucu, kullanıcı adına bir bilet "üretebilir"; kullanıcının önceden Kerberos ile oturum açmış olması gerekmez.

<figure class="diagram">
<svg viewBox="0 0 760 220" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Ele geçirilen jon.snow servis hesabından Domain Controller KDC üzerinden hedef sunucu WINTERFELL üzerinde Administrator yetkisine ulaşan S4U2Self ve S4U2Proxy protokol geçişi dizilimi.">
<defs><marker id="s4u-seq-tr-c" viewBox="0 0 8 8" refX="7" refY="4" markerWidth="6" markerHeight="6" orient="auto"><path d="M0,0 L8,4 L0,8 z" class="dg-arrow-crit" /></marker></defs>
<text x="12" y="18" class="dg-muted">S4U2SELF + S4U2PROXY PROTOKOL GEÇİŞİ AKIŞI</text>
<rect x="12" y="34" width="210" height="52" rx="8" class="dg-box-accent" />
<text x="26" y="56" class="dg-label">1 · Ele Geçirilen Servis</text>
<text x="26" y="74" class="dg-mono dg-compact">jon.snow (UAC: 0x1000000)</text>
<line x1="222" y1="60" x2="274" y2="60" class="dg-line-crit" marker-end="url(#s4u-seq-tr-c)" />
<rect x="278" y="34" width="220" height="52" rx="8" class="dg-box" />
<text x="292" y="56" class="dg-label">2 · KDC (S4U2Self)</text>
<text x="292" y="74" class="dg-mono dg-compact">PA-FOR-USER: Administrator</text>
<line x1="388" y1="86" x2="388" y2="122" class="dg-line-crit" marker-end="url(#s4u-seq-tr-c)" />
<rect x="278" y="126" width="220" height="52" rx="8" class="dg-box" />
<text x="292" y="148" class="dg-label">3 · KDC (S4U2Proxy)</text>
<text x="292" y="166" class="dg-mono dg-compact">TGS → CIFS/winterfell</text>
<line x1="498" y1="152" x2="546" y2="152" class="dg-line-crit" marker-end="url(#s4u-seq-tr-c)" />
<rect x="550" y="126" width="198" height="52" rx="8" class="dg-box-danger" />
<text x="564" y="148" class="dg-label">4 · Hedef Sunucu</text>
<text x="564" y="166" class="dg-crit dg-compact">WINTERFELL$ (Admin)</text>
<text x="12" y="204" class="dg-muted">1-2: S4U2Self iletilebilir kanıt TGS üretir · 3-4: S4U2Proxy bunu CIFS/winterfell TGS biletine dönüştürür</text>
</svg>
<figcaption><span>Protokol Geçişi</span> <code>jon.snow</code>, <code>S4U2Self</code> (<code>PA-FOR-USER</code>) ile <code>Administrator</code> adına iletilebilir bir bilet alır ve bunu <code>S4U2Proxy</code> (<code>additional-tickets</code>) adımında sunarak <code>CIFS/winterfell</code> servis biletini elde eder.</figcaption>
</figure>

### Saldırı Vektörü: SPN Servis Sınıfı Değişimi (`sname` Mutasyonu)

Kerberos bilet doğrulamasında kritik bir tasarım ayrımı vardır:

- Bir `TGS-REP` içinde hedef servis kimliği iki yerde görünür: şifrelenmemiş dış `sname` alanı (`Ticket.sname`) ve biletin içindeki PAC imza alanları.
- `Target Host` gelen `AP-REQ` isteğini doğrularken bileti kendi host gizli anahtarıyla (`WINTERFELL$`) çözer. `winterfell` üzerinde makine hesabı altında çalışan tüm servisler (`CIFS`, `HOST`, `LDAP`, `HTTP`) aynı makine hesabı anahtarını paylaştığından, bilet servis sınıfından bağımsız olarak başarıyla çözülür.
- `Rubeus tgssub` veya `impacket-tgssub` gibi araçlar, şifrelenmemiş dış `sname` değerini `CIFS/winterfell` yerine `LDAP/winterfell` olarak yeniden yazar. KDC PAC'ı imzalar ama dış `sname` alanını servis sınıfına kriptografik olarak bağlamaz; bu yüzden hedef DC bileti LDAP üzerinden kabul eder ve saldırgan doğrudan `DCSync` yetkisine ulaşır. Bu ayrım, biletin gerçekten hangi servise ait olduğunu doğrulamayı zorlaştırır; çünkü imza bütünlüğü korunurken dış alan değiştirilebilir.

---

## 3. Nesil: Kaynak Tabanlı Kısıtlı Delegasyon (RBCD)

Klasik Kısıtlı Delegasyon ciddi bir yönetimsel darboğaz yaratıyordu: `msDS-AllowedToDelegateTo` ön uç servis üzerinde tanımlı bir giden yetki olduğu için delegasyon kurmak Domain Admin kimlik bilgilerini (`SeEnableDelegationPrivilege`) gerektiriyordu. Bu da her delegasyon değişikliğini merkezi ve ağır bir işleme dönüştürüyordu. Delegasyon yönetimi merkezileşirken en küçük yetki ilkesi de zayıflıyordu; çünkü her yeni ihtiyaç için tekrar Domain Admin'e başvurmak gerekiyordu.

Windows Server 2012, kontrol modelini tersine çevirerek **Resource-Based Constrained Delegation (RBCD)** modelini getirdi. RBCD'de yetkilendirme mantığı tamamen *arka uçtaki hedef bilgisayara* taşınır. Hedef host, kendisine hangi ön uç servislerinin delege edebileceğini kendi `msDS-AllowedToActOnBehalfOfOtherIdentity` özniteliğine ikili bir Güvenlik Tanımlayıcısı (Security Descriptor) yazarak belirler.

```bash
# Active Directory Machine Account Quota Configuration
$ ldapsearch -x -H ldap://192.168.56.10 -D "samwell.tarly@north.sevenkingdoms.local" -w "Heartsbane" \
    -b "DC=sevenkingdoms,DC=local" -s base ms-DS-MachineAccountQuota | grep ms-DS-MachineAccountQuota
ms-DS-MachineAccountQuota: 10
```

### Protokol Dinamiği: İletilemez Bilet İstisnası (Non-Forwardable Exception)

RBCD'nin en kritik mimari özelliği, `TRUSTED_TO_AUTH_FOR_DELEGATION` bayrağı *yokken* KDC'nin `S4U2Self` biletlerini nasıl işlediğidir:

1. `ms-DS-MachineAccountQuota` ile oluşturulmuş sıradan bir bilgisayar hesabı bile `Administrator` adına `S4U2Self` isteği çalıştırabilir.
2. İstekte bulunan makine hesabında `TRUSTED_TO_AUTH_FOR_DELEGATION` (`0x1000000`) olmadığı için KDC, verilen servis biletini **iletilemez (non-forwardable, `forwardable: 0`)** olarak işaretler.
3. Klasik Kısıtlı Delegasyonda bu iletilemez bilet `S4U2Proxy`'ye sunulursa işlem `KDC_ERR_BADOPTION` hatasıyla başarısız olur.
4. RBCD'de ise KDC, hedef hostun `msDS-AllowedToActOnBehalfOfOtherIdentity` DACL'ini inceler. **Çağıranın SID'si hedefin DACL'inde varsa KDC, iletilemez bilet kontrolünü açıkça geçersiz kılar** ve hedef host için geçerli bir delege servis bileti üretir.

Bu istisna, RBCD'nin neden bu kadar güçlü olduğunu açıklar: Delegasyon kararı artık merkezi bir yönetici iznine değil, hedef nesnenin kendi DACL'ine bağlıdır. Sonuç olarak bir bilgisayar nesnesi üzerinde `GenericWrite`, `GenericAll` veya `WriteProperty (msDS-AllowedToActOnBehalfOfOtherIdentity)` yetkisine sahip herhangi bir Active Directory principal'ı, RBCD istismarıyla o bilgisayarda yerel yönetici erişimi elde edebilir. Bu özellik, RBCD'yi hem meşru yönetim hem de saldırı açısından çekici kılar.

---

## Telemetri ve Savunma Mühendisliği

Delegasyon istismarı çoğu zaman tek bir olayda görünmez; bilet istekleri, dizin değişiklikleri ve makine hesabı oluşturma birlikte okunmalıdır.

### Delegasyon Telemetri Matrisi

| Event ID | Günlük Sağlayıcı | Olay Adı | Teknik Bağlam |
| :--- | :--- | :--- | :--- |
| `4769` | Güvenlik (Security) | Kerberos Servis Bileti İşlemleri | Servis adı `krbtgt` veya hedef SPN ile eşleşir; Bilet Seçenekleri `0x40810010` (Kısıtlı Delegasyon / S4U) bayrağını içerir. |
| `4768` | Güvenlik (Security) | Kerberos TGT İsteği | `PreAuthType = 16` veya beklenmedik makine hesaplarının iletilebilir TGT istemesi izlenir. |
| `5136` | Dizin Servisi | Dizin Nesnesi Değiştirildi | `msDS-AllowedToActOnBehalfOfOtherIdentity` veya `msDS-AllowedToDelegateTo` özniteliklerine yapılan yazmalar. |
| `4741` | Güvenlik (Security) | Bilgisayar Hesabı Oluşturuldu | Standart kullanıcı hesaplarının `ms-DS-MachineAccountQuota` kullanarak açtığı yeni makine hesaplarını izler. |

```kql
// KQL Query: Detect Suspicious RBCD Security Descriptor Modifications
SecurityEvent
| where EventID == 5136
| where AttributeLDAPDisplayName =~ "msDS-AllowedToActOnBehalfOfOtherIdentity"
| project TimeGenerated, Computer, SubjectUserName, ObjectDN, AttributeValue
```

### Sıkılaştırma ve İyileştirme Protokolleri

1. **Makine Hesabı Kotasını Kapatın:** Standart kullanıcıların makine hesabı açmasını engellemek için `ms-DS-MachineAccountQuota` değerini tüm etki alanlarında `0` yapın. Bu tek ayar, RBCD için gereken sahte makine hesabı yolunu kapatır.
2. **Protected Users Güvenlik Grubunu Uygulayın:** Yönetici hesaplarını `CN=Protected Users,CN=Users,DC=...` altına alın. Bu grubun üyeleri kısıtlamasız veya kısıtlı delegasyonla delege edilemez (`bForwardable` zorunlu olarak false yapılır).
3. **NOT_DELEGATED Bayrağını Yapılandırın:** Tüm Tier-0 servis ve kullanıcı hesaplarında `Account is sensitive and cannot be delegated` bayrağını (`userAccountControl` biti `0x100000`) ayarlayın.
4. **Çapraz Servis SPN Delegasyonunu Denetleyin:** `msDS-AllowedToDelegateTo` içindeki joker karakterli veya Domain Controller'a işaret eden delegasyon yollarını (`CIFS/winterfell`) kaldırın.

---

## Delegasyon Modellerinin Karşılaştırması

| Delegasyon Mimarisi | İlgili LDAP Özniteliği / Bayrağı | Yapılandırma Yetkisi | İstismar Vektörü | Sıkılaştırma Protokolü |
| :--- | :--- | :--- | :--- | :--- |
| **Kısıtlamasız (Unconstrained)** | `userAccountControl: 0x80000` | Domain Admin (`SeEnableDelegationPrivilege`) | `MS-RPRN`/`MS-EFSR` ile DC kimlik doğrulaması zorlama; LSASS'tan TGT çekme. | DC olmayan tüm sunucularda `TRUSTED_FOR_DELEGATION`'u kaldırın; yöneticileri `Protected Users` grubuna alın. |
| **Kısıtlı (Yalnızca Kerberos)** | `msDS-AllowedToDelegateTo` | Domain Admin (`SeEnableDelegationPrivilege`) | `tgssub` ile servis bileti `sname` alanını değiştirme (`HTTP`'den `LDAP`'a). | DC SPN'lerine delegasyonu yasaklayın; yalnızca AES Kerberos şifrelemesini zorunlu tutun. |
| **Protocol Transition'lı Kısıtlı** | `msDS-AllowedToDelegateTo` + `UAC: 0x1000000` | Domain Admin (`SeEnableDelegationPrivilege`) | Kimlik doğrulamasız `S4U2Self` ile keyfi kimlik taklidi. | `TRUSTED_TO_AUTH_FOR_DELEGATION`'u kaldırın; ayrıcalıklı hesapları hassas olarak işaretleyin. |
| **Kaynak Tabanlı (RBCD)** | `msDS-AllowedToActOnBehalfOfOtherIdentity` | Hedef bilgisayar üzerinde `GenericWrite` yetkisi olan principal | `MAQ=10` ile hedef DACL'e yazma birleştirerek delege bilet üretme. | `ms-DS-MachineAccountQuota = 0` yapın; hostlardaki varsayılan dışı DACL yazma haklarını kaldırın. |

---

## Kanıt ve sınırlar

LDAP öznitelikleri, bilet geçişleri ve istismar örnekleri, çevredeki walkthrough'larda kullanılan GOAD etki alanlarında kontrol edildi. Laboratuvarın tek başına kanıtlayamadığı kısımlar için Microsoft protokol spesifikasyonları kullanıldı: bilet bayrağı semantiği, S4U istek yapısı ve KDC'nin delegasyon kuralları. Komut çıktısı bu yapılandırmanın kanıtıdır; protokol tanımlarının yerine geçmez. Bu nedenle laboratuvar çıktısını bir tarama sonucu değil, belirli bir yapılandırmanın kanıtı olarak değerlendirmek gerekir.

Yazı, her delegasyon kaydının istismar edilebilir olduğunu iddia etmez. Hesap hassasiyeti, servis sınıfı davranışı, yama düzeyi, SPN sahipliği, şifreleme türleri ve erişilebilen servisler sonucu değiştirir. Tespit alanları da denetim ilkesine ve günlük toplamaya bağlıdır; listelenen Event ID'ler savunmacının kendi ortamında doğrulaması gereken başlangıç noktalarıdır.

## Kaynaklar

- **Microsoft Open Specifications, `[MS-SFU]` Kerberos Protocol Extensions: Service for User:** [learn.microsoft.com/en-us/openspecs/windows_protocols/ms-sfu](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-sfu/3bff5864-8135-400e-bdd9-33b552051d94)
- **Microsoft Open Specifications, `[MS-PAC]` Privilege Attribute Certificate Data Structure:** [learn.microsoft.com](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-pac)
- **Microsoft, Kerberos Constrained Delegation Overview:** [learn.microsoft.com](https://learn.microsoft.com/en-us/windows-server/security/kerberos/kerberos-constrained-delegation-overview)
- **RFC 4120, The Kerberos Network Authentication Service (V5):** [datatracker.ietf.org/doc/html/rfc4120](https://datatracker.ietf.org/doc/html/rfc4120)
- **MITRE ATT&CK, Steal or Forge Kerberos Tickets (T1558):** [attack.mitre.org/techniques/T1558](https://attack.mitre.org/techniques/T1558)
