Cuando nos enfrentamos al análisis de códigos maliciosos tenemos múltiples herramientas y métodos para obtener información sobre el comportamiento de una muestra en particular. Pero cuando queremos determinar patrones de comportamiento entre varias muestras o encontrar semejanzas u otras características que puedan ser comunes, debemos pasar a utilizar algoritmos de machine learning que nos permitan este tipo de análisis.
El equipo de investigación en Computer Security de la universidad alemana de Göttingen desarrollaron Malheur, una herramienta bastante interesante desarrollada en lenguaje C que a partir de los resultados de análisis dinámicos de muestras de códigos maliciosos permite descubrir y clasificar el malware en diferentes clases utilizando algoritmos de aprendizaje automático. Como característica adicional, Malheur tiene algunas funciones para integrarse con entornos basados en Matlab.
Los análisis realizados con esta herramienta, se pueden complementar con opciones para visualizar los datos de otros algoritmos como sdhash, para encontrar similitudes entre códigos maliciosos.
Funcionamiento de la herramienta
Malheur a partir de los resultados de análisis dinámicos permite realizar un perfil del comportamiento de diferentes muestras de códigos maliciosos. La base para hacer este tipo de análisis son los patrones de comportamiento que tiene cada malware. Características como la creación o modificación de archivos del sistema, llaves de registro u otros comportamientos sobre un sistema operativo afectado permite encontrar patrones que pueden ser explotados con algoritmos de agrupamiento y clasificación.
Lo interesante del enfoque en el funcionamiento de esta herramienta, es que a partir del análisis del comportamiento de cada muestra se evita lidiar con problemas como la ofuscación de código o el empaquetamiento de la muestra. Obviamente hay que ser cuidadosos con aquellas muestras que tengan algún tipo de protección para no ejecutarse en un entorno controlado como puede ser una sandbox.
Una característica de Malheur es el análisis incremental para grandes conjuntos de datos. Con el uso de procesamiento por secciones los requisitos de tiempo de ejecución y de memoria se reducen significativamente.
Algoritmos utilizados por Malheur
En particular la herramienta utiliza dos conceptos de aprendizaje para el análisis. La implementación de algoritmo de clustering de acuerdo al comportamiento de la muestra, que permite la identificación de nuevas clases de malware de acuerdo a las acciones realizadas sobre el sistema y la implementación de algoritmos de clasificación.
Con el algoritmo de clustering a partir del comportamiento se pueden identificar grupos de muestras con un comportamiento similar. Estos algoritmos de agrupamiento permiten descubrir nuevas clases de malware y pueden ser utilizados para detectar familias de amenazas que puedan ser utilizadas para crear firmas por ejemplo.
También tiene la opción de utilizar algoritmo de clasificación, de tal forma que a partir de los resultados de clustering se pueden asignar nuevos comportamientos a grupos conocidos de códigos maliciosos. Con esto es posible llegar a detectar nuevas variantes y obtener información relevante para análisis más profundos.
Con el análisis realizado se logra la extracción de prototipos, que son un subconjunto de muestras que tengan características representativas para todo el conjunto de datos completo. Estos prototipos proporcionan una visión rápida de la conducta registrada y se puede utilizar para disparar algunos análisis que se hagan manualmente.
Este tipo de técnicas resultan interesantes para entender cuál es la lógica detrás de la creación de este tipo de amenazas o determinar, por ejemplo, cuáles son las características de las campañas de propagación. Además con estas herramientas los investigadores tienen alternativas eficientes para adaptar los modelos de seguridad a las amenazas que cada vez son más cambiantes.