Konuyu Açan
#1
[/B]PowerShell, sistem yöneticileri ve güvenlik uzmanları tarafından yaygın olarak kullanılan güçlü bir komut satırı aracıdır. Ancak, kötü niyetli kişiler de bu aracı kullanarak sistemleri hedef alabilir. RDP (Uzak Masaüstü Protokolü) brute force saldırıları, özellikle zayıf parolalar ve güvenlik önlemlerinin yetersizliği durumunda sıkça karşılaşılan tehditlerdir. Bu nedenle, PowerShell kullanarak bu tür saldırıları tespit etmek, hem sistem güvenliğinizi artırmak hem de saldırıların erken aşamada fark edilmesini sağlamak açısından önemlidir.
İlk olarak, Windows Event Log'larındaki RDP giriş denemelerini izlemek gerekir. Özellikle, Windows Güvenlik günlükleri (Security logs) içindeki 4625 hataları, başarısız girişimleri gösterir. Bu hatalarda, "Logon Type" 10 veya 7 gibi değerler, RDP bağlantı denemelerini temsil eder. Birden fazla başarısız deneme belirli bir zaman diliminde artış gösteriyorsa, bu, brute force saldırısına işaret edebilir.
PowerShell ile bu logları sorgulamak için şu temel komut kullanılabilir:
Bu komut, başarısız girişleri getirir. Ancak, saldırı tespiti için daha gelişmiş analizler yapmak gerekir. Örneğin, belirli bir IP adresinden gelen başarısız denemeleri saymak ve belirli bir eşik değerin üzerinde ise uyarı oluşturmak etkin bir yöntemdir. Bu amaçla, aşağıdaki gibi bir script kullanılabilir:
Bu script, son 15 dakika içinde belirli bir IP'den gelen başarısız girişimleri sayar ve eşik değerin üzerinde olanları raporlar. Ayrıca, güvenlik duvarı kuralları veya IPS/IDS çözümleriyle entegre edilerek otomatik müdahale mekanizmaları da kurulabilir.
Saldırganlar genellikle deneme sayısını artırdıkça, IP bloklama veya hesap kilitleme gibi önlemler alınması gerekir. PowerShell ile düzenli olarak bu kontrolleri yapmak veya olay bazlı tetikleyiciler kurmak, saldırıların erken fark edilmesine ve önlenmesine olanak sağlar. Ayrıca, RDP erişimlerini sadece VPN veya belirli IP'ler üzerinden sınırlandırmak, güvenlik seviyesini ciddi anlamda artırır.
Sizce, bu tür tespit mekaniklerini mevcut altyapınıza nasıl entegre edebilirsiniz? Ekstra önlemler veya geliştirilmiş script önerileriniz var mı?
İlk olarak, Windows Event Log'larındaki RDP giriş denemelerini izlemek gerekir. Özellikle, Windows Güvenlik günlükleri (Security logs) içindeki 4625 hataları, başarısız girişimleri gösterir. Bu hatalarda, "Logon Type" 10 veya 7 gibi değerler, RDP bağlantı denemelerini temsil eder. Birden fazla başarısız deneme belirli bir zaman diliminde artış gösteriyorsa, bu, brute force saldırısına işaret edebilir.
PowerShell ile bu logları sorgulamak için şu temel komut kullanılabilir:
KOD
1Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} | Select-Object TimeCreated, MessageBu komut, başarısız girişleri getirir. Ancak, saldırı tespiti için daha gelişmiş analizler yapmak gerekir. Örneğin, belirli bir IP adresinden gelen başarısız denemeleri saymak ve belirli bir eşik değerin üzerinde ise uyarı oluşturmak etkin bir yöntemdir. Bu amaçla, aşağıdaki gibi bir script kullanılabilir:
KOD
123456789101112131415161718192021222324252627
$failureThreshold = 10
$timeFrameMinutes = 15
$startTime = (Get-Date).AddMinutes(-$timeFrameMinutes)
$failedLogons = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} |
Where-Object { $_.TimeCreated -ge $startTime } |
Select-Object -Property @{Name='TimeCreated';Expression={$_.TimeCreated}},
@{Name='Message';Expression={$_.Message}}
$ipFailures = @{}
foreach ($event in $failedLogons) {
if ($event.Message -match 'Source Network Address:\s+(\d+\.\d+\.\d+\.\d+)') {
$ip = $matches[1]
if ($ipFailures.ContainsKey($ip)) {
$ipFailures[$ip]++
} else {
$ipFailures[$ip] = 1
}
}
}
foreach ($ip in $ipFailures.Keys) {
if ($ipFailures[$ip] -ge $failureThreshold) {
Write-Output "Uyarı: $ip IP adresinden $($ipFailures[$ip]) başarısız RDP giriş denemesi tespit edildi."
}
}
Bu script, son 15 dakika içinde belirli bir IP'den gelen başarısız girişimleri sayar ve eşik değerin üzerinde olanları raporlar. Ayrıca, güvenlik duvarı kuralları veya IPS/IDS çözümleriyle entegre edilerek otomatik müdahale mekanizmaları da kurulabilir.
Saldırganlar genellikle deneme sayısını artırdıkça, IP bloklama veya hesap kilitleme gibi önlemler alınması gerekir. PowerShell ile düzenli olarak bu kontrolleri yapmak veya olay bazlı tetikleyiciler kurmak, saldırıların erken fark edilmesine ve önlenmesine olanak sağlar. Ayrıca, RDP erişimlerini sadece VPN veya belirli IP'ler üzerinden sınırlandırmak, güvenlik seviyesini ciddi anlamda artırır.
Sizce, bu tür tespit mekaniklerini mevcut altyapınıza nasıl entegre edebilirsiniz? Ekstra önlemler veya geliştirilmiş script önerileriniz var mı?
