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ı:

  • -EncodedCommand veya -enc parametresi (Base64 kodlu komutlar)
  • IEX (Invoke-Expression) kullanımı
  • DownloadString, DownloadFile, WebClient gibi ağ indirme fonksiyonları
  • Bypass execution 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.

Bir yanıt yazın

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