2. 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.
3. 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.
4. 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.
5. Algunos de los módulos se pueden instalar mediante:
sudo apt-get install python-magic python-dpkt python-mako python-pymongo
6. 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.
7.
8. 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.
9.
10. 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.
11.
12. Ahora configuraremos varias cosas de Cuckoo para hacerlo funcionar:
Editamos el archivo cuckoo.conf:
xxxxxxx:~/tools/malware/cuckoo:nano conf/cuckoo.conf
13.
14. 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
15. # 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
16. 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.
17. 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
18. En la máquina virtual especificamos que usaremos esa interfaz en concreto:
19.
20. 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
21. 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.
22.
23. 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.
24.
25. 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:
28. Cuckoo estará a la espera de que hagamos submit de una muestra:
29.
30. 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.
31.
32. Desde la parte web podremos hacer un submit nuevo de una muestra, además de
indicarle la prioridad.
33.
34. En el apartado Browse, encontraremos las muestras que ya hayamos subido.
Clicando en el MD5, encontraremos un report de la muestra: