sogen - Yüksek performanslı Windows ve Linux kullanıcı alanı emülatörü
(github.com/momo5502)- Sistem çağrısı (syscall) düzeyinde çalışan yüksek performanslı bir Windows/Linux kullanıcı alanı emülatörü; kapsamlı hooking sayesinde süreç yürütmenin tamamı üzerinde kontrol sağlar
- Güvenlik araştırması, kötü amaçlı yazılım analizi, DRM araştırması gibi süreç yürütmesi üzerinde ayrıntılı kontrol gerektiren işler için uygundur
- Windows API’lerini yeniden uygulamadan syscall düzeyinde çalıştığı için mevcut sistem DLL’lerini olduğu gibi kullanabilir
- C++ ile yazılmıştır ve istenen backend ile çalıştırılabilir: Unicorn Engine, icicle-emu, Hyper-V(WHP)
- Gelişmiş bellek yönetimi: Unicorn’un bellek yönetimi üzerine kuruludur; reserved ve committed gibi Windows’a özgü bellek türlerini destekler
- Tam PE yükleme desteği: yürütülebilir dosya ve DLL yükleme işlemleri, uygun bellek eşleme, yeniden yerleştirme (relocations), TLS desteği
- İstisna işleme: Windows yapısal istisna işleme (SEH) uygulaması, istisna dispatcher ve unwinding desteği
- Thread desteği: round-robin zamanlamalı bir threading modeli sunar
- State yönetimi: hem tüm durumun serileştirilmesini hem de hızlı bellek içi snapshot’ları destekler
- Hata ayıklama arayüzü: GDB seri protokolü uygulaması sayesinde IDA Pro, GDB, LLDB, VS Code vb. ile entegre olabilir
- Kötü amaçlı yazılım analizi sırasında host izolasyonu kusursuz olmayabileceğinden, tarayıcı sandbox tabanlı web sürümünün kullanılması önerilir
- Python ile otomasyon mümkündür
pip install sogenile kurulabilir- Emülatörü çalıştırma, callback kaydetme ve WinAPI çağrılarını kesip işleme Python içinden doğrudan yapılabilir
Sunum slaytlarına bakınız: Fake It ‘til We Make It: The Art of Windows User Space Emulation
- Windows User Space Emulation nedir?
- Süreci emülatör içinde çalıştırıp, onun altındaki OS ve çekirdeği simüle etme tekniğidir
- Genel emülasyonda kod sanal CPU üzerinde çalıştırılır ve donanım simüle edilirken, kullanıcı alanı emülasyonu bunun üstünde OS ve çekirdek katmanını da taklit eder
- Bunun sunduğu temel değer, çalışan kod üzerinde tam kontrol sağlamasıdır — emülatör her yürütme aşamasına müdahale edebilir
- Kontrol, hooking noktaları (hooking points) üzerinden sağlanır
- Bellek erişimi hooking’i — read, write, execute düzeyinde yakalama
- Komut yürütme hooking’i — syscall, cpuid, rdtsc gibi belirli komutların çalıştığı anı yakalama
- Yeni kod yolu (new code path) yürütme hooking’i — ilk kez çalıştırılan kod yollarını algılama
- Bu hooking yeteneği sayesinde dış iletişimi yakalama, yürütme akışını izleme, kod kapsamını ölçme gibi işlemler mümkün olur; bu da DRM analizi, kötü amaçlı yazılım analizi, zafiyet analizi ve güvenlik araştırmasının temelini oluşturur
- Sunumu yapan kişi bir DRM geliştiricisi ve Steam CEG, Arxan, Denuvo gibi birçok DRM’i reverse engineer edip aşma deneyimine sahip
- Windows oyunlarında yaygın kullanılan Denuvo DRM analizinde emülasyon temel araçtı
- Çünkü modern DRM’lerdeki obfuscation / anti-tamper / anti-debugging nedeniyle statik ve dinamik analiz çoğu zaman mümkün olmuyor
- Emülatör, zafiyet analizi (fuzzing) için de kullanılabiliyor: emülatör içinde girdileri rastgeleleştirme, hooking ile kod kapsamı geri bildirimi alma, öngörülebilir ve tekrarlanabilir yürütme
- Mevcut çözümlerin sınırlamaları geliştirme motivasyonu oldu
- Qiling, Speakeasy ve Dumpulator Python tabanlı oldukları için yoğun hooking gerektiren DRM analizinde aşırı yavaş
- Binee ve Unicorn PE ise API düzeyi yeniden uygulama kullandıkları için eksik ve hataya açık
- syscall ölçeği: ntdll.dll’de genel syscall sayısı 409, win32u.dll’de UI syscall sayısı 1474
- Hızlı emülasyon performansı JIT sayesinde mümkün
Henüz yorum yok.