19 de setembro de 2013

Analisando Malwares com Cuckoo Sandbox

Normalmente quando analisamos softwares maliciosos, a maioria dos profissionais utiliza um conjunto de ferramentas que facilita o seu trabalho e já está sempre à mão pela facilidade de acesso. Uma espécie de toolkit, que basta jogar em um pendrive. Esse toolkit auxilia nos seguintes processos:

  1. Aquisição do malware
  2. Análise do malware
  3. Relatório de análise


Não vou entrar nos aspectos que envolvem o primeiro e o terceiro processo. Portanto, vamos falar de análise, que é separada em duas categorias: estática e dinâmica (comportamental). Nesse post vamos falar um pouco sobre análise dinâmica, utilizando uma ferramenta específica, de um software pretensamente malicioso e verificar se ou como ele realiza suas ações.

Cuckoo



Para análises comportamentais de samples de sistemas Windows/x86, utilizo o Cuckoo Sandbox, que é um projeto Open Source baseado em Virtual Box como seu componente de máquina virtual (parece que isso será alterado em futuras versões, para que possa ser utilizado em outras plataformas de virtualização).

Para preparar o ambiente para instalação do Cuckoo, utilizarei um Ubuntu Linux configurado como sistema principal em uma máquina física, com o Virtual Box instalado, com uma instalação padrão, sem nenhuma especificidade exclusiva.


Instalando o Cuckoo

Após a configuração inicial do sistema, é necessário fazer o clone do repositório do Cuckoo no Github:

$ git clone https://github.com/cuckoobox/cuckoo.git

Também é necessário instalar os módulos Python utilizados pela ferramenta:

$ sudo apt-get install python
$ sudo apt-get install python-magic python-dpkt python-mako

É interessante instalar, também, o pacote ssdeep e seus módulo python, para verificação de hashs com fuzzing:

$ sudo apt-get install ssdeep

Acesse http://code.google.com/p/pyssdeep/ e faça o download do pyssdeep:

$ svn checkout svn checkout http://pyssdeep.googlecode.com/svn/trunk/ pyssdeep
$ cd pyssdeep
$ python setup.py build
$ sudo python setup.py install

Instalação do Sistema hospedeiro 
Para o ambiente de análise é necessário instalar um Windows virtualizado, no Virtual Box, para que sirva como hospedeiro do pretenso malware. Pode utilizar qualquer versão do Windows, mas é importante estar atento que o comportamento do malware será diferente em cada versão. Sendo assim, nesse post utilizarei como exemplo um Windows XP SP3.
Instale o XP de forma usual. E uma vez instalado, crie um usuário e configure sua senha. Esse passo é importante, para que o Cuckoo possa conectar-se e e executar o malware. Se for possível, você também pode criar um domínio no AD e conectar o cliente para simular a estrutura de uma pequena rede.
Outra coisa importante, é instalar o VirtualBox guest components. Para tanto, vá ao menu Devices / Install Guest Addons... A instalação será iniciada.
Faça também o download e a instalação do Python para Windows, através do site http://python.org/download/ .
Um módulo que é importante de ser instalado e que pode ser útil para nós é o PIL, Python Image Library, que pode ser baixado a partir do endereço http://www.pythonware.com/products/pil/. Esse módulo permitirá que tiremos screenshots automaticamente do desktop durante o processo de análise.
Configuração dos drives compartilhados
É possível adicionar drivers compartilhados através da interface gráfica, mas tentarei automatizar o processo, criando um script de configuração dos drivers e coleta do tráfego de rede. Obviamente que cada usuário precisará configurar os parâmetros, principalmente os paths de acordo com sua realidade. Execute o script logo abaixo com o seguinte comando:
$ ./AddMachine.sh MART-XP-1 >> conf/cuckoo.conf

#!/bin/bash

host=$1

echo "[$host]"
echo "name = $host"
echo "username = User"
echo "password = cuckoo"
echo "share = shares/$host"
echo
echo

mkdir -p /home/mboman/Src/cuckoo/shares/$host

VBoxManage sharedfolder add $host --name $host --hostpath /home/hackproofing/Src/cuckoo/shares/$host --automount
VBoxManage sharedfolder add $host --name setup --hostpath /home/hackproofing/Src/cuckoo/shares/setup --automount --readonly
VBoxManage modifyvm $host --nictrace1 on --nictracefile1  /home/hackproofing/Src/cuckoo/shares/$host/dump.pcap

Aplicações de terceiros

Agora é o momento em que precisamos tornar nossa máquina virtual hospedeira mais parecida com uma máquina real, o que significa preenchê-la com "lixo". Por exemplo, se instalar o Microsoft Office em sua VM, mas não houver nenhum documento no diretório "My Documents", isso parecer''a muito estranho. Outra coisa estranha, é uma máquina Windows que não seja capaz de abrir um arquivo PDF, ou visualizar conteúdos Flash em websites; portanto, devemos instalar o Acrobat Reader e o plugin Flash, a menos que queira deixar a VM o mais limpa possível. Se quiser utilizar versões mais antigas de softwares a serem instalados, verifique se consegue encontrá-las em http://www.oldversion.com/.

Iniciando a análise

A maneira mais fácil de enviar um arquivo para análise, é utilizar o script submit.py:
$ ./submit.py -h
Usage: submit.py [options] filepath

Options:
  -h, --help            show this help message and exit
  -t TIMEOUT, --timeout=TIMEOUT
                        Specify analysis execution time limit
  -p PACKAGE, --package=PACKAGE
                        Specify custom analysis package name
  -r PRIORITY, --priority=PRIORITY
                        Specify an analysis priority expressed in integer
  -c CUSTOM, --custom=CUSTOM
                        Specify any custom value to be passed to
                        postprocessing
  -d, --download        Specify if the target is an URL to be downloaded
  -u, --url             Specify if the target is an URL to be analyzed
  -m MACHINE, --machine=MACHINE
                        Specify a virtual machine you want to specifically use
                        for this analysis

Exemplo:
$ ./submit.py 00028672e933f9a9156e3c36bb3a7da.exe

O que realmente é interessante no Cuckoo, e no script submit.py, é que podemos especificar a máquina na qual queremos executar o malware, o que é muito bom no caso de querer verificar como o malware reage em diferentes ambientes com diferentes aplicações.

Output da análise realizada pelo Cuckoo

Cuckoo salva os resultados da análise em diversos arquivos no diretório analysis/analysis-number/reports no seguinte formato (por padrão):
  • report.html - execution trace e opcionalmente screenshots do desktop no formato HTML. 
  • report.json - execution trace e opcionalmente screenshots do desktop no formato JSON.
  • report.maec.xml - execution trace e opcionalmente screenshots do desktop no formato MAEC XML.
  • report.metadata.xml - hashs do malware.
  • report.pickle - execution trace e opcionalmente screenshots do desktop Python Pickle Objects.
  • report.txt - execution trace em arquivo de texto.
A partir dessas informações, já dá para elaborar um relatório básico de análise, que pode inclusive dar suporte para análise estática de seu código.
É isso! Preparem seus labs e mãos à obra!