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

sábado, 19 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.

Desde la década pasada, los algoritmos evolutivos y la programación genética han irrumpido con fuerza en la ingeniería informática. En una frase, los algoritmos evolutivos pretenden encontrar soluciones aplicando técnicas de cambio y mutación en una serie de planteamientos y comprobar si estos satisfacen mejor el problema. Si es así, estos mejores candidatos siguen modificándose de forma inteligente o aleatoria para dar con el candidato ideal que soluciona el problema. Pensemos en candidatos como vectores, por ejemplo. Esto permitiría solucionar problemas de forma rápida en vez de tener que usar la fuerza bruta recorriendo todas las posibilidades de un vector. Es una explicación burda, pero lo cierto es que los algoritmos genéticos tienen gran potencial. Tanto, que cuando se popularizaron hubo un momento de euforia en el que muchos pensaron que resolverían ciertos problemas intratables hasta el momento, hasta que se demostró que al final no había "free lunch" y que realmente no podían llegar a batir en todas las circunstancias a la búsqueda ciega.

Estructura típica de un algoritmo evolutivo.
Fuente: http://www.scielo.org.ve/scielo.php?script=sci_arttext&pid=S1316-48212006000400002


Por su versatilidad son usados en un amplio rango de campos pero quizás el análisis del malware podría prestarse especialmente a ser mejorado con este tipo de algoritmos, por varias razones:

  • Clasificar y detectar el malware de forma eficiente es un grave problema de la informática en general. Desde mediados de la década pasada, ya no solo en entornos de escritorio sino también en dispositivos móviles, entornos industriales y como arma de la llamada "ciberguerra" en el que instituciones gubernamentales lo utilizan como método de espionaje o control.
  • Los modelos tradicionalmente utilizados para detectar y catalogar malware han sido las "firmas" creadas por motores antivirus. Aunque efectivas en cierto grado con el malware común, resultan hoy en día eludibles por los atacantes desde el punto de vista técnico. El malware con fines económicos o logísticos pasa fácilmente desapercibido para los motores, puesto que sus creadores disponen de las herramientas necesarias (entre ellas el propio antivirus) para modificarlos y realizar diferentes versiones que no sean detectadas.
  • La creación de malware ha crecido sustancialmente, tanto en número como en sofisticación y presencia, por lo que se manejan ya cientos millones de registros y muestras que catalogar y detectar. Esto dificulta el trabajo de los propios motores, que crean firmas más genéricas (y menos efectivas) para poder abarcar el máximo malware común.
En un principio, el malware (tradicionalmente denominado "virus"), parece especialmente propenso a ser estudiado por algoritmos evolutivos, debido a que tradicionalmente se ha mostrado como una especie de organismo parasitario capaz de reproducirse y evolucionar, aunque ese modelo de malware no se utilice desde mediados de la década pasada. Estos factores hacen pensar que los algoritmos evolutivos en particular (especializados en resolver problemas muy complejos, con gran cantidad de datos y características) y el "machine learning" en general pueden dar la posibilidad de ofrecer una solución interesante en el campo del malware, bien detectando, evaluando, clasificando o incluso prediciendo sus capacidades y evoluciones. Pero... ¿es cierto?

Conceptos previos

En el mundo del malware, el sistema de firmas tradicional se utiliza para la clasificación y detección en general, y se basa en características concretas del binario que permitan identificarlo. Con ellas, si son extrapolables y significativas, se podría detectar más malware (y nuevas versiones) e intentar así clasificar muestras previamente desconocidas de forma más eficaz. El sistema de firmas se ve lastrado por depender de los recursos del laboratorio responsable del motor antivirus, que las genera de forma más o menos automatizada (a veces con intervención humana) y de manera reactiva (ante nuevas muestras que las eluden, se necesita estudiar cómo lo han conseguido para poder recrear las nuevas firmas). Pero si se eligen los atributos correctos al margen de las firmas más estáticas (una clasificación atendiendo a características más adecuadas), se podría realizar la clasificación de forma automática y (en teoría) más eficaz que las firmas (que habitualmente se restringen a cadenas concretas o combinación de código único encontrados en los binarios). Además, si bien las firmas suelen ser eludidas por los creadores de malware variando el código concreto que detecta el motor antivirus pero manteniendo la funcionalidad del malware, al tomar otras características basadas en funcionalidad u otros parámetros como referencia, se hace más complejo para un atacante poder evitarlas y pasar así inadvertido.

En los artículos y experimentos que vamos a analizar se tratan varios casos de clasificación de binarios en malware o goodware. En ellos, el éxito se suele medir por el "accuracy" alcanzado en la clasificación. Es un dato que refleja el éxito de la clasificación (malware o goodware) pero que además aglutina los falsos positivos (goodware erróneamente clasificado como malware), falsos negativos (malware erróneamente clasificado como goodware), verdaderos negativos (goodware clasificado satisfactoriamente como goodware), y verdaderos positivos (malware clasificado satisfactoriamente como malware). Habitualmente se comparan los resultados contra la detección de motores antivirus u otros clasificadores para comprobar su eficacia.

Debido a la existencia de un trabajo de recopilación previo similar realizado en 2009 por Christie Williams (aunque no con carácter crítico), a partir del siguiente artículo nos centraremos principalmente en cómo ha evolucionado el área desde entonces, con un exhaustivo repaso a 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