LoadLibrary, vrstva na načítanie Windows DLL do Linuxových aplikácií

Tavis Ormandy (Tavis ormandy), bezpečnostný výskumník v spoločnosti Google, ktorý projekt vyvíja LoadLibrary, zameraný na portovanie knižníc DLL skompilovaných pre Windows na použitie v aplikáciách Linux. Projekt poskytuje knižnicu vrstiev, pomocou ktorej môžete načítať súbor DLL vo formáte PE/COFF a volať funkcie v ňom definované. PE/COFF bootloader je založený na kóde ndiswrapper. Kód projektu distribuovaný pod licenciou GPLv2.

LoadLibrary sa stará o načítanie knižnice do pamäte a import existujúcich symbolov, čím poskytuje linuxovej aplikácii API v štýle dlopen. Kód zásuvného modulu je možné ladiť pomocou gdb, ASAN a Valgrind. Spustiteľný kód je možné upraviť počas vykonávania pripojením háčikov a aplikovaním záplat (runtime patching). Podporuje spracovanie výnimiek a uvoľnenie pre C++.

Cieľom projektu je zorganizovať škálovateľné a efektívne distribuované fuzzing testovanie DLL knižníc v prostredí založenom na Linuxe. V systéme Windows nie je fuzzing a testovanie pokrytia veľmi efektívne a často vyžaduje spustenie samostatnej virtualizovanej inštancie systému Windows, najmä ak sa pokúšate analyzovať zložité produkty, ako je antivírusový softvér, ktorý pokrýva jadro a používateľský priestor. Pomocou LoadLibrary výskumníci Google hľadajú zraniteľné miesta vo video kodekoch, vírusových skeneroch, knižniciach na dekompresiu údajov, dekodéroch obrázkov atď.

Napríklad pomocou LoadLibrary sa nám podarilo preniesť antivírusový modul Windows Defender, aby fungoval v systéme Linux. Štúdia mpengine.dll, ktorá tvorí základ programu Windows Defender, umožnila analyzovať veľké množstvo sofistikovaných procesorov pre rôzne formáty, emulátory súborových systémov a jazykové interpretery, ktoré potenciálne poskytujú vektory pre možné útokov.

Na identifikáciu bola použitá aj LoadLibrary vzdialená zraniteľnosť v antivírusovom balíku Avast. Pri štúdiu DLL z tohto antivírusu sa ukázalo, že kľúčový privilegovaný proces skenovania zahŕňa plnohodnotný interpret JavaScriptu, ktorý sa používa na emuláciu vykonávania kódu JavaScript tretích strán. Tento proces nie je izolovaný v prostredí karantény, neresetuje privilégiá a analyzuje neoverené externé údaje zo systému súborov a zachytenú sieťovú prevádzku. Keďže akákoľvek zraniteľnosť v tomto zložitom a nechránenom procese by mohla potenciálne viesť k vzdialenému ohrozeniu celého systému, bol vyvinutý špeciálny shell založený na LoadLibrary avscript na analýzu zraniteľností antivírusového skenera Avast v prostredí založenom na systéme Linux.

Zdroj: opennet.ru

Pridať komentár