Como sabrás, los analistas de malware son profesionales que se encargan de detectar, analizar y combatir la presencia de códigos maliciosos, es decir aquellos programas informáticos que intentan corromper un sistema operativo y provocarle algún tipo de daño.

La cantidad de malware que a diario circula por Internet da una idea bastante concreta sobre el estado actual de la (in)seguridad a nivel global. Sin embargo, no es solo la cantidad lo preocupante, sino también el nivel de complejidad.

Desde nuestro Laboratorio de Investigación de ESET Latinoamérica analizamos una gran cantidad de archivos sospechosos, algunos de forma automatizada y otros de manera manual. A lo largo de esta entrada comentaremos cuáles son las tácticas de los cibercriminales que hacen a una muestra más compleja de analizar. En muchos casos, varias se encuentran en un mismo código malicioso.

1. Empaquetado

Los códigos maliciosos buscan constantemente mejorar sus estrategias de infección, incorporando mecanismos auto-defensivos que permiten entorpecer y/o prolongar el tiempo de investigación de los profesionales de seguridad.

Esto se debe a que los creadores de malware suelen emplear empaquetadores (packers). Estas aplicaciones no son códigos maliciosos, sino que permiten reducir el tamaño de archivos ejecutables proporcionando, además, diferentes funcionalidades destinadas a proteger el archivo. Un ejemplo muy utilizado por mucho tiempo es el clásico UPX, o Themida.

2. Ofuscación

Esta técnica generalmente intenta disuadir al estudio estático y manual del código, es decir, a la ingeniería inversa de malware. Como imaginarás, complica al analista haciendo más difícil enfocar las secciones de código más importantes, e intentando camuflar algunas estructuras básicas.

Esta técnica puede utilizarse en varias capas, es decir, con varios niveles y técnicas distintas de ofuscación.

Uno de los métodos más extendidos de ofuscación anteriormente solía ser XOR, con el objetivo de intentar evadir la detección por firmas, ya que se basaba en secciones especificas del código. Sin embargo, hoy en día, se ven más ofuscaciones con JavaScript; aún así son detectados por los antivirus, debido a los motores de heurística que delatan comportamiento malicioso.

En la siguiente imagen podemos ver un ejemplo de un código malicioso ofuscado, desarrollado en C# para la plataforma de .NET Framework:

3. Anti VM

La forma más sencilla y rápida de analizar un archivo malicioso consiste en ejecutarlo en un entorno controlado, como un sandbox, y observar los resultados. Naturalmente, la utilización de máquinas virtuales se hace vital, ya que permite la recuperación casi instantánea del estado inicial de la máquina.

Por ello, en diversas ocasiones el malware incluye mecanismos para detectar si está siendo ejecutado en un entorno virtualizado, situación ante la cual modifica su secuencia de ejecución para esconder su verdadero comportamiento e impedir su estudio.

En la siguiente imagen vemos cómo el código busca procesos presentes correspondientes a plataformas de virtualización como VMware o Virtual Box:

Por supuesto, existen formas de realizar un análisis de malware que evita la virtualización.

4. Anti-Debugging

Dado que ciertas instrucciones, estructuras de programas o flujos de ejecución pueden no quedar muy claros a la hora del análisis con desensambladores, en muchos casos el análisis dinámico con debuggers es el modo a seguir.

Sin embargo, así como aplican técnicas para complicar el desensamblado, los desarrolladores de malware también usan diversas técnicas de anti-debugging.

Los métodos más populares de anti-debugging son aquellos que se basan en llamadas a la API de Windows. En gran parte se debe a la sencillez con que se puede manejar la detección del debugger, aunque resulta particularmente ventajoso para el analista de malware.

Al revisar los imports con una herramienta como PEiD, funciones como IsDebuggerPresentGetTickCountOutputDebugString NTQueryInformationProcess llaman la atención y nos alertan de la posible presencia de este tipo de técnicas.

A continuación podemos visualizar las técnicas de anti-debugging:

5. Criptografía

En los últimos años, el ransomware tuvo un gran crecimiento y es una amenaza que preocupa a todas las empresas y usuarios. Se lo considera el tipo de malware más rentable de la historia, y en gran parte se debe a uno de sus ingredientes: la criptografía.

Más precisamente al cifrado, que garantiza la confidencialidad de los datos, permitiendo que solo quienes conocen la clave puedan acceder al contenido original; así, se vuelve un complemento perfecto para las necesidades del secuestrador de datos. Algunos ejemplos como Cryptolocker o CTB-Locker utilizan algoritmos de cifrado muy seguros como RSA 2048 y curvas elípticas.

En otros tipos de códigos maliciosos como botnets y troyanos también es común ver las comunicaciones cifradas con distintos grados de seguridad, lo cual también entorpece el estudio de las comunicaciones entre el equipo infectado/afectado y el botmaster o el C&C.

Conclusión

Si bien dentro del código de un malware existen diferentes instrucciones destinadas a entorpecer el análisis del binario y/o prolongar su ciclo de vida, los analistas de malware siempre buscan la forma de evadir las trabas que generan los desarrolladores de amenazas.

Afortunadamente, ya existen las tecnologías que protegen a los usuarios contra este tipo de técnicas: a través de su heurística avanzada los antivirus detectan estas amenazas desde el comienzo de su propagación, impidiendo su ejecución.