Windows

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

Detalles del Ransomware WannaCry y cómo puede prevenir y detectar con VMware NSX

Detalles del Ransomware WannaCry y cómo puede prevenir y detectar con VMware NSX

Tabla de contenido:

Anonim

DLL son las siglas de Dynamic Link Libraries y son partes externas de las 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 códigos en diferentes archivos. Si hay necesidad del código, el archivo relacionado se carga en la memoria y se utiliza. Esto reduce el tamaño del archivo de la aplicación mientras optimiza el uso de la RAM. Este artículo explica qué es Secuestro de DLL y cómo 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 se ve por 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 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 acapare los recursos.

El sistema operativo Windows establece la ruta para los archivos DLL. 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 se almacena la aplicación. Si no se encuentra allí, va a otras carpetas tal como lo establecen las variables globales. Hay prioridades asociadas a las rutas y ayuda a Windows a determinar qué carpetas buscar las DLL. Aquí es donde entra el secuestro de DLL.

¿Qué es el secuestro de DLL?

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

Como se mencionó anteriormente, existen 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 va a la búsqueda, en función de 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 mayor prioridad en comparación con la carpeta SysWOW64, el sistema operativo utilizará el archivo bad.dll, ya que tiene el mismo nombre que el DLL solicitado por la aplicación. Una vez en la memoria RAM, puede ejecutar el código malicioso contenido en el archivo y poner en peligro su computadora o redes.

Cómo detectar el secuestro de DLL

El método más fácil para detectar y prevenir el secuestro de DLL es utilizar herramientas de terceros. Existen algunas buenas herramientas gratuitas disponibles en el mercado que ayudan a detectar un intento de hackeo de DLL y prevenirlo.

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é aplicaciones son 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 comprueba 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, de modo que puede usar cada una para escanear aplicaciones de 32 bits y de 64 bits, respectivamente.

Cabe señalar que los programas anteriores simplemente analizan las vulnerabilidades de las aplicaciones en la plataforma de Windows y no lo hacen evitar el secuestro de archivos DLL.

Cómo evitar el secuestro de DLL

El problema debería 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 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 misma DLL de nombre en una ruta de mayor prioridad. Este método también no es a prueba de fallas, porque si el sistema está en peligro 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, una vez más, el ciberdelincuente necesitará conocer la ruta absoluta exacta mencionada en la aplicación que requiere la DLL. El proceso es duro para los ciberdelincuentes y, por lo tanto, se puede contar con él.

Volviendo a lo que puede hacer, simplemente intente ampliar sus sistemas de seguridad para asegurar mejor su sistema Windows. Use un buen firewall 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á tratando de jugar con su computadora.

Si desea solucionar problemas de computadoras, también puede realizar lo siguiente para mejorar su seguridad:

  1. Deshabilitar la carga de DLL desde redes remotas
  2. Deshabilitar la carga de archivos DLL desde WebDAV
  3. Deshabilitar el servicio WebClient por completo o configurarlo en manual
  4. Bloquear los puertos TCP 445 y 139, ya que se usan más para computadoras comprometedoras
  5. Instalar las actualizaciones más recientes para el operativo sistema y software de seguridad.

Microsoft lanzó una herramienta para bloquear los ataques de secuestro de carga DLL. Esta herramienta mitiga el riesgo de ataques de secuestro de DLL impidiendo que las aplicaciones carguen código de forma insegura desde archivos DLL.

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