Malware Disassembler ve Debugger Kullanımı: Zararlı Yazılımların Davranışını Derinlemesine Anlamak

Zararlı yazılımların ne yaptığını gerçek anlamda kavramanın yolu, onları parçalara ayırıp adım adım incelemekten geçer. Bu noktada disassembler ve debugger araçları, malware analizinin vazgeçilmez iki temelidir. Bu makalede bu araçların ne işe yaradığını, nasıl kullanıldığını ve adli bilişim perspektifinden neden kritik olduklarını anlatıyoruz.

1. Disassembler ve Debugger Nedir?
Disassembler (Ayrıştırıcı)

Derlenmiş makine kodunu (binary) tekrar assembly seviyesine çevirir.

- Kodun genel yapısını görmeyi sağlar
- Fonksiyonlar ve akış mantığı analiz edilir
- Statik analiz için kullanılır

Debugger (Hata Ayıklayıcı)

Programı çalıştırarak, adım adım izlemeye yarar.

- Gerçek zamanlı davranış gözlemlenir
- Bellek, register ve API çağrıları takip edilir
- Dinamik analiz yapılır

Disassembler “ne olabilir”, debugger ise “gerçekte ne oluyor” sorusunu cevaplar.

2. Malware Analizinde Neden Bu Araçlar Kullanılır?

- Packed ve obfuscated kodları çözmek
- Anti-VM / anti-debug tekniklerini görmek
- Şifreleme, C2 ve persistence mantığını anlamak
- Zararlı davranışı kesin olarak doğrulamak

Antivirüs uyarısı değil, gerçek davranış adli bilişimde esastır.

3. Disassembler ile Statik Analiz Süreci

Disassembler kullanırken tipik adımlar:

1 - Binary dosyayı yükleme
2 - Entry Point tespiti
3 - Fonksiyon keşfi
4 - API çağrılarının analizi
5 - Kontrol akışı (CFG) inceleme

1EntryPoint:
2push ebp
3mov ebp, esp
4call GetModuleHandleA
Entry Point, malware’in ilk niyetini ele veren noktadır.

4. Şüpheli API ve Kod Kalıpları

Disassembler’da sık rastlanan tehlikeli API’ler:

- VirtualAlloc
- WriteProcessMemory
- CreateRemoteThread
- WinExec
- InternetOpenUrl

1call VirtualAlloc
2call WriteProcessMemory
3call CreateRemoteThread
Bu üçlü genellikle process injection göstergesidir.

5. Debugger ile Dinamik Analiz

Debugger sayesinde malware’i kontrollü ortamda çalıştırırsın.

Yapılabilen işlemler:

- Breakpoint koyma
- Register takibi
- Bellek dump alma
- API çağrılarını yakalama

1bp kernel32!CreateFileA
2bp ws2_32!connect
Breakpoint’ler, malware’in kritik karar anlarını yakalamanı sağlar.

6. Packed Malware ve Debugger Kullanımı

Packed malware’lerde:

- Kod başlangıçta anlamsızdır
- Gerçek kod, runtime’da açılır

Çözüm:

- Entry Point’ten sonra jmp / call takip edilir
- Unpack tamamlandığında bellek dump alınır

1dump memory 0x401000 size 0x20000
Packed dosyada disassembler tek başına yetersiz kalır.

7. Anti-Debug ve Anti-Analysis Teknikleri

Malware’ler analizden kaçmak için:

- IsDebuggerPresent
- CheckRemoteDebuggerPresent
- Zaman gecikmeleri
- Exception abuse

kullanabilir.

1call IsDebuggerPresent
2test eax, eax
3jne exit
Debugger kullandığını gizleyemezsen malware kendini pasifleştirir.

8. Gerçekçi Analiz Senaryosu

Olay:
Bir EXE dosyası çalıştığında hemen kapanıyor.

Analiz:

Disassembler: Anti-debug kontrolü var

Debugger: IsDebuggerPresent breakpoint’i

Patch: Jump koşulu ters çevrilir

1jne exit → je exit
Basit bir patch ile tüm davranış ortaya çıkarılabilir.

9. Adli Bilişim Açısından Önemi

- Malware’in niyetini kanıta dönüştürür
- C2 adresleri ve şifreleme anahtarları çıkarılabilir
- Hukuki raporlarda teknik doğrulama sağlar

Debugger çıktıları, zaman damgalı ve tekrar edilebilir olduğu için çok değerlidir.

10. İpuçları ve En İyi Uygulamalar

- Analizi mutlaka izole VM’de yap
- Snapshot almadan çalıştırma
- Önce disassembler, sonra debugger kullan
- Her adımı notla ve hash’le
- Anti-debug patch’lerini belgele

Disassembler ve debugger kullanımı, malware analizinin en derin ve en öğretici aşamasıdır. Disassembler ile yapıyı, debugger ile davranışı anlarsın. Özellikle gizlenmiş, packed ve hedefli zararlılarda bu araçlar olmadan yapılan analizler yüzeysel kalır. Doğru tekniklerle kullanıldığında, bu araçlar zararlı yazılımın tüm sırlarını açığa çıkarır ve adli bilişim için güçlü, savunulabilir deliller üretir.

konu hakkında tepkinizi verebilirsiniz