Active Directory Certificate Services (AD CS), çoğu kurumda yıllardır kimsenin dokunmadığı ama domain’in anahtarlarını taşıyan servistir. Yanlış yapılandırılmış tek sertifika şablonu, sıradan domain kullanıcısının Domain Admin adına sertifika almasına dakikalar içinde tüm ortamı ele geçirmesine yol açabilir.

SpecterOps’un 2021’ yayımladığı Certified Pre-Owned araştırması saldırı yollarını ESC1, ESC2… şeklinde numaralandırdı. günden beri liste ESC16’ya kadar uzadı Certipy, Certify gibi saldırı araçları açıkları otomatik olarak buluyor. Savunma tarafının aynı hızda tarama yapabilmesi gerekiyor.

yazıda, Jake Hildreth’in geliştirdiği açık PowerShell modülü Locksmith 2 AD CS altyapınızı nasıl denetleyeceğinizi 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) PKI nesnelerini ESC tekniklerine göre tarayan PowerShell modülüdür. AD yöneticileri, savunma ekipleri 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 kısmen geri alma scripti
  • Pipeline’ işlenebilen nesne çıktısı (LS2Issue)
  • CSV, Excel 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ş risk analizi derinleştirilmiştir. Özellikle Find-LS2RiskyPrincipal bulguları yapılandırma yerine kişi/hesap bazında görebilmek yeni bakış açısı getiriyor.

Gereksinimler kurulum

Araç yalnızca okuma yetkisiyle çalışır; tarama için Domain Admin gerekmez.

GereksinimDeğerPowerShell5.1 veya üzeriYetkiAD Configuration partition’ında okumaAğDC’ye LDAP (389) Global Catalog (3268) erişimiHesapHerhangi domain kullanıcısı veya bilgisayar hesabı

PowerShell Gallery’den kurulum:

Install-Module -Name Locksmith2 -Scope CurrentUser -Force

koddan kurulum:

git clone cd Locksmith2 Import-Module \Locksmith2.psd1

Desteklenen ESC teknikleri

Locksmith 2 üç nesne türünde 12 ana tekniği tarıyor: şablonlar, CA’lar PKI altyapı nesneleri.

TeknikNe anlama geliyorHedefAlt tekniklerESC1Talep edenin SAN belirleyebildiği, kimlik doğrulamaya uygun şablonŞablon—ESC2Any Purpose / SubCA kullanımına izin veren şablonŞablon—ESC3Enrollment Agent kısıtlamalarının eksikliğiŞablonESC3c1, ESC3c2ESC4Şablon üzerinde tehlikeli ACL veya sahiplikŞablonESC4a (ACL), ESC4o (owner)ESC5PKI nesneleri (container, CA bilgisayarı) üzerinde tehlikeli yetkilerAltyapı nesnesiESC5a (ACL), ESC5o (owner)ESC6CA’ EDITF_ATTRIBUTESUBJECTALTNAME2 bayrağı açıkCA—ESC7CA Administrator / Certificate Manager rollerinin yetkisiz kişilerde olmasıCAESC7a (admin), ESC7m (manager)ESC8NTLM relay’e açık web enrollment uç noktalarıCA—ESC9Zayıf sertifika eşleme (security extension yok)Şablon—ESC11CA’nın RPC arayüzünde şifreleme zorunlu değilCA—ESC13Gruba bağlı OID içeren issuance policyŞablon—ESC16CA 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ıVerilmezseLS2Issue nesneleri pipeline’a döner (varsayılan)0Bulgular konsolda tablo olarak (eski Locksmith Mode 0)1Bulgular düzeltme scriptleri konsolda liste olarak (eski Locksmith Mode 1) Hedefli tarama: Find-LS2* cmdlet’leri

Sadece belirli 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ı forest veya kimlik bilgisiyle çalışacaksanız önce Set-LS2Forest Set-LS2Credential 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 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 erişebilirsiniz (ör. -Name IssueStore).

Örnek denetim akışı

Pratikte önerdiğim sıra

  • Tarayın. Okuma yetkili hesapla Invoke-Locksmith2 çalıştırın sonucu değişkende tutun: $issues = Invoke-Locksmith2
  • Önceliklendirin. Önce ESC1, ESC6, ESC8 ESC4 gibi doğrudan domain ele geçirmeye giden bulgulara bakın. Dashboard’daki risk derecesi sıralamada yardımcı.
  • Düzeltme scriptini inceleyin. Her bulgunun düzeltme scripti -Mode 1 çıktısında dashboard’ yer. 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 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 ş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 riski ücretsiz, okuma yetkisiyle tek komutla görünür kılıyor. Saldırganlar ortamınızı Certipy tarayacaksa, aynı resmi onlardan önce sizin görmeniz gerekir.