LoadLibrary, eine Ebene zum Laden von Windows-DLLs in Linux-Anwendungen

Tavis Ormandy (Tavis Ormandy), ein Sicherheitsforscher bei Google, der das Projekt entwickelt LoadLibrary, mit dem Ziel, für Windows kompilierte DLLs zur Verwendung in Linux-Anwendungen zu portieren. Das Projekt stellt eine Layer-Bibliothek zur Verfügung, mit der Sie eine DLL-Datei im PE/COFF-Format laden und die darin definierten Funktionen aufrufen können. Der PE/COFF-Bootloader basiert auf Code ndiswrapper. Projektnummer vertrieben von lizenziert unter GPLv2.

LoadLibrary kümmert sich um das Laden der Bibliothek in den Speicher und den Import vorhandener Symbole und stellt der Linux-Anwendung eine API im Dlopen-Stil bereit. Der Plug-in-Code kann mit gdb, ASAN und Valgrind debuggt werden. Es besteht die Möglichkeit, den ausführbaren Code während der Ausführung anzupassen, indem Hooks verbunden und Patches angewendet werden (Runtime-Patching). Unterstützt die Ausnahmebehandlung und Abwicklung für C++.

Ziel des Projekts ist die Organisation skalierbarer und effizienter verteilter Fuzzing-Tests von DLL-Bibliotheken in einer Linux-basierten Umgebung. Unter Windows sind Fuzzing und Coverage-Tests nicht sehr effizient und erfordern häufig die Ausführung einer separaten virtualisierten Instanz von Windows, insbesondere wenn versucht wird, komplexe Produkte wie Antivirensoftware zu analysieren, die den Kernel und den Benutzerbereich umfassen. Mit LoadLibrary suchen Google-Forscher nach Schwachstellen in Video-Codecs, Virenscannern, Datendekomprimierungsbibliotheken, Bilddecodern usw.

Mithilfe von LoadLibrary konnten wir beispielsweise die Antiviren-Engine Windows Defender für die Ausführung unter Linux portieren. Die Untersuchung von mpengine.dll, die die Grundlage von Windows Defender bildet, ermöglichte die Analyse einer großen Anzahl hochentwickelter Prozessoren für verschiedene Formate, Dateisystememulatoren und Sprachinterpreter, die potenziell Vektoren bereitstellen möglich Anschläge.

Zur Identifizierung wurde auch LoadLibrary verwendet Remote-Sicherheitslücke im Avast-Antivirenpaket. Bei der Untersuchung der DLL dieses Antivirenprogramms stellte sich heraus, dass der wichtige privilegierte Scanvorgang einen vollwertigen JavaScript-Interpreter umfasst, der zur Emulation der Ausführung von JavaScript-Code von Drittanbietern verwendet wird. Dieser Prozess ist in einer Sandbox-Umgebung nicht isoliert, setzt keine Berechtigungen zurück und analysiert nicht überprüfte externe Daten aus dem Dateisystem und abgefangenen Netzwerkverkehr. Da jede Schwachstelle in diesem komplexen und ungeschützten Prozess potenziell zu einer Remote-Kompromittierung des gesamten Systems führen könnte, wurde eine spezielle Shell auf Basis von LoadLibrary entwickelt avscript zur Analyse von Schwachstellen im Avast-Antivirenscanner in einer Linux-basierten Umgebung.

Source: opennet.ru

Kommentar hinzufügen