CUCKOO SANDBOX

CUCKOO SANDBOX

Cuckoo Sandbox é uma solução Open Source, de análise de Malwares, rodando em um ambiente apartado (virtual machine) que realiza várias verificações tais como:

  • Dump de Ram
  • Artefatos extraídos
  • Análise de Comportamento
  • Analise de Rede
  • Arquivos “nascidos”
  • Screenshots das etapas de infecção
  • Log detalhado de cada processo, dll, download feito
  • Entre outros

Desta forma, se torna uma ferramenta muito útil para atividades de Forense no âmbito de análise de Malwares.

Vale frisar, que não me responsabilizo por uso inadequado desta solução ou por erros cometidos na manipulação de qualquer malware

Nos meus guias você verá várias vezes algumas caixas em algumas cores diferentes, apenas para você entender:

Instalação

A instalação do cuckoo é complexa e demorada, apesar de rodar em Python, possui várias particularidades que o tornam complexo.

Este guia de instalação foi montando no seguinte ambiente:

ATENÇÃO
não é recomendando utilizar um usuário ROOT para a instalação e utilização do cuckoo.
  • Maquina Hospedeira
    • Sistema Operacional: Linux Debian/Ubuntu/Parrot/Mint
    • Minimo de 4gb de RAM
    • Pelo menos 60GB de HDD
    • Suporte a Virtualização de computadores
      • Virtualbox
    • Acesso a Internet
  • Maquina Convidada
    • Windows XP ou 7
    • Minimo de 2gb de RAM
    • Minimo de 30gb de HDD
    • Acesso a Internet para instalação de drivers, librarias, programas, depois o acesso é removido.

Dependências

Então vamos lá. Antes de tudo, cuckoo requer várias dependências algumas facilmente instaladas com o APT-GET outras precisarão ser compiladas.

Instalação das dependências:

 sudo apt-get install git mongodb libffi-dev build-essential python-django python python-dev python-pip python-pil python-sqlalchemy python-bson python-dpkt python-jinja2 python-magic python-pymongo python-gridfs python-libvirt python-bottle python-pefile python-chardet -y

Instalação e configuração de TCPDUMP

Proceda a instalação do TCPDUMP normalmente

sudo apt-get install tcpdump

Geralmente o TCPDUMP requer privilegios ROOT para funcionar, então:

sudo setcap cap_net_raw,cap_net_admin=eip /usr/sbin/tcpdump

Verifique os resultado executando:

getcap /usr/sbin/tcpdump

O resultado deverá ser:

sbin/tcpdump = cap_net_admin,cap_net_raw+eip
OPCIONAL
Dependendo do ambiente que estiver montando o cuckoo poderá ter problemas com o TCPDUMP, então lá na frente quando estiver executando o cuckoo e tiver erros relacionado ao TCPDUMP execute os passos abaixo:

$ sudo apt-get install apparmor-utils
$ sudo aa-disable /usr/sbin/tcpdump

MINI-GUIDE 2

Somente se ao executar o comando “… aa-disable ….” gerou um erro similar a: “error: Include file /var/lib/snapd/apparmor/snap-confine not found”, ocorre por um dependência ou erro no SNAP, proceder:

$ sudo apt-get install snap snapd

Execute um script de teste do SNAP
$ sudo snap install hello-world
$ /snap/bin/hello-world.evil

Se nunca usou o SNAP, ao executar o teste de script acima o SNAP efetuou o download do “core” e logo em seguida executou o script de teste.

Se isso foi o que aconteceu, você poderá executar o comando novamente “…. aa-disable ….” citado acima que irá funcionar.

Instalação SSDEEP+

SSDEEP é um programa para gerar HASH chamado “fuzzy” que é um pré-requisito para o próximo item pydeep.

Proceder:

git clone https://github.com/ssdeep-project/ssdeep
cd ssdeep/
./bootstrap 
./configure 
make
sudo make install

Verifique se foi compilado e instalado executando:

ssdeep -V

Deverá retornar a versão, neste caso: “2.14.1”

Instalação PYDEEP

sudo pip install pydeep

VOLATILITY (Opcional)

Durante a analise de Malwares, algumas informações só poderá ser obtidas analisando a memoria RAM, para isso, podemos utilizar o Volatility, procedemos da seguinte forma:

sudo pip install openpyxl
sudo pip install ujson
sudo pip install pycrypto
sudo pip install distorm3
sudo pip install pytz

Instalação:

$ git clone https://github.com/volatilityfoundation/volatility.git
$ cd volatility
$ sudo python setup.py build
$ sudo python setup.py install
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
sudo python setup.py build
sudo python setup.py install

Teste a instalação:

python vol.py -h

Instalação do Cuckoo

Adicionando usuario:

sudo useradd cuckoo
sudo usermod -a -G vboxusers cuckoo
sudo usermod -a -G libvirtd cuckoo

Instalando Cuckoo

sudo pip install -U pip setuptools
sudo pip install -U cuckoo

Executando pela primeira vez:

cuckoo -d

                                 _|
     _|_|_|  _|    _|    _|_|_|  _|  _|      _|_|      _|_|
   _|        _|    _|  _|        _|_|      _|    _|  _|    _|
   _|        _|    _|  _|        _|  _|    _|    _|  _|    _|
     _|_|_|    _|_|_|    _|_|_|  _|    _|    _|_|      _|_|

 Cuckoo Sandbox 2.0.6
 www.cuckoosandbox.org
 Copyright (c) 2010-2018

=======================================================================
    Welcome to Cuckoo Sandbox, this appears to be your first run!
    We will now set you up with our default configuration.
    You will be able to modify the configuration to your likings
    by exploring the /home/cuckoo/.cuckoo directory.

    Among other configurable things of most interest is the
    new location for your Cuckoo configuration:
            /home/cuckoo/.cuckoo/conf
=======================================================================
ATENÇÃO
A primeira execução é apenas para lhe informar a localização dos arquivos de configuração. Por favor, anote, você irá precisar!

Agora que já temos o cuckoo instalado, vamos deixar de stand-by o cuckoo e partir para configuração da maquina convidada, isso de deve ao fato que você irá precisar parametrizar o cuckoo de acordo com o ambiente montado.

Instalação do ambiente virtual

Conforme citado no inicio da documentação, utilizaremos virtualbox para montar nosso ambiente de convidado para o cuckoo, caso já tenha instalado o virtualbox pule para o próximo passo.

sudo apt-get install vitualbox

Configurando o VirtualBOX para Cuckoo

Adicionando o usuário cuckoo ao virtualbox

sudo usermod -a -G vboxusers cuckoo

Faça a instalação do computador convidado da sua forma, ou como exemplificado a seguir:

Criando a maquina virtual

INFORMAÇÃO
Você poderá optar se quer fazer a instalação do Windows com senha ou sem senha. A questão é que a maquina sempre que inicializar deverá já estar logada.

Após a instalação do Windows, faça a instalação no minimo de:

  • Service Pack;
  • Python 2.7;
  • Instalar pillow;
  • Instalar Java;
  • Dotnet 3.5.

Configure este windows no minimo de:

  • Desativar o Firewall do Windows;
  • Desativar UAC (Controle de Contas de Usuário);
  • Definir o IP fixo da maquina conforme exemplo:
ATENÇÃO
A configuração do IP deverá ser a última etapa, já que sua definição ira restringir o acesso a Internet do convidado.

Configurando a rede isolada

Para a comunicação entre o frontend e backend do cuckoo se é necessário montar uma rede isolada para esta comunicação. Então, crie uma nova interface interna no Virtual Box e vincule esta rede ao computador convidado.

No Virtual Box, clique em Arquivo –> Host Network Manager –> Criar

Crie conforme exemplo, lembra de desativar o DHCP:

INFORMAÇÃO
Talvez você precise elevar o virtualbox, caso de erro de permissão ao criar a interface, encerre o virtualbox, execute novamente como “sudo virtualbox” crie a interface, e encerre o virtualbox. Abra novamente sem sudo, que a interface estará criada.

Vincule a interface criada ao Host, conforme exemplo:

Liberando a internet para o convidado (opcional)

Eventualmente alguns malwares necessitam de acesso a internet, então, siga o MINI-GUIDE abaixo para conceder acesso a internet via iptables. Lembrando que as regras abaixo não são persistentes, ou seja, após o reboot estas regrão não estarão ativas.

sudo iptables -t nat -A POSTROUTING -o eth0 -s 192.168.56.0/24 -j MASQUERADE
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -j LOG

echo 1 | sudo tee -a /proc/sys/net/ipv4/ip_forward
sudo sysctl -w net.ipv4.ip_forward=1

Instalação do agente Cuckoo

Após todas as tratativas necessárias de configurações do computador convidado, se é necessário copiar o arquivo “agent.py” se encontra no seguinte local:

/home/user/.cuckoo/agent/agent.py

Copie o arquivo para o menu iniciar (iniciar -> todos os programas -> inicializar)

Inicialize o aplicativo (duplo clique) e deixe a janela visível. Você não verá nenhuma informação neste console, somente quando enviar um malware para analise. Então, sim, é uma tela preta.

Snap Shot da maquina virtual

ATENÇÃO
Por ser uma maquina que você ira testar malwares, então, faça os devidos testes de acesso a internet, testes de isolamento da maquina (sem acesso a sua rede primária), e sem nenhum compartilhamento ativo, (incluindo o do próprio Virtualbox Shared Folder), e a desativação de compartilhamento bidirecional e arrastar e soltar.

Encerrado todas as instalações e configurações da maquina virtual e com o agente em execução. 

Com a maquina ligada crie um snapshot, conforme exemplo:

Agora você poderá desligar a maquina, desligar ela de forma “bruta”, já que todo o analise ele ira proceder com a restauração do snapshot realizado.

Configuração do Cuckoo

Agora vamos parametrizar o cuckoo, antes de começar a brincadeira de fato!

Você vai precisar editar alguns arquivos de configuração, para este cenário somente os arquivos e itens citado as demais configurações existente nos arquivos deverá permanecer sem alteração.

$ vim /home/user/.cuckoo/conf/cuckoo.conf 

[cuckoo]
machinery = virtualbox

[resultserver]
ip = 192.168.56.1
port = 2042

$ vim /home/user/.cuckoo/conf/auxiliary.conf

[sniffer]
enabled = yes

$ vim /home/user/.cuckoo/conf/virtualbox.conf
[virtualbox]
machines = LeForense.com
interface = vboxnet0

(Altere [cuckoo] para o nome adotado na sua maquina virtual)
[LeForense.com]
label = LeForense.com
ip = 192.168.56.101
snapshot = 

Iniciando o Cuckoo

Com tudo em ordem, maquina virtual desligada, cuckoo configurado, agora vamos brincar um pouco.

Para efeito didático, poderá efetuar o download deste “Fake Virus” para testes (https://www.ikarussecurity.com/support/virus-info/test-viruses/)

Abra duas consoles no Linux
Em uma delas:

cuckoo -d

                                 _|
     _|_|_|  _|    _|    _|_|_|  _|  _|      _|_|      _|_|
   _|        _|    _|  _|        _|_|      _|    _|  _|    _|
   _|        _|    _|  _|        _|  _|    _|    _|  _|    _|
     _|_|_|    _|_|_|    _|_|_|  _|    _|    _|_|      _|_|

 Cuckoo Sandbox 2.0.6
 www.cuckoosandbox.org
 Copyright (c) 2010-2018

 Checking for updates...

Se tudo estiver certo, não sera exibido nenhum ERROR (vermelho)… Alguns WARNING (amarelo) poderá até aparecer, cabe a você decidir se quer se aprofundar ou não.

Ultimas linhas exibidas:

2018-09-26 14:01:47,902 [cuckoo.machinery.virtualbox] DEBUG: Restoring virtual machine LeForense.com to its current snapshot
2018-09-26 14:01:48,171 [cuckoo.core.scheduler] INFO: Loaded 1 machine/s
2018-09-26 14:01:48,188 [cuckoo.core.scheduler] INFO: Waiting for analysis tasks.

Na segunda console:

cuckoo web runserver
Performing system checks...

System check identified no issues (0 silenced).
September 26, 2018 - 14:04:52
Django version 1.8.4, using settings 'cuckoo.web.web.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Acesse o seu Cuckoo pelo endereço acima informado, deverá exibir uma tela similar a este. Clique em “SUBMIT A FILE FOR ANALYSIS”

Selecione o arquivo (tick) que quer analisar, conforme exemplo:

Aguarde o resultado. Quando concluído clique em report.

Ao visualizar o relatório você terá varias vertentes de analises (memoria, arquivos extraídos, analise de rede, etc), conforme:

Como também terá uma visualização de todas as etapas que o virus visualmente passou, conforme exemplos:

OBSERVAÇÃO: Caso a visualização de relatório não esteja sendo exibida, certifique-se de:
– Mongodb inicializado;
– Execute o comando abaixo em uma nova console e teste novamente:
$ cuckoo process instance1

Conclusão

Análise de Malware é uma atividade comum para quem atua na Segurança da Informação, nesta outra publicação, você poderá ver de fato um análise real de um phishing direcionado, para entender de fato seu propósito.

Para efeitos didáticos e por sua conta própria (não me responsabilizo por quaisquer danos que venha ocorrer pela manipulação inadequada) poderá acessar o repositório “The Zoo” onde está disponível uma coleção de vários tipos de vírus, malwares, trojan, ransonwares, etc.  (https://github.com/ytisf/theZoo)

Referências

Pagina oficial: https://cuckoosandbox.org/

Documentação Oficial: http://docs.cuckoosandbox.org/en/latest/installation/

About The Author

Related posts

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *