Sebuah analisis teknis yang diterbitkan oleh peneliti keamanan S12 menguraikan teknik KernelCallbackTable injection, metode proses injeksi pada Windows yang memanfaatkan struktur Process Environment Block (PEB) untuk mengarahkan eksekusi kode dalam konteks aplikasi GUI tanpa memerlukan pembuatan thread remote atau DLL loading klasik. Teknik ini menunjukkan bahwa trust model Windows terhadap PEB masih memiliki celah fundamental yang bisa disalahgunakan oleh aktor ancaman.
APA YANG TERJADI?
KernelCallbackTable adalah struktur di dalam PEB yang menyimpan pointer ke fungsi callback untuk penanganan pesan Windows. Tabel ini diinisialisasi ketika user32.dll dimuat pada proses GUI. Penyerang yang memiliki handle dengan akses memori ke proses target bisa mengkloning KernelCallbackTable ke memori userspace proses target, memodifikasi pointer __fnCOPYDATA agar menunjuk ke shellcode yang sudah disusun sebelumnya, memperbarui pointer PEB agar menunjuk ke tabel kloning tersebut, lalu memicu eksekusi dengan mengirimkan pesan WM_COPYDATA ke jendela target. Karena kernel mempercayai pointer PEB secara implisit, eksekusi shellcode terjadi tanpa pemeriksaan tambahan.
DETAIL TEKNIS
Rantai teknik dimulai dengan OpenProcess menggunakan PROCESS_ALL_ACCESS untuk mendapatkan handle target. NtQueryInformationProcess dengan ProcessBasicInformation digunakan untuk mengambil alamat dasar PEB. ReadProcessMemory membaca pointer KernelCallbackTable yang asli, laju alokasi memori RWX dilakukan via VirtualAllocEx untuk menulis shellcode. Salinan lokal dari struktur KERNELCALLBACKTABLE dimodifikasi dengan mengarahkan field __fnCOPYDATA ke alamat shellcode. Tabel modifikasi kemudian ditulis kembali ke proses target menggunakan VirtualAllocEx kedua dengan izin PAGE_READWRITE. Pointer KernelCallbackTable di dalam PEB diperbarui agar menunjuk ke tabel kloning. Eksekusi dipicu dengan SendMessageW menggunakan WM_COPYDATA ke HWND yang ditemukan melalui enumerasi thread. Semua operasi ini menggunakan API Windows standar dan tidak memerlukan exploit kernel.
DAMPAK TERHADAP INDONESIA
Banyak aplikasi bisnis dan legacy di Indonesia yang masih berbasis GUI Windows, termasuk software POS, sistem akuntansi, ERP lokal, dan aplikasi perbankan. Teknik KernelCallbackTable injection bisa digunakan untuk menyuntikkan kode ke proses aplikasi kritis yang berjalan dengan privilege lebih tinggi atau berisi data sensitif seperti informasi nasabah dan transaksi keuangan. Solusi EDR yang banyak digunakan di Indonesia sering kali tidak mendeteksi modifikasi PEB karena teknik ini tidak melibatkan CreateRemoteThread, LoadLibrary, atau aktivitas injeksi klasik lainnya yang menjadi fokus deteksi tradisional.
REKOMENDASI MITIGASI
Organisasi harus menerapkan pemantauan integritas PEB pada proses kritis, terutama modifikasi tak terduga pada pointer KernelCallbackTable selama runtime. Solusi EDR modern harus dikonfigurasi untuk mendeteksi alokasi memori RWX yang dilakukan oleh proses non-sistem ke proses lain, serta cross-process memory write ke region PEB. Aplikasi GUI yang menangani data sensitif harus dijalankan dengan hak akses minimal dan diisolasi melalui application sandboxing. Penerapan Address Space Layout Randomization (ASLR) yang konsisten dan pembatasan handle PROCESS_ALL_ACCESS melalui Windows Defender Application Control (WDAC) juga bisa mengurangi surface area serangan.
Analisa Retasan
KernelCallbackTable injection memperlihatkan bahwa trust model Windows terhadap Process Environment Block masih mengandalkan asumsi lama yang tidak memadai untuk ancaman modern. PEB adalah struktur userspace yang bisa dibaca dan ditulis oleh proses dengan handle yang memadai, namun kernel memperlakukan pointer KernelCallbackTable di dalamnya sebagai sumber kebenaran mutlak. Asumsi ini mungkin valid pada era Windows NT ketika isolasi proses dianggap cukup, namun pada era endpoint detection yang canggih, kurangnya validasi origin tabel callback menciptakan primitive eksekusi yang powerful dan reliable. Teknik ini secara inheren menghindari deteksi yang fokus pada thread creation, APC injection, atau DLL loading karena tidak melibatkan primitif tersebut sama sekali.
Dibandingkan dengan teknik injeksi lainnya, KernelCallbackTable memiliki keterbatasan spesifik: hanya berfungsi pada aplikasi GUI yang memuat user32.dll. Namun, dalam konteks enterprise, banyak aplikasi kritis yang memenuhi kriteria ini. Aplikasi browser, email client, dan software ERP sering berjalan dalam konteks pengguna dengan akses ke data sensitif perusahaan. Fakta bahwa shellcode dieksekusi melalui message loop kernel memberikan konteks eksekusi yang reliable tanpa memerlukan scheduling thread tambahan. Dari perspektif defensive, deteksi harus fokus pada cross-process memory write ke region PEB dan alokasi memory RWX oleh proses yang bukan bagian dari software loading normal, bukan hanya pada API injeksi konvensional.
Bagi lanskap keamanan siber Indonesia, di mana banyak organisasi masih mengandalkan antivirus tradisional dan belum melakukan deployment EDR modern, teknik semacam ini bisa beroperasi tanpa terdeteksi dalam waktu yang lama. Aplikasi industri seperti software akuntansi, sistem informasi rumah sakit, dan platform POS yang berjalan di Windows merupakan target potensial karena sering kali tidak diisolasi dengan baik dan berjalan dengan privilege yang lebih tinggi daripada yang seharusnya. Pelatihan SOC dan tim incident response perlu memasukkan analisis PEB modification serta anomali message handling ke dalam playbook threat hunting. Hardening dengan membatasi PROCESS_ALL_ACCESS dan menerapkan application control via WDAC atau AppLocker bisa secara signifikan mengurangi surface area serangan ini pada lingkungan yang belum matang secara keamanan.
Sumber: S12, Medium
