SignatureMiner, nuestra herramienta de análisis y la homogeneización de firmas de antivirus (recibe el premio al mejor póster en Pekín)

lunes, 11 de junio de 2018

Los antivirus han sido (y siguen siendo) una de las herramientas más prácticas a nivel de usuario para combatir las amenazas de ciberseguridad. Aunque resulte difícil mantenerse completamente actualizado ante los nuevos retos, proporcionan una herramienta muy útil para la detección y mitigación de amenazas conocidas. Uno de los retos de la industria (aunque ya casi que se ha tirado la toalla) ha sido siempre el intentar homogeneizar sus firmas para que todos los motores cataloguen, al menos de forma parecida, las diferentes familias de malware. Esto ayuda a que el usuario pueda determinar qué malware ha detectado y permite que disponga de más información a la hora de tomar decisiones sobre la gravedad de la situación, y actuar en consecuencias. Detectar un Trojan.Generic no suele ayudar mucho a tomar una contramedida adecuada, mientras que Adware.Generic, o Ransom.SamSam, por poner algunos ejemplos, pueden resultar más útiles. Incluso así, siempre existirá la duda de si estas firmas corresponden con la naturaleza del malware.

Hubo un momento en que se trabajó para que existiese un esquema de nomenclatura del malware homogéneo. Se hizo a través de la organización CARO. Si visitamos su página, todavía lo listan como una prioridad, aunque lo cierto es que se dejó de intentar hace muchos años. Resulta irónico que a pesar de afirmar que es importante, la web lleva a un 404 cuando se busca más información.

Webpage CARO
Aunque resulte importante la terminología del malware, en realidad el proyecto no cuajó

Una firma de antivirus corresponde al fragmento de texto que cada motor emite cuando detecta que una muestra analizada es o contiene algún tipo de malware. Aunque cada motor utiliza nomenclaturas y fórmulas muy diferentes, existe cierto consenso con respecto a mantener en información genérica sobre la naturaleza de la muestra. Por ejemplo:

a variant of Android/AdDisplay.Startapp.B
Adware/Startapp.A
Adware.AndroidOS.Youmi.Startapp (v)

Que corresponden a las detecciones proporcionadas por tres antivirus distintos a la misma muestra. En este mismo ejemplo se evidencia el principal problema que tiene utilizar más de un antivirus para tomar decisiones. En especial cuando se utilizan múltiples motores para el análisis.

SignatureMiner al rescate
Para solventar este problema, hemos desarrollado una prueba de concepto que se ha materializado en la herramienta que hemos bautizado como SignatureMiner. Ayuda a sus usuarios a descubrir reglas que rigen la generación de la mayoría de firmas y usar esas reglas para homogeneizar firmas a un esquema normalizado. Hemos aprovechado Tacyt y la clasificación de malware usada en otras investigaciones, para abordar el proyecto centrándonos en malware para Android.

La herramienta se ha escrito en Python y consta de dos componentes (equivalentes a scripts): classMiner y classAssigner. Vamos a revisar cada uno de los componentes y cómo se usan para identificar reglas (como expresiones regulares de Python) y normalizar firmas para, por ejemplo, determinar la clase de malware de una muestra por voto mayoritario (majority voting).

SignatureMiner imagen
Instancia del programa funcionando

  • ClassMiner: El componente de minería de reglas de SignatureMiner está basado en un algoritmo de similitud de textos conocido como Min-hashing, que calcula funciones de hash sobre distintos trozos del mismo texto para quedarse con el mínimo de cada firma. De este modo, cada firma tiene asociado un hash mínimo o "minhash" que será el identificador de su grupo. ClassMiner limpia y separa las firmas de antivirus por puntos, calculando sobre cada elemento resultante su minhash. Una vez calculados los minhashes, SignatureMiner agrupa los distintos trozos de firmas con igual minhash y se los presenta al usuario para que los analice. Es en este momento, cuando el usuario recorre la lista de elementos y genera expresiones regulares, reglas que puedan unir bajo la misma clase un conjunto de firmas similares. Tras elaborar las reglas, el usuario puede volver a ejecutar ClassMiner aplicando las reglas que ha encontrado, de modo que el resultado pueda ayudar a mejorar esas reglas (si se encuentran nuevos trozos de texto que antes no se habían encontrado) y verifique su funcionamiento (cuando los grupos que se encuentren sean circunstanciales). Una vez elaboradas estas reglas, se pasan al componente ClassAssigner de SignatureMiner, que será el encargado de asignar una clase única a cada muestra.
  • ClassAssigner: El componente de normalización de firmas de SignatureMiner utiliza las reglas extraídas por ClassMiner para normalizar cualquier firma "en crudo". Para ello, simplemente, limpia las firmas y les aplica las reglas extraídas en riguroso orden de aparición, según el principio de first match. Además, ClassAsigner soporta la votación de mayoría, siendo capaz de elegir, de entre todas las detecciones normalizadas, aquella en la que más antivirus coinciden. Dentro de las reglas, ClassAssigner introduce una regla por defecto que engloba todas aquellas firmas que no han podido ser detectadas por ninguna otra regla.

Data Driven Inference of Malware text

Mediante estos dos componentes, SignatureMiner proporciona una herramienta capaz de ayudar a identificar patrones de normalización (reglas) de firmas de antivirus y clasificar cada una de ellas en su clase correcta. De hecho, SignatureMiner proporciona una amplia versatilidad al usuario, ya que al ser este el encargado último de determinar las reglas, puede usar la herramienta para descubrir detalles de un conjunto de muestras (como versiones, sistemas operativos, etc.) así como personalizar la granularidad de las familias de malware (en nuestra prueba, adware sólo por ejemplo o más granularidad como startApp, Revmob, etc.).

SignatureMiner está pública en Github, donde se puede encontrar tanto la herramienta como su guía detallada de uso ( Para más detalles: http://github.com/ignmarti/signatureminer).

Premio al mejor póster en la IEEE CNS de Pekín 2018 imagen
Premio al mejor póster en la IEEE CNS de Pekín 2018

Este desarrollo parte de una investigación anterior ya publicada, que ahora, promovida desde el área de innovación y laboratorio de ElevenPaths, se ha mejorado y desarrollado en conjunto con la Universidad Carlos III de Madrid. Fue aceptada para participar en la IEEE Conference on Communications and Network Security en Pekín, donde a finales de mayo se presentaron los resultados. Resultó ganadora del mejor póster del congreso.


Ignacio Martín y el Equipo de Innovación y Laboratorio de ElevenPaths


No hay comentarios:

Publicar un comentario