Ransomware Saldırısına Karşı Windows Koruma Yöntemleri

Fidye yazılımı saldırıları artık sadece büyük şirketlerin değil, küçük işletmelerin, hastanelerin, belediyelerin ve hatta bireysel kullanıcıların kabusu haline geldi. WannaCry’ın 2017’de dünyayı kasıp kavurmasından bu yana ransomware ekosistemi inanılmaz bir hızla evrildi. Artık “Ransomware-as-a-Service” modelleri var, affiliate programları var, müzakere masaları var. Yani karşımızda gerçek anlamda organize bir suç endüstrisi var. Bu yazıda Windows ortamlarını fidye yazılımlarına karşı sertleştirmek için kullanabileceğiniz pratik ve uygulanabilir yöntemlere bakacağız.

Ransomware Nasıl Çalışır? Temel Anlayış

Savunma kurmadan önce neye karşı savunma kurduğumuzu anlamak gerekiyor. Tipik bir ransomware saldırısı şu aşamalardan geçer:

  • Initial Access (İlk Erişim): Phishing e-postası, RDP brute-force, açık exploit, tedarik zinciri saldırısı
  • Execution (Çalıştırma): Payload çalıştırılır, genellikle makrolu Office belgesi, PowerShell script veya living-off-the-land araçları kullanılır
  • Persistence (Kalıcılık): Registry, zamanlanmış görevler, servisler aracılığıyla sistemde kalıcı hale gelir
  • Lateral Movement (Yanal Hareket): Ağda yayılır, domain controller ele geçirilmeye çalışılır
  • Data Exfiltration (Veri Çalma): Modern ransomware önce veriyi çalar, sonra şifreler
  • Encryption (Şifreleme): Dosyalar AES/RSA kombinasyonuyla şifrelenir
  • Ransom Note (Fidye Notu): Ödeme talimatları bırakılır

Bu zincirin herhangi bir halkasını kırmak tüm saldırıyı durdurabileceğiniz anlamına gelir. Savunma stratejimiz bu aşamaların her birine karşı katman katman koruma kurmak üzerine.

RDP’yi Güvenli Hale Getirme

RDP, ransomware saldırılarının en popüler giriş noktalarından biri. Shodan’da 3389 portunu açık bırakmak neredeyse “lütfen gelin” demekle eşdeğer. Önce mevcut durumu kontrol edelim:

# PowerShell ile RDP durumunu ve aktif oturumları kontrol et
Get-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal Server" -Name "fDenyTSConnections"
query session /server:localhost
netstat -ano | findstr :3389

RDP’yi tamamen kapatamıyorsanız, en azından şu önlemleri alın:

# NLA (Network Level Authentication) zorla etkinleştir
Set-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name "UserAuthentication" -Value 1

# RDP portunu değiştir (güvenlik yoluyla gizlilik, tam çözüm değil ama gürültüyü azaltır)
Set-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name "PortNumber" -Value 33890

# Windows Firewall ile RDP erişimini sadece belirli IP'lere kısıtla
New-NetFirewallRule -DisplayName "RDP-Restricted" -Direction Inbound -Protocol TCP -LocalPort 3389 -RemoteAddress "10.0.0.0/24","192.168.1.50" -Action Allow
New-NetFirewallRule -DisplayName "RDP-Block-All" -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Block -Priority 200

Account lockout policy olmadan brute-force saldırıları sonuç verir. Group Policy üzerinden ya da PowerShell ile:

# Account lockout policy yapılandır
# 5 başarısız denemeden sonra 30 dakika kilitle
net accounts /lockoutthreshold:5 /lockoutduration:30 /lockoutwindow:30

# Mevcut ayarları doğrula
net accounts

Windows Defender ve Security Baseline

Birçok sysadmin Windows Defender’ı hâlâ hafife alıyor. Oysa doğru yapılandırıldığında gerçekten etkili bir katman oluşturuyor. Microsoft’un STIG ve Security Baseline önerileri dışında şu ayarları mutlaka etkinleştirin:

# Tamper Protection'ı PowerShell ile kontrol et (registry üzerinden değiştirilemez, GUI veya Intune gerekir)
Get-MpPreference | Select-Object DisableTamperProtection

# Cloud-delivered protection ve otomatik örnek gönderimi
Set-MpPreference -MAPSReporting Advanced
Set-MpPreference -SubmitSamplesConsent SendAllSamples
Set-MpPreference -CloudBlockLevel High
Set-MpPreference -CloudExtendedTimeout 50

# Real-time protection ayarlarını güçlendir
Set-MpPreference -DisableRealtimeMonitoring $false
Set-MpPreference -DisableBehaviorMonitoring $false
Set-MpPreference -DisableIOAVProtection $false
Set-MpPreference -DisableScriptScanning $false

# Potansiyel olarak istenmeyen uygulamaları engelle
Set-MpPreference -PUAProtection Enabled

# Mevcut Defender ayarlarını raporla
Get-MpPreference | Select-Object -Property *Protection*, *Monitoring*, *Scanning*

Controlled Folder Access ransomware’e karşı doğrudan hedef alan bir özellik. Kritik klasörlere yetkisiz yazma işlemlerini engelliyor:

# Controlled Folder Access etkinleştir
Set-MpPreference -EnableControlledFolderAccess Enabled

# Korunan klasörlere özel dizinler ekle
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:CompanyData"
Add-MpPreference -ControlledFolderAccessProtectedFolders "E:Backups"

# Güvenilir uygulamalara izin ver (gerekirse)
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesCustomAppapp.exe"

# Durumu kontrol et
Get-MpPreference | Select-Object EnableControlledFolderAccess, ControlledFolderAccessProtectedFolders

Attack Surface Reduction (ASR) Kuralları

ASR kuralları, ransomware’in kullandığı en yaygın teknikleri hedef alıyor. Bu kuralları etkinleştirmeden sisteminiz açık uçlu bir oyun sahasına dönüyor:

# Kritik ASR kurallarını etkinleştir
# Her GUID belirli bir saldırı vektörünü hedefler

# Office uygulamalarının child process oluşturmasını engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids "D4F940AB-401B-4EFC-AADC-AD5F3C50688A" -AttackSurfaceReductionRules_Actions Enabled

# Office macro'larından Win32 API çağrılarını engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids "92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B" -AttackSurfaceReductionRules_Actions Enabled

# Script'lerin indirilen içerik çalıştırmasını engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids "5BEB7EFE-FD9A-4556-801D-275E5FFC04CC" -AttackSurfaceReductionRules_Actions Enabled

# PSExec ve WMI tabanlı process yaratmayı engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids "D1E49AAC-8F56-4280-B9BA-993A6D77406C" -AttackSurfaceReductionRules_Actions Enabled

# Credential stealing'i engelle (LSASS koruması)
Add-MpPreference -AttackSurfaceReductionRules_Ids "9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2" -AttackSurfaceReductionRules_Actions Enabled

# Ransomware'e karşı gelişmiş koruma
Add-MpPreference -AttackSurfaceReductionRules_Ids "C1DB55AB-C21A-4637-BB3F-A12568109D35" -AttackSurfaceReductionRules_Actions Enabled

# Aktif ASR kurallarını listele
Get-MpPreference | Select-Object -ExpandProperty AttackSurfaceReductionRules_Ids

Üretim ortamına geçmeden önce kuralları AuditMode‘da çalıştırarak ne engellendiğini izleyin. Yoksa meşru uygulamalar da etkilenebilir ve ciddi iş süreci kesintileri yaşanabilir.

SMB Güvenliği ve Lateral Movement Önleme

WannaCry ve NotPetya SMBv1 zafiyetini kullanarak ağlarda yayıldı. SMBv1 hâlâ açıksa acil aksiyon gerekiyor:

# SMBv1 durumunu kontrol et
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol

# SMBv1'i devre dışı bırak
Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force

# SMB imzalamasını zorla (pass-the-hash ve MITM saldırılarına karşı)
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force

# Guest hesabıyla SMB erişimini devre dışı bırak
Set-SmbServerConfiguration -EnableInsecureGuestLogons $false -Force

# Açık SMB paylaşımlarını listele ve gereksizleri kapat
Get-SmbShare | Where-Object {$_.Name -notlike "*$"} | Select-Object Name, Path, Description

# Admin paylaşımları (C$, ADMIN$) sadece gerekli yerlerde aktif tutun
# Tamamen kapatmak için (dikkatli olun, yönetim araçlarını etkileyebilir):
# Set-ItemProperty -Path "HKLM:SystemCurrentControlSetServicesLanManServerParameters" -Name "AutoShareWks" -Value 0

Backup Stratejisi: 3-2-1-1 Kuralı

Bir sysadmin olarak şunu net söyleyebilirim: İyi bir backup stratejisi, tüm güvenlik katmanlarından daha değerlidir. Ransomware sizi vurduğunda son sözü backup’larınız söyler. Klasik 3-2-1 kuralını artık 3-2-1-1 olarak genişletiyoruz:

  • 3 kopya veri
  • 2 farklı medya türü
  • 1 offsite kopya
  • 1 offline/immutable kopya (ransomware’in ulaşamayacağı)

Windows Server ortamında VSS (Volume Shadow Copy) yapılandırması:

# VSS'yi etkinleştir ve snapshot schedule'ı yapılandır
# Önce mevcut shadow copy'leri kontrol et
vssadmin list shadows
vssadmin list shadowstorage

# Belirli bir volume için shadow storage yapılandır
vssadmin add shadowstorage /for=C: /on=C: /maxsize=15%

# PowerShell ile zamanlanmış shadow copy görevi oluştur
$action = New-ScheduledTaskAction -Execute "vssadmin" -Argument "create shadow /autoretry=15 /for=\?Volume{VOLUME-GUID}"
$trigger1 = New-ScheduledTaskTrigger -Daily -At "08:00AM"
$trigger2 = New-ScheduledTaskTrigger -Daily -At "12:00PM"  
$trigger3 = New-ScheduledTaskTrigger -Daily -At "06:00PM"
Register-ScheduledTask -TaskName "VSS-Backup-Schedule" -Action $action -Trigger $trigger1,$trigger2,$trigger3 -RunLevel Highest

# Mevcut shadow copy'leri listele
Get-WmiObject Win32_ShadowCopy | Select-Object ID, VolumeName, InstallDate | Sort-Object InstallDate

Kritik nokta: Backup lokasyonlarınıza sadece backup servisi hesabının yazma yetkisi olmalı. Domain admin hesabıyla backup yapmak, ransomware’in backup’larınızı da şifreleme riskini doğurur.

AppLocker ve Software Restriction Policies

Kullanıcıların yetkisiz uygulama çalıştırmasını engellemek, ransomware’in başlangıç aşamasını kesmek için güçlü bir yöntem. AppLocker, Group Policy üzerinden yönetilir:

# AppLocker servisini kontrol et ve başlat
Get-Service -Name AppIDSvc
Set-Service -Name AppIDSvc -StartupType Automatic
Start-Service -Name AppIDSvc

# Mevcut AppLocker policy'lerini XML olarak export et
Get-AppLockerPolicy -Effective -Xml > C:Tempcurrent-applocker-policy.xml

# Varsayılan kuralları oluştur (admin ve everyone için temel kurallar)
# Bu işlem Group Policy Management Console üzerinden daha kolay yapılır
# PowerShell ile yeni bir executable kuralı oluştur
$policy = Get-AppLockerPolicy -Local
# Audit modda başlatmak için önce test edin

# Temp klasörlerinden uygulama çalıştırmayı engelle (ransomware çok sık buraya düşer)
# %TEMP%, %APPDATA%, Downloads klasörleri kritik engelleme noktaları

# AppLocker event log'larını incele
Get-WinEvent -LogName "Microsoft-Windows-AppLocker/EXE and DLL" | 
    Where-Object {$_.Id -eq 8003 -or $_.Id -eq 8004} | 
    Select-Object TimeCreated, Message | 
    Sort-Object TimeCreated -Descending | 
    Select-Object -First 20

PowerShell Güvenlik Sertleştirmesi

PowerShell, saldırganların en çok sevdiği araçlardan biri haline geldi. “Living off the land” saldırılarının kalbi PowerShell üzerinden atıyor. Ama PowerShell’i tamamen kapatmak da büyük hata, doğru yapılandırmak gerekiyor:

# PowerShell version kontrolü (v2 hâlâ varsa kapatın, logging yok)
Get-Host | Select-Object Version
# PowerShell v2 engine'i devre dışı bırak
Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2Root

# Script execution policy sertleştir
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
# Daha sıkı ortamlar için:
# Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope LocalMachine

# PowerShell ScriptBlock Logging etkinleştir (her çalıştırılan kodu loglar)
$registryPath = "HKLM:SoftwarePoliciesMicrosoftWindowsPowerShellScriptBlockLogging"
If (!(Test-Path $registryPath)) {
    New-Item -Path $registryPath -Force
}
Set-ItemProperty -Path $registryPath -Name "EnableScriptBlockLogging" -Value 1
Set-ItemProperty -Path $registryPath -Name "EnableScriptBlockInvocationLogging" -Value 1

# Module logging etkinleştir
$modulePath = "HKLM:SoftwarePoliciesMicrosoftWindowsPowerShellModuleLogging"
If (!(Test-Path $modulePath)) {
    New-Item -Path $modulePath -Force
}
Set-ItemProperty -Path $modulePath -Name "EnableModuleLogging" -Value 1

# Constrained Language Mode ile PowerShell'i kısıtla (AppLocker ile birlikte çalışır)
# Bu ayar AppLocker politikaları aktifken otomatik devreye girer
[System.Environment]::SetEnvironmentVariable("__PSLockdownPolicy", "4", "Machine")

# PowerShell loglarını kontrol et
Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | 
    Select-Object TimeCreated, Id, Message | 
    Where-Object {$_.Id -eq 4104} | 
    Select-Object -First 10

Ağ Segmentasyonu ve Mikro-Segmentasyon

Ransomware’in en büyük gücü yanal harekettir. Bir makineden tüm ağa yayılabilmesi ağ segmentasyonu yokluğundan kaynaklanır:

# Windows Firewall ile host tabanlı segmentasyon kuralları
# Workstation'dan workstation'a SMB erişimini engelle
New-NetFirewallRule -DisplayName "Block-SMB-Workstation-to-Workstation" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 445,139 `
    -RemoteAddress "192.168.10.0/24" `
    -Action Block `
    -Profile Domain

# WMI ve RPC üzerinden yanal hareketi kısıtla
New-NetFirewallRule -DisplayName "Block-WMI-Lateral" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 135 `
    -RemoteAddress "192.168.10.0/24" `
    -Action Block `
    -Profile Domain

# Sadece IT yönetim subnet'inden yönetim trafiğine izin ver
New-NetFirewallRule -DisplayName "Allow-Management-Traffic" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 135,445,3389,5985,5986 `
    -RemoteAddress "10.0.1.0/24" `
    -Action Allow `
    -Profile Domain

# Mevcut firewall kurallarını audit et
Get-NetFirewallRule | Where-Object {$_.Enabled -eq $true -and $_.Direction -eq "Inbound"} | 
    Select-Object DisplayName, LocalPort, RemoteAddress, Action | 
    Sort-Object LocalPort

Privileged Access Management ve Least Privilege

Bir ransomware’in domain admin yetkisiyle çalışması ile sıradan kullanıcı yetkisiyle çalışması arasında gece gündüz farkı var. Least privilege prensibi hayat kurtarır:

  • LAPS (Local Administrator Password Solution): Her workstation’da farklı lokal admin şifresi kullanın, merkezi yönetin
  • Tiered Administration Modeli: Tier 0 (Domain Controller), Tier 1 (Server), Tier 2 (Workstation) hesapları birbirinden izole tutun
  • JIT (Just-in-Time) Access: Admin yetkilerini sadece gerekli olduğu süre için verin
  • PAW (Privileged Access Workstation): Yönetim işlemlerini sadece bu makinelerden yapın
# LAPS durumunu kontrol et
Get-Module -ListAvailable AdmPwd.PS
Import-Module AdmPwd.PS

# LAPS şifresini belirli bir bilgisayar için sorgula (yetkili kullanıcı gerekir)
Get-AdmPwdPassword -ComputerName "WORKSTATION01" | Select-Object ComputerName, Password, ExpirationTimestamp

# Lokal admin grubu üyelerini audit et (tüm domain'de)
$computers = Get-ADComputer -Filter * | Select-Object -ExpandProperty Name
foreach ($computer in $computers) {
    try {
        $admins = Invoke-Command -ComputerName $computer -ScriptBlock {
            Get-LocalGroupMember -Group "Administrators"
        } -ErrorAction Stop
        Write-Output "$computer : $($admins.Name -join ', ')"
    } catch {
        Write-Output "$computer : Erişilemiyor"
    }
}

Gerçek Dünya Senaryosu: Olay Müdahale Süreci

Sabah 3’te telefon çalıyor, NOC ekibinden biri dosya paylaşım sunucusunda anormal I/O aktivitesi olduğunu söylüyor. Şüphelendiğiniz anda yapmanız gerekenler:

# Şüpheli process'leri hızla tespit et
Get-Process | Sort-Object CPU -Descending | Select-Object -First 20 Name, Id, CPU, WorkingSet

# Ağ bağlantılarını incele (şüpheli outbound bağlantılar)
Get-NetTCPConnection -State Established | 
    Where-Object {$_.RemotePort -notmatch "^(80|443|53|22|25)$"} |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess |
    Sort-Object RemoteAddress

# Process'lerin açtığı dosyaları kontrol et (Sysinternals handle.exe gerekir)
# handle.exe -a -p <PID> > C:Tempopen-handles.txt

# Son 1 saatte oluşturulan veya değiştirilen dosyaları bul
Get-ChildItem -Path "D:CompanyData" -Recurse -ErrorAction SilentlyContinue |
    Where-Object {$_.LastWriteTime -gt (Get-Date).AddHours(-1)} |
    Select-Object FullName, LastWriteTime, Length |
    Sort-Object LastWriteTime -Descending

# Şüpheli durumda, o makinenin ağ bağlantısını kes (ama kapatma)
# Disable-NetAdapter -Name "Ethernet" -Confirm:$false

Makineyi kapatmayın. Memory’deki encryption key’leri ve forensic kanıtları yok etmiş olursunuz. Ağdan izole edin, memory dump alın, sonra inceleyin.

Monitoring ve Alerting

Güvenlik katmanları ne kadar güçlü olursa olsun, görünürlük olmadan kör uçuyorsunuz demektir. Windows Event Log’larında takip etmeniz gereken kritik event ID’ler:

  • 4624/4625: Başarılı/başarısız oturum açma
  • 4648: Açık kimlik bilgileriyle oturum açma (Pass-the-Hash göstergesi)
  • 4688: Yeni process oluşturma (process komut satırı loglamasını etkinleştirin)
  • 4698/4702: Zamanlanmış görev oluşturma/değiştirme
  • 7045: Yeni servis kurulumu
  • 1102: Audit log temizleme (kırmızı alarm)
# Kritik güvenlik event'lerini izle
$startTime = (Get-Date).AddHours(-24)

# Başarısız oturum açmaları toplu grupla (brute-force tespiti)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=$startTime} |
    Group-Object {($_.Properties[5].Value)} |
    Where-Object {$_.Count -gt 10} |
    Select-Object Count, Name |
    Sort-Object Count -Descending

# Yeni oluşturulan zamanlanmış görevleri incele
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4698; StartTime=$startTime} |
    Select-Object TimeCreated, Message |
    Sort-Object TimeCreated -Descending

# Servis kurulumlarını takip et
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045; StartTime=$startTime} |
    Select-Object TimeCreated, Message |
    Sort-Object TimeCreated -Descending

Sonuç

Ransomware savunması tek bir araç veya tek bir önlemle sağlanamaz. Katmanlı bir savunma mimarisi kurmak zorundasınız. RDP’yi sertleştirmek, SMBv1’i kapatmak, Defender ASR kurallarını etkinleştirmek, PowerShell’i doğru yapılandırmak, ağı segmente etmek ve her şeyden önemlisi güvenilir bir backup stratejisi oluşturmak; bunların hepsi birlikte anlam ifade eder.

Pratik öncelik sırasına göre düşündüğümde şunu söyleyebilirim: Önce backup’larınızı düzeltin, sonra saldırı yüzeyini küçültün, ardından görünürlük ve monitoring ekleyin. Backup olmadan diğer her şey sadece saldırıyı geciktirmekten ibaret.

Son olarak şunu hatırlatmak isterim: Bir güvenlik önlemi almak kadar, o önlemin gerçekten çalışıp çalışmadığını test etmek de önemli. Yılda en az bir kez simüle edilmiş fidye yazılımı senaryosu (tabii ki kontrollü test ortamında) ile tüm prosedürlerinizi test edin. O geceleri stressiz geçirmek istiyorsanız, hazırlığınızı gündüzleri yapın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir