Windows Sistemde Zararlı Yazılım Belirtilerini Tanıma
Bir sabah işe geldiğinde sunuculardan birinin anormal trafik gönderdiğini görüyorsun. Ya da kullanıcılardan biri “bilgisayarım çok yavaşladı” diye şikayet ediyor. Bu anlar, bir sysadmin olarak en çok dikkat etmen gereken anlardır. Windows sistemlerde zararlı yazılımlar çoğu zaman kendini belli etmeden sessiz sedasız çalışır; ama eğer neye bakacağını biliyorsan, bıraktığı izleri görmek hiç de zor değildir.
Bu yazıda, zararlı yazılımların Windows sistemlerde bıraktığı belirtileri gerçek dünya senaryolarıyla ele alacağız. Antivirus yazılımına güvenmek yerine, sistemi elle incelemeyi ve komut satırından neler yapabileceğini öğrenmeyi konuşacağız.
Neden Antivirus Tek Başına Yetmez
Klasik antivirus çözümleri imza tabanlı çalışır. Yani daha önce görülmüş bir zararlıyı tanır, ama sıfırıncı gün saldırılarına (zero-day) veya özelleştirilmiş kötü yazılımlara karşı kör kalabilir. Bunun yanında bazı zararlılar antivirüsü devre dışı bırakır, bazıları ise meşru Windows araçlarını kullanarak (Living off the Land tekniği) sistemde hareket eder. PowerShell, WMI, PsExec gibi araçlar hem admin için hem de saldırgan için çok değerlidir.
Bu yüzden bir sysadmin olarak kendi gözlemlerinle sistemi incelemeyi bilmen şart.
Ağ Trafiği Anomalileri
Zararlı yazılımların büyük çoğunluğu dışarıyla iletişim kurmak zorundadır. Komut sunucusuyla (C2 – Command and Control) konuşmaları, veri sızdırmaları, ya da güncellenmeleri gerekir. Bu yüzden ağ trafiği, en erken uyarı işaretlerinden biridir.
Aktif Bağlantıları İnceleme
netstat -ano
Bu komut mevcut tüm TCP/UDP bağlantılarını ve dinleyen portları PID numarasıyla birlikte listeler. Çıktıda dikkat etmen gerekenler:
- ESTABLISHED durumundaki bağlantılar ve hedef IP adresleri
- LISTENING durumunda olmaması gereken portlar (örneğin 4444, 1337, 31337 gibi klasik backdoor portları)
- Dışarıya açık bağlantıların kaynağı olan işlemler
Şüpheli bir IP gördüğünde PID’yi alıp işlemi bulmak için:
tasklist /fi "PID eq 4872"
Gerçek dünyada karşılaştığım bir olayda, muhasebe departmanındaki bir bilgisayar her gece 02:00-04:00 arasında düzenli olarak 443 numaralı porta dış bir IP’ye bağlanıyordu. HTTPS trafiği olduğu için firewall geçmişti. İşlemi incelediğimizde svchost.exe altında gizlenmiş bir DLL injection vakasıydı.
DNS Sorgularını Kontrol Etme
Zararlılar bazen domain generation algorithm (DGA) kullanır; rastgele görünen domain adlarına bağlanmaya çalışırlar. DNS loglarını düzenli tutuyorsan bu çok işe yarar.
ipconfig /displaydns
Çıktıda çok sayıda rastgele görünen domain adı (örneğin “xkjh2981nqpz.top”, “a7f3m.xyz” gibi şeyler) varsa bu kırmızı bayraktır.
Çalışan İşlemleri Derinlemesine İnceleme
Task Manager yüzeysel bir bakış sunar, ama komut satırından çok daha fazlasına ulaşabilirsin.
Tüm İşlemleri Detaylı Listeleme
wmic process get name,processid,parentprocessid,executablepath,commandline
Bu komutla hangi işlemin hangi işlemi başlattığını (parent-child ilişkisi) görebilirsin. Zararlılar çoğu zaman bu ilişkiyi manipüle eder.
Dikkat etmen gereken anormal parent-child ilişkileri:
- Word.exe veya Excel.exe bir PowerShell başlatıyorsa (makro tabanlı saldırı belirtisi)
- svchost.exe doğrudan masaüstünden çalışıyorsa (gerçek svchost her zaman services.exe altında çalışır)
- explorer.exe cmd.exe veya powershell.exe başlatıyorsa
Gizli ya da İsim Taklidi Yapan Süreçler
Bir sürecin adı “svch0st.exe” ya da “lsass.exe” yerine “Isass.exe” (küçük L yerine büyük I harfi) olabilir. Bunları terminalde görmek zordur ama şöyle kontrol edebilirsin:
wmic process where "name like '%svchost%'" get name,processid,executablepath
Eğer yolu “C:WindowsSystem32” dışında bir yer gösteren svchost.exe varsa, bu kesinlikle incelenmeli.
Başlangıç Noktaları ve Kalıcılık Mekanizmaları
Zararlı yazılımların en önemli özelliklerinden biri sistem yeniden başlatıldıktan sonra da çalışmaya devam etmek istemeleridir. Buna “persistence” denir. Windows’ta bunun için onlarca farklı yöntem vardır.
Registry Başlangıç Anahtarlarını İnceleme
En sık kullanılan kalıcılık noktaları:
reg query HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun
reg query HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun
reg query HKLMSOFTWAREMicrosoftWindowsCurrentVersionRunOnce
Bu anahtarlarda tanımadığın, garip isimli ya da temp klasörlerinden çalışan girişler varsa ciddi şüphe uyandırır.
Örneğin böyle bir giriş bulduysan:
HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun
UpdateHelper REG_SZ C:UsersuserAppDataRoamingtempsvc32.exe
Bu ciddi bir uyarıdır. Meşru Windows güncellemeleri kullanıcı profili dizininden çalışmaz.
Zamanlanmış Görevler
Zararlılar zamanlanmış görev olarak da kendilerini kaydedebilir. Bunları listelemek için:
schtasks /query /fo LIST /v | findstr /i "task name|status|run as|task to run"
Şüpheli zamanlanmış görev özellikleri:
- Görevi çalıştıran dosya temp, AppData veya Roaming klasöründe
- Görev adı anlamsız veya sistem göreviyle neredeyse aynı
- “Run As User” değerinin sistem yetkisinde olması ama görev adının tanıdık gelmemesi
Hizmetler (Services)
sc query type= all state= all
Bilinmeyen hizmetleri tespit ettikten sonra detay almak için:
sc qc "HizmetAdi"
Özellikle binary path’i “C:WindowsTemp” ya da kullanıcı dizinini gösteren hizmetler tehlike işaretidir.
Dosya Sistemi Anomalileri
Son Değişen Dosyaları Bulma
Bir sisteme sızıldığında genellikle dosya sistemi üzerinde değişiklikler olur. Son 24 saatte değiştirilen exe ve dll dosyalarını bulmak için PowerShell kullanabilirsin:
powershell -command "Get-ChildItem -Path C:WindowsSystem32 -Include *.exe,*.dll -Recurse -ErrorAction SilentlyContinue | Where-Object {$_.LastWriteTime -gt (Get-Date).AddDays(-1)} | Select-Object FullName,LastWriteTime"
System32 klasöründe beklenmedik yeni dosyalar ciddi bir uyarıdır.
Gizli veya Yüksek Entropi Dosyaları
Temp klasörleri, zararlı yazılımların en sevdiği yuvalardır:
dir C:WindowsTemp /a /s
dir %APPDATA% /a /s | findstr ".exe .dll .bat .ps1"
Kullanıcı AppData dizininde yürütülebilir dosyalar (.exe, .dll) görmek normalin dışındadır.
PowerShell Aktivitesi ve Logları
Modern saldırıların büyük çoğunluğu PowerShell kullanır. Bu yüzden PowerShell loglama yapılandırması kritik önemdedir.
Önce loglama açık mı kontrol et:
reg query HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging
Eğer “EnableScriptBlockLogging” değeri 1 değilse, şimdi aç:
reg add HKLMSOFTWAREPoliciesMicrosoftWindowsPowerShellScriptBlockLogging /v EnableScriptBlockLogging /t REG_DWORD /d 1 /f
PowerShell script block logları için Event Viewer’da şu konuma bak: Applications and Services Logs > Microsoft > Windows > PowerShell > Operational
Zararlılarda sıkça karşılaşılan PowerShell kalıpları:
-EncodedCommandveya-encparametresi (Base64 kodlu komutlar)IEX(Invoke-Expression) kullanımıDownloadString,DownloadFile,WebClientgibi ağ indirme fonksiyonlarıBypassexecution policy flag’i
Windows Event Log Analizi
Event logları, saldırı sonrası analiz (forensics) için altın madenidir. Düzenli takip edersen saldırıyı gerçek zamanlı da yakalayabilirsin.
Kritik Event ID’leri:
- 4624: Başarılı oturum açma
- 4625: Başarısız oturum açma
- 4672: Özel ayrıcalıklarla oturum açma (admin girişleri)
- 4688: Yeni işlem oluşturma
- 7045: Yeni servis kurulumu
- 4698: Zamanlanmış görev oluşturma
- 1102: Güvenlik logları temizlendi (bu çok kritik!)
Event ID 4625 ile başarısız giriş denemelerini saymak için:
powershell -command "Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 100 | Group-Object -Property {$_.Properties[5].Value} | Sort-Object Count -Descending | Select-Object Count,Name"
Eğer belirli bir kullanıcı adı için çok sayıda başarısız giriş görüyorsan, bu brute-force saldırısı işareti olabilir.
Kullanıcı Hesabı Anomalileri
Tanımadığın Hesaplar
net user
net localgroup administrators
Yöneticiler grubunda tanımadığın bir hesap varsa bu çok ciddidir. Zararlılar genellikle kalıcılık sağlamak için gizli admin hesabı oluşturur.
Etkinleştirilmiş ama gizli tutulan hesapları bulmak için:
wmic useraccount get name,disabled,lockout,passwordrequired
Son Oturum Aktivitesi
net user KullaniciAdi
“Last logon” değeri senin bildiğin son girişten farklıysa veya “Password last set” yakın zamanlıysa araştırmalısın.
Gerçek Dünya Senaryosu: Cryptominer Vakası
Geçen yıl bir müşterinin ağında CPU kullanımı aniden %90-100 seviyesine çıkmıştı. Kullanıcılar “bilgisayar donuyor” diye şikayet ediyordu. Antivirus hiçbir şey bulmamıştı.
Adım adım ne yaptım:
Önce yüksek CPU kullanan işlemi tespit ettim:
wmic process get name,processid,percentprocessortime | sort /r
“RuntimeBroker.exe” adında bir işlem %78 CPU kullanıyordu. Ama gerçek RuntimeBroker.exe bu kadar kaynak kullanmaz.
wmic process where "name='RuntimeBroker.exe'" get executablepath,processid
Yürütülebilir dosya yolu “C:UsersPublicRuntimeBroker.exe” çıktı. Gerçek RuntimeBroker “C:WindowsSystem32” altında olmalıydı.
Zamanlanmış görevlere baktığımda her 10 dakikada bir bu dosyayı çalıştıran bir görev vardı. Registry’de de Run anahtarında kayıtlıydı. Monero madencisi (XMRig) çıktı. Kullanıcı sahte bir Adobe Reader güncellemesi indirip çalıştırmış.
Sistem Bütünlüğünü Doğrulama
Windows’un kendi araçları da yardımcı olur. System File Checker ile kritik sistem dosyalarının bütünlüğünü kontrol edebilirsin:
sfc /scannow
DISM ile sistem imajını onarabilirsin:
DISM /Online /Cleanup-Image /RestoreHealth
Autorun kayıtlı tüm başlangıç noktalarını görmek için Sysinternals’in Autoruns aracını kullanmak da çok değerlidir. VirusTotal ile otomatik kontrol özelliği sayesinde şüpheli dosyaları anında sorgulayabilirsin.
Önleyici Tedbirler ve Monitoring Kurulumu
Zararlı yazılım belirtilerini tanımak reaktif bir yaklaşım. Proaktif olmak için şunları yapman gerekir:
- Sysmon kurulumu: Microsoft Sysinternals’in bu aracı, detaylı sistem aktivite logları oluşturur. Process creation, network connection, file creation gibi olayları Event Log’a kaydeder.
- PowerShell ScriptBlock Logging: Yukarıda bahsettiğimiz gibi mutlaka aktif olmalı.
- AppLocker veya WDAC: Sadece onaylı uygulamaların çalışmasına izin ver.
- LAPS (Local Administrator Password Solution): Her makinede farklı local admin şifresi kullan; bir makine ele geçirildiğinde diğerlerine lateral movement kolaylaşmasın.
- Network segmentation: Kullanıcı makineleri sunucularla direkt iletişim kurabilmemeli.
- Düzenli log incelemesi: Haftada bir bile olsa logları gözden geçirmek için zaman ayır.
Acil durum için temel kontrol listesi şeklinde özetlemek gerekirse önemli noktalara değinelim: Olağandışı ağ bağlantıları, şüpheli başlangıç girişleri, bilinmeyen hizmetler ve zamanlanmış görevler, kullanıcı temp klasörlerindeki yürütülebilir dosyalar, yüksek CPU/RAM kullanımı olan bilinmeyen işlemler ve log temizleme olayları bunların başında gelir.
Sonuç
Windows sistemlerde zararlı yazılım belirtilerini tanımak, alet çantandaki en değerli becerilerden biri. Antivirus bir başlangıç noktasıdır ama son savunma hattı olmamalı. Netstat çıktısını okumayı, registry anahtarlarını incelemeyi, event loglarını yorumlamayı bilmek seni ortalamanın çok üstüne çıkarır.
En önemli alışkanlık ise baseline bilmek. Temiz bir sistemin nasıl göründüğünü bilirsen, anormalliği çok daha hızlı fark edersin. Yeni kurduğun ya da güvendiğin bir makinede bu komutları çalıştır, çıktıları kaydet. İleride şüphelendiğinde karşılaştırma yapacak bir referansın olur.
Saldırganlar genellikle sabırlı ve metodiktir. Biz de öyle olmak zorundayız. Bir şey garip görünüyorsa, “muhtemelen normaldir” deyip geçme. İncele, belgele, ve gerekirse yardım iste. Yanlış alarm vermek, gerçek bir saldırıyı kaçırmaktan her zaman daha iyidir.
