LoadLibrary, un strat pentru încărcarea DLL-urilor Windows în aplicațiile Linux

Tavis Ormandy (Tavis ormandy), un cercetător de securitate la Google care dezvoltă proiectul LoadLibrary, care vizează portarea DLL-urilor compilate pentru Windows pentru a fi utilizate în aplicațiile Linux. Proiectul oferă o bibliotecă de straturi cu care puteți încărca un fișier DLL în format PE/COFF și puteți apela funcțiile definite în acesta. Bootloader-ul PE/COFF se bazează pe cod ndiswrapper. Cod proiect distribuit de licențiat conform GPLv2.

LoadLibrary se ocupă de încărcarea bibliotecii în memorie și de importarea simbolurilor existente, oferind aplicației Linux un API în stil dlopen. Codul de plug-in poate fi depanat folosind gdb, ASAN și Valgrind. Este posibil să ajustați codul executabil în timpul execuției prin conectarea cârligelor și aplicarea de patch-uri (patching în timpul execuției). Acceptă gestionarea excepțiilor și derularea pentru C++.

Scopul proiectului este de a organiza testarea fuzzing distribuită scalabilă și eficientă a bibliotecilor DLL într-un mediu bazat pe Linux. Pe Windows, testarea fuzzing și acoperirea nu este foarte eficientă și adesea necesită rularea unei instanțe virtualizate separate de Windows, mai ales atunci când încercați să analizați produse complexe, cum ar fi software-ul antivirus, care acoperă nucleul și spațiul utilizatorului. Folosind LoadLibrary, cercetătorii Google caută vulnerabilități în codecuri video, scanere de viruși, biblioteci de decompresie a datelor, decodore de imagini etc.

De exemplu, cu ajutorul LoadLibrary am putut porta motorul antivirus Windows Defender pentru a rula pe Linux. Studiul mpengine.dll, care stă la baza Windows Defender, a făcut posibilă analiza unui număr mare de procesoare sofisticate pentru diferite formate, emulatori de sisteme de fișiere și interpreți de limbă care pot oferi vectori pentru posibil atac.

LoadLibrary a fost folosit și pentru a identifica vulnerabilitate la distanță în pachetul antivirus Avast. La studierea DLL-ului de la acest antivirus, a fost dezvăluit că procesul de scanare cu privilegii cheie include un interpret JavaScript cu drepturi depline, utilizat pentru a emula execuția codului JavaScript terță parte. Acest proces nu este izolat într-un mediu sandbox, nu resetează privilegiile și analizează datele externe neverificate din sistemul de fișiere și traficul de rețea interceptat. Deoarece orice vulnerabilitate din acest proces complex și neprotejat ar putea duce la compromisul de la distanță a întregului sistem, a fost dezvoltat un shell special bazat pe LoadLibrary. avscript pentru a analiza vulnerabilitățile din scanerul antivirus Avast într-un mediu bazat pe Linux.

Sursa: opennet.ru

Adauga un comentariu