LoadLibrary, warstwa do ładowania DLL Windows w aplikacjach Linux.

Tavis Ormandy (Tavis Ormandy), badacz bezpieczeństwa z Google, rozwija projekt LoadLibrary, który ma na celu portowanie zebranych dla systemu Windows bibliotek DLL do ich użycia w aplikacjach dla systemu Linux. Projekt obejmuje bibliotekę pośrednią, dzięki której można załadować plik DLL w formacie PE/COFF i wywołać określone w nim funkcje. Ładowarka PE/COFF opiera się na kodzie ndiswrapper. Kod projektu rozpowszechniany na licencji GPLv2.

LoadLibrary przejmuje funkcje ładowania biblioteki do pamięci i importowania dostępnych symboli, zapewniając aplikacji Linux API w stylu dlopen. Podłączony kod może być debugowany za pomocą gdb, ASAN i Valgrind. Przewidziano możliwość modyfikacji wykonywanego kodu w czasie rzeczywistym poprzez podłączanie haczyków i nakładanie poprawek (runtime patching). Obsługiwane są obsługa i rozwijanie (unwinding) wyjątków dla C++.

Celem projektu jest organizacja skalowalnego i efektywnego rozproszonego testowania fuzzingowego bibliotek DLL w środowisku opartym na Linux. W systemie Windows przeprowadzanie testów fuzzingowych i pokrywania nie pozwala na osiągnięcie należytej efektywności i często wymaga uruchomienia oddzielnego zwirtualizowanego egzemplarza systemu Windows, szczególnie przy próbie analizy złożonych produktów, takich jak oprogramowanie antywirusowe, zajmujące się pracą na poziomie jądra i przestrzeni użytkownika. Dzięki LoadLibrary badacze z Google prowadzą poszukiwania luk w kodach wideo, skanerach antywirusowych, bibliotekach rozpakowywania danych, dekoderach obrazów itp.

Na przykład dzięki LoadLibrary udało się zaportować silnik antywirusowy Windows Defender do uruchomienia w Linux. Badanie mpengine.dll, będącego rdzeniem Windows Defender, umożliwiło analizę dużej liczby złożonych procesorów różnych formatów, emulatorów FS i interpreterów języków, potencjalnie dostarczających wektory do możliwych atakami.

LoadLibrary był również używany do identyfikacji zdalnej luki w pakiecie antywirusowym Avast. Podczas badania DLL tego antywirusa zidentyfikowano, że kluczowy proces skanowania z przywilejami obejmuje pełnoprawny interpreter JavaScript, który jest używany do emulacji wykonywania zewnętrznego kodu JavaScript. Proces ten nie jest izolowany w środowisku sandbox, nie obniża przywilejów i analizuje niezweryfikowane zewnętrzne dane z systemu plików oraz przechwyconego ruchu sieciowego. Ponieważ każda luka w tym złożonym i niechronionym procesie może potencjalnie prowadzić do zdalnej kompromentacji całego systemu, na bazie LoadLibrary stworzono specjalną nakładkę. avscript do analizy luk w skanerze antywirusowym Avast w środowisku opartym na Linuxie.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster