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.ispdestino.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@ispdestino.com.br') PostMessage.Subject = 'assunto' PostMessage.LocalProgram = 'C:\WINDOWS\SYSTEM' EncodeType = uuMime SubType = mtPlain Charset = 'usascii' 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