LoadLibrary, unha capa para cargar DLL de Windows en aplicacións Linux

Tavis Ormandy (Tavis ormandy), un investigador de seguridade de Google que está a desenvolver o proxecto Cargar biblioteca, destinado a portar DLL compilados para Windows para o seu uso en aplicacións Linux. O proxecto proporciona unha biblioteca de capas coa que pode cargar un ficheiro DLL en formato PE/COFF e chamar ás funcións definidas nel. O cargador de arranque PE/COFF baséase no código envoltura. Código do proxecto distribuído por licenciado baixo GPLv2.

LoadLibrary encárgase de cargar a biblioteca na memoria e importar símbolos existentes, proporcionando á aplicación Linux unha API de estilo dlopen. O código do complemento pódese depurar mediante gdb, ASAN e Valgrind. É posible axustar o código executable durante a execución conectando ganchos e aplicando parches (corrección en tempo de execución). Admite o manexo de excepcións e desenrolamento para C++.

O obxectivo do proxecto é organizar probas fuzzing distribuídas escalables e eficientes de bibliotecas DLL nun ambiente baseado en Linux. En Windows, as probas de fuzzing e de cobertura non son moi eficientes e moitas veces requiren executar unha instancia virtualizada separada de Windows, especialmente cando se intenta analizar produtos complexos como o software antivirus que abarca o núcleo e o espazo do usuario. Usando LoadLibrary, os investigadores de Google buscan vulnerabilidades en códecs de vídeo, escáneres de virus, bibliotecas de descompresión de datos, decodificadores de imaxes, etc.

Por exemplo, coa axuda de LoadLibrary puidemos portar o motor antivirus Windows Defender para executalo en Linux. O estudo de mpengine.dll, que constitúe a base de Windows Defender, permitiu analizar un gran número de procesadores sofisticados para varios formatos, emuladores de sistemas de ficheiros e intérpretes de linguaxe que potencialmente proporcionan vectores para posible ataques.

LoadLibrary tamén se utilizou para identificar vulnerabilidade remota no paquete antivirus Avast. Ao estudar a DLL deste antivirus, revelouse que o proceso de dixitalización con privilexios clave inclúe un intérprete de JavaScript completo usado para emular a execución de código JavaScript de terceiros. Este proceso non está illado nun ambiente sandbox, non restablece os privilexios e analiza os datos externos non verificados do sistema de ficheiros e o tráfico de rede interceptado. Dado que calquera vulnerabilidade neste proceso complexo e desprotexido podería levar a un compromiso remoto de todo o sistema, desenvolveuse un shell especial baseado en LoadLibrary. avscript para analizar vulnerabilidades do escáner antivirus Avast nun ambiente baseado en Linux.

Fonte: opennet.ru

Engadir un comentario