Jump to content

Dynamic Analysis: Code Injection

From Haidhi Wiki
Revision as of 10:47, 14 April 2025 by SanzSkuy (talk | contribs) (Created page with "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 menyuntik...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 VirtualAllocEx untuk mengalokasikan memori di proses target. Simpan alamat hasil alokasi ini, misal 0x300000
  • Pasang breakpoint pada WriteProcessMemory. Simpan alamat sumber (shellcode di proses malware, misal 0x450000) dan alamat tujuan (biasanya sama dengan hasil dari VirtualAllocEx, yaitu 0x300000).
  • Pasang breakpoint pada CreateRemoteThread untuk mengambil EntryPoint dari shellcode (misal 0x30012F)
  • 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 Process32First dan Process32Next
  • Analisis logika pencarian proses (biasanya pakai strcmp atau sejenisnya)

⚠️Catatan: Pencarian proses tidak selalu untuk injection—kadang hanya trik anti-debug.