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

DLL son las siglas de 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 es necesario el 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 RAM . Este artículo explica qué es el secuestro de DLL(DLL Hijacking) y cómo detectarlo y prevenirlo.

¿Qué son los archivos(Files) DLL o las bibliotecas de vínculos dinámicos ?(Dynamic Link Libraries)

Secuestro de DLL

(DLL)Los archivos DLL son bibliotecas de vínculos dinámicos(Dynamic Link Libraries) y, como su nombre lo indica, 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 acapare recursos.

El sistema operativo Windows establece la ruta para los archivos DLL . La ruta se establece utilizando Variables ambientales globales(Global Environmental Variables) . 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 en qué carpetas buscar las DLL(DLLs) . Aquí es donde entra en juego el secuestro de DLL .

¿Qué es el secuestro de DLL?

Dado que las DLL(DLLs) son extensiones y son 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(DLL Hijacking) .

Como se mencionó anteriormente, existen prioridades en cuanto a dónde busca el sistema operativo los archivos DLL . Primero(First) , 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 archivo 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 la 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 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. Hay algunas buenas herramientas gratuitas disponibles en el mercado que ayudan a detectar un intento de pirateo 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 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 DLLDLL_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 (Windows)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á. 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)DLL falsa .. Eso sería sobrescribir el archivo para que la DLL original se convierta en código malicioso. Pero nuevamente, el ciberdelincuente necesitará 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 escalar sus sistemas de seguridad para proteger mejor su sistema Windows(secure your Windows system) . Utilice un buen cortafuegos(firewall) . 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á tratando de jugar con su computadora.

Si le gusta la solución de problemas de 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 completamente el servicio WebClient o configúrelo en manual
  4. Bloquee(Block) los puertos TCP 445 y 139, ya que son los más utilizados para comprometer las 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 archivos DLL de manera insegura.(DLL)

Si desea agregar algo al artículo, por favor comente a continuación.(If you would like to add anything to the article, please comment below.)



About the author

Soy técnico informático profesional y tengo más de 10 años de experiencia en el campo. Me especializo en el desarrollo de Windows 7 y Windows Apps, así como en el diseño de Cool Websites. Tengo un gran conocimiento y experiencia en el campo, y sería un activo valioso para cualquier organización que busque hacer crecer su negocio.



Related posts