Locksmith 2 ile Active Directory Certificate Services Güvenlik Denetimi
Active Directory Certificate Services (AD CS), çoğu kurumda yıllardır kimsenin dokunmadığı ama domain’in anahtarlarını taşıyan bir servistir. Yanlış yapılandırılmış tek bir sertifika şablonu, sıradan bir domain kullanıcısının Domain Admin adına sertifika almasına ve dakikalar içinde tüm ortamı ele geçirmesine yol açabilir.
SpecterOps’un 2021’de yayımladığı Certified Pre-Owned araştırması bu saldırı yollarını ESC1, ESC2… şeklinde numaralandırdı. O günden beri liste ESC16’ya kadar uzadı ve Certipy, Certify gibi saldırı araçları bu açıkları otomatik olarak buluyor. Savunma tarafının da aynı hızda tarama yapabilmesi gerekiyor.
Bu yazıda, Jake Hildreth’in geliştirdiği açık kaynak PowerShell modülü Locksmith 2 ile AD CS altyapınızı nasıl denetleyeceğinizi ve bulunan açıkları nasıl kapatacağınızı anlatıyorum.
Locksmith 2 nedir?
Locksmith 2, AD CS altyapısındaki sertifika şablonlarını, sertifika otoritelerini (CA) ve PKI nesnelerini ESC tekniklerine göre tarayan bir PowerShell modülüdür. AD yöneticileri, savunma ekipleri ve sızma testi yapanlar için tasarlanmıştır.
Öne çıkan özellikleri:
- ESC1–ESC16 arası tekniklerin otomatik taranması
- Her bulgu için hazır PowerShell düzeltme (remediation) scripti ve kısmen geri alma scripti
- Pipeline’da işlenebilen nesne çıktısı (LS2Issue)
- CSV, Excel ve PDF’e aktarılabilen interaktif HTML dashboard
- Domain’e üye olmayan makinelerden çalışabilme
- Adım adım düzeltme için interaktif TUI
Orijinal Locksmith’e göre kod yapısı yeniden düzenlenmiş, raporlama zenginleştirilmiş ve risk analizi derinleştirilmiştir. Özellikle Find-LS2RiskyPrincipal ile bulguları yapılandırma yerine kişi/hesap bazında görebilmek yeni bir bakış açısı getiriyor.
Gereksinimler ve kurulum
Araç yalnızca okuma yetkisiyle çalışır; tarama için Domain Admin gerekmez.
| Gereksinim | Değer |
|---|---|
| PowerShell | 5.1 veya üzeri |
| Yetki | AD Configuration partition’ında okuma |
| Ağ | DC’ye LDAP (389) ve Global Catalog (3268) erişimi |
| Hesap | Herhangi bir domain kullanıcısı veya bilgisayar hesabı |
PowerShell Gallery’den kurulum:
Install-Module -Name Locksmith2 -Scope CurrentUser -Force
Kaynak koddan kurulum:
git clone https://github.com/jakehildreth/Locksmith2.git
cd Locksmith2
Import-Module .\Locksmith2.psd1



Desteklenen ESC teknikleri
Locksmith 2 üç nesne türünde 12 ana tekniği tarıyor: şablonlar, CA’lar ve PKI altyapı nesneleri.
| Teknik | Ne anlama geliyor | Hedef | Alt teknikler |
|---|---|---|---|
| ESC1 | Talep edenin SAN belirleyebildiği, kimlik doğrulamaya uygun şablon | Şablon | — |
| ESC2 | Any Purpose / SubCA kullanımına izin veren şablon | Şablon | — |
| ESC3 | Enrollment Agent kısıtlamalarının eksikliği | Şablon | ESC3c1, ESC3c2 |
| ESC4 | Şablon üzerinde tehlikeli ACL veya sahiplik | Şablon | ESC4a (ACL), ESC4o (owner) |
| ESC5 | PKI nesneleri (container, CA bilgisayarı) üzerinde tehlikeli yetkiler | Altyapı nesnesi | ESC5a (ACL), ESC5o (owner) |
| ESC6 | CA’da EDITF_ATTRIBUTESUBJECTALTNAME2 bayrağı açık | CA | — |
| ESC7 | CA Administrator / Certificate Manager rollerinin yetkisiz kişilerde olması | CA | ESC7a (admin), ESC7m (manager) |
| ESC8 | NTLM relay’e açık web enrollment uç noktaları | CA | — |
| ESC9 | Zayıf sertifika eşleme (security extension yok) | Şablon | — |
| ESC11 | CA’nın RPC arayüzünde şifreleme zorunlu değil | CA | — |
| ESC13 | Gruba bağlı OID içeren issuance policy | Şablon | — |
| ESC16 | CA genelinde security extension devre dışı | CA | — |
Tekniklerin ayrıntıları için SpecterOps’un Certified Pre-Owned raporuna bakabilirsiniz.
Kullanım
Tam tarama: Invoke-Locksmith2
Tek komutla tüm ESC tekniklerini tarar:
Invoke-Locksmith2 [-Forest <String>] [-Credential <PSCredential>] [-Mode <Int>]
[-SkipVersionCheck] [-SkipPowerShellCheck] [-ExpandGroups] [-Rescan]
-Mode parametresi çıktının biçimini belirler:
| Mod | Çıktı |
|---|---|
| Verilmezse | LS2Issue nesneleri pipeline’a döner (varsayılan) |
| 0 | Bulgular konsolda tablo olarak (eski Locksmith Mode 0) |
| 1 | Bulgular ve düzeltme scriptleri konsolda liste olarak (eski Locksmith Mode 1) |
Hedefli tarama: Find-LS2* cmdlet’leri
Sadece belirli bir tekniği kontrol etmek istediğinizde:
Find-LS2VulnerableTemplate -Technique ESC1 # ESC1, ESC2, ESC3c1, ESC3c2, ESC4a, ESC4o, ESC9, ESC13
Find-LS2VulnerableCA -Technique ESC8 # ESC6, ESC7a, ESC7m, ESC8, ESC11, ESC16
Find-LS2VulnerableObject -Technique ESC5a # ESC5a, ESC5o
Farklı bir forest veya kimlik bilgisiyle çalışacaksanız önce Set-LS2Forest ve Set-LS2Credential ile ortamı ayarlayın.
HTML dashboard

Invoke-Locksmith2 | Out-Null
New-LS2Dashboard -FilePath .\adcs-rapor.html -Show
Dashboard, önceki taramanın sonuçlarını kullanır; PSWriteHTML modülü araçla birlikte geldiği için ayrıca kurulum gerekmez.
Riskli hesapları bulmak
Find-LS2RiskyPrincipal, bulguları hesap bazında toplar ve en çok AD CS riski taşıyan kullanıcı veya servis hesaplarını gösterir:
Find-LS2RiskyPrincipal -Top 10 -MinimumIssueCount 2
Taramada toplanan ham verilere Get-LS2Stores ile erişebilirsiniz (ör. -Name IssueStore).
Örnek denetim akışı
Pratikte önerdiğim sıra şu:
- Tarayın. Okuma yetkili bir hesapla Invoke-Locksmith2 çalıştırın ve sonucu bir değişkende tutun: $issues = Invoke-Locksmith2
- Önceliklendirin. Önce ESC1, ESC6, ESC8 ve ESC4 gibi doğrudan domain ele geçirmeye giden bulgulara bakın. Dashboard’daki risk derecesi bu sıralamada yardımcı olur.
- Düzeltme scriptini inceleyin. Her bulgunun düzeltme scripti -Mode 1 çıktısında ve dashboard’da yer alır. Scripti çalıştırmadan önce okuyun; özellikle şablon değişiklikleri sertifika alan uygulamaları etkileyebilir.
- Test ortamında uygulayın. Mümkünse önce test ortamında, değilse değişiklik penceresinde uygulayın. Geri alma scriptlerini hazırda tutun.
- Yeniden tarayın. Invoke-Locksmith2 -Rescan ile bulgunun kapandığını doğrulayın.
- Düzenli hale getirin. Taramayı aylık zamanlanmış görev olarak çalıştırıp dashboard’u arşivleyin; yeni açılan bir şablon fark edilmeden kalmasın.
AD CS, saldırganlar için domain’e giden en kısa yollardan biri olmaya devam ediyor. Locksmith 2 ise bu riski ücretsiz, okuma yetkisiyle ve tek komutla görünür kılıyor. Saldırganlar ortamınızı Certipy ile tarayacaksa, aynı resmi onlardan önce sizin görmeniz gerekir.








