Dynamic Analysis: Code Injection
Dynamic Analysis process injection memang cukup rumit. Teknik ini biasanya digunakan oleh malware agar bisa menjalankan shellcode atau load sebuah DLL di dalam proses lain—membuatnya lebih sulit untuk dideteksi atau dianalisis menggunakan debugger biasa. Karena itu, beberapa trik khusus dibutuhkan untuk melakukan debugging dengan sukses.
Debug it where it is
Teknik ini cukup populer di kalangan reverse engineer. Intinya adalah tidak membiarkan malware menyuntikkan shellcode ke proses target, melainkan men-debug shellcode tersebut langsung dari memori malware, seolah-olah sudah disuntikkan. Langkah-langkah:
- Malware memanggil
VirtualAllocExuntuk mengalokasikan memori di proses target. Simpan alamat hasil alokasi ini, misal0x300000 - Pasang breakpoint pada
WriteProcessMemory. Simpan alamat sumber (shellcode di proses malware, misal0x450000) dan alamat tujuan (biasanya sama dengan hasil dariVirtualAllocEx, yaitu0x300000). - Pasang breakpoint pada
CreateRemoteThreaduntuk mengambil EntryPoint dari shellcode (misal0x30012F) - Hitung alamat EntryPoint dari shellcode dalam proses malware:
EntryPoint Malware = 0x30012F - 0x300000 + 0x450000 = 0x45012F
- Di VM (disarankan), ambil snapshot, lalu ubah nilai EIP ke
0x45012F, atur argumen jika perlu, dan lanjutkan debugging.
Teknik ini sederhana dan cocok untuk shellcode yang tidak kompleks. Tapi:
- Tidak cocok jika terjadi multiple injection atau proses hollowing
- Shellcode bisa error karena dieksekusi di proses yang berbeda dari target aslinya
Attach ke Proses Target
Alternatif lain adalah attach ke proses target sebelum CreateRemoteThread dijalankan oleh malware. Bisa juga dengan memodifikasi CreateRemoteThread menjadi CREATE_SUSPENDED, contohnya:
CreateRemoteThread(Process, NULL, NULL,
(LPTHREAD_START_ROUTINE)LoadLibrary, (LPVOID)Memory, CREATE_SUSPENDED, NULL);
Untuk itu, kita perlu tahu proses target yang akan disuntik. Caranya:
- Pasang breakpoint di
Process32FirstdanProcess32Next - Analisis logika pencarian proses (biasanya pakai
strcmpatau sejenisnya)
⚠️Catatan: Pencarian proses tidak selalu untuk injection—kadang hanya trik anti-debug.