Por:
Rangel
Viotti (rangel.viotti@gmail.com)
Thiago
Pereira (thiagootcm@gmail.com)
William
Benthon (benthon@gmail.com)
Introdução
Com
o advento da popularização do acesso à rede mundial bem como o crescimento da
oferta de serviços de e-commerce,
serviços públicos, redes de pesquisas acadêmicas, notícias e comunicações em
geral, houve também o crescimento de ameaças e exploração de vulnerabilidades
por parte de indivíduos que buscam vantagens financeiras, danos a terceiros ou
simplesmente reconhecimento em sua própria comunidade “underground”.
Tais indivíduos lançam
mão de seus conhecimentos em tecnologias e linguagens para criar softwares que,
uma vez indevidamente baixados e/ou executados, iniciam ações quase sempre
imperceptíveis aos olhos da vítima e que causam danos que vão do simples
aborrecimento até perda de informações pessoais importantes. O termo “Malware” é comumente usado para
referir-se a tais softwares.
No escopo do termo “Malware”,
existem os temos mais conhecidos por “Vírus”,
“Spyware”,
“Trojan”, “Ransomware”, “Backdoor
Exploiter”, “Downloader”, entre
outros.
Existem vários
problemas na questão da prevenção de ataques a sistemas operacionais e na ação
de continuidade de negócios em qualquer nível (de usuários comuns a empresas e
corporações). Entre estes, podemos citar a dinâmica quase simbiótica entre
evolução das técnicas de exploração de vulnerabilidades e o uso da engenharia
social que mira usuários desavisados ou descuidados.
A tarefa de manter a
segurança de sistemas de informações pelo menos a um passo à frente de intrusos
é constantemente posta à prova pela criatividade e determinação dos indivíduos
por trás das ações criminosas. Tal dinâmica tende a se tornar um exercício de
futilidade se não houver uma compreensão multidisciplinar e profunda das
técnicas, linguagens e intenções que podem ser resgatadas dos arquivos e
interpretadas objetivamente.
Ferramentas
de Análise mais conhecidas.
O estudo de caso abaixo
visar apresentar de modo prático o uso do Cuckoo
SandBox para realizar a análise de Malware.
Primeiramente, são mencionadas algumas ferramentas utilizadas na captura de
informações da execução dos programas maliciosos. Mostra-se, também, como
implementar a ferramenta Cockoo Sandbox
em si .Para finalizar o projeto, os entusiastas terão a oportunidade de
acompanhar um estudo de caso completo deste a instalação e configuração das
ferramentas até a análise de um exemplar de Malware.
Uma das abordagens da SI neste campo é a análise de Malwares através de ferramentas próprias
Abaixo, segue uma descrição das ferramentas mais comuns
para a análise de Malwares.
Anubis
Anubis é uma ferramenta
de análise de comportamento para Windows PE-executables
(Portable executables [binários
Windows]) com foco especial em análise de Malware.
O uso do Anubis é baseado na geração de arquivos de relatórios contendo
informações suficientes para dar ao usuário sobre o propósito e ações dos
binários analisados. Os relatórios gerados incluem dados detalhados sobre
modificações feitas na register do Windows ou no sistema de arquivos que
incluem interações com o Windows Service
Manager ou outros processos e, é claro, os logs gerados pelo tráfico na rede.
A análise é baseada na
execução de um arquivo binário em um ambiente emulado e observado, i.é. analisando
sua própria execução. A análise é focada em aspectos de segurança relevantes
das ações dos programas que tornam o processo mais fácil porque o domínio em
questão é de baixa granulação, o que permite maior precisão nos resultados.
Mais informações sobre a ferramenta, acesse: http://anubis.iseclab.org/
Ether
Ether é investigação da qualidade de código.
Foi testado apenas nas distribuições Debian Etch e Lenny como
sistema operacional hospedeiro e Windows
XP Service Pack 2 como o sistema convidado. Até o momento, o Ether não é
está formatado para ser usado em ambiente de produção. Mas é adequado como
ferramenta de pesquisa. Todo o código é licenciado sob a GPL. Nota: A licença
GPL permanece a menos alguma nova versão cite outro tipo de licenciamento.
Para a sua implementação os seguintes pré requisitos são
necessários:
Intel VT (Intel Virtualization Technology) para
uma análise de malware transparente e, portanto, ser executado em “bare metal” (O termo se refere a Disco
Rígido). Além disso, a máquina hospedeira precisa ter a tecnologia Intel VT
(setada na Bios) e plataforma de 64 Bit. Mais informação sobre a ferramenta
acesse: http://ether.gtisc.gatech.edu/source.html
Joe Sandbox
A ferramenta Joe Sandbox Desktop executa arquivos e
endereços URL em um ambiente controlado e monitora o comportamento de
aplicações e sistemas operacionais em busca de atividades suspeitas. Todas as
atividades são compiladas em um relatório completo e abrangente.
Tais relatórios de
análise contêm informações importantes sobre potenciais ameaças que subsidiam
os profissionais de segurança cibernética para implantar implementar e
desenvolver a estratégia defesa e proteção adequada. O foco desta ferramenta
são sistemas baseados no sistema operacional Windows.
RunScanner
Trata-se de um
utilitário freeware baseado em Windows que escaneia o sistema tendo
como alvo todos os programas em andamento (sendo executados), arquivos
autoexecutáveis locais, drivers,
serviços e pontos hijack. O Runscanner pode ser usado para detectar
mudanças de estado e desconfigurações do sistema causadas por spyware, vírus ou erros humanos.
Cuckoo SandBox
Trata-se de um sistema
de análise de Malware que possibilita
ao usuário enviar qualquer arquivo suspeito ao núcleo de análise de Malware e o sistema retorna alguns
resultados detalhados descrevendo o que tal arquivo fez ou executou quando
testado dentro de um ambiente controlado e isolado. O Cuckoo Sandbox gera vários dados de diferentes naturezas tais como:
• Funções
nativas e rastreio de chamadas nativas na API do Windows.
• Cópias
de arquivos criados e deletados do sistema de arquivos.
• Despejo
de memória dos processos selecionados.
• Despejo
total de memória para análise da máquina
• Captura
de tela do desktop durante a análise
de Malware.
• Despejo
da rede gerado pela máquina usada para a análise.
Na geração de relatórios, Cuckoo processa diferentes tipos
de apresentações incluindo:
• Formato
JSON (Javascript Object Notation)
• Formato
HTML.
• Formato
MAEC (Malware Attribute Enumeration and
Characterization).
• Interface
MongoDB (Banco de dados escrito em Python)
• Interface
HPFeeds (projeto que implementa um protocolo autenticado "peso-leve"
para publicação/assinatura de datafeeds).
Mais informações sobre a ferramenta acesse: http://cuckoobox.org
Aplicação prática – parte 1
Para este trabalho foi
escolhida a ferramenta Cuckoo Sandbox que, entre outras vantagens, oferece
suporte a várias interfaces para a interação com o usuário, facilidade
(moderada) de instalação e integração com várias bibliotecas e frameworks escritas em Python tais como:
Django - Um
framework de sucesso para desenvolvimento web.
Dpkt -
Biblioteca para a extração de arquivos PCAP.
Jinja2 -
Biblioteca para a renderização de relatórios HTML em interface web.
Várias outras
bibliotecas também serão usadas, mas só serão apresentadas durante a descrição
do processo de instalação e configuração do Cuckoo Sandbox.
Hardware:
Sistema 32 bit robusto (2 ~ 4 GB de memória RAM, HD >
160 GB, etc.)
Processador Intel ou AMD (igualmente robusto)
Sistema Operacional Ubuntu LTS (é
recomendável a versão 14.04 devido à presença de vários pacotes instalados por
padrão)
Obs: No caso de plataformas de 64 Bit,
é necessária a verificação do suporte a virtualização na Bios da placa mãe.
Instalação:
Ubuntu - No caso de uma nova instalação, habilitar o
download e atualização da distribuição.
Após finalizar a instalação, seguem-se os seguintes passos:
(Nota: CT =
Comando no terminal do Ubuntu. | A =
Ação)
CT
|
|
sudo apt-get update && sudo
apt-get dist-upgrade -y
|
|
A
|
|
Buscar por atualizações que não foram feitas
durante a instalação
|
|
|
|
|
|
CT
|
|
sudo apt-get install
virtualbox
|
|
A
|
|
Instala o Oracle Virtual Box
|
|
|
|
|
|
CT
|
|
Sudo python –version
|
|
A
|
|
Retorna a versão do Python instalado *
|
* A versão usada é a 2.7.6. No improvável
caso de não haver nenhuma versão instalada, ou ainda haver outra versão maior
que a 2.XX, recomenda-se buscar orientações em sites de comunidades ou
tutoriais sobre como instalar a versão necessária ou alterar a versão
instalada.
CT
|
sudo apt-get install
python-sqlalchemy python-bson
|
|
A
|
Instalar os pacotes
Sqlalchemy; um toolkit para o Python SQL e mapeamento de objeto relacional e,
o Python-Bison; um pacote para codificação e decodificação binária de
conteúdo no formato JSON.
|
|
CT
|
sudo apt-get install
python-dpkt python-jinja2 python-magic python-pymongo python-gridfs
python-libvirt python-bottle python-pefile python-chardet volatility
|
|
A
|
Instala os seguintes
complementos:
Dpkt (Altamente
recomendado): para extrair informação relevante de arquivos PCAP, ou Packet
Capture - captura de pacotes.
Jinja2 (Altamente
recomendado): para a renderização de relatórios no formato HTML e interface
web.
Magic (Opcional): para a
identificação de formato de arquivos.
Pymongo (Opcional): para
armazenamento de resultados no banco de dados MongoDB.
Libvirt (Opcional): para o
uso do gerenciador Kernel Virtual Machine - KVM.
Bottlepy (Optional): for
using the api.py or web.py utility (use release 0.10 or above). Django
(Opcional): framework para apresentação de interface web (recomenda-se a
versão 1.5 ou posterior).
Pefile (Opcional): para a
análise estatística de binários PE32 (arquivos do MS-Windows).
Volatility (Opcional): para
a análise forense de memória.
MAEC Python bindings
(Opcional): para relatórios MAEC - Malware Attribute
Enumeration and
Characterization (recomenda-se a versão maior que 4.0.0 e menor que 4.1).
Chardet (Opcional): para a
detecção de codificação de strings.
|
|
São necessários dois pacotes adicionais a serem instalados
a seguir:
O Pydeep, cuja maneira mais fácil é
através do comando PIP. Este comando só estará integrado ao Python e disponível
após a instalação do pacote “setup_tools”,
que inclui vários outros pacotes de instalação e atualização para o Python ou
através da sua instalação individual.
CT
|
sudo apt-get install python-pip –y
|
A
|
Adiciona o instalador ao Python.
|
Pydeep
CT
|
sudo pip install Pydeep
|
A
|
Instala o pacote Pydeep.
|
YARA
Para instalar o pacote YARA deve-se,
primeiro, preparar o sistema através da instalação de pacotes essenciais.
CT
|
sudo apt-get install build-essential
git python-dev libjansson-dev libmagic-dev libtool eclipse-cdt-autotools -y
|
||
A
|
|
Instala os pré requisitos (essenciais) para o pacote Yara.
|
|
Depois é necessário fazer o download do pacote mais recente
em; https://github.com/plusvic/yara/releases/latest. (a
versão usada aqui é a 3.2.0)
CT
|
tar -zxf yara-3.2.0.tar.gz
|
||||||||||||||
A
|
|
Descompactar
o arquivo para uma pasta de nome “yara-3.2.0”
|
|
||||||||||||
|
|||||||||||||||
CT
|
cd yara-3.2.0
|
||||||||||||||
A
|
|
Acessa a pasta criada
|
|
||||||||||||
|
|||||||||||||||
CT
|
|
./bootstrap.sh
|
|||||||||||||
A
|
|
Inicia a coleção de ferramentas, pacotes e
instruções para a instalação do pacote
|
|||||||||||||
|
|
|
|||||||||||||
CT
|
|
./configure --enable-cuckoo
--enable-magic
|
|||||||||||||
A
|
|
Configura
o pacote para usar as bibliotecas Cuckoo e python-magic
|
|
||||||||||||
|
|
|
|||||||||||||
CT
|
|
make
|
|||||||||||||
A
|
|
Lê
os arquivos de do compilador C e prepara para a instalação
|
|
||||||||||||
|
|
|
|||||||||||||
CT
|
|
|
Sudo make install
|
||||||||||||
A
|
|
|
Instalar o compilador C e configura as
bibliotecas para serem usadas com Python
|
||||||||||||
|
|
|
|||||||||||||
CT
|
|
cd yara-python
|
|||||||||||||
A
|
|
Acessa a pasta de bibliotecas yara para o
python
|
|||||||||||||
|
|
|
|||||||||||||
CT
|
|
python setup.py build
|
|||||||||||||
A
|
|
Monta
o arquivo de instalação do pacote
|
|
||||||||||||
|
|
|
|||||||||||||
CT
|
|
sudo python setup.py install
|
|||||||||||||
A
|
|
Instala o pacote
|
|
||||||||||||
Configurando o arquivo “tcpdump”.
O Cuckoo é executado em uma conta padrão
de usuário. Para permitir que o Cuckoo acesse o arquivo tcpdump sem o acesso root, a próxima linha de comando deve
ser executada no terminal:
CT
|
1 -
sudo setcap cap_net_raw,cap_net_admin=eip
/usr/sbin/tcpdump
2 -
getcap /usr/sbin/tcpdump
|
A
|
Permite o acesso do usuário admin ao
arquivo tcpdump
|
Para verificar o êxito, a seguinte mensagem deve ser
exibida a seguir:
/usr/sbin/tcpdump
= cap_net_admin,cap_net_raw+eip
Aplicação prática – parte 2
Instalar o Cuckoo Sandbox.
A última parte é a
instalação do Cuckoo SandBox. Esta
etapa é bastante simples em si. Escolha um local aonde queira instalar (neste
caso será criada a pasta “~/Bin”:
Nota: Caso ainda esteja na
pasta “yara-python” – e não queira instalar o Cuckoo nesta, retorne ao
diretório raiz e execute os próximos passos.
CT
|
|
mkdir ~/bin
|
|||||||
A
|
|
Cria
uma sub pasta “bin”
|
|
||||||
|
|
|
|||||||
CT
|
|
cd ~/bin
|
|||||||
A
|
|
Acessa a pasta
|
|||||||
|
|
|
|||||||
CT
|
|
wget
http://downloads.cuckoosandbox.org/cuckoocurrent.tar.gz
|
|||||||
A
|
|
Recupera a última versão do Cuckoo SandBox direto do site
|
|
||||||
|
|
|
|||||||
CT
|
|
tar -xf cuckoo-current.tar.gz
|
|||||||
A
|
|
Descompacta
o arquivo para uma sub pasta cuckoo
|
|
||||||
|
|
|
|||||||
CT
|
|
cd ~/bin/cuckoo
|
|||||||
A
|
|
Acessa
a pasta
|
|
||||||
CT
|
./cuckoo.py
|
||||||||
A
|
|
Executa
o cuckoo com privilégios de admin
|
|
||||||
|
|||||||||
Aplicação prática – parte 3
Criando uma máquina virtual.
Este guia é baseado na
criação de uma máquina virtual Windows XP SP3 (nesta implementação foi usado o
Windows XP SP1). Entretanto, o Cuckoo também funciona com Windows Vista e 7.
Para estas versões é necessário desabilitar o serviço UAC (Controle de Contas
do Usuário).
Algumas premissas:
• Você
possui uma cópia licenciada do Windows XP;
• Você
possui uma mídia ISO disponível;
• Você
sabe instalar uma máquina virtual no Oracle Virtual Box;
As configurações a serem feitas ANTES de
iniciar a instalação da VM Windows XP são as seguintes:
• Armazenamento
em disco rígido com alocação dinâmica
• Disco
rígido virtual > 15 GB
• Memória
RAM 512 MB (Neste exemplo foram alocados 1024 MB)
• Adaptador
de rede (fase inicial) intel PRO/1000 MT Desktop (NAT).
Pós instalação:
A primeira providência
a ser tomada após a instalação do Windows XP é desativar alguns recursos e
alterar algumas configurações. Segue-se o roteiro.
Acessar
o Painel de Controle, clicar em “Ferramentas Administrativas”, depois em
“Serviços”. Localiza os serviços de Atualizações
automáticas e Firewall do Windows, interrompa, desative
e altere a inicialização para Manual.
Ainda
no Painel de Controle, se ainda estiverem ativos, desative os recursos de
Firewall, Atualizações Automáticas, Alerta de
Vírus e Alertas da Central de Controle.
Altere ainda as
configurações da Área de Trabalho para modo de exibição clássico, desabilite o
descanso de tela, sons e alertas do Windows.
Aplicativos.
São necessários alguns
aplicativos para completar o ambiente de testes da VM. Usando o Internet
Explorer nativo, baixe, primeiro, uma versão compatível com o XP do Firefox.
Instale e use baixar o Google Chrome, Microsoft .NET 2.0, Microsoft Office 2000
ou 2003 além de quaisquer outros aplicativos que queira.
Obss importantes: Um aplicativo é
essencial e deve ser instalado obrigatoriamente. Tratase do Python em sua
versão 2.7.6 (a versão encontrada no site python.org é a 2.7, mas ao ser
instalado, o terminal aponta para a versão 2.7.6).
Antes de seguir
adiante, é importante copiar agent.py
o arquivo localizado na máquina host (Ubuntu) em; ~/bin/cuckoo/Agent/ para a pasta de
instalação do Python na máquina Guest (Windows XP) em c:\Python27. É
aconselhável copiar um atalho do agent.py para o menu de inicialização
automatico de aplicativos no Window (iniciar). Isto pode ser feito enviando uma
cópia do arquivo para a área de trabalho e arrastando para o menu Iniciar.
Existem maneiras criativas de se fazer isto, por exemplo, envie o arquivo para
algum repositório seu pela máquina Host e faça o download pela máquina Guest.
Ou ainda, envie-o para você mesmo por e-mail.
Obs: Não instale aplicativos que façam
atualizações automáticas ou requeiram atualização dos Windows XP.
Depois
de completas as instalações, desligue a VM e altere as configurações do
adaptador de rede para "Conectado a" Vbox-GuestHost-Only e "Tipo
de adaptador" PCnet-FAST
III(Am79c973). Inicie a VM e instale o Vbox Guest
Additions.
Configurações de rede.
Até o momento a
instalação da máquina virtual não está completa. Para completar, acesse as
configurações de rede através do painel de controle e altere o endereço IP do
adaptador para 192.168.56.10 e verifique se a máscara de sub rede é preenchida
automaticamente para 255.255.255.0.
Premissas:
O adaptador de
rede da máquina Ubuntu e a interface de saída. vboxnet0 é a interface virtual.
192.168.56.0/24 é o endereço de sub rede para a interface
“virtual host-only”.
Configurando o iptables:
Abra o terminal do Ubuntu e digite os seguintes comandos:
CT
|
sudo iptables -A FORWARD -o eth0 -i
vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
|
|||||||||
A
|
Cria uma regra para conectar as interfaces
de rede e aceitar o rastreio de pacotes entre
|
|||||||||
|
elas.
|
|
||||||||
CT
|
sudo iptables -A FORWARD -m conntrack
--ctstate
ESTABLISHED,RELATED -j ACCEPT
|
|||||||||
A
|
|
Comando que permite acessar e rastrear os pacotes da
conexão quando for estabelecida.
|
|
|||||||
|
||||||||||
CT
|
|
sudo
iptables -A POSTROUTING -t nat -j MASQUERADE
|
|
|||||||
A
|
|
Comando que permite acessar modificar os
pacotes da conexão quando for estabelecida.
|
||||||||
|
|
|
||||||||
CT
|
|
sudo sysctl -w
net.ipv4.ip_forward=1
|
||||||||
A
|
|
Comando que ativa o encaminhamento de pacotes
|
|
|||||||
Para verificar se as Configurações foram feitas, Digite o
comando “ifconfig vboxnet0”.
O resultado deve ser o que se encontra abaixo (assinalado):
Link encap:Ethernet
HWaddr 0a:00:27:00:00:00 inet addr:192.168.56.1 Bcast:192.168.56.255
Mask:255.255.255.0 inet6 addr: fe80::800:27ff:fe00:0/64 Scope:Link UP BROADCAST
RUNNING
MULTICAST MTU:1500 Metric:1 RX
packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:184 errors:0
dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
Configurações finais do Cuckoo SandBox.
Na máquina Host, acesse a pasta
~/bin/cuckoo/conf/, localize e altere os seguintes arquivos se necessário:
[cuckoo.conf] machinery = virtualbox
memory_dump = on
[resultserver]
ip = 192.168.56.1 port = 2042
[auxiliary.conf] [sniffer] enabled =
yes tcpdump = /usr/sbin/tcpdump interface = vboxnet0
[virtualbox.conf]
Virtual machine name = [nome que você deu à sua máquina
virtual XP]
#Host's virtual IP address (vboxnet0)
Ip = 192.168.56.1
#Virtual machine's IP address
Ip = 192.168.56.10
Salvando uma cópia da VM com o Snapshot
(recurso de recuperação de estado da VM – via terminal, 3
comandos, recomendado)
OBS: deve-se criar um snapshot com a VM
ligada
vboxmanage snapshot
"[nome_da_VM_escolido]" take "[nome_do_snapshot]"
--pause vboxmanage snapshot "winxp" take
"finalizada" --pause vboxmanage controlvm "winxp" poweroff
vboxmanage snapshot "winxp" restorecurrent
Testando a instalação:
Acesse a pasta de instalação do
Cuckoo: cd ~/bin/cuckoo
Digite:
./cuckoo.py
As seguintes linhas deverão ser exibidas;
Cuckoo Sandbox 1.1 www.cuckoosandbox.org
Copyright (c) 2010-2014
Checking for updates...
Good! You have the latest
version available.
2014-11-05 23:07:42,599
[lib.cuckoo.core.scheduler] INFO: Using "virtualbox" machine manager
2014-11-05 23:07:42,830
[lib.cuckoo.core.scheduler] INFO: Loaded 1 machine/s
2014-11-05 23:07:42,831
[lib.cuckoo.core.scheduler] INFO: Waiting for analysis tasks...
Aplicação prática – parte 4
Submentendo uma amostra de Malware para
análise.
Com o Cuckoo sendo
executado, deve-se, primeiro, acionar o Oracle Virtual Box, mas não iniciar a
VM. Depois, deve-se abrir um novo terminal e navegar até a pasta
“~/bin/cuckoo/utils/” e digitar o comando;
./submit.py <caminho_para_a_amostra>
Neste caso;
./submit.py
/home/rangel/Analise_malware/exercicio1.exe
Se tudo foi devidamente
configurado, o comando ./cuckoo.py executado abrirá automaticamente a VM, e
submeterá pela rede configurada o arquivo em questão à VM Windows, e efetuará a
análise normalmente.*
* Obss importantes:
1
– A instalação, mesmo efetuada de maneira
sistemática e correta, não impede queeventuais mensagens de erro apareçam
durante a execução.
2
– Se, e quando forem exibidas estas
mensagens, a melhor escolha é ignorar e
deixar oCuckoo Sandbox prosseguir com a análise.
3
– Caso ocorra algum erro crítico, o próprio Cuckoo Sandbox se encarrega de parar aanálise e gerar arquivos de log. Essas
paradas são absolutamente claras para quem mantém o terminal aberto e os
monitora, bem como a mensagem de fim do processo de
análise .
4
– As análise podem variar (e muito) no tempo de
execução e conclusão. As amostras“ exercicio1.exe ” e “ exercicio2.exe ”, levaram mais de 40
minutos cada uma.
5
– É importante conhecer os comandos de terminal do
Linux tanto para instalação quantopara remoção de pacotes. Pode ser que seja
necessário refazer a instalação desde o início.
Pós – análise:
Exitem duas maneiras de
acompanhar a análise de malware após a submissão do arquivo de amostra:
1 –
Durante a análise, pela interface web e,
2 –
Após o fim da análise pela mesma interface.
Para tanto, basta abrir
um novo terminal, navegar até “~/bin/cuckoo/web” e digitar o comando: “
./manage.py runserver ”.
Se tudo estiver
certo, a seguinte mensagem será exibida:
Validating models...
0 errors found
August 05, 2015 - 17:24:12
Django version 1.6.1, using
settings 'web.settings' Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Conforme a instrução contida
na quinta linha, basta abrir o navegador e acessar o endereço citado.
Submetendo a amostra à análise
Obs: O processo de submissão de amostras
para análise é o mesmo para todos arquivos usados aqui. Portanto, usaremos a
descrição passo a passo da primeira amostra (exercicio1.exe). E apenas os
relatórios serão individualizados.
Mensagens tipo WARNING são as mais comuns
(e esperadas), mas não prejudicam o processos de submissão e análise. As
mensagens tipo ERROR podem ocorrer durante
o processo de submissão de amostras. Pode ser que o processo de submissão
falhe. Já, as mensagens CRITICAL ERROR, podem surgir durante a análise e podem
ou ão causar falhas. Caso seja interrompidas a análise será necessário revisear
a instalação do framework, da máquina virtual e, para tentar saber o que houve
revise as mensagens complementares e
arquivos de log gerados.
Pré requisitos:
Conexão à Internet robusta e estável,
revisão da instalação e configuração do ambiente e atenção às mensagens (WARNING,
ERROR, CRITICAL ERROR).
Inicialmente, é necessário configurar o IpTables para o encaminhamento e
filtragem de pacotes na máquina host:
1) sudo iptables -A FORWARD -o eth0 -i vboxnet0
-s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
adiciona regra que permite o encaminhamento de pacotes
[-A FORWARD] originados da máquina host(linux) [-o eth0] destinados à maquina
guest (VM winxp) [-i vboxnet0] assegurando o tráfego apenas ao endereço
192.168.56.0/24 [-s 192.168.56.0/24] ativa o pacote de rastreio de conexão
ativa [-m conntrack] para novas conexões [conexões ainda não detectadas] e as
aceita [--ctstate NEW -j ACCEPT]
2) sudo iptables -A FORWARD -m conntrack
--ctstate ESTABLISHED,RELATED -j ACCEPT
adiciona regra que permite o encaminhamento de pacotes
[-A FORWARD] ativa o pacote de rastreio de conexão ativa [-m conntrack]
para conexões já estabelecidas e as aceita [--ctstate
ESTABLISHED,RELATED -j ACCEPT]
3) sudo iptables -A POSTROUTING -t nat -j
MASQUERADE
Adiciona regra para o pós roteamento de pacotes que
constem na tabela NAT e "mascara" o IP da eth0 [-A POSTROUTING -t nat
-j MASQUERADE]
Isto significa que o IP da eth0 é considerado válido
para os propósitos de roteamento de pacotes.
4) sudo sysctl -w net.ipv4.ip_forward=1
Finaliza as configurações habilitando o roteamento.
Iniciando a VM:
A seguir, inicia-se o Oracle Virtual Box, MAS NÃO A MÁQUINA
VIRTUAL. (ícone azul, um clique)
[figura 1]
A seguir, inicia-se o Cuckoo
SandBox acessando a pasta ~bin/cuckoo/ - e enviando o comando
“./cuckoo.py”. [figura 2]
Figura 2
Obs:
Se o resultado exibido não for
exatamente o mesmo mostrado na figura 2,
então devese rever os passos de instalação e configuração do framework.
A seguir, submete-se a amostra de malware acessando a pasta
~bin/cuckoo/utils/ e enviando o comando “./submit.py
/<caminho_para_o_malware>/exercicio1.exe*”. [figura 3] * No meu caso, “./submit.py
/home/rangel/Analise_malware/exercicio1.exe”
Figura 3
O que ocorre a seguir é uma sequencia de
ações cuja captura de telas para fins de ilustrações neste documento é
inviável. Porém a sequencia é a que se segue:
1 –
O Cuckoo SandBox inicia a VM em modo de restauração do snapshot;
2 –
A seguir submete a amostra de malware à VM;
3 –
Alguns segundos após a submissão, inicia o monitoramento de eventos pelo
arquivo “agent.py”de dentro da VM.
4 –
Finalizada a submissão, o framework interrompe a VM e inicia o processo de
análise.
(dependendo do tipo de
amostra, o processo de submissão da amostra pode demorar um pouco mais)
5 –
O processo de análise é extenso e mais demorado. Esta etapa pode ser acompanha
observando oterminal (é aconselhável fazer o acompanhamento caso ocorra algum
erro crítico) ou pela interface web.
Para iniciar a interface web basta acessar a pasta
~/bin/cuckoo/web/ e enviar o comando
./manage.py runserver. [figura
4]
Figura 4
Dica: Clicando com o botão direito do mouse sobre o link http://127.0.0.1:8000, surgirá a opção “abrir link”. Escolha esta opção e o navegador padrão
do seu Linux será ativado com a url ativa.
Para fins de acompanhamento do processo de
análise, é mais produtivo monitorar o terminal. Se o processo de análise for completado com
sucesso, a interface web é bem mais versátil e rica em
detalhes. [figura 5]
Figura 5
Conteúdo da tela:
1 – Dashboard (Painel de instrumentos): é
a página inicial. Nela é exibido um
relatório resumido das ações análises realizadas pelo Cuckoo
SandBox. [dash]
dash
Entre as informações, estão; quantas tarefas foram
realizadas, completadas, falhas, erros e etc.
A próxima figura [figura
6] mostra o conteúdo da guia “Recent”, que lista as tarefas de
análise feitas anteriormente.
Figura 6
Dica: Na coluna “MD5”, os caracteres do hash calculado são hiperlinks.
Clicando neles, é aberta a página com o relatório completo de cada um dos
arquivos.
Clicando no hash do item “exercicio1.exe”,
o navegador exibe o relatório completo dos resultados desta amostra.
Aqui são mostradas as seguintes guias:
Quick
Overview => Static Analysis =>Behavioral Analysis => Network
Analysis => Dropped Files =>
Memory
Analysis => Admin [figura 7]
Figura 7
Cada uma das guias exibe um extenso
conteúdo que será explicado abaixo de maneira reduzida devido à imensa
quantidade de dados para cada biblioteca de análise do Cuckoo SandBox.
Resultados:
Referência / Arquivo / Comando:
|
Comentário ou Ação:
|
exercicio1.exe
|
Amostra submetida à análise
|
net user lucas%d 123456
/add
|
Comando que adiciona um novo usuário 'Lucas' e a
senha '123456' à lista de contas do Windows.
|
Detectado em:
|
http://www.herdprotect.com/knowledgebase_detections.aspx?engine=qihoo-360
|
Conclusões sobre exercicio1.exe:
Devido à sua natureza de comprovação acadêmica, trata-se de
um Malware cujas ações não levaram a maiores danos. Entretanto, a criação de um
usuário “clandestino” no sistema e um endereçamento IP falso, foram (e ainda
são) grandes aliados de golpistas.
Referência / Arquivo / Comando:
|
Comentário ou Ação:
|
exercicio2.exe
|
Amostra submetida à
análise
|
NtCreateFile
|
Abre o arquivo 'hosts'
localizado em C:\WINDOWS\system32\drivers\etc\
|
NtWriteFile
|
Adiciona a entrada de Resolução de IP “200.221.2.45 www.terra.com.br” O IP em
questão é do domínio “www.uol.com.br”. Porém, se o usuário tentar
acessar o endereço do UOL, será direcionado para o site Terra.
|
ExitProcess
|
Encerra todas threads (ou
processos) do sistema
|
Conclusões sobre exercicio2.exe:
Esta amostra faz alterações importantes nos sistema e, a
amais significativa, acessa o Gerenciador de serviços do Windows e para o
serviço de gerenciamento de temas. Extrapolando as ações, qualquer outro
serviço poderia ser afetado (como veremos a seguir) e tornar a máquina
vulnerável a ações mais invasivas ou permiti-las.
Referência / Arquivo / Comando:
|
Comentário ou Ação:
|
WormAcademic.exe
|
Amostra submetida à
análise
|
cmd.exe
|
abre o terminal de
comandos do Windows
|
sethc.exe
|
reseta a senha do admin do
windows
|
.original =>
utilman.exe
|
cria uma tecla aderente de
abertura do cmd do Windows (shif pressionada 5 x)
|
netsh.exe => Firewall
set opmode disable
|
desabilita o firewall do
windows
|
SYSTEM\CurrentControlSet\Servic
es\Themes
|
para o serviço de temas do
windows
|
WinNT:// => ,Computer
=>
WormAcademic
|
cria o usuário
"WormAcademic"
|
SetPassword =>
W0rm@c@d3mic
|
seta a senha
"W0rm@c@d3mic" para a ação anterior
|
administrators =>
administradores
|
adiciona ao grupo de
administradores
|
Conclusões sobre WormAcademic.exe:
Esta amostra faz alterações mais profundas e prova que
vulnerabilidades não são apenas exploradas. Também podem ser criadas e usadas
sucessivamente para quaisquer fins que se deseja. No caso desta, é resetada a
senha do usuário, cria uma “janela de entrada” sem necessidade de logar-se no sistema, desabilita o firewall, e
cria um novo usuário com login e senha. As possibilidades para estas ações são
inúmeras. Um atacante com bons
conhecimentos de linguagens de programação e do sistema que deseja atacar poderia
usar seus conhecimentos para extrair quaisquer dados reservados e usa-los para
o fim que desejasse.
Conclusões sobre 1002.exe:
Essa amostra foi retirada de um grupo bastante extenso de
amostras a partir de pesquisas feitas inicialmente no site https://zeltser.com/malware-sample-sources/
e escolhido devido à sua natureza “recente”.
Este malware (1002.exe) é uma das muitas variações do tipo
conhecido como CryptoLocker, que vem a ser a captura e encriptação de arquivos
do usuário e exigir o pagamento de um resgate em troca da senha para
desbloqueá-los.
Normalmente o malware é elaborado de modo a dar um prazo de
72 horas para o pagamento de 1 bitcoin (aproximadamente 300 dólares ), do
contrário ameaça destruir as chaves requeridas para a desencriptação.
Se a vítima não pagar o resgate dentro do prazo
estabelecido, o malware exibirá um arquivo "last_chance.txt"
ordenando que vítima que baixe o malware
de novo, o que supostamente dará mais 3 dias de prazo para o pagamento do
resgate. Na realidade o PClock não destrói nada, portanto a contagem regressiva
não significa nada.
As informações a respeito da chave de encriptação usada
neste malware são conflitantes. Alguns sites de segurança dizem que algumas
versões usam algioritmos de chave forte, (RSA 2048 bits) [https://en.wikipedia.org/wiki/CryptoLocker].
Outros informam que o algoritmo não é tão sofisticado e não é difícil
desencriptar os arquivos [http://blog.emsisoft.com/2015/01/04/newransomware-alert-cryptolocker-copycat-pclock-discovered/].
E até existem sites que ajudam vítimas deste malware a desbloquear os arquivos.
[http://www.baboo.com.br/seguranca/ferramenta-dedesbloqueio-para-vitimas-do-malware-cryptolocker/].
De qualquer forma, a análise feita no framework Cuckoo
SandBox de um amostra de PCLocker gerou um vasto relatório rico em detalhes.
Vamos a eles:
1 – A análise de “Strings” possibilitou ver que o próprio
malware monta e renderiza a tela de ameaça.[Figura 8]
Figura 8
2 –
Algumas versões do malware armazenavam a chave de desbloquear os arquivos
infectados nopróprio sistema. Desta forma, uma das maneiras de recuperar os
arquivos era ligar o HD da máquina como Slave em outra e procurar pela chave no
próprio HD. Com o tempo, as variações do malware passaram a armazenar a chave
na memória alta do computador, enviar para um local “seguro” e fazer enviar um
comando de limpeza da memória para apagar quaisquer registros das operações.
Neste exemplo, todos os dados obtidos foram analisados, mas
até o momento não foi encontrado nenhuma informação que comprove o
armazenamento de senha ou chave de
desbloqueio.
3 – O
arquivo de dump da memória possui bons dados que podem ser úteis, mas a leitura
éproblemática devido ao grande número de linhas com informações truncadas.
4 –
Alguns elementos da análise firacam obscuros. A justificativa é de que não
haviam os típicosarquivos de trabalho na máquina (planilhas, docs, pdf, PPT e
etc.) que pudessem ser explorados pela ameaça. Mesmo assim, o malware fez sua
parte, procurou e atacou bibliotecas DLL entre outros arquivos de sistema.
5 – A
análise final não foi satisfatória pelas razões que se seguem:
–
Após efetuada a submissão, o Cuckoo SandBox
fecha a VM e recarrega o snapshot das últimas configurações. Tal aão destrói as
todos os vestígios do malware e só restam os dados coletados e analizados pelo
framework.
–
Durante o processo de submissão, ao iniciar o
malware e aparecer a tela de alerta, o sistema entre em estado de espera que só
é interrompido clicando em “next” [Figura
9]. Entretanto, tal ação faz com que o Cuckoo SandBox considere a
submissão completa e desliga a máquina virtual.
Figura 9
–
Finalizando, falta a este, conhecimento mais aprofundados sobre o
sistema operacional, sobre os comandos que aparecem nos relatórios e a
capacidade de filtragem de dados relevantes.
Nenhum comentário:
Postar um comentário