LoadLibrary, sluoksnis, skirtas Windows DLL įkelti į Linux programas

Tavis Ormandy (Tavis ormandy), „Google“ saugumo tyrinėtojas, kuriantis projektą „LoadLibrary“, skirtas perkelti DLL, sudarytus „Windows“, kad būtų galima naudoti „Linux“ programose. Projektas suteikia sluoksnių biblioteką, su kuria galite įkelti DLL failą PE/COFF formatu ir iškviesti jame apibrėžtas funkcijas. PE/COFF įkrovos programa yra pagrįsta kodu ndiswrapper. Projekto kodas išplatino licencijuota pagal GPLv2.

„LoadLibrary“ rūpinasi bibliotekos įkėlimu į atmintį ir esamų simbolių importavimu, suteikdama „Linux“ programai „dlopen“ tipo API. Papildinio kodą galima derinti naudojant gdb, ASAN ir Valgrind. Vykdymo metu galima koreguoti vykdomąjį kodą sujungiant kabliukus ir pritaikant pataisas (runtime patching). Palaiko C++ išimčių tvarkymą ir išvyniojimą.

Projekto tikslas – organizuoti keičiamo dydžio ir efektyvų paskirstytą neryškų DLL bibliotekų testavimą Linux pagrindu veikiančioje aplinkoje. „Windows“ sistemoje „fuzzing“ ir aprėpties testavimas nėra labai efektyvus ir dažnai reikia paleisti atskirą virtualizuotą „Windows“ egzempliorių, ypač bandant analizuoti sudėtingus produktus, tokius kaip antivirusinė programinė įranga, apimanti branduolį ir vartotojo erdvę. Naudodami LoadLibrary, Google mokslininkai ieško vaizdo kodekų, virusų skaitytuvų, duomenų išskleidimo bibliotekų, vaizdo dekoderių ir kt. spragų.

Pavyzdžiui, „LoadLibrary“ pagalba galėjome perkelti „Windows Defender“ antivirusinį variklį, kad jis veiktų „Linux“. Ištyrus mpengine.dll, kuris yra „Windows Defender“ pagrindas, buvo galima išanalizuoti daugybę sudėtingų įvairių formatų procesorių, failų sistemos emuliatorių ir kalbos vertėjų, kurie potencialiai teikia vektorius galima išpuolių.

LoadLibrary taip pat buvo naudojamas identifikuoti nuotolinis pažeidžiamumas „Avast“ antivirusiniame pakete. Ištyrus šios antivirusinės programos DLL, paaiškėjo, kad pagrindinis privilegijuotas nuskaitymo procesas apima visavertį JavaScript interpretatorių, naudojamą imituoti trečiosios šalies JavaScript kodo vykdymą. Šis procesas nėra izoliuotas smėlio dėžės aplinkoje, iš naujo nenustatomos privilegijos ir analizuojami nepatvirtinti išoriniai failų sistemos duomenys bei perimtas tinklo srautas. Kadangi bet koks šio sudėtingo ir neapsaugoto proceso pažeidžiamumas gali sukelti nuotolinį visos sistemos pažeidimą, buvo sukurtas specialus apvalkalas, pagrįstas LoadLibrary. avscript analizuoti „Avast“ antivirusinio skaitytuvo pažeidžiamumus „Linux“ aplinkoje.

Šaltinis: opennet.ru

Добавить комментарий