Instalando e utilizando o Cuckoo Sandbox

Quando falamos em análise de malware, inúmeras ferramentas estão disponíveis gratuitamente para realização tanto da análise estática quanto da análise dinâmica. Durante a minha graduação, por exemplo, desenvolvi o Freki, uma solução para análise estática automatizada e de fácil deploy via Docker.
Nesse cenário, o Cuckoo Sandbox se apresenta como uma excelente ferramenta para facilitar a vida dos analistas de malware e engenheiros reversos, visto que ela provê recursos automatizados para análise estática e dinâmica de artefatos maliciosos, além de centralizar os resultados em uma interface intuitiva.
Neste artigo, irei apresentar o processo de instalação, configuração e um pouco do uso do Cuckoo Sandbox.
Pontos importantes:
- Para a instalação do Cuckoo, utilizarei como software de virtualização o VMware 16 em um sistema hospedeiro Windows 11.
- A máquina virtual terá 32 GB de RAM, 8 cores de CPU e 256 GB de armazenamento. Essas configurações podem ser customizadas de acordo com o seu hardware, mas recomendo alocar uma boa quantidade de recursos para um melhor desempenho.
- O sistema operacional convidado será um Ubuntu 18.04.6.
Visão geral
De forma geral, nossa arquitetura será a seguinte:

Perceba que as máquinas Windows estarão isoladas do sistema hospedeiro. Essas máquinas serão controladas pelo Cuckoo e estarão em uma rede host-only, visando garantir a proteção do sistema operacional principal e da rede interna.
Configuração do VMware
Recomendo a utilização de uma boa quantidade de RAM e de processadores, visto que o Cuckoo criará máquinas virtuais dentro da nossa VM principal.

Habilite a opção “Virtualize Intel VT-x/EPT or AMD-V/RVI”, pois iremos instalar o VirtualBox dentro da máquina do Cuckoo. Inicie a VM e instale o Ubuntu normalmente, utilize como usuário “cuckoo” e uma senha forte.
Uma boa prática é sempre tirar snapshots da máquina virtual a cada mudança significativa do ambiente.

Instalação das dependências
Uma vez logado no sistema, abra um terminal e instale as dependências do Cuckoo:
$ sudo apt update
$ sudo apt install python python-pip python-dev libffi-dev libssl-dev python-virtualenv python-setuptools libjpeg-dev zlib1g-dev swig mongodb python-pip virtualbox tcpdump apparmor-utils
$ sudo apt install vim git unzip
Instalação do Cuckoo
Siga com a instalação do Cuckoo propriamente dita:
$ sudo aa-disable /usr/sbin/tcpdump
$ sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump
$ pip install -U pip pycrypto distorm3
$ git clone https://github.com/volatilityfoundation/volatility
$ cd ~/volatility/
$ sudo python setup.py install
$ cd ~/
$ virtualenv cuckoo
$ source cuckoo/bin/activate
$ pip install -U yara-python==3.6.3 cuckoo
$ cuckoo
Configuração do VirtualBox
Abra o VirtualBox dentro do Ubuntu e configure uma rede host-only, lembre-se de desabilitar o DHCP para essa interface:

Crie uma máquina virtual e realize a instalação de uma versão do Windows, utilizarei o Windows 7. Lembre-se de colocar a VM na rede host-only criada anteriormente.

Utilize um usuário chamado “cuckoo”. Após a instalação, configure um IP estático para a máquina, vou utilizar o 192.168.56.10. Também é interessante desabilitar o firewall e as atualizações do Windows.

O próximo passo é instalar o Python e o agente do Cuckoo nessa máquina. Em seu Ubuntu, baixe o Python 2.7 e copie o agente do Cuckoo para a pasta de downloads. Após isso, inicie um servidor web, baixe os arquivos na máquina Windows 7:


Execute o agente do Cuckoo em um prompt de comando com privilégios administrativos:

No Ubuntu, abra um terminal e tire um snapshot da máquina em execução:
$ VBoxManage snapshot "windows7" take "windows7_snap" --pause
$ VBoxManage controlvm "windows7" poweroff
$ VBoxManage snapshot "windows7" restorecurrent
Sua máquina virtual ficará com o estado de salva:

Configuração do Cuckoo
O último passo é configurar o Cuckoo. Inicialmente vamos alterar o arquivo /home/cuckoo/.cuckoo/conf/virtualbox.conf:
- Na linha mode = headless, altere o modo para gui.
- Na linha machines = cuckoo1, utilize o nome da sua máquina virtual (windows7).

- Crie um bloco de configuração para a máquina Windows 7 no final do arquivo:
[windows7]
label = windows7
platform = windows
ip = 192.168.56.10
snapshot = windows7_snap
No arquivo /home/cuckoo/.cuckoo/conf/reporting.conf, habilite o MongoDB:

Executando o Cuckoo
Em um terminal, inicie o Cuckoo:
source cuckoo/bin/activate
cuckoo --debug
Inicie a interface web em outro terminal:
source cuckoo/bin/activate
cuckoo web runserver
No seu navegador, acesse http://127.0.0.1:8000/ e você terá a interface gráfica do Cuckoo:

Para analisar um artefato, basta enviá-lo ao Cuckoo e realizar algumas configurações básicas. Após isso, a ferramenta automaticamente irá analisar o arquivo enviado:


Uma boa prática é rodar o comando cuckoo community para baixar as assinaturas providas pela comunidade. Dessa forma, o Cuckoo irá ranquear os artefatos analisados e apresentar estatísticas interessantes:


Conclusão
Nesse artigo abordamos o processo de instalação e configuração do Cuckoo Sandbox, uma das principais ferramentas para análise automatizada de malware.
A partir desse ponto, você já é capaz de executar malwares de maneira controlada em seu próprio laboratório de análise. Divirta-se!