top of page

¿Qué es la carga lateral de DLL?


La carga lateral de DLL es una técnica popular utilizada por los actores de amenazas para eludir las soluciones de seguridad y engañar al sistema operativo Windows para que ejecute código malicioso en el punto final de destino.


En esta publicación de blog, exploraremos cómo funciona la carga lateral de DLL, por qué es un vector de ataque efectivo y brindaremos consejos prácticos de mitigación que puede usar para proteger sus sistemas contra esta creciente amenaza. También veremos por qué la carpeta Descargas de Windows representa un riesgo particular, aunque uno que se puede mitigar fácilmente.


¿Qué es la carga lateral de DLL?

Dynamic Link Library, o DLL para abreviar, es la implementación de Microsoft del concepto de biblioteca compartida. Estas bibliotecas, que normalmente tienen la extensión de archivo .dll, contienen código y datos que pueden usar varios programas al mismo tiempo.


A diferencia de un archivo EXE, los archivos DLL no se pueden ejecutar directamente. En cambio, una aplicación cargará archivos DLL cuando sea necesario para realizar tareas específicas que pueden no ser una función central del programa original. Esto reduce la cantidad de código que debe escribirse, simplifica el mantenimiento y ahorra espacio en disco.


Desafortunadamente, la forma en que Windows busca y carga archivos DLL también puede ser explotada por actores de amenazas. Cuando una aplicación requiere una DLL para ejecutarse, Windows intenta cargar la DLL desde una ruta completa definida por la aplicación o mediante un archivo de manifiesto. Un manifiesto es esencialmente un archivo de texto sin formato que contiene información sobre las dependencias y los requisitos de configuración de una aplicación o componente. Entre otras cosas, especifica qué DLL debe cargar el programa asociado en tiempo de ejecución.


Sin embargo, surgen problemas cuando el archivo de manifiesto no es lo suficientemente específico sobre las DLL que debe cargar la aplicación o las rutas de archivo desde las que se deben cargar las DLL. Los adversarios pueden explotar archivos de manifiesto mal configurados colocando una DLL maliciosa con el mismo nombre que una DLL legítima en una ubicación donde una aplicación la cargará antes que la DLL que debería cargarse. La ubicación de la DLL maliciosa se puede determinar porque, a menos que se especifique lo contrario, Windows usa un orden de búsqueda establecido para las DLL:

  1. El directorio desde el que se cargó la aplicación.

  2. El directorio del sistema

  3. El directorio del sistema de 16 bits

  4. El directorio de Windows

  5. El directorio de trabajo actual (CWD)

  6. Los directorios que se enumeran en la variable de entorno PATH

Un ataque de carga lateral exitoso puede permitir que el atacante ejecute código en el sistema, aumente los privilegios o robe información confidencial.


¿Por qué los actores de amenazas usan la carga lateral de DLL?

Para los actores de amenazas, la principal ventaja de la carga lateral de DLL gira en torno a la evasión de detección. Debido a que el código malicioso se ejecuta dentro del contexto de una aplicación legítima, puede evadir la detección de algunos mecanismos de seguridad que buscan actividades o procesos sospechosos. Esto aumenta las posibilidades de que un atacante pueda realizar actividades maliciosas sin ser detectado.


Incidentes de ransomware que aprovechan la carga lateral de DLL

A lo largo de los años, varios operadores de ransomware han utilizado la carga lateral de DLL para ejecutar ataques exitosos. Algunos ejemplos incluyen:


  • REvil: Adversaries explotó una vulnerabilidad de carga lateral en MsMpEng.exe, un archivo firmado digitalmente por Microsoft que, irónicamente, ejecuta Microsoft Malware Protection Engine. Los operadores usaron MsMpEng.exe para cargar una DLL maliciosa llamada mpsvc.dll, que contenía la carga útil del ransomware.

  • Rorschach: los adversarios implementaron Rorschach utilizando la carga lateral de DLL a través de la herramienta de servicio de volcado Cortex XDR, cy.exe, un producto de detección y respuesta extendida de Palo Alto Networks.

  • Babuk: los operadores de Babuk atacaron con éxito a una gran empresa de fabricación al aprovechar una vulnerabilidad de carga lateral en NTSD.exe, un ejecutable que pertenece a una herramienta de depuración legítima de Windows.


Mitigación de los riesgos de carga lateral de DLL

La mayoría de los ataques de carga lateral de DLL requieren que los actores de amenazas tengan acceso de escritura a un directorio donde se busca y se carga el binario malicioso y, por lo tanto, la mitigación comienza con la protección del perímetro mediante el uso de todas las mejores prácticas regulares de seguridad cibernética, que incluyen:

  • Administración de parches: mantener actualizados los sistemas operativos, las aplicaciones y el software de seguridad ayuda a proteger contra vulnerabilidades conocidas y exploits que pueden usarse para ataques de carga lateral de DLL.

  • Restricciones de acceso: restringir el acceso a recursos confidenciales, como directorios del sistema, claves de registro y privilegios administrativos, puede ayudar a evitar que los atacantes coloquen y ejecuten archivos DLL maliciosos.

  • Reducción de la superficie de ataque: deshabilite la funcionalidad innecesaria, como el uso compartido de archivos e impresoras, los servicios de acceso remoto y los puertos de red no utilizados para reducir la superficie de ataque y limitar el impacto potencial de un ataque de carga lateral de DLL.

  • Descargas seguras: descargue e instale software solo de fuentes confiables, como el sitio web oficial del proveedor o un repositorio de software de terceros confiable.

  • Capacitación en ciberseguridad: las organizaciones deben brindar capacitación regular en ciberseguridad con un énfasis particular en las tácticas de ingeniería social que los actores de amenazas suelen usar para obtener acceso inicial a un sistema de destino.

Las herramientas de detección y respuesta de puntos finales (EDR) también pueden desempeñar un papel importante en la mitigación de los ataques de carga lateral de DLL, especialmente en organizaciones grandes con muchos puntos finales. Emsisoft Endpoint Detection and Response proporciona visibilidad continua de los puntos finales de una organización, junto con información valiosa sobre amenazas potenciales, incluida la carga lateral de DLL.


La carpeta de descargas de Windows

Como se indicó anteriormente, Windows busca archivos DLL en un orden establecido, y la primera ubicación que se debe verificar es la carpeta desde la que se carga una aplicación. Esto significa que cuando una nueva aplicación se descarga y se ejecuta desde la carpeta Descargas, puede cargar cualquier archivo DLL malicioso que también se encuentre en esa carpeta. La carpeta Descargas también es la carpeta más fácil para que un atacante coloque un DLL malicioso, simplemente se necesita engañar al usuario para que lo descargue.


Afortunadamente, el riesgo de carga lateral desde la carpeta Descargas se puede mitigar fácilmente simplemente asegurándose de que la carpeta Descargas se mantenga vacía, excepto por la descarga más reciente. Del mismo modo, mover los instaladores al escritorio antes de ejecutarlos también evitará que se cargue cualquier archivo DLL malicioso en la carpeta Descargas.


Qué pueden hacer los desarrolladores

Los desarrolladores de software representan la primera línea de defensa contra los ataques de carga lateral de DLL. Las siguientes prácticas pueden ser útiles para mitigar la carga lateral de DLL:


Especifique la ruta completa a la DLL: al cargar una DLL, los desarrolladores pueden especificar la ruta completa a la DLL en lugar de solo el nombre de la DLL. Esto garantiza que se cargue la DLL correcta y evita que el sistema busque y cargue una DLL potencialmente maliciosa.


Usar rutas absolutas: los desarrolladores deben usar rutas absolutas en lugar de rutas relativas al especificar la ubicación de una DLL. Los atacantes pueden manipular las rutas relativas para engañar a la aplicación para que cargue una DLL maliciosa desde un directorio diferente.


Implementar la verificación de la firma de DLL: los desarrolladores pueden firmar sus DLL con una firma digital y verificar la firma antes de cargar la DLL. Si bien no es infalible, esto brinda una capa de seguridad de que la DLL es un componente legítimo y no ha sido alterada.


Para obtener más información, asegúrese de consultar las mejores prácticas de Microsoft para asegurar la carga de bibliotecas.

19 visualizaciones

Comments


Unete a nuestra lista de correo

No te pierdas ninguna actualización

Gracias por tu mensaje!