23 jul 2012

Análisis automático de malware con Cuckoo

A los amantes del malware ¿No hará falta que os explique que es un sandbox no? Ni tampoco ¿Que es un sandbox de malware?

Los que no conozcáis estos conceptos seguro que si os nombre Virus Total de Hispasec Sistemas ya sabréis a que me refiero.

El artículo de hoy trata sobre un sandbox open source de análisis de malware. Se trata de Cuckoo.

Cuando vi este proyecto en la web de HoneyNet, me entraron muchas ganas de probarlo, así que me ha faltado tiempo :P

La instalación de cuckoo la he realizado en un Ubuntu, ahora mismo es el sistema que está completamente soportado por Cuckoo. Probé la instalación en OS X Lion, pero aún da algunos problemas :) .

Los pasos para instalar Cuckoo són:

1)Preparar Ubuntu para los análisis con Cuckoo

Para usar Cuckoo harán falta una serie de paquetes para usarlo.

En una terminal tenemos que instalar:

sudo apt-get install python python-magic python-dpkt python-mako

Como elemento opcional instalamos ssdeep, lo bajamos por SVN, compilamos e instalamos

svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep-read-only

No entraré en detalles sobre este punto en concreto.

También nos hará falta tcpdump:

sudo apt-get install tcpdump

Tcpdump requiere permisos de root, para no tener que ejecutar Cuckoo como root, vía terminal hacemos

$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Ya tenemos lista la parte de tcpdump lista.

Luego solo falta bajar Cuckoo para poder empezar la configuración.

Lo descargamos de aquí y descomprimimos.

Los requerimientos de la parte de Ubuntu están listos.

2)-Preparación de la máquina virtual con Virtualbox

Instalar una máquina Windows XP con Python.

La máquina Windows ha de ser una instalación normal, en ella podemos incluir por ejemplo una versión de Java vulnerable, por si queremos hacer alguna prueba con un Exploit Kit. También un visor PDF vulnerable para lo mismo que el Exploit Kit. Además configuraremos la máquina virtual con usuario y password.

También hará falta instalar Python, descargarlo desde aquí.

Si queremos que en el análisis Cuckoo realice capturas de pantalla hará falta instalar también otro módulo de Python, a descargar de aquí.

Además hará falta instalar las Guest Additions de VirtualBox y el extensión pack de Virtualbox, lo descargamos de aquí

Una vez que tenemos todo esto, hay que hacer algunas cositas mas con VBoxManage, pero lo haremos “vía cli” 

Capturando tráfico de red con Cuckoo y Virtualbox

Gracias a la funcionalidad que tiene VirtualBox de sniffer, capturaremos el tráfico de la máquina virtual.

Apagamos la máquina virtual si la tenemos encendida y vía terminal hacemos:

$ VBoxManage modifyvm "Name of VM" --nictrace1 on --nictracefile1 /path/to/cuckoo/shares/<VM ID>/dump.pcap

El nombre de la máquina virtual es el nombre que le hayamos asignado cuando la hemos creado, en el caso del VM ID lo dejamos como cuckoo1, podemos cambiarlo luego en el archivo de configuración. el path es donde vayamos a colocar Cuckoo.

Carpetas compartidas

Para que Cuckoo pueda trabajar con la máquina virtual de VirtualBox, se habilitarán las carpetas compartidas. Con la máquina virtual apagada hacemos vía terminal.

$ VBoxManage sharedfolder add "<Name of VM>" --name "setup" --hostpath "/path/to/cuckoo/shares/setup" --readonly

Igual que antes en Name of VM el nombre que le hayamos asignado. En cuanto al nombre de setup, lo dejamos por defecto. El path igual que antes y la parte de shares/setup lo dejamos por defecto también.

Habilitamos la segunda carpeta compartida

$ VBoxManage sharedfolder add "<Name of VM>" --name "<VM ID>" --hostpath "/path/to/cuckoo/shares/<VM ID>"

Mismas aclaraciones que en el punto anterior además de poner el VM ID de Cuckoo1, que se puede cambiar en el fichero de configuración, pero lo dejaremos por defecto.

Después de hacer estos cambios encendemos la máquina virtual.

Creando un Snapshot

Volvemos a la terminal y guardamos un snapshot de la máquina virtual. Cuckoo lo usará para restablecer la máquina después de cada análisis.

En la terminal ponemos:

$ VBoxManage snapshot "<Name of VM>" take "<Name of snapshot>" --pause

Cambiamos el nombre de la máquina virtual al nuestro y en el nombre del snapshot, le ponemos el que queramos.

Apagando y restaurando estado de la máquina virtual

Una vez que hemos creado el snapshot apagamos la máquina virtual así:

$ VBoxManage controlvm "<Name of VM>" poweroff

Ahora restauramos la máquina virtual con el snapshot:

$ VBoxManage snapshot "<Name of VM"> restorecurrent

Ya tenemos la parte de la máquina virtual configurada para analizar las muestras con Cuckoo

Editando el archivo de configuración de Cuckoo

Ahora editaremos el archivo de configuración de Cuckoo, para dejarlo todo listo.

marc@darkunix: ~/cuckoo/conf $ vim cuckoo.conf

Editaremos las partes que nos interesan:

# Set to “gui” if you want Cuckoo to spawn virtual machines’ GUIs or set to# “headless” if you don’t.mode = headless

Esta parte lo que hace es que, si lo dejamos en modo gui, cuando analicemos una muestra de malware veremos como se levanta la máquina virtual, y que ocurre, si lo cambiamos a headless, todo será en background, yo lo prefiero así.

Otro apartado a editar:

[cuckoo1]name = cuckoo_xpusername = userpassword = user

El nombre es el que le hayamos asignado a la máquina virtual, también indicamos el user y el password.

Y hasta aquí la parte de dejar Cuckoo funcionando, en la segunda parte veremos como analizar las muestras de malware

2 comentarios:

  1. [...] señor Marc Rivero arranca la semana hablando de: Análisis automático de malware con Cuckoo, una cadena que promete [...]

    ResponderEliminar
  2. [...] a todos, desde hace varios meses venimos hablando en Flu Project del sistema Cuckoo, una utilidad fantástica para el análisis de malware que Marc nos ha explicado en detalle. Hoy [...]

    ResponderEliminar