Siguiendo la linea de utilizar aplicaciones y algoritmos para hacer análisis gráficos de amenazas informáticas, en este post queremos compartir una herramienta muy práctica y útil para visualizar el contenido de un archivo en una gráfica.
Ya en publicaciones anteriores escribimos sobre OpenGraphiti, un framework para visualizar capturas de tráfico de botnets y así poder entender dónde se conecta el código malicioso, qué archivos se descarga y en general cualquier comportamiento de red que pudiera tener.
Si la siguiente etapa de nuestro análisis está relacionado con el seguimiento de una campaña de propagación de alguna amenaza en particular, seguramente nos vamos a ver enfrentados a analizar varias muestras de diferentes códigos maliciosos, muy similares entre sí pero con alguna diferencia mínima en su comportamiento.
Una alternativa para encontrar similitudes entre diferentes archivos es utilizar técnicas de Fuzzy Hashing para determinar en porcentaje qué tanto se parecen dos archivos e incluso utilizando algoritmos de sdhash podríamos visualizar información de un conjunto grande de archivos.
Pero si además de lo anterior, sobre los archivos que queremos analizar necesitamos hacer una clasificación rápida para poder orientar análisis específicos a características similares, una opción interesante es ver una radiografía del archivo y encontrar si hay patrones que nos puedan ayudar en nuestros análisis.
Diferencias entre familias de códigos maliciosos
Partiendo de la base, no debemos olvidar que cualquier archivo en su sentido más básico es una secuencia de unos y ceros. Esto es lo que podríamos aprovechar para generar imágenes que de forma global nos resuman lo que hay dentro del archivo.
La siguiente imagen corresponde a la visualización de una muestra de la familia Win32/Dorkbot. Esta sola representación no nos aporta mucha información, pues no tenemos con qué compararla.
Para hacer estas visualizaciones utilizamos binglide para obtener representaciones gráficas de estos archivos ejecutables. Si tomáramos un archivo de una familia de códigos maliciosos diferente, en este caso Win32/Packed.Autoit, vamos a encontrar que los patrones en la imagen son diferentes a los del archivo anterior.
Si ahora vemos la siguiente visualización, ¿podrían identificar alguna similitud con alguna de las imagenes anteriores?
Si todos estamos viendo lo mismo, seguramente hallaremos más similitudes con la imagen anterior que con la primera. Por lo tanto, es muy probable que estemos ante un malware que tenga un comportamiento similar al de la familia Win32/Packed.Autoit.
Dectectando campañas de propagación de malware
Otro uso interesante de esta herramienta que podríamos aprovechar está relacionada con la identificación de campañas de propagación de códigos maliciosos.
Por ejemplo, la siguiente imagen corresponde a un archivo que pertenece a la familia de VBA/TrojanDownloader. El hecho de que no sea un archivo ejecutable se puede ver en lo diferente de la estructura con relación a los archivos anteriores:
Este primer archivo corresponde a una muestra que recibimos durante el mes de mayo del año pasado. Si visualizamos un archivo con diferente SHA1 pero de la misma familia que llegó un par de meses después, en julio, la imagen es muy similar:
Incluso haciendo un análisis similar sobre una nueva muestra recibida durante el mes de agosto, la imagen es muy similar a las dos anteriores:
Esto nos debería dar una idea de que estas muestras, si bien son diferentes y se propagaron en tiempo diferente, podrían estar relacionadas.
De hecho si hacemos un análisis más detallado, nos encontramos con que la forma de los arhivos es muy similar, pero van cambiando los servidores desde donde se descargan otros archivos maliciosos.
Si bien estos sencillos análisis nos dan alternativas dentro del análisis de malware, podríamos pensar en agregar características adicionales sobre scripts propios, como por ejemplo visualizar reglas de Yara para detectar características especiales.
¿Qué otras posibilidades se les ocurre que podríamos aprovechar con este tipo de herramientas?
SHA1 de las muestras
Familia VBA.TrojanDownloader
01C0A744EBB0E9D59A2B9806BAD7807111EC46CC
B52B57C0B20BD8B96B9ADD281C99569C2CCD1DF1
68F750C35E5ED8E7AD082EF464143927A8027FEB
Familia Autoit
7d9f84489f831b38f1f1710ac2d7c04d5fa64999
d0dd0b79287a2cd55670972de1b675a78cff4bb0
Familia Dorkbot
8f629b9b22e4a6e73a1df5bfee8fe235e10a5750