LoadLibrary, una capa per carregar DLL de Windows a aplicacions Linux

Tavis Ormandy (Tavis Ormandy), un investigador de seguretat de Google que està desenvolupant el projecte LoadLibrary, destinada a portar fitxers DLL compilats per a Windows per utilitzar-los en aplicacions Linux. El projecte proporciona una biblioteca de capes amb la qual podeu carregar un fitxer DLL en format PE/COFF i cridar les funcions que s'hi defineixen. El carregador d'arrencada PE/COFF es basa en el codi embolcall. Codi del projecte Distribuït per amb llicència GPLv2.

LoadLibrary s'encarrega de carregar la biblioteca a la memòria i d'importar símbols existents, proporcionant a l'aplicació Linux una API d'estil dlopen. El codi del connector es pot depurar mitjançant gdb, ASAN i Valgrind. És possible ajustar el codi executable durant l'execució connectant ganxos i aplicant pedaços (pegat en temps d'execució). Admet el maneig d'excepcions i el desenrotllament per a C++.

L'objectiu del projecte és organitzar proves de fuzzing distribuïdes escalables i eficients de biblioteques DLL en un entorn basat en Linux. A Windows, les proves de fuzzing i de cobertura no són gaire eficients i sovint requereixen executar una instància virtualitzada separada de Windows, especialment quan s'intenta analitzar productes complexos com ara programari antivirus que abasta el nucli i l'espai d'usuari. Amb LoadLibrary, els investigadors de Google cerquen vulnerabilitats en còdecs de vídeo, escàners de virus, biblioteques de descompressió de dades, descodificadors d'imatges, etc.

Per exemple, amb l'ajuda de LoadLibrary vam poder portar el motor antivirus Windows Defender per executar-lo a Linux. L'estudi de mpengine.dll, que és la base de Windows Defender, va permetre analitzar un gran nombre de processadors sofisticats per a diversos formats, emuladors de sistemes de fitxers i intèrprets d'idiomes que potencialment proporcionen vectors per a possible atacs.

LoadLibrary també es va utilitzar per identificar vulnerabilitat remota al paquet antivirus Avast. Quan s'estudiava la DLL d'aquest antivirus, es va revelar que el procés d'escaneig amb privilegis clau inclou un intèrpret de JavaScript complet que s'utilitza per emular l'execució de codi JavaScript de tercers. Aquest procés no està aïllat en un entorn sandbox, no restableix privilegis i analitza les dades externes no verificades del sistema de fitxers i el trànsit de xarxa interceptat. Com que qualsevol vulnerabilitat en aquest procés complex i desprotegit podria conduir a un compromís remot de tot el sistema, es va desenvolupar un shell especial basat en LoadLibrary. avscript per analitzar les vulnerabilitats de l'escàner antivirus Avast en un entorn basat en Linux.

Font: opennet.ru

Afegeix comentari