Tutoriales

DLL Hijack SCanner una útil para ayudar con el descubrimiento

DLLHSC (Analizador de secuestro de DLL) es una útil para ocasionar clientes potenciales y automatizar el descubrimiento de candidatos para el secuestro de órdenes de búsqueda DLL.

Contenido de este repositorio

Este repositorio aloja el archivo de esquema de Visual Studio para la útil (DLLHSC), el archivo de esquema para la funcionalidad de enlace de API (desvío), el archivo de esquema para la carga útil y, por postrer, pero no menos importante, los ejecutables compilados para la edificio x86 y x64 (en la traducción sección de este repositorio). El código fue escrito y compilado con Comunidad de Visual Studio 2019.

Si elige coleccionar la útil desde la fuente, deberá coleccionar los proyectos DLLHSC, desvío y carga útil. DLLHSC implementa la funcionalidad principal de esta útil. El esquema de desvío genera una DLL que se utiliza para conectar API. Y el esquema de carga útil genera la DLL que se utiliza como prueba de concepto para comprobar si el ejecutable probado puede cargarlo mediante el secuestro de órdenes de búsqueda. La carga útil generada debe colocarse en el mismo directorio con DLLHSC y el desvío llamado payload32.dll para x86 y payload64.dll para edificio x64.

Modos de operacion

La útil implementa 3 modos de funcionamiento que se explican a continuación.

Modo informal

Carga la imagen ejecutable en la memoria, analiza la tabla de importación y luego reemplaza cualquier DLL referida en la tabla de importación con una DLL de carga útil.

La útil coloca en el directorio de la aplicación solo un módulo (DLL) que no está presente en el directorio de la aplicación, no pertenece a WinSxS y no pertenece a KnownDLLs.

La DLL de carga útil al ejecutarse, crea un archivo en la futuro ruta: C:Users%USERNAME%AppDataLocalTempDLLHSC.tmp como prueba de ejecución. La útil inicia la aplicación e informa si se ejecutó la DLL de carga útil comprobando si existe el archivo temporal. Como algunos ejecutables importan funciones de las DLL que cargan, pueden aparecer cuadros de mensaje de error cuando la DLL proporcionada no puede exportar estas funciones y, por lo tanto, cumple con las dependencias de la imagen proporcionada. Sin bloqueo, los cuadros de mensaje indican que la DLL puede ser un buen candidato para la ejecución de la carga útil si se cumplen las dependencias. En este caso, se requiere un estudio adicional. El título de estos cuadros de mensaje puede contener las cadenas: Ordinal Not Found o Entry Point Not Found. DLLHSC averiguación ventanas que contengan estas cadenas, las cierra tan pronto como aparecen e informa los resultados.

Modo de tira de módulos

Crea un proceso con la imagen ejecutable proporcionada, enumera los módulos que se cargan en el espacio de direcciones de este proceso e informa los resultados luego de aplicar filtros.

La útil solo informa los módulos cargados desde el directorio del sistema y no pertenecen a KnownDLLs. Los resultados son clientes potenciales que requieren un estudio adicional. Luego, el analista puede colocar los módulos informados en el directorio de la aplicación y probar si la aplicación carga el módulo proporcionado en su área.

Modo de tiempo de ejecución

Engancha las API LoadLibrary y LoadLibraryEx a través de Microsoft Detours e informa los módulos que se cargan en tiempo de ejecución.

Cada vez que la aplicación escaneada candela a LoadLibrary y LoadLibraryEx, la útil intercepta la señal y escribe el módulo solicitado en el archivo. C:Users%USERNAME%AppDataLocalTempDLLHSCRTLOG.tmp. Si se candela específicamente a LoadLibraryEx con el indicador LOAD_LIBRARY_SEARCH_SYSTEM32, no se escribe ninguna salida en el archivo. Una vez finalizadas todas las intercepciones, la útil lee el archivo e imprime los resultados. Son de interés para un estudio más detallado los módulos que no existen en la esencia de registro KnownDLLs, los módulos que no existen en el directorio del sistema y los módulos sin ruta completa (para estos módulos, el cargador aplica el orden de búsqueda común).

Clasificar y ejecutar orientación

Si opta por coleccionar la útil desde la fuente, se recomienda hacerlo en Visual Code Studio 2019. Para que la útil funcione correctamente, los proyectos DLLHSC, desvío y carga útil deben compilarse para la misma edificio y luego colocarse en el mismo directorio. Tenga en cuenta que la DLL generada a partir del esquema carga útil tiene que ser renombrado a payload32.dll para edificio de 32 bits o payload64.dll para edificio de 64 bits.

Menú de ayuda

El menú de ayuda para esta aplicación

NAME
        dllhsc - DLL Hijack SCanner

SYNOPSIS
        dllhsc.exe -h

        dllhsc.exe -e <executable image path> (-l|-lm|-rt) [-t seconds]

DESCRIPTION
        DLLHSC scans a given executable image for DLL Hijacking and reports the results

        It requires elevated privileges

OPTIONS
        -h, --help
                display this help menu and exit

        -e, --executable-image
                executable image to scan

        -l, --lightweight
                parse the import table, attempt to launch a payload and report the results

        -lm, --list-modules
                list loaded modules that do not exist in the application's directory

        -rt, --runtime-load
                display modules loaded in run-time by hooking LoadLibrary and LoadLibraryEx APIs

        -t, --timeout
                number of seconds to wait for checking any popup error windows - defaults to 10 seconds

Ejecuciones de ejemplo

Esta sección proporciona ejemplos sobre cómo puede ejecutar DLLHSC y los resultados que informa. Para ello, la utilidad legítima de Microsoft OleView.exe (MD5: D1E6767900C85535F300E08D76AAC9AB). Para obtener mejores resultados, se recomienda escanear la imagen ejecutable proporcionada en el interior de su directorio de instalación.

La bandera -l analiza la tabla de importación del ejecutable proporcionado, aplica filtros e intenta convertir los módulos importados en armas colocando una DLL de carga útil en el directorio contemporáneo de la aplicación. El ejecutable escaneado puede mostrar un cuadro de error cuando no se cumplen las dependencias de la DLL de carga útil (funciones exportadas). En este caso, aparece un cuadro de mensaje de error. DLLHSC de forma predeterminada comprueba durante 10 segundos si se abrió un cuadro de mensaje o durante tantos segundos como especifique el legatario con la bandera -t. Un cuadro de mensaje de error indica que si se cumplen las dependencias, el módulo puede convertirse en un armamento.

La futuro captura de pantalla muestra el cuadro de mensaje de error generado cuando OleView.dll carga la DLL de carga útil:

dependencia

La útil calma un período de tiempo mayor de 10 segundos o -t segundos para cerciorarse de que la inicialización del proceso haya finalizado y se haya generado cualquier cuadro de mensaje. Luego detecta el cuadro de mensaje, lo cierra e informa el resultado:

módulos_importados

La bandera -lm garrocha el ejecutable proporcionado e imprime los módulos que carga que no pertenecen a la tira KnownDLLs ni las dependencias de WinSxS. Este modo tiene como objetivo dar una idea de las DLL que se pueden usar como carga útil y solo existe para ocasionar clientes potenciales para el analista.

módulos_cargados

La bandera -rt imprime los módulos que la imagen ejecutable proporcionada carga en su espacio de direcciones cuando se inicia como un proceso. Esto se logra enganchando el LoadLibrary y LoadLibraryEx API a través de Microsoft Detours.

runtime_loaded_modules

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba