Página principal » Seguridad » Ataque de vulnerabilidades de secuestro de DLL, prevención y detección

    Ataque de vulnerabilidades de secuestro de DLL, prevención y detección

    DLL significa Dynamic Link Libraries y son partes externas de aplicaciones que se ejecutan en Windows o en cualquier otro sistema operativo. La mayoría de las aplicaciones no están completas en sí mismas y almacenan el código en diferentes archivos. Si se necesita el código, el archivo relacionado se carga en la memoria y se usa. Esto reduce el tamaño del archivo de la aplicación mientras optimiza el uso de RAM. Este artículo explica lo que es Secuestro de DLL y como detectarlo y prevenirlo..

    ¿Qué son los archivos DLL o las bibliotecas de enlace dinámico?

    Los archivos DLL son bibliotecas de enlaces dinámicos y, como lo demuestra el nombre, son extensiones de diferentes aplicaciones. Cualquier aplicación que usemos puede o no puede usar ciertos códigos. Dichos códigos se almacenan en archivos diferentes y se invocan o cargan en la RAM solo cuando se requiere el código relacionado. Por lo tanto, guarda un archivo de aplicación para que no sea demasiado grande y para evitar la acumulación de recursos por parte de la aplicación.

    La ruta de los archivos DLL está establecida por el sistema operativo Windows. La ruta se establece utilizando variables ambientales globales. De forma predeterminada, si una aplicación solicita un archivo DLL, el sistema operativo busca en la misma carpeta en la que está almacenada la aplicación. Si no se encuentra allí, va a otras carpetas según lo establecido por las variables globales. Hay prioridades asociadas a las rutas y ayuda a Windows a determinar qué carpetas buscarán los DLL. Aquí es donde entra en juego el secuestro de DLL.

    Que es DLL Hijacking

    Como las DLL son extensiones y son necesarias para usar casi todas las aplicaciones en sus máquinas, están presentes en la computadora en diferentes carpetas, tal como se explica. Si el archivo DLL original se reemplaza por un archivo DLL falso que contiene código malicioso, se conoce como Secuestro de DLL.

    Como se mencionó anteriormente, hay prioridades en cuanto a dónde el sistema operativo busca los archivos DLL. Primero, busca en la misma carpeta que la carpeta de la aplicación y luego busca, según las prioridades establecidas por las variables de entorno del sistema operativo. Por lo tanto, si un archivo good.dll está en la carpeta SysWOW64 y alguien coloca un bad.dll en una carpeta que tiene una prioridad más alta en comparación con la carpeta SysWOW64, el sistema operativo usará el archivo bad.dll, ya que tiene el mismo nombre que el archivo DLL. Solicitado por la aplicación. Una vez en la RAM, puede ejecutar el código malicioso contenido en el archivo y puede comprometer su computadora o sus redes..

    Cómo detectar el secuestro de DLL

    El método más sencillo para detectar y prevenir el secuestro de DLL es utilizar herramientas de terceros. Hay algunas buenas herramientas gratuitas disponibles en el mercado que ayudan a detectar un intento de pirateo de DLL y lo previenen.

    Uno de estos programas es DLL Hijack Auditor pero solo admite aplicaciones de 32 bits. Puede instalarlo en su computadora y escanear todas sus aplicaciones de Windows para ver qué son vulnerables a las amenazas de DLL. La interfaz es simple y se explica por sí misma. El único inconveniente de esta aplicación es que no puede escanear aplicaciones de 64 bits.

    Otro programa, para detectar el secuestro de DLL, DLL_HIJACK_DETECT, está disponible a través de GitHub. Este programa verifica las aplicaciones para ver si alguno de ellos es vulnerable al secuestro de DLL. Si es así, el programa informa al usuario. La aplicación tiene dos versiones: x86 y x64, por lo que puede usar cada una para escanear aplicaciones de 32 y 64 bits respectivamente.

    Se debe tener en cuenta que los programas anteriores solo analizan las aplicaciones en la plataforma Windows en busca de vulnerabilidades y no impiden el secuestro de archivos DLL.

    Cómo prevenir el secuestro de DLL

    El problema debe ser abordado por los programadores en primer lugar, ya que no hay mucho que pueda hacer, excepto reforzar sus sistemas de seguridad. Si, en lugar de una ruta relativa, los programadores comienzan a utilizar la ruta absoluta, la vulnerabilidad se reducirá. Al leer la ruta absoluta, Windows o cualquier otro sistema operativo no dependerá de las variables del sistema para la ruta e irá directamente a la DLL deseada, descartando así las posibilidades de cargar la DLL del mismo nombre en una ruta de mayor prioridad. Este método tampoco es a prueba de fallas porque si el sistema está comprometido y los ciberdelincuentes conocen la ruta exacta de la DLL, reemplazarán la DLL original con la DLL falsa. Eso sería sobrescribir el archivo para que la DLL original se cambie a código malicioso. Pero nuevamente, el ciberdelincuente deberá conocer la ruta absoluta absoluta mencionada en la aplicación que solicita la DLL. El proceso es difícil para los ciberdelincuentes y, por lo tanto, se puede contar con ellos..

    Volviendo a lo que puede hacer, simplemente intente ampliar sus sistemas de seguridad para proteger mejor su sistema Windows. Utilice un buen cortafuegos. Si es posible, use un firewall de hardware o encienda el firewall del enrutador. Use buenos sistemas de detección de intrusos para saber si alguien está intentando jugar con su computadora.

    Si tiene problemas con las computadoras, también puede realizar lo siguiente para aumentar su seguridad:

    1. Deshabilitar la carga de DLL desde recursos compartidos de red remota
    2. Deshabilitar la carga de archivos DLL desde WebDAV
    3. Deshabilite completamente el servicio WebClient o configúrelo en manual
    4. Bloquee los puertos TCP 445 y 139, ya que se utilizan más para comprometer computadoras
    5. Instale las últimas actualizaciones del sistema operativo y el software de seguridad..

    Microsoft ha lanzado una herramienta para bloquear los ataques de secuestro de carga DLL. Esta herramienta mitiga el riesgo de ataques de secuestro de DLL al evitar que las aplicaciones carguen código de forma insegura de archivos DLL.

    Si desea agregar algo al artículo, comente a continuación.