Windows Defender ile Gelişmiş Tehdit Koruması
Kurumsal ortamlarda güvenlik olaylarına müdahale ederken en sık karşılaştığım sorulardan biri şu oluyor: “Zaten Windows Defender var, başka bir şeye gerek var mı?” Bu sorunun cevabı hem evet hem hayır. Windows Defender, doğru yapılandırıldığında gerçekten güçlü bir koruma katmanı sunuyor. Ama varsayılan ayarlarla çalışan bir Defender, potansiyelinin çok altında kalıyor. Bu yazıda Windows Defender’ı kurumsal düzeyde nasıl yapılandıracağınızı, gelişmiş tehdit koruması özelliklerini nasıl aktif edeceğinizi ve günlük yönetim süreçlerini nasıl otomatikleştireceğinizi ele alacağız.
Windows Defender’ın Gelişmiş Özellikleri Nelerdir?
Windows Defender artık sadece basit bir antivirüs değil. Microsoft, yıllar içinde bu ürünü Microsoft Defender Antivirus olarak yeniden markaladı ve üzerine birçok katman ekledi. Kurumsal ortamlar için öne çıkan bileşenler şunlar:
- Microsoft Defender for Endpoint (MDE): Uç nokta tespiti ve müdahale (EDR) platformu
- Attack Surface Reduction (ASR) Kuralları: Saldırı yüzeyini azaltmaya yönelik politikalar
- Exploit Protection: Bellek tabanlı saldırılara karşı koruma
- Network Protection: Zararlı URL ve IP engellemesi
- Controlled Folder Access: Fidye yazılımlarına karşı klasör koruması
- Cloud-Delivered Protection: Bulut destekli tehdit analizi
- Tamper Protection: Defender ayarlarının değiştirilmesini engelleme
Bu özelliklerin hepsini PowerShell üzerinden yönetebilir, Group Policy ile dağıtabilir ve merkezi izleme altyapısına entegre edebilirsiniz.
Temel Yapılandırma ve Durum Kontrolü
Önce mevcut durumu değerlendirmekle başlayalım. Bir sistemde Defender’ın hangi durumda olduğunu anlamak için PowerShell kullanıyoruz.
# Defender servis durumunu kontrol et
Get-MpComputerStatus | Select-Object -Property `
AMServiceEnabled, `
AntispywareEnabled, `
AntivirusEnabled, `
BehaviorMonitorEnabled, `
IoavProtectionEnabled, `
NISEnabled, `
OnAccessProtectionEnabled, `
RealTimeProtectionEnabled, `
TamperProtectionSource
Bu komutun çıktısında tüm değerlerin True olmasını bekliyoruz. Eğer bazı değerler False dönüyorsa, o özellik ya devre dışı bırakılmış ya da başka bir güvenlik ürünü tarafından override edilmiş demektir.
Şimdi Defender’ın güncellik durumunu kontrol edelim:
# İmza ve motor versiyonlarını kontrol et
Get-MpComputerStatus | Select-Object -Property `
AMEngineVersion, `
AMProductVersion, `
AMServiceVersion, `
AntispywareSignatureAge, `
AntispywareSignatureLastUpdated, `
AntispywareSignatureVersion, `
AntivirusSignatureAge, `
AntivirusSignatureLastUpdated, `
AntivirusSignatureVersion, `
NISEngineVersion, `
NISSignatureAge, `
NISSignatureLastUpdated, `
NISSignatureVersion
AntivirusSignatureAge değeri 1’den büyükse, imza güncelleme mekanizmasında bir sorun var demektir. Kurumsal ortamlarda bu değeri izlemek için bir monitoring scripti yazmanızı tavsiye ederim.
Cloud Protection ve Otomatik Örnek Gönderme
Bulut koruması, Defender’ın en güçlü özelliklerinden biri. Bilinmeyen bir dosya tespit edildiğinde Microsoft’un bulut altyapısına sorgu atılıyor ve saniyeler içinde karar veriliyor. Bu özelliği ve otomatik örnek göndermeyi etkinleştirmek için:
# Cloud-delivered protection seviyesini yapılandır
Set-MpPreference -MAPSReporting Advanced
Set-MpPreference -SubmitSamplesConsent SendAllSamples
Set-MpPreference -CloudBlockLevel High
Set-MpPreference -CloudExtendedTimeout 50
# Real-time protection ve behavior monitoring
Set-MpPreference -DisableRealtimeMonitoring $false
Set-MpPreference -DisableBehaviorMonitoring $false
Set-MpPreference -DisableIOAVProtection $false
Set-MpPreference -DisableScriptScanning $false
-MAPSReporting Advanced: Defender’ın Microsoft Aktif Koruma Servisi’ne ayrıntılı telemetri göndermesini sağlar.
-CloudBlockLevel High: Şüpheli dosyalar için daha agresif bulut tabanlı engelleme uygular.
-CloudExtendedTimeout 50: Bulut analizinin tamamlanması için bekleme süresini 50 saniyeye çıkarır. Bu süre zarfında dosya çalıştırılmaz.
Attack Surface Reduction Kuralları
ASR kuralları, saldırganların en sık kullandığı vektörleri kapatan politika setleridir. Ofis makrolarından, script tabanlı saldırılara kadar geniş bir yelpazede koruma sağlar. Her kuralın üç modu vardır: Disabled (0), Audit (1), Block (2).
Üretim ortamına geçmeden önce mutlaka Audit modunda çalıştırın ve logları analiz edin. Aksi halde meşru iş süreçlerini kırabilirsiniz.
# ASR kurallarını Audit modunda etkinleştir (test için)
$AuditRules = @(
"BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550", # Block executable content from email
"D4F940AB-401B-4EFC-AADC-AD5F3C50688A", # Block Office apps from creating child processes
"3B576869-A4EC-4529-8536-B80A7769E899", # Block Office apps from creating executable content
"75668C1F-73B5-4CF0-BB93-3ECF5CB7CC84", # Block Office apps from injecting code into other processes
"D3E037E1-3EB8-44C8-A917-57927947596D", # Block JavaScript/VBScript launching executables
"5BEB7EFE-FD9A-4556-801D-275E5FFC04CC", # Block execution of potentially obfuscated scripts
"92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B", # Block Win32 API calls from Office macros
"01443614-cd74-433a-b99e-2ecdc07bfc25", # Block executable files unless they meet criteria
"9E6C4E1F-7D60-472F-BA1A-A39EF669E4B2", # Block credential stealing from Windows LSASS
"D1E49AAC-8F56-4280-B9BA-993A6D77406C", # Block process creations from PSExec and WMI
"B2B3F03D-6A65-4F7B-A9C7-1C7EF74A9BA4", # Block untrusted and unsigned processes from USB
"26190899-1602-49E8-8B27-EB1D0A1CE869", # Block Office communication apps from creating child processes
"7674BA52-37EB-4A4F-A9A1-F0F9A1619A2C", # Block Adobe Reader from creating child processes
"E6DB77E5-3DF2-4CF1-B95A-636979351E5B" # Block persistence through WMI event subscription
)
foreach ($rule in $AuditRules) {
Add-MpPreference -AttackSurfaceReductionRules_Ids $rule `
-AttackSurfaceReductionRules_Actions AuditMode
}
Write-Host "ASR kuralları Audit modunda etkinleştirildi. Logları kontrol edin."
Audit modunda bir iki hafta bekledikten sonra event loglarını analiz edin:
# ASR audit loglarını incele
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" | `
Where-Object { $_.Id -eq 1121 -or $_.Id -eq 1122 } | `
Select-Object TimeCreated, Id, Message | `
Sort-Object TimeCreated -Descending | `
Format-List
Event ID 1121: ASR kuralı bir şeyi engelledi (Block modunda). Event ID 1122: ASR kuralı bir şeyi tespit etti (Audit modunda).
Logları analiz ettikten ve false positive’leri tespit ettikten sonra Block moduna geçin. False positive gördüğünüz süreçleri exclusion listesine alabilirsiniz.
Exploit Protection Yapılandırması
Exploit Protection, bireysel process veya sistem genelinde bellek koruması sağlar. Buffer overflow, ROP chain, heap spray gibi saldırılara karşı etkilidir.
# Sistem geneli Exploit Protection ayarları
$SystemSettings = @{
"EnableExportAddressFilter" = $true
"EnableExportAddressFilterPlus" = $true
"EnableImportAddressFilter" = $true
"EnableRopStackPivot" = $true
"EnableRopCallerCheck" = $true
"EnableRopSimExec" = $true
}
# PowerShell üzerinden ProcessMitigation modülü ile yapılandır
Set-ProcessMitigation -System `
-Enable DEP, SEHOP, TerminateOnError
# Kritik process için özel kural (örnek: lsass.exe)
Set-ProcessMitigation -Name lsass.exe `
-Enable AuditDynamicCode, BlockLowLabelImageLoads, `
BlockNonMicrosoftSigned, CFG, DisableExtensionPoints, `
DisableWin32kSystemCalls, MicrosoftSignedOnly
# Mevcut yapılandırmayı XML olarak dışa aktar
Get-ProcessMitigation -RegistryConfigFilePath C:SecurityExploitProtection.xml
Bu XML dosyasını Group Policy üzerinden tüm domain makinelerine dağıtabilirsiniz. Computer Configuration > Administrative Templates > Windows Components > Microsoft Defender Exploit Guard > Exploit Protection yolu altında bu XML’i referans gösterin.
Network Protection ve Controlled Folder Access
Network Protection, zararlı domain ve IP adreslerine bağlantıyı sistem genelinde engeller. Sadece tarayıcı değil, tüm uygulamaları kapsar.
# Network Protection'ı etkinleştir
Set-MpPreference -EnableNetworkProtection Enabled
# Controlled Folder Access'i etkinleştir
Set-MpPreference -EnableControlledFolderAccess Enabled
# Korunan klasörlere ek dizin ekle
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:CompanyData"
Add-MpPreference -ControlledFolderAccessProtectedFolders "E:FinanceReports"
# Güvenilir uygulamaları izin listesine ekle
Add-MpPreference -ControlledFolderAccessAllowedApplications `
"C:Program FilesCompanyAppapp.exe"
# Mevcut korunan klasörleri listele
Get-MpPreference | Select-Object -ExpandProperty ControlledFolderAccessProtectedFolders
Gerçek dünya senaryosu olarak düşünün: Bir fidye yazılımı kurumun muhasebe sunucusuna sızdı. Controlled Folder Access aktif olsaydı, bu yazılım D:Muhasebe klasörüne erişmeye çalışırken engellenecek ve Event Log’a yazılacaktı. Muhasebe departmanının kullandığı ERP uygulaması ise izin listesinde olduğu için normal çalışmaya devam edecekti.
Tarama Politikaları ve Zamanlama
Kurumsal ortamlarda tarama zamanlaması, performans ve güvenlik dengesi açısından kritik. Özellikle yoğun iş saatlerinde tam tarama yapmak kullanıcı deneyimini ciddi ölçüde etkiler.
# Zamanlanmış tarama yapılandırması
Set-MpPreference -ScanScheduleDay Everyday
Set-MpPreference -ScanScheduleTime 02:00:00
Set-MpPreference -ScanScheduleQuickScanTime 12:00:00
# CPU kullanım limitini ayarla
Set-MpPreference -ScanAvgCPULoadFactor 30
# Tarama önceliği
Set-MpPreference -ScanOnlyIfIdleEnabled $true
# Arşiv dosyalarını tara
Set-MpPreference -DisableArchiveScanning $false
# Removable storage taraması
Set-MpPreference -DisableRemovableDriveScanning $false
# Email taraması
Set-MpPreference -DisableEmailScanning $false
# Manuel tam tarama başlat (uzaktan yönetim senaryosu için)
Start-MpScan -ScanType FullScan
# Quick scan başlat
Start-MpScan -ScanType QuickScan
-ScanAvgCPULoadFactor 30: Tarama sırasında CPU kullanımını yüzde 30 ile sınırlar. Yoğun sunucular için bu değeri daha da düşürebilirsiniz.
-ScanOnlyIfIdleEnabled $true: Sistem boştayken tarama yapar. Kullanıcı iş istasyonları için ideal.
Exclusion Yönetimi ve Güvenli Yapılandırma
Exclusion listesi, yanlış yapılandırıldığında güvenlik açığı oluşturur. Kurumsal ortamlarda gördüğüm en yaygın hata, tüm C:Program Files dizinini exclusion listesine almak. Bu yaklaşım büyük bir güvenlik riski oluşturur.
# Mevcut exclusion'ları listele
Get-MpPreference | Select-Object `
ExclusionExtension, `
ExclusionIpAddress, `
ExclusionPath, `
ExclusionProcess
# Dosya uzantısı exclusion ekle (sadece gerçekten gerekli ise)
Add-MpPreference -ExclusionExtension ".dbf"
# Process exclusion ekle
Add-MpPreference -ExclusionProcess "sqlservr.exe"
Add-MpPreference -ExclusionProcess "oracle.exe"
# Path exclusion ekle (dikkatli kullanın!)
Add-MpPreference -ExclusionPath "C:SQLDataMSSQLData"
# Exclusion kaldır
Remove-MpPreference -ExclusionPath "C:OldApp"
Remove-MpPreference -ExclusionProcess "legacy_app.exe"
Exclusion eklerken şu kurala uymaya çalışın: Mümkün olan en dar kapsamı hedefleyin. Dizin yerine process exclusion, process exclusion yerine dosya exclusion tercih edin. Exclusion listesini düzenli olarak gözden geçirin ve kullanılmayan kayıtları temizleyin.
Toplu Yönetim ve Raporlama Script’i
Birden fazla sunucuyu yönetiyorsanız, merkezi bir kontrol scripti işinizi kolaylaştırır. Aşağıdaki script, domain üzerindeki tüm Windows makinelerin Defender durumunu toplar:
# Çoklu sunucu Defender durum raporu
$Servers = Get-ADComputer -Filter {OperatingSystem -Like "*Windows Server*"} `
-Properties Name | Select-Object -ExpandProperty Name
$Report = @()
foreach ($Server in $Servers) {
try {
$Status = Invoke-Command -ComputerName $Server -ScriptBlock {
$Def = Get-MpComputerStatus
$Pref = Get-MpPreference
[PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
RealTimeProtection = $Def.RealTimeProtectionEnabled
AntivirusEnabled = $Def.AntivirusEnabled
SignatureAge = $Def.AntivirusSignatureAge
LastSignatureUpdate = $Def.AntivirusSignatureLastUpdated
SignatureVersion = $Def.AntivirusSignatureVersion
TamperProtection = $Def.TamperProtectionSource
CloudProtection = $Pref.MAPSReporting
NetworkProtection = $Pref.EnableNetworkProtection
ControlledFolderAccess = $Pref.EnableControlledFolderAccess
LastQuickScan = $Def.QuickScanAge
LastFullScan = $Def.FullScanAge
}
} -ErrorAction Stop
$Report += $Status
} catch {
$Report += [PSCustomObject]@{
ComputerName = $Server
RealTimeProtection = "ERIŞIM HATASI"
AntivirusEnabled = $_.Exception.Message
}
}
}
# Sonuçları CSV olarak kaydet
$Report | Export-Csv -Path "C:ReportsDefenderStatus_$(Get-Date -Format 'yyyyMMdd').csv" `
-NoTypeInformation -Encoding UTF8
# Kritik durumları ekrana yazdır
Write-Host "`n=== KRITIK DURUMLAR ===" -ForegroundColor Red
$Report | Where-Object {
$_.RealTimeProtection -ne $true -or
$_.SignatureAge -gt 1 -or
$_.AntivirusEnabled -ne $true
} | Format-Table -AutoSize
Write-Host "`nRapor kaydedildi: C:ReportsDefenderStatus_$(Get-Date -Format 'yyyyMMdd').csv"
Bu script’i Task Scheduler ile her sabah 07:00’de çalıştırın, raporu SIEM sisteminize veya e-posta ile ekibinize gönderin. Özellikle SignatureAge > 1 kontrolü kritik; bu durumu erken tespit etmek, bir güncelleme altyapısı sorununu büyümeden çözmenizi sağlar.
Tehdit Geçmişi ve Olay Yönetimi
Defender’ın tespit ettiği tehditleri incelemek ve gerektiğinde eylem almak için:
# Son tehdit tespitlerini listele
Get-MpThreatDetection | Select-Object `
ThreatID, `
ActionSuccess, `
CurrentThreatExecutionStatusID, `
DetectionSourceTypeID, `
DomainUser, `
InitialDetectionTime, `
LastThreatStatusChangeTime, `
ProcessName, `
RemediationTime | `
Sort-Object InitialDetectionTime -Descending | `
Select-Object -First 20
# Tehdit veritabanından detay al
Get-MpThreat | Select-Object `
ThreatID, `
ThreatName, `
SeverityID, `
CategoryID, `
TypeID, `
IsActive | `
Sort-Object SeverityID -Descending
# Karantinaya alınan dosyaları listele
Get-MpThreatDetection | Where-Object { $_.ActionSuccess -eq $true } | `
Select-Object ThreatID, ProcessName, InitialDetectionTime, RemediationTime
# Başarısız temizleme işlemlerini bul (müdahale gerektirenler)
Get-MpThreatDetection | Where-Object { $_.ActionSuccess -eq $false } | `
Select-Object ThreatID, ProcessName, InitialDetectionTime, `
CurrentThreatExecutionStatusID | `
Format-List
Başarısız temizleme işlemlerini tespit ettiğinizde, ilgili makineyi ağdan izole etmeyi ve detaylı forensic analiz yapmayı düşünün. Bu noktada Microsoft Defender for Endpoint’in EDR yetenekleri devreye giriyor; makinenin tam bir timeline analizini çıkarabilir, lateral movement hareketlerini takip edebilirsiniz.
Tamper Protection ve Güvenlik Sıkılaştırması
Tamper Protection, Defender’ın saldırganlar tarafından devre dışı bırakılmasını engeller. Registry üzerinden, PowerShell ile veya üçüncü parti araçlarla yapılan değişiklikleri bloklar.
# Tamper Protection durumunu kontrol et
Get-MpComputerStatus | Select-Object TamperProtectionSource
# Windows Security Center üzerinden kontrol
$TPStatus = (Get-MpComputerStatus).TamperProtectionSource
if ($TPStatus -eq "Antimalware") {
Write-Host "Tamper Protection AKTIF" -ForegroundColor Green
} elseif ($TPStatus -eq "Signatures") {
Write-Host "Tamper Protection kısmi korumada" -ForegroundColor Yellow
} else {
Write-Host "Tamper Protection DEVRE DISI - Acil müdahale gerekiyor!" -ForegroundColor Red
}
# Defender servislerinin otomatik başlamasını kontrol et
$DefenderServices = @(
"WinDefend",
"WdNisSvc",
"WdNisDrv",
"Sense"
)
foreach ($svc in $DefenderServices) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($service) {
Write-Host "$($svc): $($service.Status) - Başlangıç: $($service.StartType)"
}
}
Tamper Protection’ı GUI üzerinden aktif etmek için Windows Security uygulamasından Virus & Threat Protection Settings bölümüne gidin. Intune veya Microsoft Defender for Endpoint yönetim konsolundan da merkezi olarak yönetebilirsiniz.
Gerçek Dünya Senaryosu: Fidye Yazılımı Müdahalesi
Geçen yıl bir müşterimde yaşanan olayı anonimleştirerek aktarayım. Saat gece 02:30, monitoring sistemimiz 3 sunucuda aynı anda Defender alert’i attı. Defender tehdit tespit etti ama tam remediation başarılı olmamıştı.
Sabah iş başında şu adımları izledik:
- Etkilenen sunucuları network’ten izole ettik
- Karantina listesini ve threat detection geçmişini export ettik
- Shadow copy ve backup durumunu kontrol ettik
- ASR loglarından ilk giriş noktasını tespit ettik; RDP brute force sonrası PowerShell ile indirilen bir dropper’dı
- Defender’ın ASR kurallarından “Block process creations originating from PSExec and WMI commands” kuralı devre dışıydı, bu kural aktif olsaydı lateral movement engellenecekti
Bu olaydan sonra ASR kurallarını tüm fleet’e Block modunda dağıttık. Aynı zamanda Controlled Folder Access’i aktif ederek kritik dizinleri koruduk.
Sonuç
Windows Defender, doğru yapılandırıldığında kurumsal ortamlarda ciddi bir koruma sağlıyor. Ancak varsayılan kurulum yetersiz; ASR kuralları, Network Protection, Controlled Folder Access ve Exploit Protection gibi gelişmiş özelliklerin bilinçli bir şekilde etkinleştirilmesi gerekiyor.
Pratik önerilerimi özetleyeyim:
- Önce Audit modunda başlayın: ASR kurallarını ve Controlled Folder Access’i doğrudan Block moduna almayın, en az iki hafta audit loglarını inceleyin.
- Exclusion listesini temiz tutun: Her exclusion bir potansiyel kör noktadır. Düzenli aralıklarla gözden geçirin.
- İmza güncellemelerini izleyin: Signature age değerini monitoring altyapınıza ekleyin, 1 günü geçen makineler için alarm üretin.
- Toplu yönetim için PowerShell kullanın: Manuel yapılandırma, tutarsız ortamlara yol açar. Her şeyi script haline getirin ve Group Policy ile dağıtın.
- Tamper Protection’ı aktif edin: Özellikle internet’e açık sunucularda bu özelliği mutlaka etkinleştirin.
- Defender for Endpoint’e geçişi değerlendirin: Eğer kurumunuzun bütçesi ve büyüklüğü uygunsa, EDR yetenekleri için MDE lisanslamasına bakın; standart Defender’a kıyasla görünürlük katbekat artıyor.
Güvenlik, tek seferlik bir kurulum değil, sürekli bir süreç. Defender’ın loglarını düzenli olarak inceleyin, yeni çıkan ASR kurallarını takip edin ve en önemlisi, bir olay yaşanmadan önce müdahale prosedürlerinizi test edin.
