Windows Defender ATP ile Gelişmiş Tehdit Tespiti
Siber güvenlik dünyasında “gelişmiş tehdit” kavramı artık sadece büyük kurumların sorunu değil. Orta ölçekli bir şirketi yönetiyor olsan bile, fidye yazılımlarından APT gruplarına kadar pek çok tehditle yüzleşmek zorunda kalabilirsin. Microsoft’un bu alana verdiği yanıt olan Windows Defender Advanced Threat Protection (ATP), bugün Microsoft Defender for Endpoint adıyla da biliniyor ve kurumsal ortamlarda ciddi bir savunma katmanı sunuyor. Bu yazıda ATP’yi sadece teorik olarak değil, gerçek dünya senaryolarıyla birlikte nasıl yapılandıracağını ve kullanacağını anlatacağım.
Windows Defender ATP Nedir ve Neden Önemlidir?
Klasik antivirüs yazılımları imza tabanlı çalışır. Yani daha önce tanımlanmış bir zararlı yazılımı tanır, tanımadığını geçirir. ATP ise bunun çok ötesinde bir yaklaşım benimsiyor. Davranış tabanlı analiz, makine öğrenmesi, bulut istihbaratı ve endpoint detection & response (EDR) yeteneklerini bir arada sunuyor.
Gerçek hayattan bir örnek vereyim: Geçen yıl bir müşterimde, muhasebe departmanından bir kullanıcı zararsız görünen bir Excel dosyası açtı. Dosya makro içeriyordu ve bu makro PowerShell üzerinden bir C2 (Command & Control) sunucusuna bağlanmaya çalıştı. Klasik AV bunu tespit edemedi çünkü imza veritabanında yoktu. Ama ATP, PowerShell’in olağandışı network çağrısı yaptığını fark edip alarm üretti ve süreci otomatik olarak engelledi.
İşte bu yüzden ATP’yi ciddiye almak gerekiyor.
ATP Kurulumu ve Onboarding Süreci
ATP’yi kullanabilmek için önce endpoint’leri sisteme dahil etmen (onboarding) gerekiyor. Bu işlemi birkaç farklı yöntemle yapabilirsin.
Group Policy ile Onboarding
Kurumsal ortamlarda en yaygın yöntem Group Policy üzerinden onboarding yapmaktır.
# GPO ile dağıtım için onboarding paketini indirdikten sonra
# aşağıdaki registry anahtarını kontrol edebilirsin
reg query "HKLMSOFTWAREMicrosoftWindows Advanced Threat ProtectionStatus"
Bu komutun çıktısında OnboardingState değeri 1 görünüyorsa cihaz başarıyla sisteme dahil edilmiş demektir.
PowerShell ile Onboarding Durumu Kontrolü
# ATP servisinin çalışıp çalışmadığını kontrol et
Get-Service -Name Sense | Select-Object Name, Status, StartType
# Daha detaylı bilgi için
Get-MpComputerStatus | Select-Object AMEngineVersion, AMProductVersion,
AntivirusEnabled, BehaviorMonitorEnabled, IoavProtectionEnabled,
RealTimeProtectionEnabled, TamperProtectionSource
Bu komut sana AV motorunun versiyonundan davranış monitörünün aktif olup olmadığına kadar her şeyi gösterir. BehaviorMonitorEnabled değerinin True olması ATP için kritik önem taşır.
MMA (Microsoft Monitoring Agent) ile Log Toplama
Eski Windows sürümleri için MMA üzerinden veri toplamanız gerekebilir:
# MMA'nın doğru workspace'e bağlı olup olmadığını kontrol et
Get-WmiObject -Class Win32_Service -Filter "Name='HealthService'" |
Select-Object Name, State, StartMode
# Workspace bağlantısını test et
Test-NetConnection -ComputerName "agentsvc.azure-automation.net" -Port 443
Tehdit Tespiti: Gerçek Senaryolar
Senaryo 1: Lateral Movement Tespiti
Saldırganların bir sistemden diğerine geçiş yapması, yani lateral movement, kurumsal ihlallerin en kritik aşamasıdır. ATP bu hareketi birkaç farklı sinyal üzerinden tespit eder.
Bir saldırgan ele geçirdiği bir makineden ağdaki diğer sistemlere SMB üzerinden bağlanmaya çalışıyorsa, ATP bu davranışı şüpheli olarak işaretler. Özellikle şu durumlara dikkat eder:
- Olağandışı saatlerde gerçekleşen SMB bağlantıları
- Kısa sürede çok fazla farklı hedefe yapılan bağlantı denemeleri
- Pass-the-Hash veya Pass-the-Ticket saldırı desenleri
- PsExec, WMI veya WinRM üzerinden uzaktan komut çalıştırma girişimleri
Bunu simüle etmek ve ATP’nin tepkisini test etmek için:
# Ağdaki aktif SMB bağlantılarını görüntüle (defender davranışını test etmek için)
Get-SmbConnection | Select-Object ServerName, UserName, Dialect, NumOpens
# Şüpheli lateral movement aktivitesini loglardan çek
Get-WinEvent -LogName "Microsoft-Windows-Sysmon/Operational" -MaxEvents 100 |
Where-Object { $_.Id -eq 3 } |
Select-Object TimeCreated, Message |
Format-List
Senaryo 2: PowerShell Tabanlı Saldırı Tespiti
Modern saldırıların büyük çoğunluğu “living off the land” tekniğini kullanır. Yani sisteme yeni bir zararlı yazılım indirmek yerine, sistemde zaten var olan araçları kötü amaçla kullanırlar. PowerShell bu açıdan en çok istismar edilen araçların başında gelir.
ATP’nin PowerShell loglamasını aktif hale getirmek için:
# PowerShell Script Block Logging'i etkinleştir
New-Item -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" -Force
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging" `
-Name "EnableScriptBlockLogging" -Value 1 -Type DWORD
# Module Logging'i de aktif et
New-Item -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellModuleLogging" -Force
Set-ItemProperty -Path "HKLM:SOFTWAREPoliciesMicrosoftWindowsPowerShellModuleLogging" `
-Name "EnableModuleLogging" -Value 1 -Type DWORD
Bu ayarları yaptıktan sonra tüm PowerShell aktiviteleri Event Log’a düşer ve ATP bunları analiz eder. Örneğin bir PowerShell script’i base64 encode edilmiş komut çalıştırıyorsa, ATP bunu otomatik olarak decode ederek içeriği analiz eder ve şüpheli bulursa alarm üretir.
Senaryo 3: Fidye Yazılımı Davranış Analizi
Fidye yazılımları genellikle şu davranış desenini gösterir: çok sayıda dosyayı hızlı bir şekilde okur, şifreler ve yeniden yazar. ATP’nin Controlled Folder Access (Korumalı Klasör Erişimi) özelliği bu saldırıları engeller.
# Controlled Folder Access'i etkinleştir
Set-MpPreference -EnableControlledFolderAccess Enabled
# Mevcut durumu kontrol et
Get-MpPreference | Select-Object EnableControlledFolderAccess
# Belirli bir uygulamaya izin ver (whitelist)
Add-MpPreference -ControlledFolderAccessAllowedApplications "C:Program FilesMyAppapp.exe"
# Korunan klasörlere yeni klasör ekle
Add-MpPreference -ControlledFolderAccessProtectedFolders "D:KritikVeriler"
Gerçek hayatta bu özelliği açtığımızda bazı meşru uygulamaların engellenebildiğini gördük. Bu yüzden önce Audit Mode‘da çalıştırmanı öneririm:
# Önce audit modunda test et
Set-MpPreference -EnableControlledFolderAccess AuditMode
# Audit loglarını incele
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" |
Where-Object { $_.Id -eq 1124 } |
Select-Object -First 20 TimeCreated, Message
Advanced Hunting ile Tehdit Avı
ATP’nin en güçlü özelliklerinden biri, Microsoft 365 Defender portalındaki Advanced Hunting konsoludur. KQL (Kusto Query Language) kullanarak endpoint verilerinde arama yapabilirsin.
Şüpheli Network Bağlantılarını Sorgulamak
Aşağıdaki örnek, son 24 saatte alışılmadık portlara yapılan bağlantıları listeler:
# Advanced Hunting KQL sorgusu - PowerShell ile API üzerinden de çalıştırılabilir
# Önce API token al
$tenantId = "your-tenant-id"
$clientId = "your-client-id"
$clientSecret = "your-secret"
$body = @{
grant_type = "client_credentials"
client_id = $clientId
client_secret = $clientSecret
scope = "https://api.securitycenter.microsoft.com/.default"
}
$tokenResponse = Invoke-RestMethod -Uri "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token" `
-Method POST -Body $body
$token = $tokenResponse.access_token
Bu token’ı aldıktan sonra Advanced Hunting API’sine KQL sorguları gönderebilirsin. Özellikle şu tür sorguları sık kullanıyorum:
- Son 7 günde yeni oluşturulan scheduled task’ları listeleme
- Olağandışı process parent-child ilişkilerini bulma (örneğin Word’ün PowerShell başlatması)
- Gece saatlerinde çalışan ve dışarıya veri gönderen süreçleri tespit etme
- Bilinen zararlı hash değerleriyle eşleşen dosyaları arama
Indicators of Compromise (IoC) Yönetimi
Tehdit istihbaratından aldığın zararlı IP, domain veya hash değerlerini ATP’ye ekleyerek otomatik engelleme yapabilirsin:
# Zararlı IP adresini IoC olarak ekle
$headers = @{
"Authorization" = "Bearer $token"
"Content-Type" = "application/json"
}
$iocBody = @{
indicatorValue = "185.220.101.50"
indicatorType = "IpAddress"
action = "Block"
title = "Bilinen C2 Sunucusu"
description = "Tehdit istihbaratından alınan zararlı IP"
severity = "High"
} | ConvertTo-Json
Invoke-RestMethod -Uri "https://api.securitycenter.microsoft.com/api/indicators" `
-Method POST -Headers $headers -Body $iocBody
Attack Surface Reduction (ASR) Kuralları
ASR kuralları, ATP’nin proaktif savunma katmanıdır. Saldırıların en sık kullandığı teknikleri kural bazlı olarak engeller. Bu kuralları yönetmek için:
# Tüm ASR kurallarını audit modunda etkinleştir
# Önce mevcut durumu gör
Get-MpPreference | Select-Object AttackSurfaceReductionRules_Ids,
AttackSurfaceReductionRules_Actions
# Office makrolarının child process oluşturmasını engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids D4F940AB-401B-4EFC-AADC-AD5F3C50688A `
-AttackSurfaceReductionRules_Actions Enabled
# JavaScript/VBScript'in indirilen içerikleri çalıştırmasını engelle
Add-MpPreference -AttackSurfaceReductionRules_Ids BE9BA2D9-53EA-4CDC-84E5-9B1EEEE46550 `
-AttackSurfaceReductionRules_Actions Enabled
# Credential stealing'i engelle (LSASS koruması)
Add-MpPreference -AttackSurfaceReductionRules_Ids 9E6C4E1F-7D60-472F-BA1A-A39EF669E4B0 `
-AttackSurfaceReductionRules_Actions Enabled
Önemli uyarı: Bu kuralları production ortamında direkt Enabled olarak açma. Her zaman önce AuditMode ile test et, logları incele, false positive’leri tespit et, sonra Enabled moda geç. Ben genellikle 2 hafta audit modunda tutuyorum.
ASR kurallarının en kritikleri şunlar:
- D4F940AB: Office uygulamalarından child process oluşturmayı engeller
- 3B576869: Office uygulamalarının çalıştırılabilir dosya oluşturmasını engeller
- 75668C1F: Office uygulamalarının DLL enjeksiyonunu engeller
- D3E037E1: JavaScript ve VBScript’in PE dosyası başlatmasını engeller
- 5BEB7EFE: Güvenilmez imzasız süreçlerin USB’den çalışmasını engeller
- 9E6C4E1F: LSASS’tan credential çalmayı engeller
- 26190899: Email client ve web mail üzerinden çalıştırılabilir içeriği engeller
Otomatik Soruşturma ve Yanıt (AIR)
ATP’nin güzel özelliklerinden biri de alarm geldiğinde otomatik soruşturma başlatmasıdır. Ama bazen bu süreci manuel olarak da tetiklemek isteyebilirsin.
# Belirli bir cihaz üzerinde uzaktan live response başlat
# Önce cihaz ID'sini bul
$machineId = "your-machine-id"
$isolationBody = @{
Comment = "Şüpheli aktivite - manuel inceleme"
IsolationType = "Full"
} | ConvertTo-Json
# Cihazı ağdan izole et
Invoke-RestMethod -Uri "https://api.securitycenter.microsoft.com/api/machines/$machineId/isolate" `
-Method POST -Headers $headers -Body $isolationBody
Bir cihazı izole ettiğinde, sadece ATP bulut altyapısıyla iletişimi kalır. Diğer tüm network trafiği kesilir. Bu sayede saldırganın lateral movement yapması ve veri sızdırması engellenir.
İzolasyonu kaldırmak için:
# İzolasyonu kaldır
Invoke-RestMethod -Uri "https://api.securitycenter.microsoft.com/api/machines/$machineId/unisolate" `
-Method POST -Headers $headers -Body '{"Comment": "Temizlik tamamlandı"}'
SIEM Entegrasyonu ve Log Yönetimi
ATP’yi Microsoft Sentinel veya üçüncü taraf SIEM çözümleriyle entegre etmek, güvenlik operasyon merkezinin (SOC) verimliliğini büyük ölçüde artırır. Event Streaming API üzerinden tüm ATP olaylarını Event Hub’a yönlendirebilirsin.
# ATP olaylarını yerel olarak da izleyebilirsin
# Windows Defender operasyonel logları
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" -MaxEvents 50 |
Where-Object { $_.LevelDisplayName -eq "Error" -or $_.LevelDisplayName -eq "Warning" } |
Select-Object TimeCreated, Id, LevelDisplayName, Message |
Format-List
# Özellikle kritik event ID'leri takip et
# 1006: Zararlı yazılım tespit edildi
# 1007: Zararlı yazılım engellendi
# 1008: Temizleme başarısız
# 1116: Zararlı yazılım tespit edildi (gerçek zamanlı)
# 1117: Zararlı yazılım engellendi (gerçek zamanlı)
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" |
Where-Object { $_.Id -in @(1006, 1007, 1008, 1116, 1117) } |
Select-Object TimeCreated, Id, Message
Sıkça Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
Yıllar içinde ATP kurulumlarında sık karşılaştığım sorunları şöyle sıralayabilirim:
- Exclusion listeleri kontrolsüz büyüyor: Her sorunlu uygulamayı exclusion’a almak yerine, ASR kurallarını doğru yapılandırmak çok daha güvenli. Geniş exclusion listeleri saldırganlar tarafından suistimal edilebilir.
- Tamper Protection kapalı bırakılıyor: ATP’nin kendi korumasını devre dışı bırakmak isteyen zararlı yazılımlara karşı Tamper Protection mutlaka aktif olmalı.
- Onboarding sonrası doğrulama yapılmıyor: Cihaz onboarding sonrasında gerçekten sensör gönderiyor mu diye kontrol etmeden geçmeyin.
- ASR kuralları test edilmeden production’a alınıyor: Az önce de söyledim ama tekrar vurgulayayım. Audit modunu atlama.
- Eski işletim sistemleri için farklı gereksinimler göz ardı ediliyor: Windows 7 veya Windows Server 2008 R2 gibi eski sistemlerde ATP özellikleri kısıtlıdır ve MMA agent zorunludur.
Sonuç
Windows Defender ATP, doğru yapılandırıldığında gerçekten güçlü bir savunma platformu. Sadece bir antivirüs olarak düşünmek büyük bir hata olur. EDR yetenekleri, Advanced Hunting, ASR kuralları ve otomatik yanıt mekanizmaları bir arada düşünüldüğünde, kurumsal güvenlik operasyonları için ciddi bir değer sunuyor.
Ama teknoloji tek başına yeterli değil. ATP’yi etkin kullanmak için SOC süreçlerini olgunlaştırman, alarm yorgunluğunu yönetmen ve tehdit istihbaratını entegre etmen gerekiyor. En iyi yapılandırılmış ATP bile arkasında bakan ve alarm ürettiğinde aksiyon alan bir ekip olmadan işe yaramaz.
Pratik tavsiyem şu: Önce onboarding’i tamamla, temel ASR kurallarını audit modunda aç, 2 hafta logları izle, false positive’leri temizle, sonra block moduna geç. Bu adımları atlayarak direk block moduna geçmek, iş uygulamalarının çalışmaması nedeniyle CIO’dan sana gelen telefon aramalarına hazır ol demektir.
Herhangi bir konuda aklına takılan bir şey olursa yorumlarda sorarsan elimden geldiğince yanıtlamaya çalışırım.
