Plantas carnívoras vs. nuevos bichos (II)

dionaeaLa entrada anterior era tan sólo una introducción a esta interesante herramienta, pero no mucho más extensa de lo que cuentan en la página principal del proyecto. La idea original de este artículo que he tenido que dividir era, además de presentarla, mostrar algunas curiosidades de las que podemos sacar bastante jugo y que paso a comentar a continuación.

Colaborando con la causa

Como comenté en el artículo anterior, uno de los puntos más interesantes de Dionaea es el envío de las muestras de malware a servicios de terceros para su análisis. Pero esto no es lo realmente interesante, no nos interesa saber de qué especimen se trata en concreto, ya que hemos comentado que se presupone que todo archivo descargado será malware -salvo que queramos analizarlo en un laboratorio y averiguar cómo funciona-. Lo más interesante es que alguna de las muestras que enviamos no haya sido detectada previamente y no exista firma en los motores de antivirus. Es decir, sea una nueva variante no detectada hasta el momento.

Además, este módulo permite descargar también el informe del resultado del análisis según los diferentes antivirus y almacenarlos en la base de datos. Pero si encontramos malware nuevo es cuando estaremos colaborando con la causa, y la sonda estará cumpliendo su máximo cometido; así ayudamos a que se actualicen las firmas de antivirus para detectar nuevas muestras que circulan en la red.

Para habilitar el módulo, debemos darnos de alta en VirusTotal y obtener una clave del API, que la copiaremos en la configuración de Dionaea:

virustotal = {
apikey = "........." // grab it from your virustotal account at My account -> Inbox -> Public API
file = "var/dionaea/vtcache.sqlite"
}

y para activar el módulo, descomentaremos la línea de “virustotal” del mismo archivo:

ihandlers = {
handlers = ["ftpdownload", "tftpdownload", "emuprofile", "cmdshell", "store", "uniquedownload",
"logsql",
"virustotal",
// "mwserv",
// "submit_http",
// "logxmpp",
// "nfq",
// "p0f",
// "surfids",
// "fail2ban"
]
}

Una vez configurado y funcionando, podemos ver el hash de los ficheros enviados o consultar el malware enviado por nuestro usuario en VirusTotal para ver las nuevas muestras.

Estadísticas

Otra información interesante que podemos extraer es la tendencia en los ataques: hacia dónde se están dirigiendo los ataques, qué servicios están siendo más atacados en cada momento para, por ejemplo, suponer que se ha descubierto una nueva vulnerabilidad en un servicio o aplicación si se detecta un aumento en el número de ataques a ese servicio. Más importante que el número de ataques, es su variación. Ya se sabe: si no se puede medir, no existe.

Dionaea viene con una característica que registra las peticiones que le llegan a los servicios aunque éstos no estén disponibles, identificándolos como rejected (rechazados). De esta forma, podemos cuantificar los ataques a todos los puertos y detectar este aumento, como comentábamos en el párrafo anterior. Ya sólo queda contar el número de peticiones periódicamente y calcular estas variaciones con algún script o programita en Python o el lenguaje de programación que más nos guste :)

Para otro tipo de información estadística, al tratarse de una base de datos, se pueden hacer las consultas que queramos, pero si no queremos calentarnos nada la cabeza podemos aprovechar las numerosas consultas que ya ha preparado otra gente y pueden cubrir nuestras necesidades bastante bien. Además, cuentan con algunos scripts en Python que muestran resúmenes de aspectos como puertos atacados, cantidad de malware descargado, nuevos especímenes y mucha otra información.

Completando el ciclo

Este particular ciclo de vida del análisis de malware, que se inicia con la detección, podríamos completarlo con una fase de generar una firma que lo identifique. A partir de un artículo de Leon van der Eijk he descubierto una manera de completar este ciclo. Si disponemos de ClamAV como antivirus corporativo podemos crear firmas para ese nuevo malware al momento, ya que siempre pasa un tiempo desde que se detecta el nuevo virus hasta que las casas publican la firma.

ClamAV tiene una herramienta llamada Sigtool que se usa para generar tus propias firmas a partir de los MD5 del binario. Se ejecuta de la siguiente manera:

# sigtool –md5 test.exe > test.hdb
# cat test.hdb
# 48c4533230e1ae1c118c741c0db19dfb:17387:test.exe

Esto genera el MD5 del bicho y lo almacena en test.hdb, pero esto sólo sirve si es estático, ya que a cualquier variación en el binario le correspondería otro valor MD5.

Una vez generada la firma, se copia el archivo .hdb en la carpeta correcta (según el ejemplo, en /var/lib/clamav) y ya está lista para ser utilizada en el siguiente análisis. Ahora nuestro antivirus detecta malware que acabamos de descubrir y ningún otro antivirus detecta. Se trata de una especie de Malware 0-day.

Existe una opción similar que, en lugar de generar firmas para el antivirus ClamAV, las genera para Snort. Se trata de Nebula, un proyecto de los mismos desarrolladores de Dionaea, y su funcionamiento sería parecido pero nos extenderíamos demasiado comentándolo, así que simplemente lo nombro y os invito a visitar su página para ampliar más información, ya que aún no lo he probado.

Conclusiones

Una Honey es una buena herramienta desde la que extraer mucha información, sobretodo de tipo estadístico, así que como conclusión puedo decir que esta herramienta podría ayudarnos de la siguiente manera:

1. Identificar nuevas amenazas de virus y generar respuestas a este Malware 0-day.
2. Prever posibles vulnerabilidades en servicios a raíz de un aumento en los ataques a determinados servicios.
3. Obtener las muestras para un posible análisis posterior en un laboratiorio de malware.

Pero no hay que olvidar nunca una cosa: lo importante no es la información que consigues, sino cómo la sabes explotar.

Trackbacks

  1. […] Plantas carnívoras vs. nuevos bichos (II)(…) Lo más interesante es que alguna de las muestras que enviamos no haya sido detectada previamente y no exista firma en los motores de antivirus. Es decir, sea una nueva variante no detectada hasta el momento. .. […]