sogen - Emulator userspace Windows & Linux berperforma tinggi
(github.com/momo5502)- Emulator userspace Windows/Linux berperforma tinggi yang bekerja pada level system call (syscall), mengendalikan keseluruhan eksekusi proses melalui hooking yang komprehensif
- Cocok untuk pekerjaan yang memerlukan kontrol sangat rinci atas eksekusi proses seperti riset keamanan, analisis malware, dan riset DRM
- Bekerja pada level syscall tanpa mengimplementasikan ulang Windows API, sehingga dapat langsung memanfaatkan DLL sistem yang sudah ada
- Ditulis dalam C++ dan dapat dijalankan dengan backend pilihan: Unicorn Engine, icicle-emu, Hyper-V(WHP)
- Manajemen memori lanjutan: dibangun di atas manajemen memori Unicorn, dengan dukungan tipe memori khas Windows seperti reserved dan committed
- Dukungan penuh pemuatan PE: menangani pemuatan executable dan DLL, pemetaan memori yang tepat, relocations, dan dukungan TLS
- Penanganan pengecualian: implementasi Windows Structured Exception Handling (SEH), dengan dukungan exception dispatcher dan unwinding
- Dukungan threading: menyediakan model threading dengan penjadwalan round-robin
- Manajemen state: mendukung serialisasi seluruh state dan snapshot in-memory yang cepat
- Antarmuka debugging: implementasi protokol serial GDB sehingga bisa terintegrasi dengan IDA Pro, GDB, LLDB, VS Code, dan lainnya
- Saat digunakan untuk analisis malware, isolasi host mungkin tidak sepenuhnya aman, sehingga disarankan memakai versi web berbasis sandbox browser
- Dapat diotomatisasi dengan Python
- Instal dengan
pip install sogen - Menjalankan emulator, mendaftarkan callback, dan menangani intersepsi panggilan WinAPI langsung dari dalam Python
- Instal dengan
Lihat slide presentasi: Fake It ‘til We Make It: The Art of Windows User Space Emulation
- Apa itu Windows User Space Emulation?
- Teknik untuk menjalankan proses di dalam emulator dan mensimulasikan OS serta kernel di bawahnya
- Jika emulasi pada umumnya menjalankan kode di CPU virtual dan mensimulasikan perangkat keras, maka emulasi userspace meniru hingga lapisan OS dan kernel di atasnya
- Nilai utamanya adalah kontrol penuh atas kode yang dieksekusi — emulator dapat ikut campur pada setiap tahap eksekusi
- Kontrol ini dilakukan melalui hooking points
- Hooking akses memori — mencegat pada level read, write, dan execute
- Hooking eksekusi instruksi — menangkap momen eksekusi instruksi tertentu seperti syscall, cpuid, dan rdtsc
- Hooking eksekusi jalur kode baru (new code path) — mendeteksi jalur kode yang dijalankan untuk pertama kali
- Berkat kemampuan hooking ini, emulator bisa mencegat komunikasi eksternal, melacak alur eksekusi, dan mengukur code coverage, sehingga menjadi fondasi untuk analisis DRM, analisis malware, analisis kerentanan, dan riset keamanan
- Pembicaranya adalah seorang pengembang DRM yang memiliki pengalaman membalik dan melewati berbagai DRM seperti Steam CEG, Arxan, dan Denuvo
- Untuk analisis Denuvo DRM, yang banyak digunakan game Windows, emulasi merupakan sarana yang sangat penting
- Karena DRM modern sering membuat analisis statis maupun dinamis menjadi sulit atau mustahil akibat obfuscation, anti-tampering, dan anti-debugging
- Emulator juga dimanfaatkan untuk analisis kerentanan (fuzzing): input diacak di dalam emulator, umpan balik code coverage diperoleh lewat hooking, dan eksekusi menjadi dapat diprediksi serta diulang
- Keterbatasan solusi yang ada menjadi motivasi pengembangan
- Qiling, Speakeasy, dan Dumpulator sangat lambat untuk analisis DRM dengan banyak hooking karena ditulis dalam Python
- Binee dan Unicorn PE tidak lengkap dan berpotensi menimbulkan bug karena mengimplementasikan ulang pada level API
- Skala syscall: syscall umum ntdll.dll 409, syscall UI win32u.dll 1474
- Kecepatan emulasi yang tinggi dimungkinkan berkat JIT
Belum ada komentar.