Jump to content

Process Injection

From Haidhi Wiki
Revision as of 08:07, 11 April 2025 by SanzSkuy (talk | contribs) (Created page with "Process Injection adalah teknik yang digunakan malware untuk meng-inject code ke dalam process lain. teknik ini tidak meninggalkan jejak di disk dan memungkinkan terciptanya ''fileless malware'' yang bisa mempertahankan persistensi dalam sistem target. ''warning: Hacking without permission is ilegal'' = First step: Mendapatkan Daftar Process yang Berjalan = Sebelum meng-inject code, malware tentu perlu mengetahui proses mana yang ingin disusupi. Ini dilakukan dengan...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Process Injection adalah teknik yang digunakan malware untuk meng-inject code ke dalam process lain. teknik ini tidak meninggalkan jejak di disk dan memungkinkan terciptanya fileless malware yang bisa mempertahankan persistensi dalam sistem target.

warning: Hacking without permission is ilegal

First step: Mendapatkan Daftar Process yang Berjalan

Sebelum meng-inject code, malware tentu perlu mengetahui proses mana yang ingin disusupi. Ini dilakukan dengan cara:

  1. Snapshot Proses:
    • Malware membuat snapshot semua proses yang sedang berjalan menggunakan API CreateToolhelp32Snapshot.
    • Snapshot ini berisi nama proses, Process ID (PID), dan informasi penting lainnya.
    • Gunakan flag TH32CS_SNAPPROCESS agar snapshot hanya mencakup proses (bukan thread atau library).
  2. Mendapatkan Proses Pertama:
    • Gunakan API Process32First untuk mengambil proses pertama dari snapshot.
  3. Melakukan Iterasi Proses:
    • Gunakan Process32Next untuk melanjutkan iterasi, mendapatkan proses satu per satu lengkap dengan nama dan PID-nya.
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <iostream>

int main() {
    HANDLE hSnapshot;
    PROCESSENTRY32 pe32;

    // Membuat snapshot dari semua proses yang sedang berjalan
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    if (hSnapshot == INVALID_HANDLE_VALUE) {
        std::cerr << "Gagal membuat snapshot proses." << std::endl;
        return 1;
    }

    // Inisialisasi struktur PROCESSENTRY32
    pe32.dwSize = sizeof(PROCESSENTRY32);

    // Mengambil proses pertama dari snapshot
    if (!Process32First(hSnapshot, &pe32)) {
        std::cerr << "Gagal mengambil proses pertama." << std::endl;
        CloseHandle(hSnapshot);
        return 1;
    }

    // Iterasi semua proses
    do {
        // Menampilkan nama proses dan Process ID (PID)
        std::wcout << L"Process: " << pe32.szExeFile << L" | PID: " << pe32.th32ProcessID << std::endl;
    } while (Process32Next(hSnapshot, &pe32));

    CloseHandle(hSnapshot);
    return 0;
}

Code Injection

Teknik ini mirip dengan DLL Injection, tapi perbedaanya adalah jenis code yang dieksekusi. Alih-alih meng-inject DLL, malware akan menyuntikkan code assembly dalam bentuk array of bytes (shellcode). Teknik ini dilakukan menggunakan function CreateRemoteThread. Tetapi code ini harus position-independent dan PE-independent yang aartinya:

  • Bisa load sendiri import table nya
  • Bisa mengakses datanya sendiri
  • Bisa mengeksekusi tugas-tugas jahat langsung di dalam proses target

Langkah-langkahnya:

  1. Cari proses target dengan CreateToolhelp32Snapshot, Process32First, dan Process32Next
  2. Dapatkan handle proses dengan OpenProcess
  3. Alokasikan memori di proses target menggunakan VirtualAllocEx (atau CreateSectionEx) sebesar ukuran kode assembly.
  4. Salin kode ke proses target menggunakan WriteProcessMemory
  5. Eksekusi kode dengan CreateRemoteThread

Kadang, malware juga memberikan nama atau PID proses malware itu sendiri ke dalam kode yang disuntikkan agar bisa:

  1. Membunuh proses malware utama, dan
  2. Menghapus file dan jejak-jejaknya untuk menyembunyikan eksistensinya sepenuhnya.

Reflective DLL Injection

Teknik ini adalah pengembangan dari code injection. Teknik ini menggunakan shellcode yang lebih kompleks untuk memuat DLL jahat langsung dari memory tanpa menyimpannya di disk. Artinya tidak ada DLL yang bisa dideteksi dari disk dan memungkinkan tidak tercatat di PEB (process environtment block). Akibatnya tools forensic yang hanya memeriksa PEB tidak bisa mendeteksi DLL ini.

Langkahnya:

  1. Payload dalam bentuk file PE (Portable Executable) + custom PE loader (bisa berupa shellcode) disuntikkan ke proses target.
  2. PE loader akan bertugas meload DLL secara manual:
    • Alokasikan memori sebesar ImageBase.
      • Lakukan proses loading PE manual:
        • Fix import table.
        • Lakukan relokasi berdasarkan relocation table