4 Punkte von xguru 3 시간 전 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Ein Hochleistungs-Userspace-Emulator für Windows/Linux, der auf Systemaufruf-(syscall-)Ebene arbeitet und durch umfassendes Hooking die komplette Prozessausführung steuert
  • Geeignet für Aufgaben, die eine fein granulare Kontrolle über die Prozessausführung erfordern, etwa Sicherheitsforschung, Malware-Analyse und DRM-Forschung
  • Arbeitet auf syscall-Ebene, ohne die Windows-API neu zu implementieren, sodass bestehende System-DLLs unverändert genutzt werden können
  • Geschrieben in C++ und mit dem gewünschten Backend betreibbar: Unicorn Engine, icicle-emu, Hyper-V(WHP)
  • Erweiterte Speicherverwaltung: Auf der Speicherverwaltung von Unicorn aufgebaut und Unterstützung für Windows-spezifische Speichertypen wie reserved und committed
  • Vollständige PE-Ladeunterstützung: Verarbeitung des Ladens von ausführbaren Dateien und DLLs, korrektes Memory-Mapping, Relocations und TLS-Unterstützung
  • Ausnahmebehandlung: Implementiert Windows Structured Exception Handling (SEH) mit Unterstützung für Exception Dispatcher und Unwinding
  • Thread-Unterstützung: Bietet ein Threading-Modell mit Round-Robin-Scheduling
  • State-Management: Unterstützt sowohl vollständige Zustandsserialisierung als auch schnelle In-Memory-Snapshots
  • Debugging-Schnittstelle: Implementiert das GDB-Serial-Protokoll und kann mit IDA Pro, GDB, LLDB, VS Code usw. integriert werden
  • Bei der Malware-Analyse ist die Host-Isolation möglicherweise nicht vollständig, daher wird die Nutzung der browser-sandboxbasierten Web-Version empfohlen
  • Automatisierung mit Python möglich
    • Installation mit pip install sogen
    • Emulator ausführen, Callbacks registrieren und WinAPI-Call-Intercepts direkt in Python verarbeiten

Siehe auch die Vortragsfolien: Fake It ‘til We Make It: The Art of Windows User Space Emulation

  • Was ist Windows User Space Emulation?
    • Eine Technik, bei der ein Prozess innerhalb eines Emulators ausgeführt und das darunterliegende OS und der Kernel simuliert werden
    • Während bei klassischer Emulation Code auf einer virtuellen CPU läuft und Hardware simuliert wird, imitiert Userspace-Emulation darüber hinaus auch die OS- und Kernel-Schicht
    • Der zentrale Wert davon ist die vollständige Kontrolle über den ausgeführten Code — der Emulator kann in jede Ausführungsphase eingreifen
    • Die Kontrolle erfolgt über Hooking-Points
      • Hooking von Speicherzugriffen — Abfangen auf Ebene von read, write und execute
      • Hooking der Befehlsausführung — Erkennen des Ausführungszeitpunkts bestimmter Instruktionen wie syscall, cpuid und rdtsc
      • Hooking der Ausführung neuer Codepfade — Erkennen von Codepfaden, die erstmals ausgeführt werden
    • Dank dieser Hooking-Fähigkeiten sind das Abfangen externer Kommunikation, die Nachverfolgung des Ausführungsflusses und die Messung der Code-Coverage möglich; das bildet die Grundlage für DRM-Analyse, Malware-Analyse, Schwachstellenanalyse und Sicherheitsforschung
  • Der Vortragende ist DRM-Entwickler und hat zahlreiche DRM-Systeme wie Steam CEG, Arxan und Denuvo reversiert und umgangen
  • Bei der Analyse des von vielen Windows-Spielen eingesetzten Denuvo-DRM war Emulation ein zentrales Mittel
    • Moderne DRM-Systeme machen statische und dynamische Analyse durch Obfuskation, Anti-Tampering und Anti-Debugging oft unmöglich
  • Einsatz des Emulators für Schwachstellenanalyse (Fuzzing): Eingaben werden innerhalb des Emulators randomisiert, per Hooking wird Code-Coverage-Feedback gewonnen, und die Ausführung ist vorhersagbar und reproduzierbar
  • Die Grenzen bestehender Lösungen waren die Motivation für die Entwicklung
    • Qiling, Speakeasy und Dumpulator sind in Python geschrieben und bei DRM-Analysen mit vielen Hooks extrem langsam
    • Binee und Unicorn PE sind API-Level-Neuimplementierungen und daher unvollständig sowie potenziell fehleranfällig
  • Umfang der syscalls: allgemeine syscalls in ntdll.dll 409, UI-syscalls in win32u.dll 1474
  • Die hohe Emulationsgeschwindigkeit ist JIT zu verdanken

Noch keine Kommentare.

Noch keine Kommentare.