
Ferramenta automatizada de descoberta de vulnerabilidades de sequestro de DLL que analisa binários PE em tempo de carga e tempo de execução via hooking de API, enumerando DLLs ausentes e testando personificação maliciosa.
aDLL é uma ferramenta de análise binária focada na descoberta automática de vulnerabilidades de DLL Hijacking. A ferramenta analisa a imagem do binário carregado em memória para procurar DLLs carregadas em tempo de carga e faz uso da biblioteca Microsoft Detours para interceptar chamadas às funções LoadLibrary/LoadLibraryEx para analisar DLLs carregadas em tempo de execução. O objetivo é obter uma lista de DLLs que não são encontradas pelo executável nas pastas onde são procuradas.
Para começar a usar o aDLL, um executável compilado está disponível na pasta Binaries. Recomenda-se usar a versão cuja arquitetura (32 bits ou 64 bits) corresponda à versão do executável a ser analisado.
Para o funcionamento correto da ferramenta, é necessário que as DLLs "hook32", "hook64", "informer32" e "informer64" estejam localizadas no mesmo diretório que o executável aDLL.exe.
aDLL foi desenvolvido e testado em sistemas Windows 10. Se o sistema for antigo e/ou o Visual Studio não estiver instalado, é possível que a ferramenta apresente um erro como "VCRUNTIME140.dll not found". Neste caso, a atualização do Visual C++ Redistributável deve ser instalada. A atualização pode ser encontrada aqui: https://www.microsoft.com/es-ES/download/details.aspx?id=49984.
Para modificar/recompilar a ferramenta, recomenda-se o uso do Visual Studio 2015 ou posterior. A solução do Visual Studio consiste em três projetos: aDLL, Hook e Informer. _ -aDLL: deve ser compilado como um executável. Se ocorrerem erros de ligação, será necessário adicionar a biblioteca shlwapi.lib usando o vinculador do Visual Studio como uma dependência adicional._ _ -Hook: deve ser compilado como uma DLL com a mesma arquitetura do executável a ser analisado. O arquivo Hook resultante deve ser renomeado para hook32.dll ou hook64.dll conforme apropriado. Se desejar analisar executáveis de ambas as arquiteturas, será necessário ter ambas as DLLs no mesmo diretório que aDLL.exe._ _ -Informer: igual ao Hook. Deve ser compilado como uma DLL e renomeado para informer32.dll ou informer64.dll._
A ferramenta possui uma opção -h para imprimir uma breve descrição das opções disponíveis na tela.
.\aDLL -h
Como exemplo comum de uso, o aDLL deve receber pelo menos o caminho para o executável a ser analisado.
.\aDLL -e "C:\System32\notepad.exe"
OPÇÕES:
-h Exibe a ajuda da ferramenta com uma breve descrição de cada opção.
-e Especifica o caminho para o executável a ser analisado pelo aDLL.
-t Especifica um caminho para um arquivo de texto com uma lista de caminhos de executáveis.
-o Especifica um caminho para um diretório no qual um relatório será armazenado para cada executável verificado.
-m Procura o manifesto do executável e o exibe na tela. O aDLL procura o manifesto incorporado no binário, não encontrará o manifesto se ele existir como um arquivo externo.
-w Define o número de segundos que o processo do executável será mantido aberto enquanto procura DLLs carregadas em tempo de execução. O tempo padrão é 20 segundos.
-aDLL testará automaticamente se uma DLL maliciosa é executada ao se passar pela DLL legítima na ordem de pesquisa, se uma DLL candidata foi encontrada.
-d Usado em conjunto com a opção -a, esta opção permite selecionar um caminho para uma DLL que será usada como a DLL maliciosa.
-r Cada DLL importada pelo executável pode, por sua vez, importar outras DLLs como dependências. Será feita uma pesquisa "n" vezes recursiva em todas essas DLLs encontradas pelo aDLL que não são redirecionadas (ApiSetSchema ou WinSxS) e não pertencem à lista de DLLs Conhecidas do sistema.
A DLL Hook é baseada na ideia do DLLHSC de ctxis: https://github.com/ctxis/DLLHSC
você pode encontrar mais informações sobre licenças em: licenses.txt
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM FIM ESPECÍFICO E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM AÇÃO CONTRATUAL, ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE. SEMPRE QUE VOCÊ FIZER UMA CONTRIBUIÇÃO PARA UM REPOSITÓRIO CONTENDO UM AVISO DE LICENÇA, VOCÊ LICENCIA SUA CONTRIBUIÇÃO SOB OS MESMOS TERMOS, E CONCORDA QUE VOCÊ TEM O DIREITO DE LICENCIAR SUA CONTRIBUIÇÃO SOB ESSES TERMOS. SE VOCÊ TIVER UM ACORDO SEPARADO PARA LICENCIAR SUAS CONTRIBUIÇÕES SOB TERMOS DIFERENTES, COMO UM ACORDO DE LICENÇA DE CONTRIBUIDOR, ESSE ACORDO PREVALECERÁ.