
Mohamed Alzhrani (@0xmaz) mempublikasikan LACUNA Chain, sebuah teknik EDR evasion canggih yang mengombinasikan enam primitive untuk mengalahkan setiap lapisan deteksi berbasis call-stack yang digunakan oleh EDR modern. Teknik ini telah terbukti berhasil melewati deteksi Bitdefender dan Kaspersky Endpoint Security di lab pengujian terkontrol, menandakan pergeseran signifikan dalam arms race antara attacker dan defender.
APA YANG TERJADI?
EDR modern telah bergeser dari userland hooks ke kernel-mode telemetry, menggunakan kernel callbacks (ObRegisterCallbacks, PsSetCreate*NotifyRoutine) dan provider ETW-Ti dengan STACKWALK untuk mengumpulkan call stack di syscall boundary. Namun, LACUNA Chain menunjukkan bahwa call stack yang dikumpulkan oleh kernel ini masih bisa di-spoof. Teknik ini memanfaatkan gap di `.pdata` section Windows — alamat executable yang ada di memori namun tidak memiliki RUNTIME_FUNCTION entry — sehingga RtlVirtualUnwind memperlakukannya sebagai leaf function dan advance RSP sebesar 8 bytes tanpa deteksi.
Chain ini mengkombinasikan BYOUD-Gap (stack spoofing tanpa modifikasi .pdata), ETW-Ti APC window attack (mengontrol kapan stack snapshot diambil), win32u NOP gap chain (1.242 leaf frame positions yang di-whitelist), Ghost Gadget (JMP [RBX] tersembunyi di ntdll), BYOUD-RT (runtime RSP calculation tanpa pre-calibration), dan BYOUD-MF (single-frame RSP teleport menggunakan UWOP_PUSH_MACHFRAME).
DETAIL TEKNIS
Temuan kunci dari analisis Ghidra terhadap `ntdll!RtlVirtualUnwind`: ketika `RtlLookupFunctionEntry` mengembalikan NULL (alamat tanpa RUNTIME_FUNCTION coverage), unwinder memperlakukannya sebagai leaf function dan advance RSP tepat 8 bytes. Gap-gap ini ada di setiap DLL Windows — ruang antara end address satu fungsi dan begin address fungsi berikutnya. Analisis biner menemukan 1.031 ghost functions di ntdll (48.805 bytes) dan 432 di kernelbase, beberapa di antaranya berada tepat sebelum `VirtualProtect`, `VirtualAlloc`, dan `WriteProcessMemory`. ETW-Ti stack collection menggunakan USER_APC, bukan synchronous collection — antara kernel return ke user-mode dan thread masuk alertable state, attacker bisa membersihkan stack. Empat fungsi KiUser* membawa UWOP_PUSH_MACHFRAME yang memungkinkan arbitrary RSP assignment dalam satu frame tanpa modifikasi .pdata.
Hasil lab: full bypass pada Bitdefender dan Kaspersky Endpoint Security. Semua deteksi yang terjadi berasal dari non-stack signals — handle access rights, RWX page allocation, anonymous-memory execution, dan syscall sequence correlation — bukan dari call stack. Proof-of-concept tersedia di github.com/MazX0p/LACUNA-Chain.
DAMPAK TERHADAP INDONESIA
Banyak organisasi di Indonesia, termasuk bank, operator telekomunikasi, dan instansi pemerintah, bergantung pada EDR sebagai lapisan pertahanan utama endpoint mereka. LACUNA Chain membuktikan bahwa call-stack-based detection — yang selama ini dianggap sebagai anchor keamanan — tidak lagi bisa diandalkan sendirian. Ini memiliki implikasi langsung terhadap SOC operations di Indonesia yang mungkin terlalu bergantung pada alert berbasis stack traces. Tim keamanan perlu meng-evolve detection strategy mereka ke arah behavioral correlation dan parameter inspection, bukan sekadar stack analysis. SKKNI Siber mendorong pengujian keamanan secara berkala, dan red team Indonesia harus mulai menguji ketahanan EDR mereka terhadap teknik seperti LACUNA Chain.
REKOMENDASI MITIGASI
Pertama, hentikan investasi pada detection rules berbasis module-of-origin yang hanya memeriksa apakah frame pertama berasal dari modul tertentu — rules ini sudah dikalahkan. Kedua, implementasikan `.pdata` gap enumeration pada module-load time dan flag call-trace frames yang berada di gap — ini adalah satu-satunya signal baru yang dapat memecahkan BYOUD-Gap. Ketiga, korelasikan syscall sequence, bukan single call — Bitdefender’s AllocVM+WriteVM+ProtectVM+QueueAPC chain detector berhasil menangkap operasi meskipun stack-nya bersih. Keempat, monitor ETW-Ti APC queue depth — jumlah APC yang tidak biasa (>3 sebelum single alertable wait) adalah indikator anomali. Kelima, baseline thread call-stack signatures per process class untuk mendeteksi deviasi statistik dari pola normal.
Analisa Retasan
LACUNA Chain mewakili evolusi paling signifikan dalam EDR evasion sejak HookChain Part I. Sementara HookChain mengungkap bahwa 94% EDR tidak melakukan hook di atas subsystem layer NTDLL, LACUNA Chain menyerang lapisan yang lebih dalam: .pdata lacunae — executable regions di dalam signed DLLs yang tidak memiliki exception-handling metadata. Gap ini secara struktural tidak terlihat oleh RtlLookupFunctionEntry dan tidak ada dalam hook table manapun.
Yang paling mengkhawatirkan dari perspektif defender adalah bahwa LACUNA Chain tidak meninggalkan forensic artifact apapun. Tidak ada .pdata yang dimodifikasi, tidak ada return address yang diubah, tidak ada gadget yang digunakan. Setiap frame berada di dalam signed Microsoft DLLs dengan alamat yang valid secara arsitektural. Call chain melewati validasi RtlVirtualUnwind, shadow stack mencatat alamat gap sebagai valid leaf exit, dan tidak ada divergensi frame count antara shadow dan user stacks. Satu-satunya pertahanan yang tersisa adalah behavioral kernel callback correlation — yang membutuhkan rules dengan false-positive rate yang jauh lebih tinggi dibandingkan stack-based rules.
Bagi komunitas keamanan Indonesia, temuan ini menegaskan bahwa defense-in-depth bukan sekadar slogan. Organisasi tidak boleh mengandalkan satu lapisan deteksi — bahkan yang selama ini dianggap paling robust seperti call-stack analysis. SOC di Indonesia perlu mengadopsi pendekatan multi-signal: behavioral correlation, parameter inspection, memory allocation pattern analysis, dan thread behavioral baselining. Red team Indonesia juga harus mengintegrasikan teknik seperti LACUNA Chain ke dalam pengujian rutin untuk memastikan pertahanan mereka benar-benar efektif.
Sumber: core-jmp.org — LACUNA Chain: Ghost Frames Defeat EDR

