LoadLibrary, ett lager för att ladda Windows DLL-filer i Linux-applikationer

Tavis Ormandy (Tavis ormandy), en säkerhetsforskare på Google som utvecklar projektet Loadlibrary, som syftar till att portera DLL-filer kompilerade för Windows för användning i Linux-applikationer. Projektet tillhandahåller ett lagerbibliotek med vilket du kan ladda en DLL-fil i PE/COFF-format och anropa funktionerna som definieras i den. PE/COFF bootloader är baserad på kod ndiswrapper. Projektkod levererad av licensierad under GPLv2.

LoadLibrary tar hand om att ladda biblioteket till minnet och importera befintliga symboler, vilket förser Linux-applikationen med ett API i dlopen-stil. Plug-in-koden kan felsökas med gdb, ASAN och Valgrind. Det är möjligt att justera den körbara koden under exekvering genom att ansluta hooks och applicera patchar (runtime patching). Stöder undantagshantering och avveckling för C++.

Målet med projektet är att organisera skalbar och effektiv distribuerad fuzzing-testning av DLL-bibliotek i en Linux-baserad miljö. På Windows är fuzzing- och täckningstestning inte särskilt effektiv och kräver ofta att en separat virtualiserad instans av Windows körs, särskilt när man försöker analysera komplexa produkter som antivirusprogram som spänner över kärnan och användarutrymmet. Med hjälp av LoadLibrary söker Googles forskare efter sårbarheter i videokodekar, virusskannrar, datadekompressionsbibliotek, bildavkodare, etc.

Till exempel, med hjälp av LoadLibrary kunde vi porta Windows Defender antivirusmotor för att köras på Linux. Studien av mpengine.dll, som ligger till grund för Windows Defender, gjorde det möjligt att analysera ett stort antal sofistikerade processorer för olika format, filsystememulatorer och språktolkar som potentiellt tillhandahåller vektorer för möjlig attacker.

LoadLibrary användes också för att identifiera sårbarhet på avstånd i Avast antiviruspaket. När man studerade DLL från detta antivirus, avslöjades det att den nyckelprivilegierade skanningsprocessen inkluderar en fullfjädrad JavaScript-tolk som används för att emulera exekvering av JavaScript-kod från tredje part. Denna process är inte isolerad i en sandlådemiljö, återställer inte privilegier och analyserar overifierade externa data från filsystemet och avlyssnad nätverkstrafik. Eftersom varje sårbarhet i den här komplexa och oskyddade processen potentiellt kan leda till att hela systemet på distans kompromitteras, utvecklades ett speciellt skal baserat på LoadLibrary avscript att analysera sårbarheter i Avasts antivirusskanner i en Linux-baserad miljö.

Källa: opennet.ru

Lägg en kommentar