Saat sabaha karşı 03:15’ti. Telefonun o meşhur, insanın içini cız ettiren 'high severity' bildirim sesiyle uyandım. testCompany ağındaki bir muhasebe bilgisayarı, normalde hiç uğramaması gereken bir IP adresine (örneğin 127.0.0.1 üzerinden simüle edilen bir C2 sunucusuna) garip, periyodik paketler gönderiyordu. EDR (Endpoint Detection and Response) bir şeyler yakalamıştı ama tam olarak neyle karşı karşıya olduğumuzu henüz söyleyemiyordu. Bilgisayarımı açtığımda karşımdaki manzara şuydu: invoice_9928.pdf.exe. Klasik bir yöntem ama hala işe yarıyor olması can sıkıcıydı. İşte o an, bu 'karanlık kutuyu' açma vaktinin geldiğini anladım.
Malware analizi dediğimiz şey, aslında bir dijital otopsi sürecidir. Ancak bu otopsi sırasında 'ceset' her an canlanıp sizi ısırabilir. Bu yüzden ilk kuralımız her zaman izole bir ortamdır. Kendi laboratuvarımda (sandbox), internet erişimi olmayan, her hareketi loglanan bir sanal makinede dosyayı masaya yatırdım.
Statik Analiz: İlk Bakışta Aşk Değil, Şüphe
Dosyayı çalıştırmadan önce ona dışarıdan bakmamız gerekir. Statik analiz, dosyanın kodunu yürütmeden yapılan incelemedir. İlk yaptığım şey dosyanın hash değerini (SHA-256) alıp bilinen veritabanlarında aratmak oldu. Sonuç? Tertemiz. Bu demek oluyor ki karşımızda 'FUD' (Fully Undetectable) yani imzası henüz tanınmayan, belki de testCompany’ye özel hazırlanmış bir zararlı var.
Ardından strings komutuyla dosyanın içindeki okunabilir karakterlere baktım. Eğer saldırgan amatörse burada C2 adreslerini, hata mesajlarını veya kullandığı kütüphaneleri bırakır. Ancak bizim arkadaş biraz profesyonelmiş; çıktılar anlamsız bir karakter yığınıydı. Bu, dosyanın 'packed' (paketlenmiş) veya 'obfuscated' (karartılmış) olduğunu gösteren ilk büyük işarettir.
Bir PE (Portable Executable) dosyasının header'larına bakmak, bize dosyanın ne yapmaya niyetli olduğunu fısıldar. Örneğin, VirtualAlloc, WriteProcessMemory ve CreateRemoteThread gibi API fonksiyonlarını import ediyorsa, bu arkadaş büyük ihtimalle 'Process Injection' yapmaya çalışıyordur. Yani kendini masum bir sürecin (mesela explorer.exe) içine gizleyecek.
Dinamik Analiz: Kutuyu Açıyoruz
Dinamik analizde dosyayı çalıştırırız ve sistemde ne gibi değişiklikler yaptığını izleriz. Procmon (Process Monitor) ve Wireshark (zararsızlaştırılmış ortamda) en yakın dostlarımızdır. Dosyayı çalıştırdığım anda ilk yaptığı iş, kayıt defterinde (Registry) kendine bir yer edinmek oldu:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run altına rastgele isimli bir anahtar ekledi. Bu, 'Persistence' (kalıcılık) tekniğidir; yani bilgisayar her yeniden açıldığında bu zararlı otomatik olarak çalışacak.
Ardından şu sahte bağlantı isteğini gördüm:
HTTP GET http://example.com/api/v1/config (Gerçekte bu adres farklıydı ama biz defanged kullanalım).
Kod Analizi ve Tersine Mühendislik: Matruşka Bebekleri
İşin en zevkli ama en yorucu kısmı burası. Dosyayı bir decompiler veya disassembler (örneğin IDA Pro veya Ghidra) içine attığımızda, saldırganın yazdığı mantığı görmeye başlarız. Karşılaştığım en ilginç şey, zararlının bir 'Anti-VM' ve 'Anti-Debugger' kontrolü yapmasıydı. Kod şöyle bir mantıkla ilerliyordu:
// Zararsızlaştırılmış Pseudo-Kod Örneği
if (IsDebuggerPresent()) {
// Eğer analiz ediliyorsa, sahte ve zararsız bir işlem yap ve çık
printf("Sistem hatası: 0x80070002");
exit(0);
}
if (CheckForVMBios("VBOX", "VMWARE")) {
// Sanal makine tespit edilirse uyumaya devam et
Sleep(100000);
}
Bu arkadaş, analiz edildiğini anladığı an kendini kapatıyor veya farklı davranıyordu. Bunu aşmak için debugger üzerinden register değerlerini manipüle ederek 'patch' yapmamız gerekti. Yani işlemciye 'Hayır, şu an bir debugger bağlı değil, sen işine bak' dedik.
Analizden Çıkarılan Dersler ve Savunma (Mitigation)
Analiz bittiğinde elimizde net bir tablo vardı: Bu zararlı, kullanıcı verilerini şifrelemek yerine sessizce arka kapı (Backdoor) açıyor ve sistemdeki yetkileri yükseltmeye çalışıyordu. testCompany bünyesinde bu krizi nasıl yönettik?
- IOC (Indicators of Compromise) Paylaşımı: Zararlının bağlandığı IP adresleri ve oluşturduğu dosya yolları anında tüm uç nokta güvenlik yazılımlarına (EDR/AV) bloklanması için girildi.
- Hardening (Sistem Sıkılaştırma): Kullanıcıların 'temp' dizinlerinden veya 'Downloads' klasöründen
.exeçalıştırması kısıtlandı. - Network Segmentation: Muhasebe departmanının kritik sunuculara erişimi 'Zero Trust' prensibiyle yeniden düzenlendi.
Malware analizi bir kedi-fare oyunudur. Saldırganlar sürekli yeni paketleme yöntemleri geliştirirken, biz de o paketleri açacak yeni teknikler bulmak zorundayız. Eğer bir gün önünüze şüpheli bir dosya gelirse, unutmayın: Onu sadece silmek bir çözümdür ama onu analiz etmek bir stratejidir.
Kendinize ve sistemlerinize iyi bakın, logları okumayı asla bırakmayın!
