LoadLibrary, uma camada para carregar DLL do Windows em aplicações Linux

Tavis Ormandy (Tavis Ormandy), pesquisador de segurança do Google, desenvolve um projeto LoadLibrary, voltado para a portabilidade de bibliotecas DLL coletadas para Windows, para seu uso em aplicações Linux. O projeto oferece uma biblioteca de interface, permitindo carregar arquivos DLL no formato PE/COFF e invocar funções específicas contidas neles. O carregador PE/COFF é baseado no código ndiswrapper. O código do projeto é distribuído sob a licença GPLv2.

LoadLibrary realiza as funções de carregar a biblioteca na memória e importar os símbolos disponíveis, fornecendo à aplicação Linux uma API no estilo dlopen. O código carregado pode ser depurado usando gdb, ASAN e Valgrind. Há suporte para ajustes no código executável durante a execução através da implementação de hooks e aplicação de patches (runtime patching). O suporte para depuração e desenrolamento (unwinding) de exceções para C++ está disponível.

O objetivo do projeto é organizar um fuzzing distribuído escalável e eficiente para bibliotecas DLL em um ambiente Linux. No Windows, a realização de testes de fuzzing e cobertura não permite alcançar a eficiência necessária e frequentemente requer a execução de uma instância virtualizada separada do Windows, especialmente ao tentar analisar produtos complexos, como software antivírus que envolvem operações no nível núcleo e espaço do usuário. Com o LoadLibrary, os pesquisadores do Google estão buscando vulnerabilidades em codecs de vídeo, scanners antivírus, bibliotecas de descompactação de dados, decodificadores de imagem, entre outros.

Por exemplo, com o LoadLibrary foi possível portar o mecanismo antivírus Windows Defender para execução no Linux. A análise do mpengine.dll, que é a base do Windows Defender, permitiu investigar um grande número de manipuladores complexos de diferentes formatos, emuladores de FS e interpretadores de linguagens, que potencialmente forneciam vetores para possíveis ataques.

O LoadLibrary também foi utilizado na identificação de vulnerabilidade remota no pacote antivírus Avast. Ao estudar a DLL deste antivírus, foi descoberto que o processo privilegiado de varredura inclui um interpretador JavaScript completo, usado para emular a execução de código JavaScript de terceiros. Este processo não está isolado em um ambiente sandbox, não redefine privilégios e analisa dados externos não verificados do sistema de arquivos e do tráfego de rede interceptado. Como qualquer vulnerabilidade neste processo complexo e desprotegido pode potencialmente levar à comprometimento remoto de todo o sistema, uma camada especial foi desenvolvida com base no LoadLibrary. avscript para analisar vulnerabilidades no escâner antivírus Avast em um ambiente baseado em Linux.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster