4 puan yazan xguru 3 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş
  • 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 sogen ile 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.

Henüz yorum yok.