Algoritmos evolutivos y malware. Conclusiones (y VI)

lunes, 9 de enero de 2017

No, los algoritmos evolutivos no tienen mucho que ver con la evolución de los virus. El título era una "trampa" con varios objetivos: por un lado atraer a lectores tanto interesados en la materia como potenciales curiosos y por otro, demostrar que hay investigadores que han visto en los algoritmos evolutivos una herramienta "natural" para analizar el comportamiento del malware. Pero no suele ser buena idea. En el malware, los algoritmos evolutivos normalmente tienen sentido para resolver el mismo problema que en cualquier otro área o campo de análisis. Y aun así parece que no se han llegado a conclusiones que merezcan la pena por ahora. Vamos a ver qué podemos concluir tras el estudio de buena parte de la investigación académica existente al respecto.

El uso típico del algoritmo genético

Tras este recorrido por los estudios realizados que mezclan malware con algoritmos evolutivos en general, se observa claramente que el papel de los algoritmos genéticos mayoritariamente es el de optimizador de algoritmos de aprendizaje o clasificación. En los sistemas de aprendizaje y clasificación, se utilizan las características seleccionadas por el algoritmo genético para implementarlos con mayor eficiencia y eficacia. En general, se suelen usar para combatir el fenómeno conocido como "maldición de la dimensionalidad", que fundamentalmente pretende encontrar el número correcto de atributos o características que hacen que el clasificador sea efectivo sin caer en el sobreaprendizaje. Este tipo de utilidad no supone novedad, puesto que el uso de algoritmos genéticos como optimizadores de clasificadores se lleva utilizando desde hace tiempo en bastantes áreas. De hecho, es un fenómeno ya muy estudiado el cómo se estructura y permite mejorar los sistemas de extracción de características y aprendizaje como demuestra este estudio de 1995. 

Esquema de uso de GA en los sistemas de aprendizaje.
 
Por tanto, si bien la eficacia de los algoritmos genéticos resulta probada, en estos estudios se utiliza el malware como excusa para confirmarlo. El reto de las investigaciones no resultan tanto en una aplicación novedosa de los algoritmos genéticos sobre el estudio del malware, sino en fundamentalmente encontrar el enfoque adecuado para representar los datos: qué y cómo clasificar dentro del mundo del malware, aplicando luego técnicas ya conocidas para ejecutar esa clasificación. En resumen, una técnica "básica" pero ahora con el malware como objeto de estudio.

Esquema de uso de GA en la extracción de funcionalidades

Otros usos más "originales"

Solo algunos artículos se salen de este esquema más o menos cerrado: "Malware detection based on dependency graph using hybrid genetic algorithm", que utiliza algoritmos genéticos para resolver grafos (como representación del malware de script) y "A retrovirus inspired algorithm for virus detection & optimization", "Evolvable malware", "Specialized Genetic Algorithm Based Simulation Tool Designed For Malware Evolution Forecasting", que utilizan algoritmos evolutivos para evolucionar las firmas o la funcionalidad del propio malware. Del primero, se usa algoritmos genéticos para resolver un problema concreto y diferente: encontrar grafos isomorfos, y por tanto creemos que es el estudio que más innova desde el punto de vista del uso de algoritmia evolutiva aplicada a la detección de malware.

Las investigaciones que utilizan algoritmos evolutivos para evolucionar las firmas o la funcionalidad del propio malware, aunque novedosos en su aproximación para el uso de algoritmos genéticos, no resultan especialmente útiles en la vida real debido a la propia naturaleza de la construcción de firmas o creación de malware. Las firmas de malware no "evolucionan" de la manera que intuitivamente se podría percibir, puesto que son el resultado de un análisis (automático o manual) realizado de forma totalmente diferente por diferentes empresas privadas, que habitualmente conservan esta información como secreto industrial y que forma parte de su propiedad intelectual más valiosa. Por tanto, afrontar una potencial evolución de una "firma" como algo matemático o sujeto a reglas, no puede ser generalizado ni es realista en la práctica.

Si todos lo usan para lo mismo, ¿qué los diferencia?

Del resto de artículos que utilizan los algoritmos evolutivos como reductores de dimensionalidad (su uso más común), solo cabe destacar y analizar su aportación desde el punto de vista del enfoque utilizado para abordar el problema. En este caso, el enfoque de cada análisis (y lo que permitirá saber si el trabajo es interesante o no) fundamentalmente se diferencia en:
  • Tipos de muestras de malware: Malware para Windows, sistemas UNIX, Android...
  • Conjunto de malware de muestra: Aquí, se suele recurrir a conjuntos de malware conocido (como VX Heaven Collection5, de 2006, o Malgenome de 2012) que si bien garantizan cierta homogeneidad entre estudios y heterogeneidad entre las muestras en sí, en el mejor de los casos están obsoletas y en el peor están lejos de suponer una muestra representativa del malware real que afecta a los sistemas hoy por hoy.
  • Funcionalidades extraídas de las muestras para representarlas: Aquí también se observan aproximaciones "típicas", como las características intrínsecas y estáticas de un fichero binario, y otras más audaces como los comportamientos tras un análisis dinámico, n-grams de opcodes o bytes. En la combinación de estas tres variables radica la posibilidad de proponer sistemas más o menos interesantes desde el punto de vista de la industria de la seguridad y el malware. 

¿Entonces sirven o no sirven para algo específicamente? 
Así, aunque cada artículo proclame mejoras en los ratios de detección o clasificación de malware, la relación directa entre los algoritmos genéticos y su papel en la mejora de algún aspecto en algún campo del malware queda de alguna manera distanciada. Fundamentalmente, creemos que por tres razones: 
  • El uso de algoritmos genéticos como optimizadores de los clasificadores, tal y como se defiende en varios de los experimentos analizados, consume muchos recursos, lo que invalida prácticamente su uso en sistemas en tiempo real de detección de malware a no ser que optimicen tanto los algoritmos como los sistemas de procesamiento.
  • Los resultados obtenidos dependen en buena parte del conjunto de muestras tomadas. En la industria del malware, las casas antivirus ya utilizan tecnología de clasificación automática previa como paso anterior a la creación de firmas y para agilizar el proceso. En este momento del proceso (que no requiere tiempo real) se obtienen clasificaciones con un nivel de "accuracy" muy por debajo de los niveles de precisión obtenidos en los estudios, que luego son refinados por analistas. Si bien las investigaciones permitirán mejorar ese proceso, no se suele llegar a niveles de "accuracy" tan altos en los laboratorios. Esto quiere decir que los experimentos actúan sobre conjuntos excesivamente idealizados. 
  • El uso de algoritmos genéticos para evolucionar firmas o funcionalidades del malware resulta inapropiado por las razones expuestas más arriba. Quizás el estudio más interesante resulte en la posibilidad de modelar scripts en forma de grafos y utilizar algoritmos genéticos para encontrar grafos isomórficos y por tanto malware similar. Si fuese extrapolable a binarios y se realizaran pruebas sobre un conjunto de muestras más amplio, podría resultar en una verdadera evolución donde los algoritmos genéticos jugasen un papel interesante. Parece el trabajo que mejor utiliza el conocimiento del problema para modelar su solución, fundamental para mejorar el rendimiento y potenciar la utilidad de los algoritmos genéticos. 

Herramientas interesantes

Por otro lado, recopilamos aquí los programas que implementan o facilitan el uso de algoritmos genéticos desde el punto de vista tanto didáctico como práctico. Algunos mencionados o usados y disponibles de forma pública son:
  • KEEL: una herramienta de software diseñado para resolver una amplia gama de problemas de minería de datos (regresión, clasificación, asociación, agrupamiento...) mediante la generación de experimentos estándar y educativos, y para evaluar algoritmos evolutivos.
  • https://github.com/carlosnasillo/Hybrid-Genetic-Algorithm , una herramienta para evolucionar firmas a partir de un conjunto dado.
  • Educational Genetic Algorithms Training tool: , aunque de 2001, permite de forma gráfica aprender el funcionamiento de estos algoritmos.
  • JGAP, un framework para programar algoritmos genéticos en Java.
  • NeuCom - A Neuro-computing Decision Support Enviroment.

* 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)
* Algoritmos evolutivos y malware. ¿Evolucionan los "virus"? (V)

Sergio de los Santos
ssantos@11paths.com

No hay comentarios:

Publicar un comentario en la entrada