Active Directory sızma testlerinde en çok yol alınan zincirlerden biri, bir güvenlik açığından değil, tasarımın kendisinden doğar: Kerberos delegasyonu. Delegasyon, bir servisin kullanıcı adına başka bir servise kimlik doğrulaması yapmasını sağlar. Doğru yapılandırıldığında çok katmanlı uygulamaların çalışmasını mümkün kılar; yanlış yapılandırıldığında ise tek bir servis hesabından Domain Admin yetkisine giden en kısa yolu açar.
Bu rehberde üç delegasyon türünü, her birinin somut saldırı senaryosunu, tespit sorgularını ve sertleştirme adımlarını ele alacağız.
1. Delegasyon Türleri ve Risk Sıralaması
| Tür | Kısaltma | Kontrol nerede? | Risk |
|---|---|---|---|
| Unconstrained delegation | UD | Kaynak makinede | Kritik |
| Constrained delegation | KCD | Kaynak makinede (SPN listesi) | Yüksek |
| Resource-based constrained delegation | RBCD | Hedef makinede | Yüksek |
Unconstrained delegation
En eski ve en tehlikeli model. Hesabın userAccountControl özniteliğinde TRUSTED_FOR_DELEGATION (0x80000) biti açıktır. Bu makineye kimlik doğrulayan her kullanıcının TGT'si (Ticket Granting Ticket), makinenin LSASS bellek alanında saklanır. Saldırgan makine üzerinde yönetici yetkisine sahipse, biriken tüm TGT'leri çıkarabilir ve sahiplerinin kimliğine bürünebilir.
Kritik nokta şu: saldırganın kurbanın oraya bağlanmasını beklemesi gerekmez. Printer Bug (MS-RPRN) veya PetitPotam (MS-EFSR) gibi zorlama teknikleriyle bir Domain Controller'ın makine hesabı, unconstrained delegation yetkisine sahip makineye kimlik doğrulamaya zorlanabilir. Sonuç: DC'nin TGT'si ve ardından DCSync ile tüm alan parola özetleri.
Constrained delegation (KCD)
Hesap yalnızca msDS-AllowedToDelegateTo listesindeki SPN'lere delege edebilir. Sınır getirdiği için daha güvenli görünür; ancak S4U2Self uzantısı nedeniyle kritik bir zayıflık taşır: hesap, TRUSTED_TO_AUTH_FOR_DELEGATION biti açıksa herhangi bir kullanıcı adına (Domain Admin dahil) kendisine bilet üretebilir, ardından S4U2Proxy ile bunu hedef SPN'e taşır.
İkinci zayıflık: Kerberos bileti SPN'in servis sınıfını bağlayıcı biçimde doğrulamaz. CIFS/dc01 yerine TIME/dc01 için verilmiş bir delegasyon izni de, bilet üzerinde servis adı değiştirilerek dosya paylaşımına erişime dönüştürülebilir. Yani "zararsız bir servise" verilen delegasyon izni pratikte o makinenin tamamına verilmiş sayılır.
Resource-based constrained delegation (RBCD)
Windows Server 2012 ile gelen bu modelde izin, kaynak makinede değil hedef makinenin msDS-AllowedToActOnBehalfOfOtherIdentity özniteliğinde tanımlanır. Yönetim açısından pratiktir, çünkü hedef sistemin sahibi kimin kendisine delege edebileceğine karar verir. Saldırgan açısından da pratiktir: hedef bilgisayar nesnesi üzerinde GenericWrite, GenericAll, WriteDACL veya WriteProperty yetkisi olan herkes bu özniteliği yazabilir.
Tipik zincir şöyle işler:
- Saldırgan, varsayılan olarak 10 olan ms-DS-MachineAccountQuota sayesinde alana yeni bir bilgisayar hesabı ekler.
- Hedef bilgisayarın msDS-AllowedToActOnBehalfOfOtherIdentity değerine bu yeni hesabın SID'ini yazar.
- S4U2Self ve S4U2Proxy ile hedef üzerinde Domain Admin adına CIFS bileti alır.
2. Tespit: Ortamınızı Tarayın
Unconstrained delegation'a sahip hesaplar
CODE TERMINAL
Get-ADComputer -LDAPFilter "(userAccountControl:1.2.840.113556.1.4.803:=524288)" -Properties userAccountControl | Select-Object Name, DistinguishedName
Get-ADUser -LDAPFilter "(userAccountControl:1.2.840.113556.1.4.803:=524288)" -Properties userAccountControl | Select-Object NameSonuçta yalnızca Domain Controller'lar görünmelidir. Listede bir üye sunucu veya kullanıcı hesabı varsa, bu öncelikli inceleme konusudur.
Constrained delegation tanımları
CODE TERMINAL
Get-ADObject -LDAPFilter "(msDS-AllowedToDelegateTo=*)" -Properties msDS-AllowedToDelegateTo, userAccountControl | Select-Object Name, msDS-AllowedToDelegateTo, userAccountControlÇıktıdaki userAccountControl değerinde 0x1000000 (16777216) biti açıksa, hesap "protocol transition" ile yapılandırılmıştır ve S4U2Self istismarına açıktır.
RBCD tanımları
CODE TERMINAL
$hedefler = Get-ADComputer -Filter * -Properties msDS-AllowedToActOnBehalfOfOtherIdentity
foreach ($h in $hedefler) {
$ham = $h."msDS-AllowedToActOnBehalfOfOtherIdentity"
if (-not $ham) { continue }
$sd = New-Object System.DirectoryServices.ActiveDirectorySecurity
$sd.SetSecurityDescriptorBinaryForm($ham)
$izinli = ($sd.Access | ForEach-Object { $_.IdentityReference }) -join ", "
Write-Output ("Hedef: " + $h.Name + " | Izinli: " + $izinli)
}Makine hesabı kotası
CODE TERMINAL
Get-ADObject -Identity (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota3. Sertleştirme Adımları
3.1. Unconstrained delegation'ı kaldırın
Domain Controller dışındaki hiçbir hesapta bu ayar bulunmamalıdır. İş gereksinimi varsa RBCD'ye geçirin:
CODE TERMINAL
Set-ADAccountControl -Identity "APP01$" -TrustedForDelegation $false3.2. Ayrıcalıklı hesapları delegasyon dışına alın
İki koruma katmanı vardır. Birincisi hesap düzeyinde "Account is sensitive and cannot be delegated" bayrağı:
CODE TERMINAL
Set-ADUser -Identity admin.ali -AccountNotDelegated $trueİkincisi ve daha sürdürülebilir olanı, tüm ayrıcalıklı hesapları Protected Users grubuna eklemektir. Bu grup üyeleri için delegasyon tamamen engellenir, NTLM kimlik doğrulaması devre dışı bırakılır ve Kerberos bilet ömrü kısaltılır:
CODE TERMINAL
Add-ADGroupMember -Identity "Protected Users" -Members admin.aliUyarı: Protected Users üyeliği NTLM'e bağımlı eski uygulamaları bozabilir. Önce test hesaplarıyla doğrulayın.
3.3. Makine hesabı kotasını sıfırlayın
CODE TERMINAL
Set-ADDomain -Identity (Get-ADDomain).DistinguishedName -Replace @{"ms-DS-MachineAccountQuota"="0"}Bu tek değişiklik, RBCD saldırı zincirinin en kolay adımını ortadan kaldırır. Alana makine ekleme yetkisi, bunun yerine yardım masası grubuna açıkça devredilmelidir.
3.4. Kimlik doğrulama zorlama yollarını kapatın
- Domain Controller'larda Print Spooler servisini durdurun ve devre dışı bırakın (MS-RPRN zorlamasını engeller).
- PetitPotam için ilgili güncellemeleri uygulayın ve EFSRPC arayüzüne RPC filtresi tanımlayın.
- AD CS kullanılıyorsa web kayıt uç noktalarında (ESC8) Extended Protection for Authentication ayarını etkinleştirin.
3.5. Servis hesaplarını gözden geçirin
Delegasyon kullanan servis hesaplarını group Managed Service Account (gMSA) yapısına taşıyın. Otomatik yönetilen uzun parola, Kerberoasting saldırısını pratikte uygulanamaz hale getirir:
CODE TERMINAL
New-ADServiceAccount -Name gmsa-app01 -DNSHostName app01.ornek.local -PrincipalsAllowedToRetrieveManagedPassword "APP01$"4. İzleme Kuralları
Delegasyon istismarı, Windows olay günlüklerinde belirgin izler bırakır:
| Olay ID | Anlamı | Neye bakılmalı? |
|---|---|---|
| 4769 | Kerberos servis bileti istendi | Kısa sürede çok sayıda farklı SPN isteği, RC4 şifreleme türü (0x17) |
| 4768 | TGT istendi | Beklenmeyen kaynak IP adresinden ayrıcalıklı hesap adına istek |
| 4662 | Dizin nesnesinde işlem | msDS-AllowedToActOnBehalfOfOtherIdentity yazma işlemleri |
| 4741 | Bilgisayar hesabı oluşturuldu | Yardım masası dışındaki hesaplar tarafından oluşturulan makineler |
| 4738 | Hesap değiştirildi | userAccountControl içinde delegasyon bitlerinin açılması |
4662 olayının delegasyon özniteliği için üretilebilmesi, ilgili nesnelerde SACL denetiminin açık olmasını gerektirir. Bu ayar varsayılan olarak kapalıdır ve delegasyon izleme programının ilk adımı olmalıdır.
5. Uygulama Sırası
- Envanter çıkarın: üç delegasyon türünün tamamını tarayın ve iş sahibiyle eşleştirin.
- Makine hesabı kotasını sıfırlayın; en düşük maliyetli, en yüksek etkili adımdır.
- Ayrıcalıklı hesapları Protected Users grubuna alın.
- DC dışındaki unconstrained delegation tanımlarını kaldırın.
- Kalan constrained delegation tanımlarını RBCD ve gMSA yapısına taşıyın.
- SACL denetimini açın ve yukarıdaki olay kurallarını SIEM sisteminize ekleyin.
Delegasyon yapılandırması, bir kez düzeltilip unutulacak bir konu değildir. Yeni bir uygulama kurulduğunda, bir servis hesabı oluşturulduğunda veya bir sunucu devreye alındığında yeniden gündeme gelir. Bu nedenle tarama sorgularını aylık çalışan bir görev haline getirmek, tek seferlik bir temizlikten çok daha kalıcı sonuç verir.
TR Siber Ekibi