Cuckoo sandbox

38
CUCKOO SANDBOX OPEN SOURCE MALWARE ANALYSIS Clase 14 07-11-2013

description

Cuckoo sandbox

Transcript of Cuckoo sandbox

Page 1: Cuckoo sandbox

CUCKOO SANDBOX OPEN SOURCE MALWARE ANALYSISClase 14

07-11-2013

Page 2: Cuckoo sandbox

CUCKOO SANDBOX Muchos de nosotros habrás tenido ganas de poder realizar algún análisis de malware para saber que

hacía algunas de las muestras que nos han llegado, bien por correo electrónico, bien la has encontrado en aquel pen drive que algún familiar nos dice "Toma copia estas fotos" y en el USB hay mas malware que fotos para copiar.

Si no has lidiado realizando un análisis dinámico de la muestra o bien, no tienes práctica ni tiempo, al final acabas subiendo la muestra aquellos servicios que ya conocemos, Virus Total Jottis, Threat Expert o similares.

Pero, y si por un momento ¿No queremos subir la muestra a este tipo de servicios? Por ejemplo nos encontramos en un caso en el que no puedes distribuir la muestra ya que estás investigando un caso y la muestra no puedes subirla a cualquier sitio. En ese caso y otros, para hacerte con una idea general de lo que hace la muestra y poder realizar perfectamente un análisis dinámico tenemos entre otros proyectos Cuckoo.

El proyecto se encuentra MUY vivo y se va actualizando añadiendo nuevos módulos al sandbox y nuevas versiones cada cierto tiempo. Además las últimas versiones se instalan en no mas de 10 minutos, no como las primeras, que tenías que lidiar realizando mas pasos.

Page 3: Cuckoo sandbox

¿COMO FUNCIONA CUCKOO? El sandbox se apoya en el sistema de virtualbox o vmware con un sistema

windows instalado como cliente para poder realizar los análisis.

La estructura de Cuckoo es así:

Desde tu máquina enviarás tus muestras a los diferentes clientes que tengas configurados con Cuckoo para poder hacer los análisis pertinentes.

Page 4: Cuckoo sandbox

REQUERIMIENTOS DE CUCKOO EN EL HOST La instalación mas sencilla es en Ubuntu, aunque el Bugtraq ya la trae por default.

Si miramos la documentación de Cuckoo, necesitaremos:

Python

Magic (Highly Recommended): for identifying files’ formats (otherwise use “file” command line utility)

Dpkt (Highly Recommended): for extracting relevant information from PCAP files.

Mako (Highly Recommended): for rendering the HTML reports and the web interface.

Pydeep (Optional): for calculating ssdeep fuzzy hash of files.

Pymongo (Optional): for storing the results in a MongoDB database.

Yara and Yara Python (Optional): for matching Yara signatures.

Libvirt (Optional): for using the KVM module.

Page 5: Cuckoo sandbox

REQUERIMIENTOS DE CUCKOO EN EL HOST

Algunos de los módulos se pueden instalar mediante:

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

Page 6: Cuckoo sandbox

MÁQUINA VIRTUAL PARA LAS PRUEBAS

En una máquina en VirtualBox. Tan solo que en la máquina Windows instalada deberemos de configurar ciertas cosas:

Pondremos en OFF, el cortafuegos de windows y también las actualizaciones. Esto nos evitará en el caso del análisis de las trazas de red que no nos molesten las actualizaciones de red. Y el firewall lo desactivamos para que el malware se pueda conectar libremente a donde quiera.

Page 7: Cuckoo sandbox
Page 8: Cuckoo sandbox

REQUERIMIENTOS DE CUCKOO EN LA MÁQUINA VIRTUAL Python, para poder ejecutar el agente en la máquina virtual. Además necesitaremos software vulnerable, es por eso que instalaremos el software que necesitemos.

Para versiones viejas de software, oldapps.

Page 9: Cuckoo sandbox
Page 10: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO Solo configuraremos opciones básicas de cuckoo para hacerlo funcionar. Recomiendo trabajar con los archivos de configuración y adaptarlo a nuestras necesidades.

Bajamos Cuckoo o de la siguiente captura como se muestra a continuación:

xxxxxxxxxxx:~/tools/malware:git clone git://github.com/cuckoobox/cuckoo.git

Cloning into 'cuckoo'...

remote: Counting objects: 6324, done.

remote: Compressing objects: 100% (2048/2048), done.

remote: Total 6324 (delta 4101), reused 6214 (delta 4017)

Receiving objects: 100% (6324/6324), 4.88 MiB | 124 KiB/s, done.

Resolving deltas: 100% (4101/4101), done.

Page 11: Cuckoo sandbox
Page 12: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO Ahora configuraremos varias cosas de Cuckoo para hacerlo funcionar:

Editamos el archivo cuckoo.conf:

xxxxxxx:~/tools/malware/cuckoo:nano conf/cuckoo.conf

Page 13: Cuckoo sandbox
Page 14: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO De aquí lo que tendremos que cambiar es:

# Specify the name of the machine manager module to use, this module will

# define the interaction between Cuckoo and your virtualization software

# of choice.

machine_manager = virtualbox

Page 15: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO # Enable or disable the use of an external sniffer (tcpdump) [yes/no].

use_sniffer = yes

# Specify the network interface name on which tcpdump should monitor the

# traffic. Make sure the interface is active.

interface = en0

Page 16: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO Si usamos otro sistema que no sea Virtualbox, lo cambiamos. En mi caso dejo Virtualbox.

Si recuerdas como requisito instalamos tcpdump, si queremos que se capture el tráfico de red con tcpdump, dejamos marcado yes.

En cuanto a la interfaz de red, esto es muy importante y ha dado varios problemas de que no haya funcionado la última versión de cuckoo.

Page 17: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO En la documentación oficial de Cuckoo, aconsejan usar vboxnet0. La máquina virtual configurada con esta extensión NO tendrá acceso a internet por lo tanto si estamos estudiando algún tipo de troyano bancario, o un dropper no podrá hacerse el análisis dinámico correcto al no contar con el tráfico de red.

Si queremos poner la red en modo vboxnet0, lo configuramos en Virtualbox

Page 18: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO En la máquina virtual especificamos que usaremos esa interfaz en concreto:

Page 19: Cuckoo sandbox
Page 20: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO El poner la red en vboxnet0 nos sirve para poder controlar las conexiones que realice la máquina virtual. En mi caso me da igual por lo tanto, dejo la máquina en brigde y asigno la interfaz de la máquina. En el caso del mac, en0.

Ahora configuramos otro archivo:

xxxxxx:~/tools/malware/cuckoo:nano conf/virtualbox.conf

[cuckoo1]

# Specify the label name of the current machine as specified in your

# VirtualBox configuration.

label = sandbox

Page 21: Cuckoo sandbox

CONFIGURANDO Y PONIENDO EN MARCHA CUCKOO Specify the operating system platform used by current machine

# [windows/darwin/linux].

platform = windows

# Specify the IP address of the current machine. Make sure that the IP address

# is valid and that the host machine is able to reach it. If not, the analysis

# will fail.

ip = 192.168.1.113

Aquí especificamos el nombre que le hemos dado a la máquina virtual, la plataforma que usaremos y la dirección IP que tendrá la máquina virtual.

Page 22: Cuckoo sandbox
Page 23: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Con la última versión de Cuckoo, lo que se necesita es un agente en python:

xxxxx:~/tools/malware/cuckoo:ls agent/

agent.py

El agente deberemos de colocarlo para que se inicie al arrancar Windows, o bien con una entrada del registro, o en la carpeta startup.

Page 24: Cuckoo sandbox
Page 25: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO En este momento pausamos la máquina. Posteriormente la apagamos la máquina.

Restauramos la máquina al snapshot con la máquina virtual parada.

Arrancamos Cuckoo:

Page 26: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO xxxx:~/tools/malware/cuckoo:python cuckoo.py

Por ejemplo como se muestra a continuación

Page 27: Cuckoo sandbox
Page 28: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Cuckoo estará a la espera de que hagamos submit de una muestra:

Page 29: Cuckoo sandbox
Page 30: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Cuckoo empezará el análisis de la máquina virtual

Una vez acabado podremos ver el resultado en la parte web de Cuckoo, arrancamos la parte web:

xxxxx:~/tools/malware/cuckoo/utils:python web.py

Bottle v0.11.dev server starting up (using WSGIRefServer())...

Listening on http://0.0.0.0:8080/

Hit Ctrl-C to quit.

Page 31: Cuckoo sandbox
Page 32: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Desde la parte web podremos hacer un submit nuevo de una muestra, además de indicarle la prioridad.

Page 33: Cuckoo sandbox
Page 34: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO En el apartado Browse, encontraremos las muestras que ya hayamos subido.

Clicando en el MD5, encontraremos un report de la muestra:

Page 35: Cuckoo sandbox
Page 36: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Información que nos arroja Cuckoo

Page 37: Cuckoo sandbox
Page 38: Cuckoo sandbox

COMUNICACIÓN DE LA MÁQUINA VIRTUAL Y CUCKOO Podremos ver también la parte de red, y cambios a nivel de directorios.

Para saber mas del proyecto visitar:

http://www.cuckoosandbox.org/