INVESTIGAÇÃO RÁPIDA DE CAVALOS DE TRÓIA

Transcrição

INVESTIGAÇÃO RÁPIDA DE CAVALOS DE TRÓIA
INVESTIGAÇÃO RÁPIDA DE CAVALOS DE TRÓIA
Flavio Marcelo Cavalcante Bandeira do Amaral
Engenheiro de Operações
Yahoo! Brasil
Abstract
Instituições conhecidas são passíveis de ter seus programas falsificados e
distribuídos pela Internet. Usuários menos informados podem baixá-los e ter seus
computadores infectados por cavalos de tróia. Investigar as ações desses
programas é possível através de ferramentas de monitoração de sistemas e de
alguns programas de engenharia reversa. O objetivo desse artigo é mostrar como
descobrir rapidamente o funcionamento desses programas através dessas
ferramentas.
1. Introdução
A internet trouxe muitas facilidades para usuários e instituições. Muitos
programas são feitos para agilizar serviços, fazer compras e pesquisas. A aceitação
disso é enorme e com tendência a crescer ainda mais. Muitos usuários instalam
esses programas para usufruir dessas funcionalidades. Sabendo disso, pessoas malintencionadas começaram a falsificar esses programas e enviar mensagens em
massa (spam) para um grande número de pessoas instruindo-os a baixá-los de
origens parecidas com as dos originais. Muitos o fazem e instalam esses programas
inadvertidamente. Esses cavalos de tróia possuem vários objetivos, os mais comuns
são: espionar os hábitos dos usuários, descobrir senhas, roubar dinheiro de contas
corrente de usuários de home banking e usar a máquina conquistada como ponte
para realizar outros ataques.
Assim como os vírus, quando um cavalo de tróia é lançado pela Internet, há
a necessidade de se investigar rapidamente o que ele faz para alertar as pessoas
para não baixá-lo e elaborar uma solução para erradicá-lo. Como esse intervalo de
tempo é geralmente curto, existem maneiras de atingir esses objetivos rapidamente,
sem a necessidade de uma engenharia reversa minuciosa do mesmo.
O processo de instalação um cavalo de tróia ficou bem furtivo. Arquivos
compactados são descomprimidos silenciosamente e sem a intervenção dos
1
usuários quando esse processo envolve sobrescrever arquivos já existentes ou
bibliotecas do sistema. O seu funcionamento e presença também ficaram mais
difíceis de serem detectados, pois instalam programas de monitoração de teclado
pequenos e discretos e não necessariamente abrem mais portas que ficam
escutando na máquina invadida. Assim, conseguem evitar serem identificados por
programas detectores de intrusão ou antivírus. No lugar disso, enviam
periodicamente essas informações através de mensagens de correio eletrônico para
o construtor da ferramenta.
1.1. Objetivo do Artigo
O artigo tem como objetivo mostrar um caso real de investigação de um
cavalo de tróia usando ferramentas de engenharia reversa e de monitoração de
funções do sistema operacional
1.2. Cavalos de Tróia
Sabendo das dificuldades de invadir grandes instituições devido aos seus
complexos esquemas de segurança, a maioria dos crackers está preferindo partir
para o lado mais fraco e fácil, os usuários domésticos e pequenas empresas. As
motivações
para
invadir
esse
grupo
podem
ser:
- Usá-los para atacar outros lugares (um nó escravo de uma constelação de uma
ferramenta
DDOS);
- Roubar informações como senhas de home banking e número de cartões de
crédito.
Fazer isso tem se mostrado uma tarefa trivial, pois raramente esses
computadores possuem qualquer proteção como antivírus e firewall pessoal e têm
seus sistemas atualizados. A falta de conhecimento desses usuários sobre esses
riscos também é um grande aliado dos crackers.
Um cavalo de tróia típico pode conter os seguintes componentes:
- Funções de um programa conhecido ou o próprio programa pode ser um
componente
do
mesmo;
- Funções escondidas como capturadores de atividades no teclado como o
programa keyspy (http://www.keyspy.net/).
2
2. Ferramentas de Investigação
Existem várias ferramentas que podem ser utilizadas para descobrir
instruções executadas por cavalos de tróia, assim como abordagens de como atingir
esse objetivo:
– fazer engenharia reversa do programa;
– olhar dentro do código;
– monitorar minuciosamente as chamadas de sistemas desses processos
através de ferramentas que interagem com o sistema operacional.
As ferramentas que permitem olhar dentro do código possibilitam visualizar
strings que podem dar indicações do que o programa faz, tais como: nomes de
bancos, endereços IPs e de correio eletrônico, nomes de arquivos etc. Algumas
conseguem traduzir as instruções para uma linguagem de mais alto nível; outros
requerem um conhecimento da linguagem assembly.
Monitorar o que acontece no ambiente do sistema operacional também é
possível com o uso de certos programas. Eles podem informar: processos em
execução, chamadas de sistema, portas abertas e os processos que as possuem e
acesso a arquivos e diretórios. Com essas informações é possível descobrir o
funcionamento dos programas maliciosos sem conhecer linguagens de baixo nível.
Citaremos a seguir 3 ferramentas que ajudaram na investigação.
2.1. FileMon
O programa FileMon monitora e exibe as atividades do sistema de arquivos
do sistema operacional em tempo real [1]. Ele observa como as aplicações usam os
arquivos e as DLLs, exibindo a data e o horário que cada atividade de abertura,
leitura, escrita ou remoção de arquivos acontece. Há também uma coluna com o
resultado de cada operação. Os seus relatórios podem ser salvos em um arquivo
para uma análise posterior com planilhas ou editores de texto. Caso queiramos
observar eventos em particular, existem filtros para limitar a saída de informações.
O FileMon funciona nos ambientes NT 4.0, Windows 2000, Windows XP,
Windows XP and Windows Server 2003 64-bit Edition, Windows 2003 Server,
Windows 95, Windows 98 e Windows ME.
A função desse programa na nossa investigação foi observar todas as
atividades de acesso a arquivos (leitura, escrita, remoção de arquivos durante a
execução do cavalo de tróia).
3
2.2. Resource Hacker
O programa Resource HackerTM [2] é um utilitário gratuito para visualizar,
modificar, renomear, adicionar remover e extrair recursos em executáveis. Ele
incorpora um compilador e decompilador interno que funciona em sistemas
operacionais Win95, Win98, WinME, WinNT, Win2000 and WinXP.
Usamos esse programa para descobrir as funções internas do cavalo de tróia,
ou seja, como ele era ativado, como ele capturava as informações e como ele as
enviava para o destinatário.
2.3. Programa Winhex
O programa Winhex é um editor hexadecimal útil em investigações de
programas[3]. Podemos inspecionar e editar arquivos. Esse programa é pago, mas
possui uma versão de testes que pode ser baixada para avaliação.
Usamos o Winhex para chegar aonde o Resource Hacker não chegava,
olhamos strings dentro do programa e podemos identificar nomes de bancos,
endereços de correio eletrônicos, URLs etc.
3. Investigação
Investigar um cavalo de tróia requer cuidados especiais para não haver falsos
positivos. É necessário preparar um ambiente que facilite a investigação e que não
gere efeitos colaterais no próprio ambiente ou em terceiros. Como se diz na arte da
guerra: '" se você conhece a si mesmo e ao seu inimigo, sempre vencerá".
O ideal é que sejam separados computadores fora de uso, formatando-os e
reinstalando o SO com o mínimo necessário em uma rede isolada. Após a
instalação do SO, devemos instalar as ferramentas de monitoração e observar seus
relatórios. Pontos a observar:
– processos em execução;
– portas abertas;
– espaço em disco;
– memória ocupada;
– utilização de CPU;
– estado da placa de rede.
O próximo passo é instalar o cavalo de tróia e observar o que acontece,
4
contudo antes de começar a instalação, devemos iniciar o programa File Mon para
saber a ações do programa nesses instantes. O File Mon pode apontar:
– diretórios criados;
– arquivos lidos;
– arquivos sobrescritos;
– arquivos criados;
– porção de dados do arquivo lido/escrito.
– hora e sequência dessas ações.
A tabela a seguir exibe trechos dos logs durante a instalação do cavalo de
tróia:
7289 5:03:46 PM Explorer
FindOpen
C:\TEMP\TROJAN.EXE
SUCCESS
TROJAN.exe
7290 5:03:46 PM Explorer
FindClose
C:\TEMP\TROJAN.EXE
SUCCESS
7292 5:03:46 PM Explorer
Attributes
C:\TEMP\TROJAN.EXE
SUCCESS
GetAttributes
7294 5:03:46 PM Explorer
Open C:\TEMP\TROJAN.EXE
SUCCESS
OPENEXISTING READONLY DENYNONE 7295 5:03:46 PM Explorer
Seek C:\TEMP\TROJAN.EXE
SUCCESS
Beginning Offset: 0 / New offset: 0
Tabela 1Logs de instalação do cavalo de tróia
Apos a instalação, devemos executar novamente os programas de
monitoração e observar quais as diferenças entre o estado atual e o anterior a
instalação. Observar quais arquivos suspeitos estão abertos, se alguma nova porta
apareceu e que processo é o dono dessas alterações.
3.1. Programas para Olhar dentro do Código
Existem ferramentas que permitem olhar dentro de um código binário e
exibir informações de grande valia para investigação. Dependendo dos seus
recursos e do código, podemos ver funções inteiras sendo reconstruídas; outros
programas exibem apenas as instruções em hexadecimal e nos permitem procurar
por strings que podem nos ajudar na investigação. A seguir, falaremos de duas
ferramentas, cada uma seguindo uma abordagem.
5
3.2. Reconstruíndo Funções do Programa
Usamos o programa Resource Hacker para reconstruir algumas funções do
programa. Com ele, podemos observar de perto quais as instruções e chamadas de
sistema do programa analisado. A seguir, exibiremos um trecho do cavalo de tróia
contendo o endereço eletrônico do destinatário das informações roubadas.
object NMSMTP1: TNMSMTP
Host = 'smtp.isp­destino.com.br'
Port = 25
ReportLevel = 0
OnConnect = NMSMTP1Connect
UserID = 'usuario'
PostMessage.FromAddress = 'usuario@isp­
destino.com.br'
PostMessage.FromName = 'usuario@isp­
destino.com.br'
PostMessage.ToCarbonCopy.Strings = (
'usuario2@isp­destino.com.br')
PostMessage.Subject = 'assunto'
PostMessage.LocalProgram = 'C:\WINDOWS\SYSTEM'
EncodeType = uuMime
SubType = mtPlain
Charset = 'us­ascii'
OnSuccess = NMSMTP1Success
OnFailure = NMSMTP1Failure
End
Tabela 2 Trecho do código do cavalo de tróia
3.3. Investigando Mais Fundo
O programa Winhex exibe as instruções do programa em hexadecimal. O
importante saber aqui, além das instruções em si, são as strings que aparecem no
código. O Winhex permite fazer buscas por strings dentro do código, assim
podemos investigar palavras como:
– @, para, to: para descobrirmos endereços de correio eletrônico;
– .com, .org, .net: em busca de endereços de redes que possam identificar
o receptador das informações roubadas;
– 200: para investigar endereços de rede;
– banco: nomes de bancos que podem ativar algum programa para capturar
senhas;
6
- password, senha: idem;
– http://: para descobrir algum programa de monitoração de navegação;
– nomes de arquivos de sistema para saber quais os arquivos serão
sobrescritos ou modificados.
Esses são apenas exemplos de como, mesmo sem entender os códigos em
hexa, poderemos descobrir o que um programa faz.
4. Investigação
Falaremos aqui como aplicamos essas ferramentas para descobrir o
funcionamento do cavalo de tróia.
4.1. Cavalo de Tróia Investigado
O cavalo de Tróia investigado tinha como objetivo roubar senhas de usuários
de home banking. O programa possuía o nome de um utilitário conhecido,
englobando-o dentro de suas funções; ou seja, durante a sua execução, ele
executava o utilitário junto com suas funções de espionagem.
4.2. Processo de instalação
A instalação era bem discreta e já executava o cavalo de tróia ao seu
término, o qual ficava na memória esperando o usuário digitar algo para ser
capturado e enviado ao receptor. O envio era feito através de uma mensagem de
correio eletrônico, para evitar suspeitas com portas abertas.
Nas tabelas a seguir, exibiremos os acessos a arquivos e diretórios feitos pelo
cavalo de tróia durante o processo de instalação usando a ferramenta File Mon.
Como dito anteriormente, esse processo é discreto não pedindo nenhum tipo
de confirmação ao usuário, mesmo quando a ação for para reescrever arquivos.
componente1: COMP1.BPL
8240 5:03:46 PM trojan
Read C:\TEMP\TROJAN.EXE
SUCCESS
Offset: 38526 Length: 2048
8242 5:03:46 PM trojan
Write
C:\WINDOWS\SYSTEM\COMP1.BPL
SUCCESS
Offset: 0 Length: 2048
Tabela 3Processo de instalação do cavalo de tróia – componente 1
7
componente2: COMP3.CFG
8369 5:03:46 PM trojan
Open
C:\WINDOWS\SYSTEM\COMP2.CFG
SUCCESS
CREATENEW REPLACEEXISTING READWRITE DENYNONE 8370 5:03:46 PM trojan
Read C:\TEMP\TROJAN.EXE
SUCCESS
Offset: 98048 Length: 44
8371 5:03:46 PM trojan
Write
C:\WINDOWS\SYSTEM\COMP2.CFG
SUCCESS
Offset: 0 Length: 49
8372 5:03:46 PM trojan
Attributes C:\WINDOWS\SYSTEM\COMP2.CFG
SUCCESS
Set Creation
Tabela 4Processo de instalação do cavalo de tróia – componente 2
componente3: COMP3.DLL
8386 5:03:46 PM trojan
Open C:\WINDOWS\SYSTEM\COMP3.DLL
SUCCESS
CREATENEW REPLACEEXISTING READWRITE DENYNONE 8387 5:03:46 PM trojan
Read
C:\TEMP\TROJAN.EXE
SUCCESS
Offset: 98132 Length: 2048
8398 5:03:46 PM trojan
Write C:\WINDOWS\SYSTEM\COMP3.DLL
SUCCESS
Offset: 0 Length: 2048
Tabela 5Processo de instalação do cavalo de tróia – componente 3
componente4: COMP4.EXE
14506 5:03:48 PM trojan Read C:\TEMP\TROJAN.EXE
SUCCESS
Offset: 1393909 Length: 2048
14507
5:03:48
PM
trojan
Write C:\WINDOWS\SYSTEM\COMP4.EXE
SUCCESS
Offset: 0 Length: 204
Tabela 6Processo de instalação do cavalo de tróia – componente 4
8
Acessos a DLLs do sistema.
14717
5:03:48
PM
trojan
Read C:\WINDOWS\SYSTEM\SHELL32.DLL SUCCESS
Offset: 69632 Length: 4096
14718
5:03:48
PM
trojan
Read C:\WINDOWS\SYSTEM\SHLWAPI.DLL SUCCESS
Offset: 65536 Length: 4096
14751 5:03:48 PM trojan Attributes C:\TEMP\MSI.DLL
NOTFOUND
GetAttributes
14752
5:03:48
PM
trojan
Attributes C:\WINDOWS\SYSTEM\MSI.DLL NOTFOUND
GetAttributes
14755 5:03:48 PM trojan Attributes C:\WINDOWS\MSI.DLL
NOTFOUND
GetAttributes
14756
5:03:48
PM
trojan
Attributes C:\WINDOWS\COMMAND\MSI.DLLNOTFOUND
GetAttributes
Tabela 7Acessos a DLLs do sistema
Como podemos observar, ele escreve os arquivos no diretório de sistema,
para tentar passar despercebido. O programa COMP4.EXE é o módulo que fica
monitorando as informações do usuário.
Ao término da descompressão, o programa COMP4.EXE é lançado na
memória. Suas primeiras ações são capturadas pelo programa FileMon. A seguir,
exibiremos o início do processo de coleta de informações.
O primeiro passo é conhecer melhor o ambiente do usuário: o programa
obtém informações do sistema através do registro e é criado um arquivo com as
informações descritas na tabela a seguir:
Memo1
Informações deste Micro ­ Bios data 06/12/00#üc
Computador: movel2
WorkGroup: movel
Comentário: movel2
Impressora: Sistema Operacional: Microsoft Windows 98 A Versão: 4.10.2222
Registrado para: backup Usuário: teste
End IP:10.1.1.119
Total de memória: 133558272
Tabela 8 Obtenção dos dados da máquina do usuário
9
Depois ele obtém a árvore de diretórios: o programa escreve em um arquivo a árvore de diretório do sistema:
[docs]
[DOS]
[My Documents]
[My Zip Files]
[Program Files]
[temp]
[WINDOWS]
Tabela 9Obtenção da árvore de diretório do usuário
4.3. Olhando Dentro do Programa
A análise dentro do programa forneceu pistas para identificar os
receptadores dos dados roubados. Também permitiu conhecer internamente o seu
funcionamento. Com o uso do programa resource hacker podemos descobrir:
– o cavalo de tróia descobre o mapeamento do teclado do usuário para
configurar o capturador de teclas digitadas de acordo com o idioma do teclado;
– copia o favoritos do navegador Internet Explorer para um arquivo;
– verifica se existe uma conexão de rede ativada;
– usa o programa keyspy para capturar dados digitados;
– envia os dados capturados para um endereço de correio eletrônico.
O código da tabela 2, exibe algumas dessas ações citadas acima.
O uso do programa winhex ajudou na descoberta de nomes de bancos brasileiros.
5. Resultados Obtidos
Através dessas ferramentas, conseguimos acompanhar todas as ações do cavalo de tróia, desde a sua instalação até seu funcionamento. Descobrimos o objetivo do programa, o que e como era roubado do usuário e para onde essas informações eram enviadas.
6. Conclusão
Em algumas situações, um analista de segurança fica deparado com a
tarefa de investigar as ações de um cavalo de tróia em um prazo muito curto.
1
Ao contrário do que muita gente pensa, esse processo não é tão complexo e
demorado, pois podemos descobrir bastante com o uso das ferramentas
certas.
Os cavalos de tróia estão cada vez mais sofisticados, mas com a ajuda
dos programas citados, conseguimos descobrir o que o programa fazia e
identificar como a informação era roubada e para onde ia. A tarefa de
descobrir o funcionamento do programa foi alcançada.
7. Referências Bibliográficas
[1] Programa FileMon. http://www.sysinternals.com/filemeon.htm.
[2] Programa ResourceHacker. http://www.users.on.net/johnson/resourcehacker/
[3]
Programa
Winhex.
http://www.winhex.com
1