Cuckoo: instalación y configuración básica

Hace ya un tiempo que estamos pensando alguna manera de mejorar en la detección de Malware y APTs y se nos ocurrió montar una sandbox que analizara ficheros automáticamente y nos generará un informe con los datos.

Esta idea no es nueva, es más algunas de las mejores marcas del sector ya ofrecen soluciones de este tipo. También existe una solución gratuita de sandbox.

Básicamente lo que hace este tipo de sandbox es ejecutar ficheros en una máquina virtual y generar informes de los cambios y conexiones que se realizan en este sistema. Una vez ejecutado el fichero la máquina virtual vuelve al estado inicial.

A continuación vamos a ver la instalación y configuración básica de esta sandbox.

Máquina base:

Para hacer correr Cuckoo correctamente vamos a necesitar lo siguiente; un entorno Linux, un sistema de virtualización, Python, tcpdump, Yara, volatillity y distorm.

  • Entorno Linux:

Para la instalación he elegido ubuntudeskotp, en muchas páginas web recomiendan trabajar con ubuntu server, pero este sistema no trae entorno gráfico, y para trabajar con máquinas virtuales prefiero trabajar con un entorno gráfico. En este caso he instalado una ubuntu desktop 12.04 LTS.

Para virtualizar los entornos de prueba he elegido Virtualbox, recomiendo instalarse el paquete que se descarga de la web de virtualbox una vez descargado únicamente tenemos que descomprimirlo y teclear dpkg -i para instalarlo.

  • Python y dependencias para cuckoo, es necesario instalar la versión 2.7 de Python.
sudo apt-get install python
sudo apt-get install python-sqlalchemy python-bson
sudo pip install sqlalchemybson
sudo apt-get install python-dpkt python-jinja2 python-magic python-pymongo 
      python-libvirt python-bottle python-pefile python-chardet
sudo pip install jinja2 pymongo bottle pefilemaecdjangochardet
  • Tcpcump, con esta herramienta podremos ver todas las conexiones que realiza la máquina que infectaremos con el malware.
sudo apt-get install tcpdump
sudosetcapcap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
sudo apt-get install libcap2-bin
  • Instalar Volatility:

Antes de instalar volatility necesitaremos instalar Yara, Distorm y Pycripto, que son prerrequisitos para volatility.

  • Distorm:
wget http://distorm.googlecode.com/files/distorm3-1.0.zip
unzip distorm3-1.0.zip
cd distorm3
python setup.py build
python setup.py build install
  • Instalación de Yara:
wget http://yara-project.googlecode.com/files/yara-python-1.4a.tar.gz
tar -xvzf yara-python-1.4a.tar.gz
cd yara-python-1.4a
python setup.py build
python setup.py build install
  • Instalación de pycripto:
wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.1.tar.gz
tar -xvzf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1/
python setup.py build
python setup.py build install
  • Instalación de volatility:
wget https://code.google.com/p/volatility/downloads/detail?name=volatility-2.3.1.tar.gz
tar -xvzf volatility-2.3.1.tar.gz
cd  volatility-2.3.1/
python setup.py install

Por último crearemos el usuario cuckoo y lo añadimos al grupo de virtualbox, cuando vayáis a crear las máquinas virtuales aseguraros de crearlas con el usuario cuckoo, para que al ejecutar cuckoo pueda tener acceso a estas máquinas.

adduser cuckoo
sudousermod -G vboxusers cuckoo
  • Instalación de la base de datos:

En este caso he elegido mysql que es fácil de configurar y de usar:

sudo apt-get install mysql-server python-mysqldb -y
mysql -u root -p
    create database cuckoo;
    grant all privileges on cuckoo.* to cuckoo@localhost identified by 'passW0rd' ;
flushprivileges;
quit;
  • Ahora solo nos queda descargarnos cuckoo:
git clone git://github.com/cuckoobox/cuckoo.git

Si lanzamos cuckoo ahora veremos:

Quiere decir que ha cargado correctamente pero que no tiene ninguna máquina virtual configurada.

  • Instalación y configuración del equipo virtual

Instalamos el equipo en una máquina virtual, recordad que debemos hacerlo con el usuario cuckoo, la configuración de red de la máquina la deberíamos configurar como solo anfitrión, para lo que debemos crear una interface virtual:

La red del equipo anfitrión se debe configurar de la siguiente manera:

Ahora debemos preparar la máquina anfitrión, instalaremos todo el software que necesitemos y copiaremos el agente de cuckoo. Este agente está en la ruta /cuckoo/agent. Se trata de un programita en python, por lo que en la máquina anfitrión deberemos instalar también python. También es recomendable instalar las guestadditions de virtualbox y desactivar el firewall de Windows.

Debemos tomar una snapshot de la máquina anfitrión, sobre esta snapshot se ejecutaran todos los ficheros que le pasemos a cuckoo.

Recordad que el agente de cuckoo debe estar lanzado cuando realicemos el snapshot, si queremos que el agente no se muestre en pantalla podemos cambiar la extensión .py por .pyw.

Configuración de cuckoo:

Hay dos ficheros claves que tenemos que modificar, los dos se encuentran en la ruta cuckoo/conf. Si habéis seguido los pasos uno a uno y asignáis a la interface vboxnet0 la ip192.168.57.1, directamente podéis copiar este fichero y suplantarlo por vuestro fichero cuckoo.conf

[cuckoo]
version_check = off
delete_original = off
delete_bin_copy = off
machinery = virtualbox
memory_dump = on
reschedule = off
process_results = on
max_analysis_count = 0
freespace = 64

[resultserver]
ip = 192.168.57.1
port = 2041
store_csvs = off
upload_max_size = 10485760

[processing]
analysis_size_limit = 104857600
resolve_dns = on

[database]
connection =mysql://cuckoo:passW0rd@localhost/cuckoo
timeout =

[timeouts]
default = 120
critical = 600
vm_state = 300

Fichero Virtualbox.conf, aquí tendremos que configurar los datos de las máquinas virtuales:

[virtualbox]
mode = gui
path = /usr/bin/VBoxManage
machines = 

[]
label = 
platform = windows
ip = 
snapshot = 
interface = vboxnet0
resultserver_ip = 192.168.57.1
resultserver_port = 2041

Ya está todo listo. Ahora sólo tendremos que enviarle un fichero a cuckoo para que se ponga a trabajar, esto se hace con la utilidad submit.py que se encuentra en la ruta cuckoo/utils.

Para lo cual tendremos que lanzar cuckoo:

Python cuckoo.py

Y en otra consola enviarle el fichero a analizar:

Python utils/submit.py 

Os adjunto un pequeño reporte de un análisis de un Zeus, para que veáis la información que proporciona cuckoo.

Comments

  1. Buen aporte.

  2. haber si nos traes el tuto como integrarlo con malcom !! seria genia, pero gracias por el aporte me sirvio de mucho

Trackbacks

  1. […] Los chicos de Sinologic nos proporcionan un listado para sacarle partido a tu centralita Asterisk.Instalación y configuración básica de Cuckoo. Tutorial para montarte un sandbox donde probar de forma segura la actuación de virus y demás […]