Site icon Baki ÇUBUK

Active Directory’yi Ele Geçirme Teknikleri Serisi – Bölüm 7: Active Directory Certificate Services (AD CS) Üzerinden ESC1 İstismarı

Merhaba

Serinin önceki bölümlerinde SYSVOL’de unutulmuş bir parola kalıntısını ele almıştık. Bu bölümde ise, çok daha modern ve giderek daha kritik hale gelen bir saldırı yüzeyine geçiyoruz: Active Directory Certificate Services (AD CS). Sertifikalar artık yalnızca web sunucularını güvenceye almak için değil, kullanıcıları ve bilgisayarları parola olmadan kimlik doğrulamasında (certificate-based authentication, PKINIT) kullanmak için de domain’in ayrılmaz bir parçası haline geldi, ve bu da AD CS’i yanlış yapılandırıldığında domain’in tamamını ele geçirmeye açık, alternatif bir kimlik doğrulama otoritesine dönüştürüyor.

Active Directory Certificate Services (AD CS) – ESC1 İstismarı

AD CS, bir kurumun kendi Public Key Infrastructure’ını (PKI) işletmesini sağlayan bir Windows Server rol hizmetidir. Certificate Authority (CA), sertifika şablonları (certificate templates) aracılığıyla kullanıcılara ve bilgisayarlara sertifika verir; bu şablonlar hangi özneye (subject), hangi genişletilmiş anahtar kullanımına (Extended Key Usage, EKU) ve hangi izinlerle sertifika verileceğini tanımlar. Sertifikalar bir kez verildiğinde, sahibinin parolası olmadan da Kerberos PKINIT üzerinden domain’de kimlik doğrulaması yapmak için kullanılabilir. ESC1 (Escalation Path 1), Will Schroeder ve Lee Christensen’in 2021’de yayımladığı “Certified Pre-Owned” araştırmasında tanımlanan, en yaygın ve en kritik AD CS yanlış yapılandırmasıdır. Bir sertifika şablonu şu üç koşulu AYNI ANDA sağlıyorsa ESC1’e açıktır: (1) şablon, `ENROLLEE_SUPPLIES_SUBJECT` bayrağıyla talep sahibinin sertifikanın öznesini (Subject Alternative Name – SAN dahil) kendisinin belirlemesine izin verir, (2) şablon, İstemci Kimlik Doğrulama (Client Authentication) EKU’suna sahiptir (yani sertifika PKINIT ile oturum açmak için kullanılabilir), (3) düşük yetkili bir grup (genellikle `Domain Users` veya `Authenticated Users`) bu şablon üzerinde Enroll iznine sahiptir ve şablon yönetici onayı (manager approval) gerektirmez. Bu üç koşul bir arada olduğunda, düşük yetkili herhangi bir domain kullanıcısı, sertifika talebinde SAN alanına kendi kullanıcı adı yerine bir Domain Admin’in (hatta bir domain controller bilgisayar hesabının) kullanıcı adını yazarak CA’dan o kimliğe ait geçerli bir sertifika talep edebilir. CA, şablonun izin verdiği bu talebi normal bir işlem olarak onaylar ve saldırgana hedef hesabın kimliğiyle kimlik doğrulaması yapmasını sağlayan bir sertifika verir, bu da tek bir istekle doğrudan Domain Admin ayrıcalığına sıçrama anlamına gelir.

ESC1 İstismarını Mitigasyon Etmek

ESC1 istismarını mitigasyon etmek için aşağıdaki güvenlik kontrolleri uygulanmalıdır:

ESC1 İstismarını Tespit Etmek

AD CS ile ilgili olaylar varsayılan olarak ayrıntılı loglanmaz; bu yüzden CA sunucusunda Certificate Services denetim ilkelerinin (Object Access) etkinleştirilmiş olması tespit için ön koşuldur. Aşağıdaki Event ID’ler merkezi olarak loglanmalı ve zamanında analiz edilmelidir.

ESC1 İstismarını Tespit Eden Olaylar

Event ID Kaynak Açıklama
4886 Certificate Authority sunucusu CA’nın bir sertifika talebi aldığında üretilir. Talep sahibinin kimliği ile talep edilen sertifikanın öznesi (SAN dahil) arasındaki uyumsuzluk – özellikle sıradan bir kullanıcının kendi adına değil de ayrıcalıklı bir hesap adına talepte bulunması – ESC1 istismarının en belirgin işaretidir.
4887 Certificate Authority sunucusu CA bir sertifika verdiğinde üretilir. Şablon adı ve verilen sertifikanın öznesi burada da görünür; ESC1 kaynaklı bir istismarda, düşük yetkili bir hesabın Domain Admin veya domain controller adına verilmiş bir sertifika elde ettiği bu olayla doğrulanabilir.
4768 Domain Controller’lar Bir Kerberos TGT talebi olduğunda üretilir. PKINIT (sertifika tabanlı) kimlik doğrulama kullanıldığında olay, sertifikanın seri numarası ve verenini (issuer) içeren ek alanlar taşır; bir hesabın normalde parolayla oturum açtığı halde aniden sertifikayla PKINIT üzerinden TGT alması, çalınmış/kötüye kullanılmış bir sertifikanın işareti olabilir.
4899 / 4900 Certificate Authority sunucusu Bir sertifika şablonu güncellendiğinde (4899) veya CA güvenlik ayarları değiştirildiğinde (4900) üretilir. Bir şablona `ENROLLEE_SUPPLIES_SUBJECT` bayrağının eklenmesi veya enroll izinlerinin genişletilmesi gibi, ESC1 koşullarını yaratan yapılandırma değişikliklerini yakalamak için kritiktir.

Lab Uygulaması: Windows Server 2025 Üzerinde ESC1 İstismarı

Bu tekniği kendi Windows Server 2025 (W25DC.bakicubuk.local, aynı zamanda Enterprise Root CA) ve Windows 11 (W11CLIENT.bakicubuk.local) lab ortamımda uçtan uca canlı olarak denedim. Aşağıdaki adımlar, gerçek bir düşük yetkili kullanıcının CA’yı nasıl kandırıp Administrator kimliğine ait geçerli bir sertifika elde edebildiğini gösteriyor.

Adım 1 – ESC1’e açık bir şablon oluşturmak. W25DC üzerinde certtmpl.msc ile User şablonunu çoğaltarak ESC1-Demo-Template adında yeni bir şablon oluşturdum ve üç ESC1 koşulunu tek tek yapılandırdım:

Subject Name sekmesinde “Supply in the request” seçili talep sahibinin sertifikanın öznesini (SAN dahil) kendisinin belirlemesine izin veren ENROLLEE_SUPPLIES_SUBJECT bayrağı.

Extensions sekmesinde Application Policies listesinde Client Authentication’ın yer alması sertifikanın PKINIT ile oturum açmak için kullanılabileceğinin kanıtı.


Security sekmesinde Domain Users grubuna Enroll izni verilmiş, yönetici onayı gerektirmeyen yapılandırma.

Şablonu certutil -SetCATemplates +ESC1-Demo-Template ile CA’da yayınladım ve certutil -CATemplates ile listede göründüğünü doğruladım.

Adım 2 – Düşük yetkili test kullanıcısı. lowpriv adında, herhangi bir ayrıcalıklı gruba üye olmayan sıradan bir domain kullanıcısı oluşturdum. İlk parola denemem (LowPriv2026!) parola karmaşıklık politikası tarafından reddedildi. Sebebi parolanın hesap adını (lowpriv) birebir içermesiydi; Bölüm 6’daki gppdemo parola reddiyle aynı kök neden. Hesap adını içermeyen farklı bir parolayla (Qz7#Falcon2026) sorunu çözdüm.

Adım 3 – SAN alanına Administrator’ı yazan sertifika talebi. W11CLIENT üzerinde lowpriv bağlamında (runas /user:bakicubuk\lowpriv) bir PowerShell açıp, talebin Subject Alternative Name alanına administrator@bakicubuk.local UPN’ini gömen bir INF dosyası hazırladım ve certreq -new ile talebi oluşturup certreq -submit ile CA’ya gönderdim:

Pencere başlığında “running as bakicu…” ifadesiyle doğrulanan lowpriv oturumunda, certreq -submit komutunun Certificate retrieved(Issued) Issued çıktısı – CA, düşük yetkili kullanıcının Administrator kimliğine ait talebini sorgusuz onaylamış.

Aldığım sertifikanın içeriğini incelediğimde, Subject alanının CN=lowpriv olmasına rağmen Subject Alternative Name uzantısında administrator@bakicubuk.local UPN’inin açıkça gömülü olduğunu gördüm. ESC1’in istismar edildiğinin doğrudan kanıtı. Bu noktada, elde edilen sertifikayı fiilen kullanıp gerçek bir Administrator kimliğiyle Kerberos TGT almaya (PKINIT) geçmedim; CA’nın bu talebi onaylamış olması tekniğin özünü zaten kanıtlıyor ve makalenin amacı gerçek bir yetki yükseltmesini tamamlamak değil, yanlış yapılandırmayı ve tespit noktalarını göstermek.

Adım 4 – CA denetim kaydı. Certificate Services denetimi varsayılan olarak kapalı olduğu için önce certutil -setreg CA\AuditFilter 127 ve auditpol /set /subcategory:"Certification Services" /success:enable /failure:enable ile etkinleştirdim, CA servisini yeniden başlattım ve ikinci bir talep oluşturarak Event 4886 ile 4887’yi canlı yakaladım:

Event ID 4886 – Requester: BAKICUBUK\lowpriv, SAN from CSR: Principal Name=administrator@bakicubuk.local, Requested Template: ESC1-Demo-Template alanlarıyla, CA’nın talebi tam olarak kimden ve ne için aldığının kaydı.

Event ID 4887 – aynı talebin onaylanıp sertifikanın verildiğini, seri numarasıyla birlikte gösteren kayıt.

Bu iki event, ESC1’in CA tarafındaki en net imzasını oluşturuyor: normalde kendi kimliğiyle işlem yapması beklenen düşük yetkili bir hesabın, talebinde başka (ve çok daha ayrıcalıklı) bir kimliği taşıması. Lab sonrasında sertifikaları (certutil -revoke) iptal edip lowpriv hesabını devre dışı bırakarak ortamı temizledim.

Uyumluluk ve Çerçeve Eşlemesi Tablosu

Çerçeve İlgili Kontrol/Madde
PCI DSS Gereksinim 7.1 (Erişim kısıtlaması), Gereksinim 8.2 (Güçlü kimlik doğrulama)
HIPAA 164.312(a)(1) – Erişim Kontrolü
ISO 27001 A.9.2 (Kullanıcı Erişim Yönetimi), A.9.4 (Sistem ve Uygulama Erişim Kontrolü)
KVKK Madde 12 – Veri Güvenliğine İlişkin Yükümlülükler
TCMB Bilgi Sistemleri Yönetimi Tebliğ – Erişim ve Yetkilendirme Kontrolleri
NIST CSF PR.AC-4 (Erişim yetkilerinin yönetimi), PR.AC-1 (Kimlik ve kimlik bilgisi yönetimi)
CIS Controls CIS 5 (Hesap Yönetimi), CIS 6 (Erişim Kontrol Yönetimi)

MITRE ATT&CK: T1649 (Steal or Forge Authentication Certificates)

Sonuç

ESC1, AD CS’in gücünü parolasız, sertifika tabanlı kimlik doğrulama bir zayıflığa çeviren, tek bir yanlış yapılandırılmış şablonun tüm domain’i ele geçirmeye yetebileceği klasik bir örnektir. CA’nın kendisi hiçbir zaman “hacklenmez”; saldırgan yalnızca CA’nın kendisine verdiği izinleri, tasarlandığı gibi kullanır. Bu yüzden mitigasyon, CA’yı sıkılaştırmaktan çok, şablonların izin verdiği yetkileri periyodik olarak denetlemekten geçer.

Serinin bir sonraki bölümünde, saldırganın CA’nın özel anahtarını ele geçirdiği daha da kritik bir senaryoyu, Golden Certificate tekniğini inceleyeceğiz.

Exit mobile version