Software malicioso

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

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

DLL son las siglas de Dynamic Link Libraries y son partes externas de aplicaciones que se ejecutan en Windows o 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 es necesario 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 qué es Secuestro de DLL y como detectarlo y prevenirlo.

¿Qué son los archivos DLL o las bibliotecas de vínculos dinámicos?

Los archivos DLL son bibliotecas de vínculos dinámicos y, como lo demuestra el nombre, son extensiones de diferentes aplicaciones. Cualquier aplicación que usemos puede o no usar ciertos códigos. Dichos códigos se almacenan en diferentes archivos y se invocan o cargan en la RAM solo cuando se requiere el código relacionado. Por lo tanto, evita que un archivo de aplicación se vuelva demasiado grande y evita que la aplicación acabe con los recursos.

La ruta de los archivos DLL la establece el sistema operativo Windows. La ruta se establece mediante 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 adjuntas a las rutas y ayuda a Windows a determinar qué carpetas buscar las DLL. Aquí es donde entra en juego el secuestro de DLL.

¿Qué es el secuestro de DLL?

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

Como se mencionó anteriormente, existen prioridades en cuanto a dónde busca el sistema operativo 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 tanto, si un buen.dll está en la carpeta SysWOW64 y alguien coloca un archivo.dll en una carpeta que tenga mayor prioridad en comparación con la carpeta SysWOW64, el sistema operativo utilizará la.dll, ya que tiene el mismo nombre que la DLL solicitada 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 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 prevenirlo.

Uno de esos 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 cuáles son todas las aplicaciones vulnerables al secuestro de DLL. La interfaz es simple y autoexplicativa. 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 alguna de ellas 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.

Cabe señalar que los programas anteriores solo escanean las aplicaciones en la plataforma Windows en busca de vulnerabilidades y en realidad no evitan 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 usar una ruta absoluta, la vulnerabilidad se reducirá. La lectura de la ruta absoluta, Windows o cualquier otro sistema operativo no dependerá de las variables del sistema para la ruta y se dirigirá 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 convierta en código malicioso. Pero, de nuevo, el ciberdelincuente deberá conocer la ruta absoluta exacta 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 él.

Volviendo a lo que puede hacer, 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. Utilice buenos sistemas de detección de intrusos para saber si alguien está intentando jugar con su computadora.

Si está interesado en solucionar 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 remotos
  2. Deshabilitar la carga de archivos DLL desde WebDAV
  3. Deshabilite el servicio WebClient por completo o configúrelo en manual
  4. Bloquee los puertos TCP 445 y 139, ya que se usan 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 de DLL. Esta herramienta mitiga el riesgo de ataques de secuestro de DLL al evitar que las aplicaciones carguen código de manera insegura desde archivos DLL.

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

Cómo usar Xdotool para estimular los clics del mouse y las pulsaciones de teclas en Linux
Xdotool es una herramienta de línea de comandos gratuita y de código abierto para simular clics del mouse y pulsaciones de teclas. Este artículo cubri...
Los 5 mejores productos ergonómicos de mouse de computadora para Linux
¿El uso prolongado de la computadora causa dolor en la muñeca o los dedos?? ¿Sufre de rigidez en las articulaciones y constantemente tiene que dar la ...
Cómo cambiar la configuración del mouse y el panel táctil con Xinput en Linux
La mayoría de las distribuciones de Linux se envían con la biblioteca "libinput" de forma predeterminada para manejar eventos de entrada en un sistema...