Detectando y clasificando malware dinámicamente

Analisis_Dinamico_MalwareMe parece que se me había pasado comentaros pero…

Realizar un análisis dinámico a una muestra de malware es algo rápido que puede aportar gran cantidad de datos útiles a la hora de abordar un análisis más completo. Previamente hemos comentado como desempaquetar un malware protegido, pero en este caso concreto no es necesario realizar este paso dado que la muestra se desempaqueta y ejecuta de forma normal en una máquina virtual (VM).

En la actualidad existe un gran número de sandboxes (ambientes controlados) que permiten analizar un binario para saber qué es lo que hace exactamente en el sistema cuando se está ejecutando. El mayor problema que se suele tener cuando se analizan múltiples archivos encontrados in the wild, es la dificultad de realizar una clasificación rápida sobre los mismos.

Para esos casos concretos tenemos Malheur, una herramienta desarrollada por Konrad Rieck (al que he tenido el placer de conocer personalmente) en la University of Göttingen. Malheur permite realizar esa preciada clasificación/categorización usando algoritmos de machine learning  teniendo como entrada los reportes generados de diferentes sandbox de malware populares como pueden ser: CWSandbox, Anubis, Norman Sandbox, Joebox o Cuckoo. La versión general de Cuckoo no es directamente compatible, pero si se hace uso de una versión modificada se puede realizar sin problema alguno. Las características más relevantes de la herramienta son las siguientes:

  • Extracción de prototipos: Partiendo de todos los reportes, se identifica un subconjunto de prototipos que sean representativos de todo el dataset. Estos prototipos muestran una visión general rápida del comportamiento de los datos obtenidos, lo que puede ser usado para una primera aproximación.
  • Agrupación de comportamientos: Se identifican grupos (clusters) de reportes que muestran un comportamiento similar. Esta técnica permite descubrir clases nuevas de malware y proporciona un apoyo para la elaboración de defensas, como pueden ser las firmas.
  • Clasificación de comportamientos: Basándose en los grupos previamente encontrados, se puede asignar ese comportamiento desconocido a familias de malware conocidas. La clasificación puede ayudar a identificar variantes que no han sido previamente encontradas.
  • Análisis incremental: En caso de necesitar realizar los análisis con grandes conjuntos de datos, mediante el procesamiento por partes se logra que los requisitos de tiempo y memoria se vean altamente mermados. Si fuese necesario realizar este tipo de análisis de forma diaria con todo el malware entrante en una honeypot, esta solución sería la más adecuada.

Hay que tener en cuenta que el malware suele tener métodos de anti-debugging o anti-VM para detectar que pueden estar siendo analizados. Varias muestras suelen tener módulos concretos para detectar una determinada sandbox, por lo que es recomendable lanzar los análisis en el mayor número de plataformas diferentes para cerciorarnos que los resultados obtenidos son correctos. Esta detección por parte del malware se suele denominar red pill ya que, como en la película Matrix, la píldora roja te muestra la verdadera realidad.

Aunque los resultados indiquen algo claramente, tampoco deberíais creerlos ciegamente. Una recomendación sería coger unas muestras representativas de los grupos que consideres interesantes y echarles un ojo manualmente con IDA Pro/Immunity Debugger para asegurar que es cada cosa y no tener sustos innecesarios.

El que avisa no es traidor.

Iskander Sanchez-Rola
Acerca de
Founder/Content Director
Expertise: Web Security and Privacy
iskander-sanchez-rola.com