Análise de Malwares
com Software Livre
Por Luiz Vieira
[email protected]
Objetivos
● Entender como funcionam malwares
● Conhecer as ferramentas utilizadas em análise de malware
● Entender como realizar a análise de um malware
Introdução
Malwares, palavra proveniente do termo “malicious software”, são
softwares que destinam-se a se infiltrar ilicitamente no sistema de um
computador e danificar ou roubar informações confidenciais ou não.
Como o objetivo de uma investigação forense é, muitas vezes, descobrir
como e com qual motivação um sistema foi comprometido, é mais do que
normal que o sistema que estamos investigando, tenha sido comprometido por
um artefato malicioso que tenha permitido o acesso de um invasor, ou
objetivamente possibilitado o vazamento de informações.
Esse capítulo, tem como objetivo explicar um pouco mais sobre esses
artefatos e os conceitos de análise dos mesmo, para que saibamos identificálos e entender como funcionam.
Tipos de Malware
Quando utilizamos o termo malware, não estamos definindo exatamente
a espécie de artefato malicioso ao qual estamos nos referenciando, muito
menos as suas funções. Por isso, quando utilizamos esse termo, estamos
apenas citando uma categoria de programas de computadores, que podem ser
de vários tipos diferentes.
Malware, portanto, é apenas uma categoria de programa, e justamente
por isso, dentro dessa categoria de programas, temos vários tipos ou espécies
diferentes desse tipo de artefato. Sendo as mais conhecidas:
● Vírus
● Trojans
● Rootkits
● Worms
Vírus
Um vírus de computador é um programa malicioso desenvolvido por
programadores que, tal como um vírus biológico, infecta o sistema, faz cópias
de si mesmo e tenta se espalhar para outros computadores, utilizando-se de
diversos meios.
A maioria das contaminações ocorre pela ação do usuário, executando o
arquivo infectado recebido como um anexo de um e-mail. A contaminação
também pode ocorrer por meio de arquivos infectados em pendrives ou CDs. A
segunda causa de contaminação é por Sistema Operacional desatualizado,
sem
correções
de
segurança,
que
poderiam
corrigir
vulnerabilidades
conhecidas dos sistemas operacionais ou aplicativos, que poderiam causar o
recebimento e execução do vírus inadvertidamente. Ainda existem alguns
tipos de vírus que permanecem ocultos em determinadas horas, entrando em
execução em horas especificas.
Trojan
Certos vírus trazem em seu bojo um código a parte, que permite a um
estranho acessar o micro infectado ou coletar dados e enviá-los pela Internet
para
um
desconhecido,
sem
notificar
o
usuário.
Estes
códigos
são
denominados de Trojans ou cavalos de Tróia.
Inicialmente, os cavalos de Tróia permitiam que o micro infectado
pudesse receber comandos externos, sem o conhecimento do usuário. Desta
forma o invasor poderia ler, copiar, apagar e alterar dados do sistema.
Atualmente os cavalos de Tróia agora procuram roubar dados confidenciais do
usuário, como senhas bancárias.
Os vírus eram no passado, os maiores responsáveis pela instalação dos
cavalos de Tróia, como parte de sua ação, pois eles não têm a capacidade de
se replicar. Atualmente, os cavalos de Tróia não mais chegam exclusivamente
transportados por vírus, agora são instalados quando o usuário baixa um
arquivo da internet e o executa. Prática eficaz devido a enorme quantidade de
e-mails fraudulentos que chegam nas caixas postais dos usuários. Tais e-mails
contém um endereço na Web para a vítima baixar o cavalo de Tróia, ao invés
do arquivo que a mensagem diz ser. Esta prática se denomina phishing,
expressão derivada do verbo to fish, "pescar" em inglês. Atualmente, a maioria
dos cavalos de Tróia visam a sites bancários, "pescando" a senha digitada
pelos usuários dos micros infectados. Há também cavalos de Tróia que ao
serem baixados da internet "guardados" em falsos programas ou em anexos de
e-mail, criptografam os dados e os comprimem no formato ZIP. Um arquivo
.txt dá as "regras do jogo": os dados foram "seqüestrados" e só serão
"libertados" mediante pagamento em dinheiro para uma determinada conta
bancária, quando será fornecido o código restaurador.
Também os cavalos de tróia podem ser usados para levar o usuário para
sites falsos, onde sem seu conhecimento, serão baixados trojans para fins
criminosos, como aconteceu com os links do google, pois uma falha de
segurança poderia levar um usuário para uma página falsa. Por este motivo o
serviço esteve fora do ar por algumas horas para corrigir esse bug, pois caso
contrário as pessoas que não distinguissem o site original do falsificado
seriam afetadas.
Outra conseqüência é o computador tornar-se um zumbi e, sem que o
usuário perceba, executar ações como enviar Spam, se auto-enviar para
infectar outros computadores e fazer ataques a servidores (normalmente um
DDoS, um acrônimo em inglês para Distributed Denial of Service – em
português, ataque distribuído de negação de serviço). Ainda que apenas um
micro de uma rede esteja infectado, este pode consumir quase toda a banda
de conexão com a internet realizando essas ações mesmo que o computador
esteja sem utilização, apenas ligado. O objetivo, muitas vezes é criar uma
grande rede de computadores zumbis que, juntos, possam realizar um grande
ataque a algum servidor que o autor do vírus deseja "derrubar" ou causar
grande lentidão.
Rootkits
Rootkits são um tipo de Malware surgido nos últimos anos. A principal
intenção dele é se camuflar, impedindo que seu código seja encontrado por
qualquer antivírus. Isto é possível por que estas aplicações têm a capacidade
de interceptar as solicitações feitas ao sistema operacional, podendo alterar o
seu resultado. Por exemplo, quando o Windows faz um pedido para a leitura
ou abertura de um arquivo (seja a mando do antivírus ou pelo próprio
usuário), o rootkit intercepta os dados que são requisitados (intercepção via
API) e faz uma filtragem dessa informação, deixando passar apenas o código
não infectado. Desta forma, o antivírus ou qualquer outra ferramenta ficam
impossibilitados de encontrar o arquivo malicioso.
Um rootkit é um programa com código mal intencionado que busca se
esconder de softwares de segurança e do usuário utilizando diversas técnicas
avançadas de programação.
Rootkits escondem a sua presença no sistema, escondendo suas chaves
no registro (para que o usuário não possa vê-las) e escondendo os seus
processos no Gerenciador de Tarefas, além de retornar sempre erros de
“arquivo inexistente” ao tentar acessar os arquivos relacionados.
Rootkits também utilizam-se, muitas das vezes, de drivers, isto é,
arquivos de sistema para o funcionamento de hardware, para se esconderem
de antivírus, que ao lidarem com essas situações, irão "pensar" que o rootkit é
um serviço legítimo do sistema operacional.
Diversos tipos de código mal intencionado utilizam essas tecnologias
com o objetivo de dificultar sua remoção e o fazem com sucesso: os rootkits
mais avançados são bem difíceis de serem removidos. Poucos antivírus hoje
conseguem identificar e eliminar essas pragas.
Os rootkits para Linux/Unix geralmente substituem os programas mais
comuns,
como
os
programas
que
listam
arquivos,
de
modo
que
o
administrador do sistema, ao listar os arquivos, não veja a presença dos
arquivos do trojan.
No Windows, eles ‘infectam’ os processos na memória, de modo que
toda vez que um processo requisite alguma informação sobre os arquivos
desse código mal-intencionado, esta informação seja anulada antes de ser
retornada ao programa, o que fará com que os softwares acreditem que estes
arquivos não estejam lá.
Worms
Como o interesse de fazer um vírus é ele se espalhar da forma mais
abrangente possível, os seus criadores por vezes, deixaram de lado o desejo
de danificar o sistema dos usuários infectados e passaram a programar seus
vírus de forma que apenas se repliquem, sem o objetivo de causar graves
danos ao sistema. Desta forma, os seus autores visam a tornar suas criações
mais conhecidas na Internet.
Este tipo de vírus passou a ser chamada de verme ou worm. Eles estão
mais aperfeiçoados, já há uma versão que ao atacar a máquina hospedeira,
não só se replica, mas também se propaga pela internet, pelos e-mail que
estão registrados no cliente de e-mail, infectando as máquinas que abrirem
aquele e-mail, reiniciando o ciclo.
Descoberta e coleta de malware
Quando é descoberto o malware em um sistema, há muitas decisões e
ações que devem ser tomadas, muitas vezes sob pressão. Para melhor
estruturarmos um processo de investigação, incluindo a análise de malwares,
podemos dividi-lo em cinco fases:
● Fase 1: Preservação e análise de dados voláteis
● Fase 2: Análise de memória
● Fase 3: Análise de discos
● Fase 4: Análise estática de malware
● Fase 5: Análise dinâmica de malware
Dentro de cada uma dessas fases, as metodologias formalizadas e as
metas são para ajudar os investigadores a reconstruir uma imagem vívida dos
acontecimentos em torno de uma infecção por malware e obter uma
compreensão detalhada do próprio malware.
Os investigadores devem sempre usar o pensamento crítico em suas
observações e entrevistar os proprietários dos sistemas comprometidos, pois
isso muitas vezes ajuda a desenvolver um quadro mais completo do que
ocorreu.
Além disso, medidas adicionais podem ser exigidos em alguns casos,
dependendo do contexto e das fontes de dados disponíveis. Quando o backup
do sistema comprometido estiver disponível, pode ser proveitoso compará-lo
com o estado atual do sistema, além de poder ajudar na recuperação do
sistema. Algumas organizações recolhem informações que podem ser úteis à
investigação,
incluindo
logs
centralizados
de
antivírus,
relatórios
de
verificação de integridade do sistema de ferramentas como OSSEC, e logs da
rede.
Coleta de malware sem alterações no sistema
O ato de coletar dados em um sistema “vivo” causa mudanças que um
investigador digital terá de explicar no que diz respeito ao seu impacto sobre
as provas digitais. Por exemplo, executar ferramentas como o Helix a partir de
uma mídia removível irá alterar dados voláteis, quando for carregado na
memória principal, e normalmente irá criar ou modificar arquivos e entradas
no registro do sistema probatório. Da mesma forma, usar ferramentas
forenses remotas necessariamente estabelece uma conexão de rede, executa
instruções na memória, e causa outras alterações no sistema probatório.
Os puristas argumentam que aquisições forense não devem alterar a
fonte de evidências de maneira alguma.
Definindo um padrão absoluto que dita "preservar tudo, mas nada
alterar" não é apenas incoerente com outras disciplinas forenses, mas
perigoso em um contexto legal. Na verdade, os tribunais estão começando a
forçar a preservação de dados voláteis de computadores em alguns casos,
exigindo que os investigadores preservem os dados de sistemas vivos. Na
Côrte americana, no caso Indus Columbia Pictures. vs. Bunnell, por exemplo,
o tribunal considerou que a memória RAM em um servidor Web pode conter
dados de log relevantes e, portanto, dentro do âmbito da informação
detectável no caso.
Uma
das
chaves
para
a
solidez
de uma
análise
forense
é a
documentação. Um caso sólido é construído sobre a documentação de apoio
que reporta onde se encontram os elementos de prova e como foram tratados.
Do ponto de vista legal, o processo de aquisição deve alterar as provas
originais o mínimo possível, e quaisquer mudanças devem ser documentadas e
avaliadas no contexto dos resultados finais de análise.
Montagem de lab. para análise
Em muitos casos, uma amostra pode ditar os parâmetros do ambiente
do laboratório de malware, particularmente se o código exige diversos
servidores para funcionar plenamente, ou pior, emprega código antivirtualização para bloquear os esforços do investigador em observar o código
em uma máquina virtual.
Usar virtualização é particularmente útil, principalmente durante a
análise comportamental de uma amostra de códigos maliciosos, posto que a
análise muitas vezes exige freqüentes paradas e recomeços do programa
malicioso em um esforço de observar as nuances do comportamento do
mesmo.
Ao analisar um exemplar suspeito, podemos utilizar hosts no Virtual Box
para criar a emulação de um sistema "infectado", um "servidor" e um "cliente"
para fornecer todos os serviços de servidores e cliente necessários pelo
malware, um sistema de "monitoramento" e de detecção de intrusão, para
monitorar o tráfego da rede e do sistema vítima.
Idealmente,
seremos
capazes
de
controlar
o
sistema
infectado
localmente para reduzir a nossa necessidade de controlar múltiplos sistemas
durante uma sessão de análise, mas amostras de malware na maioria das
vezes são "consciente de segurança" e usam técnicas anti-forense, tais como a
varredura dos nomes dos processos para identificar e finalizar as ferramentas
de segurança conhecidas, como sniffers de rede, firewalls, software anti-vírus
e outros aplicativos.
Antes de iniciarmos nossa análise da amostra de código malicioso,
precisamos ter um "snapshot" do sistema que será usado como "vítima" na
qual a amostra de código malicioso será executada. Da mesma forma,
precisamos implementar uma ferramenta que nos permite comparar o estado
do sistema após o código ser executado com o snapshot original do sistema.
Análise de arquivos suspeitos
Ao analisar um programa suspeito, há uma série de perguntas que o
pesquisador deve considerar:
● Qual é a natureza e a finalidade do programa?
● Como funciona o programa para cumprir a sua finalidade?
● Como funciona o programa ao interagir com o sistema vítima?
● Como o programa interage com a rede?
● O que o programa sugere sobre o nível de sofisticação do
atacante?
● Há um vetor de ataque identificável que o programa usa para
infectar um hospedeiro?
● Qual é a extensão da infecção ou comprometimento do sistema
ou rede?
Em muitos casos, é difícil responder a todas estas perguntas, posto que
peças-chave para o enigma, como arquivos ou recursos adicionais de rede
utiliados pelo programa não estão mais disponíveis para o investigador.
Entretanto, a metodologia, muitas vezes prepara o caminho para uma melhor
compreensão global sobre o programa suspeito.
Ao trabalhar com este material, lembre-se que a "engenharia reversa"
caem dentro das prescrições de determinadas leis internacionais, federais,
estaduais ou locais. Da mesma forma, lembre-se também, que alguns dos
instrumentos mencionados podem ser considerados "ferramentas hacker" em
algumas jurisdições e estão sujeitas a regulamentações jurídicas semelhantes
ou restrição de uso.
Diretrizes de exame de um programa malicioso
A metodologia utilizada neste capítulo é uma diretriz geral para
fornecer um sentido mais claro das ferramentas e técnicas que podem ser
usadas para examinar um binário malicioso no ambiente Linux. No entanto,
com o número aparentemente interminável de amostras de códigos maliciosos
sendo gerados por atacantes - muitas vezes com diferentes funções e
finalidades - flexibilidade e adaptação da metodologia para atender as
necessidades de cada caso, certamente será necessário. Alguns dos preceitos
básicos que vamos explorar incluem:
● Estabelecer a linha de base do ambiente
● Preparação pré-execução: monitoramento do sistema e da rede
● Execução do binário suspeito
● Observação do processo: monitoramento de bibliotecas e system
calls
● Avaliação do processo: análise dos processos em execução
● Análise das portas abertas e conexões de rede
● Análise de arquivos abertos e sockets
● Exploração do diretório / proc
● Quebra de ofuscação: remoção da proteção do malware
● Ajustes de ambiente
● Ganhando controle do malware
● Interagindo e manipulando o malware
● Explorando e verificando as funcionalidades do malware
● Reconstrução de eventos: capturar tráfego de rede, integridade
de arquivos e logs de IDS
● Varredura de portas/vulnerabilidades do host comprometido
● Verificação de rootkits
Estudo de caso que será apresentado na prática: análise forense de
malwares, do tipo banking
A empresa X entrou em contato com você para realizar um trabalho de
perícia forense em um incidente que ocorreu recentemente.
Um dos empregados recebeu um e-mail de um companheiro de trabalho
que possuía um link para um arquivo .pdf. Ao abrir o arquivo, o funcionário
não percebeu nada de estranho. Entretanto, recentemente ele percebeu
atividades não-usuais em sua conta bancária.
A empresa X conseguiu obter uma imagem da memória da máquina
virtual do funcionário que está com suspeita de comprometimento. E a
empresa deseja que você analize a memória e reporte qualquer atividade
suspeita encontrada.
As questões abaixo devem seguir como base para nortear o processo de
investigação:
1. Liste os processos que estavam em execução na máquina da
vítima. Qual o processo mais provável de ser responsável pela
exploração inicial?
2. Liste os sockets que estavam abertos na máquina da vítima
durante a infecção. Existem processos suspeitos com sockets
abertos?
3. Liste todas as URLs suspeitas que possam estar na memória do
processo.
4. Há quaisquer outros processos que contêm URLs que podem
apontar para problemas bancários? Em caso afirmativo, quais são
esses processos e quais são as URLs?
5. Estavam lá todos os arquivos que puderam ser extraídas do
processo inicial? Como esses arquivos foram extraídos?
6. Se houver algum arquivo extraído do processo inicial, quais as
técnicas que usou para realizar a exploração?
7. Liste os arquivos suspeitos que foram carregados por todos os
processos na máquina da vítima.
Download

Análise de Malwares com Software Livre