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
- 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.
Buen aporte.
haber si nos traes el tuto como integrarlo con malcom !! seria genia, pero gracias por el aporte me sirvio de mucho