Algoritmos evolutivos y malware, ¿evolucionan los "virus"? (II)

miércoles, 23 de noviembre de 2016

En esta serie de artículos se realizará un repaso a la literatura académica en la que se mezclan estos dos conceptos: malware y algoritmos evolutivos. Analizaremos de forma crítica qué trabajos y artículos se han presentado en orden cronológico durante los últimos años, para comprobar si realmente tiene sentido utilizar los algoritmos genéticos para mejorar cualquier aspecto de la lucha contra el malware, ya sea en detección, análisis, predicción… Veremos un buen montón de experimentos basado en la algoritmia evolutiva, que a su vez también resulta apasionante.

A finales de 2009, se realiza un trabajo similar recopilando hasta esa fecha los artículos presentados que reunían estas características. En él, se analizan fundamentalmente cuatro trabajos que a su vez pasamos a describir brevemente, enfoncándolos con un carácter más crítico.

A retrovirus inspired algorithm for virus detection & optimization

Este estudio de 2006 juega con la idea de hacer evolucionar las firmas del malware para crear "anticuerpos". El concepto es el de usar algoritmos genéticos no tanto para afinar el clasificador (que como veremos más adelante sería el uso habitual) sino para hacer que el clasificador elija mejor las reglas que afinen su funcionamiento.

Al margen de su utilidad real para detectar malware, lo interesante es cómo se evita que el algoritmo genético quede atascado en óptimos locales, añadiendo "memoria", esto es, añadiendo a los registros del algoritmo cierta información previa. El fitness se calcula midiendo la distancia entre las cadenas que representan las firmas, lo que supone ser muy optimista con respecto la fórmula con la que el malware se clasifica con firmas en general... No se ofrecen estadísticas reales de mejora o uso comparable con otros sistemas de firmas o sistemas de detección, lo que ofrece una idea de su utilidad real.

De alguna manera, este artículo se complementaría en 2012 con un estudio y un programa creado por Carlos Nasillo específicamente para evolucionar firmas concretas de malware a través de algoritmos evolutivos y comparando literalmente las cadenas binarias de firmas de malware. Por el tipo de muestras utilizadas, los resultados obtenidos, el coste computacional, el enfoque utilizado y como el propio autor reconoce en el artículo que acompaña al software, no se obtiene mejora concreta o apreciable en la detección con este método. Algo que se intuye desde el planteamiento con el uso de firmas.

In-execution Malware Analysis and Detection scheme (IMAD)

En este estudio de 2009 se presenta la herramienta In-execution Malware Analysis and Detection scheme (IMAD). Se trata de una herramienta que pretende clasificar si un archivo binario para sistemas UNIX es malware o no. Las características de cada fichero se calculan extrayendo las llamadas a funciones de los binarios y agrupándolos en "n-grams". En resumen, los n-grams (que se usarán en estudios sucesivos) son subsecuencias de n "ítems" (en este caso conjuntos de llamadas a sistema) que se sobreponen unos a otros. Esta técnica es habitual en el estudio del malware, pues permite conocer qué conjunto de cadenas es lo suficientemente representativo como para suponer una “marca" que defina otros archivos similares y por tanto, permite clasificar.

El papel de los algoritmos evolutivos aquí es de apoyo cuando el resto de clasificadores no se pronuncia, y conocer así qué "peso" tiene cada parámetro (n-gram) para definir el malware y "detectar" así el conjunto de llamadas que lo hace sospechoso.

En los experimentos, se utilizan 100 muestras de malware y 180 de "goodware". A todas luces, una muestra insuficiente que invalidaría las conclusiones de cualquier análisis. La clasificación se compara con algoritmos de clasificación como Support Vector Machine, C4.5, Bayesianos y RIPPER. IMAD, apoyándose en algoritmos genéticos, obtiene unos resultados de éxito interesantes (no llegan al 90% de "accuracy"), aunque llama la atención que la optimización introducida con los algoritmos genéticos permite reducir la tasa de falsos positivos al 0% en algunos casos frente al resto. Aunque reducir los falsos positivos resulta especialmente atractivo, como se ha mencionado, con 100 muestras de malware los resultados de este informe en concreto no son relevantes.



Evolvable malware

En este artículo se utilizan algoritmos genéticos para "evolucionar el malware", representado como una serie de características de comportamiento. Una vez "evolucionado" (modificando o alterando parámetros, como por ejemplo el conjunto de acciones maliciosas que realiza) se genera el código máquina que lo representa y se comprueba de nuevo contra los motores antivirus. Durante la evolución (intercambiando funcionalidades), cuanto más se parecían los hijos al conjunto de malware test, mejor era su fitness.

Dadas las restricciones intrínsecas del experimento (que busca funcionalidades concretas dentro del malware), se redujo al uso de una variante de Beagle. Se trata de un malware de 2004 muy polifacético (realizaba muchas acciones nocivas diferentes sobre el sistema) y del que se produjeron infinidad de variantes. Se convirtió en paradigma de la nueva ola de malware con fines económicos nacida en 2004, creada de forma profesional y muy modular. En este estudio se utilizan los algoritmos genéticos para generar de una manera controlada nuevos individuos, representados como un conjunto de funcionalidades. El concepto resulta interesante.

On the Appropriateness of Evolutionary Rule Learning Algorithms for Malware Detection

Uno de los trabajos más representativos quizás, se encuentra en este documento donde se experimenta con el uso de algoritmos evolutivos y no evolutivos de aprendizaje de reglas para la detección de malware. Se comparan los clasificadores evolutivos XCS, UCS, GAssist-ADI, GAssist-Intervalar y SLAVE contra los no evolutivos RIPPER, SLIPPER, PART, C4.5 y RIONA (todos presentes en el software KEEL.

No solo se evalúa su "accuracy", sino también el número de reglas generadas, la comprensibilidad de las reglas (aunque resulte subjetivo, se pretende evaluar qué reglas resultarían útiles para un humano) y sobre todo, el tiempo necesario para los cálculos. La conclusión es muy interesante. Si bien todos los algoritmos se mueven en entornos aceptables por encima del 99% de precisión, es clara la diferencia: los no evolutivos son más precisos. De entre los evolutivos, GAssist-ADI y SLAVE tienen la mejor puntuación (que no supera a los no evolutivos), pero su tiempo de proceso los hace inutilizables para ofrecer una respuesta en tiempo real. UCS es el único que funciona con mejores tiempos, pero a costa de una precisión menor. En este estudio destaca el uso de 11.786 ejecutables para las pruebas de los que se extraen estáticamente 189 funcionalidades propias de los ejecutables (desde la versión del compilador, pasando por su timestamp a su tamaño). La conclusión final es que los algoritmos de aprendizaje evolutivos no mejoran la detección ni son usables en tiempo real.



Veremos en la siguiente entrega, qué ha ocurrido desde 2009 en este campo, y qué otras investigaciones se han publicado en la literatura académica.


* Algoritmos evolutivos y malware, ¿evolucionan los "virus"? (I)
* Algoritmos evolutivos y malware, ¿evolucionan los "virus"? (II)
* Algoritmos evolutivos y malware, ¿evolucionan los "virus"? (III)
* Algoritmos evolutivos y malware, ¿evolucionan los "virus"? (IV)


Sergio de los Santos
ssantos@11paths.com

No hay comentarios:

Publicar un comentario en la entrada