El análisis automatizado de muestras en entornos controlados o sandbox es una herramienta muy útil para conocer el comportamiento de la creciente cantidad de códigos maliciosos con los que nos podemos encontrar. Pero lo que en principio pareciera ser una solución, se puede tornar un dolor de cabeza si no se maneja de forma adecuada.
Cuando discutimos cómo construir un entorno de pruebas eficiente dejamos claro que la mayoría de los sistemas de sandboxing aprovechan la virtualización, lo cual empieza a ser insuficiente considerando que nos enfrentamos a malware cada vez más "consciente" de técnicas de sandboxing. Precisamente una de las charlas Virus Bulletin esta semana estuvo relacionada con las principales estrategias utilizadas en los códigos maliciosos para detectar los sandbox y las consecuencias en los resultados de los análisis.
Consecuencias de no detectar las estrategias maliciosas
A lo largo del tiempo, hemos sido testigos de cómo los creadores de códigos maliciosos agregan funcionalidades cada vez más complejas a sus creaciones con el objetivo de complicar su detección y análisis. Entre las más comunes se encuentran la verificación de procesos en ejecución buscando aquellos de entornos virtuales o aplicaciones de análisis conocidas, comparación de variables de entorno, análisis del UserAgent e incluso la validación de la versión del SystemBIOS.
Lo importante de identificar que una muestra que estemos analizando presenta este tipo de comportamiento, es evitar que nuestros análisis nos arrojen resultados erróneos. De acuerdo a la charla que presenciamos en Seattle, hay cuatro categorías en las cuales podemos clasificar las acciones que ejecutan los códigos maliciosos cuando detectan que se están siendo ejecutados en ambientes virtualizados:
- Comportamiento alternativo: la muestra cambia la naturaleza de su ejecución, llegando incluso a esconder la dirección de su C&C o reemplazarla con una dirección falsa o llegando al punto de no ejecutar ningún tipo de acción.
- Listas de exclusión: algunos códigos maliciosos, cuando detectan que están siendo ejecutados en un sandbox, agregan la dirección desde la cual se conecta a Internet a una lista negra, de tal forma que no se vuelve a establecer comunicación con el C&C, por más que se ejecute en otra máquina incluso física.
- Comunicaciones de red falsas: la conexión con C&C falsos es otro comportamiento que suelen tener algunas muestras cuando detectan que están siendo monitoreadas, lo que lleva a que si no se detecta el comportamiento los resultados arrojen falsos positivos.
- Envío y recepción de archivos inútiles: como muchas muestras de códigos maliciosos intercambian información una vez que están ejecutándose en la máquina de la víctima, algunas muestras al detectar entornos virtualizados intercambian archivos que no contienen información relevante para el análisis, ocultando su verdadera acción maliciosa.
Qué hacer para contrarrestarlos
Si bien el análisis automatizado de muestras nos facilita el análisis de grandes volúmenes de muestras, es necesario determinar cuáles pueden tener algún tipo de protección en entornos virtualizados. Ya mencionamos cómo realizar un análisis de malware que evita la virtualización analizando en tiempo de ejecución la muestra en busca de strings que nos den indicios de este tipo de búsqueda, o utilizando herramientas como YARA, que nos permite crear reglas para detectar strings (cadenas de texto), secuencias de instrucciones, expresiones regulares y otros patrones existentes dentro de los archivos maliciosos.
Otra cuestión muy simple y que no debe dejarse de tener en cuenta es la configuración que se hace del entorno de análisis. No dejar nombres por defecto, cambiar los nombres de las variables de entorno y los UserAgent son alternativas sencillas pero que pueden marcar la diferencia para que el entorno de análisis no sea detectado.
Hay que recordar que todo lo que utilicemos para analizar debe ser cuidadosamente preparado para tal fin. Ya sabemos que los ciberdelicuentes tratan de esconder su comportamiento malicioso, es nuestra tarea llegar a identificar realmente el comportamiento malicioso del malware que analizamos -y como Gial Ackbar, advertir si es una trampa.