
Herramienta automatizada de descubrimiento de vulnerabilidades de secuestro de DLL que analiza binarios PE en tiempo de carga y en tiempo de ejecución mediante enganche de API, enumerando DLL faltantes y probando la suplantación maliciosa.
aDLL es una herramienta de análisis binario centrada en el descubrimiento automático de vulnerabilidades de DLL Hijacking. La herramienta analiza la imagen del binario cargada en memoria para buscar DLLs cargadas en tiempo de carga y hace uso de la biblioteca Microsoft Detours para interceptar las llamadas a las funciones LoadLibrary/LoadLibraryEx para analizar las DLLs cargadas en tiempo de ejecución. El objetivo es obtener una lista de DLLs que no son encontradas por el ejecutable en aquellas carpetas donde se buscan.
Para empezar a usar aDLL, hay un ejecutable compilado disponible en la carpeta Binaries. Se recomienda usar la versión cuya arquitectura (32 o 64 bits) coincida con la versión del ejecutable a analizar.
Para el correcto funcionamiento de la herramienta, es necesario que las DLLs "hook32", "hook64", "informer32" e "informer64" se encuentren en el mismo directorio que el ejecutable aDLL.exe.
aDLL ha sido desarrollado y probado en sistemas Windows 10. Si el sistema es antiguo y/o no está instalado Visual Studio, es posible que la herramienta muestre un error como "VCRUNTIME140.dll no encontrada". En ese caso, se debe instalar la actualización de Visual C++ Redistributable. La actualización se puede encontrar aquí: https://www.microsoft.com/es-ES/download/details.aspx?id=49984.
Para modificar/recompilar la herramienta se recomienda el uso de Visual Studio 2015 o posterior. _ - aDLL: debe compilarse como un ejecutable. Si se producen errores de enlace, será necesario agregar la biblioteca shlwapi.lib usando el enlazador de Visual Studio como dependencia adicional._ _ - Hook: debe compilarse como una DLL con la misma arquitectura que el ejecutable a analizar. El archivo Hook resultante debe renombrarse a hook32.dll o hook64.dll según corresponda. Si se desea analizar ejecutables de ambas arquitecturas, será necesario tener ambas DLLs en el mismo directorio que aDLL.exe._ _ - Informer: igual que Hook. Debe compilarse como una DLL y renombrarse a informer32.dll o informer64.dll._
La herramienta tiene una opción -h para imprimir una breve descripción de las opciones disponibles en pantalla.
.\aDLL -h
Como ejemplo común de uso, aDLL debe recibir al menos la ruta al ejecutable a analizar.
.\aDLL -e "C:\System32\notepad.exe"
OPCIONES:
-h Muestra la ayuda de la herramienta con una breve descripción de cada opción.
-e Especifica la ruta al ejecutable que aDLL analizará.
-t Especifica una ruta a un archivo de texto con una lista de rutas de ejecutables.
-o Especifica una ruta a un directorio en el que se almacenará un informe por cada ejecutable analizado.
-m Busca el manifiesto del ejecutable y lo muestra en pantalla. aDLL busca el manifiesto incrustado en el binario; no encontrará el manifiesto si existe como archivo externo.
-w Define el número de segundos que el proceso del ejecutable permanecerá abierto mientras se buscan DLLs cargadas en tiempo de ejecución. El tiempo predeterminado es 20 segundos.
-aDLL probará automáticamente si se ejecuta una DLL maliciosa suplantando la DLL legítima en el orden de búsqueda si se ha encontrado una DLL candidata.
-d Usada junto con la opción -a, esta opción permite seleccionar una ruta a una DLL que se usará como DLL maliciosa.
-r Cada DLL importada por el ejecutable puede a su vez importar otras DLLs como dependencias. Se realizará una búsqueda recursiva "n" veces sobre todas aquellas DLLs encontradas por aDLL que no estén redirigidas (ApiSetSchema o WinSxS) y no pertenezcan a la lista de DLLs conocidas del sistema.
Hook DLL está basada en la idea de DLLHSC de ctxis: https://github.com/ctxis/DLLHSC
Puede encontrar más información sobre las licencias en: licenses.txt
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES POR CUALQUIER RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, EXTRACONTRACTUAL O DE OTRA ÍNDOLE, DERIVADA DE, O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE. CUANDO USTED REALICE UNA CONTRIBUCIÓN A UN REPOSITORIO QUE CONTENGA UN AVISO DE LICENCIA, Usted LICENCIA SU CONTRIBUCIÓN BAJO LOS MISMOS TÉRMINOS, Y ACEPTA QUE TIENE EL DERECHO DE LICENCIAR SU CONTRIBUCIÓN BAJO ESOS TÉRMINOS. SI TIENE UN ACUERDO SEPARADO PARA LICENCIAR SUS CONTRIBUCIONES BAJO TÉRMINOS DIFERENTES, COMO UN ACUERDO DE LICENCIA DE CONTRIBUIDOR, ESE ACUERDO PREVALECERÁ.