LoadLibrary, een laag voor het laden van Windows DLL's in Linux-applicaties

Tavis Ormandië (Tavis ormandy), een beveiligingsonderzoeker bij Google die het project ontwikkelt Laadbibliotheek, gericht op het porten van DLL's die voor Windows zijn gecompileerd voor gebruik in Linux-toepassingen. Het project biedt een lagenbibliotheek waarmee u een DLL-bestand in PE/COFF-formaat kunt laden en de daarin gedefinieerde functies kunt oproepen. PE/COFF-bootloader is gebaseerd op code ndisverpakking. Projectcode gedistribueerd door gelicentieerd onder GPLv2.

LoadLibrary zorgt voor het laden van de bibliotheek in het geheugen en het importeren van bestaande symbolen, waardoor de Linux-applicatie wordt voorzien van een dlopen-stijl API. De plug-incode kan worden gedebugd met behulp van gdb, ASAN en Valgrind. Het is mogelijk om tijdens de uitvoering de uitvoerbare code aan te passen door hooks te verbinden en patches toe te passen (runtime patching). Ondersteunt het afhandelen en afwikkelen van uitzonderingen voor C++.

Het doel van het project is het organiseren van schaalbare en efficiënte gedistribueerde fuzzing-tests van DLL-bibliotheken in een Linux-gebaseerde omgeving. Op Windows zijn fuzzing- en dekkingstests niet erg efficiënt en vereisen vaak het uitvoeren van een afzonderlijk gevirtualiseerd exemplaar van Windows, vooral wanneer u complexe producten probeert te analyseren, zoals antivirussoftware die de kernel en de gebruikersruimte omspant. Met behulp van LoadLibrary zoeken Google-onderzoekers naar kwetsbaarheden in videocodecs, virusscanners, data-decompressiebibliotheken, beelddecoders, enz.

Met de hulp van LoadLibrary konden we bijvoorbeeld de Windows Defender-antivirusengine overzetten naar Linux. De studie van mpengine.dll, die de basis vormt van Windows Defender, maakte het mogelijk een groot aantal geavanceerde processors voor verschillende formaten, bestandssysteememulators en taaltolken te analyseren die mogelijk vectoren leveren voor mogelijk aanvallen.

LoadLibrary werd ook gebruikt om te identificeren kwetsbaarheid op afstand in het Avast-antiviruspakket. Bij het bestuderen van de DLL van dit antivirusprogramma werd onthuld dat het belangrijkste bevoorrechte scanproces een volwaardige JavaScript-interpreter omvat die wordt gebruikt om de uitvoering van JavaScript-code van derden te emuleren. Dit proces is niet geïsoleerd in een sandbox-omgeving, reset geen rechten en analyseert niet-geverifieerde externe gegevens uit het bestandssysteem en onderschept netwerkverkeer. Omdat elke kwetsbaarheid in dit complexe en onbeschermde proces mogelijk zou kunnen leiden tot een aanval op afstand van het hele systeem, werd een speciale shell ontwikkeld op basis van LoadLibrary avscript om kwetsbaarheden in de Avast-antivirusscanner in een Linux-gebaseerde omgeving te analyseren.

Bron: opennet.ru

Voeg een reactie