4 poin oleh xguru 3 jam lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • 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

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.

Belum ada komentar.