Event Log Madenciliği: 4625 ile Brute-Force Avı
Başarısız oturum denemeleri (Event ID 4625) saldırganın ayak izidir. Get-WinEvent ile 24 saatlik logu süzüp kaynak IP'leri sıralayan hazır betik.
SIEM'e bütçe ayırmadan önce elinizin altındaki en güçlü dedektif zaten çalışıyor: Windows Event Log. Başarısız her oturum denemesi Security loguna 4625 kimliğiyle düşer ve içinde kullanıcı adı ile kaynak IP'yi taşır.
Log Denetimi Açık mı?
Önce logun tutulduğundan emin olun; bazı ortamlarda başarısız oturum denetimi kapalıdır:
auditpol /get /subcategory:"Logon"
Çıktıda Failure sütunu boşsa, grup ilkesinden başarısız oturum denetimini açmak gerekir.
Son 24 Saatin 4625 Raporu
$olaylar = Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 4625
StartTime = (Get-Date).AddHours(-24)
} -ErrorAction SilentlyContinue
$rapor = $olaylar | Select-Object TimeCreated, @{N='Kullanici'; E={ $_.Properties[5].Value }}, @{N='KaynakIP'; E={ $_.Properties[19].Value }}
$rapor | Group-Object KaynakIP | Where-Object { $_.Count -gt 10 } | Sort-Object Count -Descending | Format-Table Name, Count -AutoSize
Aynı IP'den 10'dan fazla başarısız deneme, manuel inceleme için makul bir eşiktir.
Tek Kullanıcıya Odaklanmak
Saldırgan genellikle tek hesap dener; administrator ve türevleri ilk hedeftir:
$rapor | Where-Object { $_.Kullanici -match 'admin' } | Group-Object Kullanici | Sort-Object Count -Descending
Kaynak IP'yi Anında Kesmek
Tekrarlayan saldırgan IP'yi firewall'da bloklamak tek satır:
$saldirgan = "203.0.113.45"
New-NetFirewallRule -DisplayName "Engel - $saldirgan" -Direction Inbound -Action Block -RemoteAddress $saldirgan
Bu üç betiği zamanlanmış görev olarak 15 dakikada bir çalıştırıp çıktıyı dosyaya yazdırmak, mini bir brute-force erken uyarı sistemi kurmak anlamına gelir. Eşik değerini ortamınıza göre ayarlayın; yanlış parola giren servis hesapları da 4625 üretir.