Windows Server

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.

GereksinimDeğer
PowerShell5.1 veya üzeri
YetkiAD Configuration partition’ında okuma
AğDC’ye LDAP (389) ve Global Catalog (3268) erişimi
HesapHerhangi 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.

TeknikNe anlama geliyorHedefAlt teknikler
ESC1Talep 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, ESC3c2
ESC4Şablon üzerinde tehlikeli ACL veya sahiplikŞablonESC4a (ACL), ESC4o (owner)
ESC5PKI nesneleri (container, CA bilgisayarı) üzerinde tehlikeli yetkilerAltyapı nesnesiESC5a (ACL), ESC5o (owner)
ESC6CA’da 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 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:

  1. Tarayın. Okuma yetkili bir hesapla Invoke-Locksmith2 çalıştırın ve sonucu bir değişkende tutun: $issues = Invoke-Locksmith2
  2. Ö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.
  3. 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.
  4. 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.
  5. Yeniden tarayın. Invoke-Locksmith2 -Rescan ile bulgunun kapandığını doğrulayın.
  6. 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.

İlgili Makaleler

Bir yanıt yazın

Başa dön tuşu