LoadLibrary, una capa para cargar DLL de Windows en aplicaciones de Linux

Tavis Ormandy (Tavis Ormandy), un investigador de seguridad de Google que está desarrollando el proyecto. LoadLibrary, destinado a portar archivos DLL compilados para Windows para su uso en aplicaciones de Linux. El proyecto proporciona una biblioteca de capas con la que puede cargar un archivo DLL en formato PE/COFF y llamar a las funciones definidas en él. El gestor de arranque PE/COFF se basa en código envoltorio. Código de proyecto distribuido por licenciado bajo GPLv2.

LoadLibrary se encarga de cargar la biblioteca en la memoria e importar los símbolos existentes, proporcionando a la aplicación Linux una API de estilo dlopen. El código del complemento se puede depurar utilizando gdb, ASAN y Valgrind. Es posible ajustar el código ejecutable durante la ejecución conectando ganchos y aplicando parches (parches en tiempo de ejecución). Admite el manejo y desenredado de excepciones para C++.

El objetivo del proyecto es organizar pruebas de fuzzing distribuidas escalables y eficientes de bibliotecas DLL en un entorno basado en Linux. En Windows, las pruebas de cobertura y fuzzing no son muy eficientes y a menudo requieren ejecutar una instancia virtualizada separada de Windows, especialmente cuando se intenta analizar productos complejos como software antivirus que abarcan el kernel y el espacio del usuario. Utilizando LoadLibrary, los investigadores de Google buscan vulnerabilidades en códecs de vídeo, escáneres de virus, bibliotecas de descompresión de datos, decodificadores de imágenes, etc.

Por ejemplo, con la ayuda de LoadLibrary pudimos portar el motor antivirus de Windows Defender para ejecutarlo en Linux. El estudio de mpengine.dll, que forma la base de Windows Defender, permitió analizar una gran cantidad de procesadores sofisticados en busca de diversos formatos, emuladores de sistemas de archivos e intérpretes de idiomas que potencialmente proporcionan vectores para posible ataques.

LoadLibrary también se utilizó para identificar vulnerabilidad remota en el paquete antivirus Avast. Al estudiar la DLL de este antivirus, se reveló que el proceso de escaneo privilegiado clave incluye un intérprete de JavaScript completo que se utiliza para emular la ejecución de código JavaScript de terceros. Este proceso no está aislado en un entorno sandbox, no restablece privilegios y analiza datos externos no verificados del sistema de archivos y el tráfico de red interceptado. Dado que cualquier vulnerabilidad en este proceso complejo y desprotegido podría potencialmente llevar a un compromiso remoto de todo el sistema, se desarrolló un shell especial basado en LoadLibrary. avscript analizar vulnerabilidades en el escáner antivirus Avast en un entorno basado en Linux.

Fuente: opennet.ru

Añadir un comentario