Cuando hablamos de analizar malware podemos hacer o un análisis estático o un análisis dinámico. De ambos ya escribimos, incluso hemos presentado algunas herramientas para análisis dinámico de malware. Pero quizá, al momento de querer realizarlo, nos podemos preguntar cuáles son las ventajas de este tipo de análisis, las características que lo hacen deseable sobre otro tipos o incluso saber si deberíamos emular o virtualizar el entorno de análisis.
Las respuestas a este tipo de preguntas las encontramos en una de las charlas que tuvimos la oportunidad de ver este año en BlackHat USA 2014 fue precisamente sobre las ventajas y características del análisis dinámico automatizado de malware.
Análisis de malware: una carrera armamentista
Las herramientas automatizadas de análisis de malware son sistemas que ejecutan un código malicioso en un entorno controlado para que podamos supervisar su ejecución. Este tipo de análisis ha tomado fuerza como un proceso dentro del análisis de malware, para obtener patrones, tendencias e información relevante de millones de muestras.
Pero por otro lado, las amenazas actuales plantean retos a los analistas de seguridad tales como la corta duración de las campañas de malware, con amenazas diferentes para cada una, lo cual se ve reflejado en una gran cantidad de amenazas específicas diseñadas para campañas particulares. Es este crecimiento lo que hace necesario contar con sistemas de análisis de malware automatizados.
Lo interesante del análisis dinámico es poder observar el comportamiento de la amenaza, con lo cual los atacantes modifican sus amenazas para complicar la recolección de información. Esto plantea retos interesantes para que como analistas de seguridad desarrollemos entornos de seguridad efectivos que nos permitan entender el comportamiento del malware tanto como sea posible.
Lo que necesitamos para el análisis dinámico
Un buen entorno para análisis dinámico de malware debe permitirnos alcanzar tres objetivos:
- Visibilidad
Un entorno de análisis dinámico debe permitir ver tanto como sea posible de la ejecución de un programa. De lo contrario, podría perderse actividad relevante que lleve a hacer análisis erróneo o perder información de todos los comportamientos maliciosos.
- Robustez para la detección
El entorno de análisis tiene que realizar el monitoreo de una manera que sea difícil de detectar, buscando evitar que el malware pueda identificar la presencia del entorno y que este modifique su comportamiento.
- Escalabilidad
Los entornos de análisis deben permitir la ejecución de muestras de códigos maliciosos sin que interfiera con la ejecución de otras amenazas, permitiendo además que puedan analizarse muchas muestras de forma automatizada.
¿Emular o virtualizar?
Una de las discusiones interesantes planteadas por Cristopher Kruegel en su charla, es la diferencia entre emular o virtualizar los entornos de análisis.
Un emulador es un programa de software que simula la funcionalidad de otro programa o una pieza de hardware, mientras que con la virtualización, el software se ejecuta realmente en el hardware subyacente. De esta manera, las diferentes máquinas virtuales son independientes, sin embargo, cuando un programa en una máquina virtual se está ejecutando, está ocupando los recursos físicos reales.
Con las características de un emulador se puede obtener en tiempo de ejecución un entorno simulado en el que el malware se puede ejecutar. Como lo que resulta importante es conocer cómo se ejecuta el código malicioso, lo realmente útil resulta de obtener información acerca de las llamadas al sistema que hace para interactuar con su entorno.
Cuando el malware intenta realizar una llamada al sistema, esta información se puede grabar, devolviendo una respuesta en la que pretende que la llamada de sistema se ejecuta con éxito y devuelve el resultado adecuado al código malicioso. Desafortunadamente, esto que suena bastante simple en teoría, no resulta tan fácil en la práctica. Esto en gran parte se agrava por la gran cantidad de funciones utilizadas por Windows, el sistema operativo para el que se desarrollan la gran mayoría de amenazas.
En oposición a lo anterior, las plataformas de virtualización proporcionan significativamente menos opciones para la recopilación de información detallada, aunque son la mejor respuesta para facilitar el seguimiento de las llamadas al sistema que realizan los códigos maliciosos dentro del sistema. Claramente, la virtualización presenta la gran desventaja que el malware podría ser capaz de detectar el entorno modificado, por lo cual el gran desafío es grabar de manera eficiente las instrucciones individuales que un proceso ejecuta sin ser detectado.
Resulta entonces de esta presentación, que el análisis dinámico automatizado de malware se debe orientar hacia sistemas de análisis que permitan ver todas las instrucciones que el código malicioso ejecuta. Esto se logra acercándose más a entornos emulados, sobre todo para combatir las técnicas de evasión de muchas de las amenazas que se ven actualmente