41
104 Capítulo 3 Técnicas para Análise Dinâmica de Malware Dario Simões Fernandes Filho 1 , Vitor Monte Afonso 1 , Victor Furuse Martins 1 , André Ricardo Abed Grégio 1,2 , Paulo Lício de Geus 1 , Mario Jino 1 , Rafael Duarte Coelho dos Santos 3 1 Universidade Estadual de Campinas (Unicamp) 2 Centro de Tecnologia da Informação Renato Archer (CTI/MCT) 3 Instituto Nacional de Pesquisas Espaciais (INPE/MCT) Abstract The threat posed by malware to systems security led to the development of analysis me- chanisms that operate in a dynamic and controlled manner. These mechanisms (dynamic analysis systems) use a variety of techniques to obtain the behavior from malware sam- ples’ execution. The complexity of those techniques varies from monitoring events on user-level interfaces, to Web malicious code desobfuscation, to hooking operating sys- tem (OS) kernel structures. In this book chapter, we present the main techniques that are used to perform malware dynamic analysis, either at the operating system level or at the Web applications level. These techniques are used in the main publicly available analy- sis systems. Also, we show some tools used to capture information about the execution of malware samples and how to build a simple system to analyze malware using open-source and free tools. Finally, we describe in details a case study about the analysis of a malware sample that starts its attack from the browser and then compromises the OS. Resumo A ameaça dos códigos e programas maliciosos à segurança dos sistemas computacionais fez com que surgissem muitos sistemas cujo propósito é analisar, de maneira dinâmica e controlada, tais programas. Estes sistemas se utilizam de diversas técnicas para ob- ter o comportamento apresentado por amostras de malware durante sua execução. A complexidade destas técnicas varia desde a monitoração de eventos através de interfaces no nível de privilégio dos usuários, passando pela desofuscação de programas malicio- sos em linguagens típicas da Web, até a inserção de código em estruturas do kernel do

2011 SBSEG Minicurso Dario.fernandes Vitor.afonso Victor.martins Andre.gregio Mario.jino Rafael.santos

  • Upload
    mauro

  • View
    223

  • Download
    3

Embed Size (px)

DESCRIPTION

2011 SBSEG Minicurso Dario.fernandes Vitor.afonso Victor.martins Andre.gregio Mario.jino Rafael.santos

Citation preview

  • 104

    Captulo

    3Tcnicas para Anlise Dinmica deMalware

    Dario Simes Fernandes Filho1, Vitor Monte Afonso1, Victor FuruseMartins1,Andr Ricardo Abed Grgio1,2, Paulo Lcio de Geus1, Mario Jino1, RafaelDuarte Coelho dos Santos31Universidade Estadual de Campinas (Unicamp)2Centro de Tecnologia da Informao Renato Archer (CTI/MCT)3Instituto Nacional de Pesquisas Espaciais (INPE/MCT)

    Abstract

    The threat posed by malware to systems security led to the development of analysis me-chanisms that operate in a dynamic and controlled manner. These mechanisms (dynamicanalysis systems) use a variety of techniques to obtain the behavior from malware sam-ples execution. The complexity of those techniques varies from monitoring events onuser-level interfaces, to Web malicious code desobfuscation, to hooking operating sys-tem (OS) kernel structures. In this book chapter, we present the main techniques that areused to perform malware dynamic analysis, either at the operating system level or at theWeb applications level. These techniques are used in the main publicly available analy-sis systems. Also, we show some tools used to capture information about the execution ofmalware samples and how to build a simple system to analyze malware using open-sourceand free tools. Finally, we describe in details a case study about the analysis of a malwaresample that starts its attack from the browser and then compromises the OS.

    Resumo

    A ameaa dos cdigos e programas maliciosos segurana dos sistemas computacionaisfez com que surgissem muitos sistemas cujo propsito analisar, de maneira dinmicae controlada, tais programas. Estes sistemas se utilizam de diversas tcnicas para ob-ter o comportamento apresentado por amostras de malware durante sua execuo. Acomplexidade destas tcnicas varia desde a monitorao de eventos atravs de interfacesno nvel de privilgio dos usurios, passando pela desofuscao de programas malicio-sos em linguagens tpicas da Web, at a insero de cdigo em estruturas do kernel do

  • 105

    sistema operacional. Neste captulo, visa-se apresentar as principais tcnicas utilizadaspara efetuar a anlise dinmica de malware - sejam estes do nvel do sistema operacionalou da Web - e as quais esto presentes nos principais sistemas de anlise disponveis pu-blicamente. Alm disso, so mencionadas algumas ferramentas utilizadas na captura deinformaes da execuo dos programas maliciosos. Mostra-se, tambm, como construirum sistema simples de anlise dinmica de malware utilizando ferramentas gratuitas oude cdigo aberto. Para finalizar o captulo, os leitores tero a oportunidade de acompa-nhar um estudo de caso completo da anlise de um exemplar de malware, do ataque apartir da Web at o comprometimento do sistema operacional.

    3.1. Cdigo MaliciosoAtaques realizados por meio de malware tomaram uma dimenso to grande que ativi-dades simples como a navegao na Web [Chen et. al. 2011], [Cova et. al. 2010], aparticipao em redes sociais digitais [Stringhini et. al. 2010], [Yang et. al. 2011] e ouso de celulares[Becher et. al. 2011], [Egele et. al. 2011] tornaram-se perigosas. Para seter uma idia do cenrio nacional, quase a totalidade dos 142.844 incidentes reportadosao CERT.br1 entre janeiro e dezembro de 2010 referem-se a ataques envolvendo cdigomalicioso. Isto pode ser observado na Figura 3.1.

    Figura 3.1. Incidentes reportados ao CERT.br em 2010. Fonte: http://www.cert.br/stats/.

    Um estudo recente publicado na IBM Systems Magazine [IBM 2011] mostra queum dos maiores culpados pelo alto custo financeiro causado por um ataque relacionado atividade de malware. Na Figura 3.2 mostrado o resultado do levantamento do custode invases em diversos pases no ano de 2009.

    No decorrer do tempo, em intervalos determinados, pode-se notar maior incidn-cia de grupos especficos de malware. Por exemplo, nos ltimos cinco anos tem havidouma proliferao grande de botnets2, gerando tentativas (muitas vezes frustradas) do fe-chamento destas por parte de autoridades e pesquisadores de segurana [Stone-Gross et.al. 2011], [Zhang et. al. 2011], [Shin et. al. 2011], [Cho et. al. 2010].

    1Centro de Estudos, Resposta e Tratamento de Incidentes de Segurana no Brasil. (Link: http://www.cert.br).

    2redes de mquinas comprometidas controladas remotamente por comandos dados por um atacante.

  • 106

    Figura 3.2. Custo de uma invaso por pas em 2009. Fonte: [IBM 2011].

    A incidncia pontual de certas classes de malware faz com que estes sejam fre-quentemente responsveis por srios incidentes de propores globais, tais como os re-centes resultados do alastramento dos malware StuxNet [Falliere et. al. 2010], Zeus [Bin-salleeh et. al. 2010] e Conficker [Shin and Gu 2010], ou casos que ganharam notorie-dade no passado como, por exemplo, ILoveYou (2000), Nimda (2001), Code Red (2001),Slammer (2003), Blaster/Sasser (2004).

    Embora tais grupos, ou famlias de malware, tendam a explorar as vulnerabilida-des do momento e do contexto no qual esto inseridos, comum a revisitao de antigosataques, o compartilhamento de funes com finalidade maliciosavarreduras, conexescom servidores, mtodos de exploraoou mesmo a mutao de pequenos trechos docdigo, a qual pode levar reduo da detectabilidade das famlias cujas vacinas j soconhecidas e, em paralelo, manter as funcionalidades e o comportamento malicioso apre-sentados nos ancestrais.

    No mbito da defesa, a mera identificao de um arquivo executvel como sendoum malware conhecido (j coletado, analisado e talvez combatido) permite a tomada decontra-medidas de maneira rpida e eficiente. Isto facilita a conteno de danos, minimizaprejuzos e reduz a possibilidade de infeco em redes e sistemas ainda intactos por meiode regras de bloqueio ou aplicao de patches de segurana.

    Com isso, necessrio haver meios de se identificar malware para que aes de-fensivas possam ser coordenadas, ao mesmo tempo em que sejam obtidos conhecimen-tos sobre o comportamento de um certo malware e sobre a possvel extenso dos danosaos sistemas comprometidos por este cdigo especfico. A soluo mais tradicional paraidentificao de malware ainda o uso de antivrus. Porm, cada vez mais comum autilizao de sistemas de anlise dinmica para traar a execuo de um programa e veri-ficar por aes maliciosas. Adiante, ser apresentada uma taxonomia sucinta de algumasclasses importante de malware. Para motivar o leitor na identificao de comportamentosmaliciosos, sero discutidos brevemente problemas relacionados ao emprego de mecanis-mos antivrus, da anlise esttica demalware e, por fim, da anlise dinmica, que o temadeste texto.

  • 107

    3.1.1. Classes de cdigo malicioso

    Cdigos maliciosos podem ser classificados de uma maneira geral de acordo com algumafaceta especfica de seu comportamento. Embora atualmente seja difcil enquadrar umexemplar de malware em uma nica classe, devido evoluo destes cdigos e faci-lidade de se adicionar novas funcionalidades, a taxonomia apresentada a seguir ainda utilizada para se referir a certos tipos de malware e tambm nos identificadores atribudospor mecanismos antivrus.

    As classes e descries abordadas a seguir baseiam-se nas definies de PeterSzor [Szor 2005].

    Vrus. Segundo Fred Cohen, considerado o pai dos vrus de computador, umvrus um programa que capaz de infectar outros programas pela modificao destesde forma a incluir uma cpia possivelmente evoluda de si prprio. Os vrus costumaminfectar sees de um arquivo hospedeiro, propagando-se atravs da distribuio destearquivo. Comumente, os vrus necessitam ser acionados e propagados por uma entidadeexterna (e.g., usurio).

    Worm. Os worms, por sua vez, propagam-se pela rede e em geral no necessitamde ativao por parte do usurio. Uma outra caracterstica a independncia de outroprograma para disseminao e ataque. Alguns worms podem carregar dentro de si umoutro tipo de malware, que descarregado na vtima aps o sucesso da propagao e doataque.

    Trojan. Cavalos-de-tria so tipos comuns de malware cujo modo de infecoenvolve despertar a curiosidade do usurio para que este o execute e comprometa o sis-tema. Este tipo de cdigo malicioso tambm pode ser encontrado em verses modificadasde aplicaes do sistema operacional, substitudas por indivduos maliciosos. Estas ver-ses apresentam as mesmas funcionalidades da aplicao ntegra, porm tambm contmfuncionalidades adicionais com a finalidade de ocultar as aes malignas.

    Backdoor. Tradicionalmente, as backdoors permitem a um atacante a manutenode uma mquina comprometida por abrirem portas que permitem a conexo remota. Umoutro tipo de backdoor envolve erros na implementao de uma aplicao ou sistema queo tornam vulnervel e podem levar execuo de cdigo arbitrrio na mquina da vtima

    Downloader. Um programa malicioso que conecta-se rede para obter e instalarum conjunto de outros programas maliciosos ou ferramentas que levem ao domnio damquina comprometida. Para evitar dispositivos de segurana instalados na vtima, comum que downloaders venham anexos mensagens de correio eletrnico e, a partir desua execuo, obtenham contedo malicioso de uma fonte externa. (e.g., Web site).

    Dropper. Possui caractersticas similares as dos downloaders, com a diferenaque um dropper considerado um instalador, uma vez que contm o cdigo maliciosocompilado dentro de si.

    Rootkit. um tipo especial de malware, pois consiste de um conjunto de ferra-mentas para possibilitar a operao em nvel mais privilegiado. Seu objetivo permanecerresidindo no sistema comprometido sem ser detectado e pode conter exploits, backdoors everses trojan de aplicaes do sistema. Os rootkitsmodernos atacam o kernel do sistema

  • 108

    operacional, modificando-o para que executem as aes maliciosas de modo camuflado.Este tipo de rootkit pode inclusive interferir no funcionamento de mecanismos de segu-rana.

    3.1.2. O problema dos antivrus

    Um dos mecanismos de defesa contra malware mais populares ainda o antivrus, quepode ser explicado basicamente como um programa que varre arquivos ou monitora aespr-definidas em busca de indcios de atividades maliciosas. Em geral, os antivrus ope-ram de duas formas para identificar cdigo malicioso: correspondncia de padres embancos de dados de assinaturas ou heursticas comportamentais. Na deteco por assina-tura, um arquivo executvel dividido em pequenas pores (chunks) de cdigo, as quaisso comparadas com a base de assinaturas do antivrus. Assim, se um ou mais chunksdo arquivo analisado esto presentes na base de assinaturas, a identificao relacionada atribuda ao referido arquivo. J na deteco por heurstica, um arquivo sob anlise executado virtualmente em um emulador minimalista e os indcios de comportamentosuspeito so avaliados a fim de se verificar se a atividade realizada pelo programa podeser considerada normal ou se um alerta deve ser emitido.

    O grande problema dos antivrus o surgimento frequente e crescente de variantesde malware previamente identificados, cujas aes modificadas visam evadir a deteco.Essas variantes precisam ser tratadas muitas vezes individualmente (e manualmente), nocaso da confeco de uma assinatura para um antivrus. Alm do mais, pode ser pre-ciso modificar a heurstica de deteco de toda uma classe para que esta seja capaz deidentificar a variante, sempre levando-se em conta se a modificao no vai gerar maisfalsos-positivos. Esses, por sua vez, so uma outra dificuldade no processo de criao deassinaturas/heursticas de malwareidentificar erroneamente uma aplicao inofensivado usurio como sendo maliciosa e, consequentemente, remov-la, coloc-la em quaren-tena (bloqueio) ou restringir de algum modo a usabilidade de um sistema computacionalno um requisito desejvel para os fabricantes de antivrus.

    Deve-se considerar tambm que muitos exemplares de malware possuem meca-nismos prprios de defesa cujas aes variam entre desabilitar as protees existentes nosistema operacional alvo (firewall, antivrus, plugins de segurana), verificar se o exem-plar est sob anlise (o que pode causar umamodificao em seu comportamento em razodisto), e disfarar-se de programas do sistema, inclusive de falsos antivrus. Portanto, evi-tar que o mecanismo antivrus seja desabilitado, identificar programas maliciosos rapida-mente com uma taxa mnima de falsos-positivos sem interferir na usabilidade do sistemae, ainda, expandir a capacidade de deteco sem causar sobrecarga tm se tornado tarefascada vez mais difceis. Contribui a isso o cenrio atual das variantes, popularizao dasredes sociais, proliferao de celulares e tablets com o mesmo poder e funcionalidade decomputadores, e o estabelecimento da cloud computing.

    No bastassem os problemas supracitados, a comunidade de desenvolvedores deantivrus ainda no possui padronizao para a classificao dos malware identificadospor suas ferramentas. Isso faz com que o processo de resposta a incidentes de seguranaenvolvendo cdigo malicioso seja prejudicado, tornando-o ineficiente em determinadoscasos. De modo ilustrativo, pode-se tomar como exemplo alguns sistemas que identificam

  • 109

    um programa como malicioso baseando-se apenas no packer3 com o qual o arquivo foicifrado, ou ainda, que fazem a identificao baseada em apenas uma faceta do binrio,a qual pode no condizer com as atividades efetuadas na mquina4. Divergncias denomenclatura terminam por atrapalhar na classificao, pois a falta de um padro fazcom que cada fabricante de antivrus atribua o identificador que desejar. Assim, um dadomalware pode ser identificado como Famlia_X.A por um fabricante, Famlia_X.123por outro e Famlia_Z.y por um terceiro. Para ilustrar este problema de forma maisclara, na Tabela 3.1 esto os resultados obtidos pela indentificao de um exemplar demalware submetido ao VirusTotal5.

    Tabela 3.1. Resultado do VirusTotal para um exemplar de cdigo malicioso.

    Antivirus IdentificaoMcAfee PWS-OnlineGames.buK7AntiVirus TrojanNOD32 a variant of Win32/PSW.OnLineGames.OAFF-Prot W32/Agent.L.gen!EldoradoSymantec Infostealer.GampassNorman W32/Packed_Upack.HTrendMicro-HouseCall TSPY_ONLING.AGAvast Win32:OnLineGames-ECV [Trj]eSafe Win32.Looked.genKaspersky Trojan-GameThief.Win32.OnLineGames.akybSophos Mal/Behav-214Comodo TrojWare.Win32.Trojan.Inject.IIDrWeb Trojan.DownLoader.62898VIPRE BehavesLike.Win32.Malware.bsu (vs)AntiVir TR/Spy.GenTrendMicro TSPY_ONLING.AGMcAfee-GW-Edition Heuristic.BehavesLike.Win32.Packed.AeTrust-Vet Win32/Lemir!genericAhnLab-V3 Win-Trojan/Xema.variantVBA32 BScope.Trojan-PSW.SataGames.3PCTools Rootkit.OrderRising Trojan.PSW.Win32.GameOL.odtIkarus Virus.Win32.VirutPanda Trj/Lineage.ISP

    Para a resposta ser efetiva, isto , permitir a remoo do cdigo malicioso e asatividades derivadas da infeco do sistema comprometido, necessrio, em muitos ca-

    3No contexto deste texto, um packer um programa utilizado para cifrar ou comprimir o contedo deum arquivo/programa malicioso para disfar-lo.

    4Exemplares de malware infectados por outros malware podem fazer com que o antivrus emita umalerta devido a assinatura do infectante, e no do malware original infectado.

    5VirusTotal um servio gratuito disponibilizado publicam ente na Internet em http://www.virustotal.com, para o qual podem ser submetidos programas que so analisados por grande partedas ferramentas antivrus atualmente disponveis no mercado.

  • 110

    sos, uma interveno manual, dado que nem todos os antivrus possuem o procedimentode desfazimento das aes efetuadas (nem h tal procedimento para todas as amostras demalware em atividade, devido ao j citado problema da existncia massiva de variantes).Alguns casos mais epidmicos acabam por ter aplicaes ou rotinas automatizadas pararemoo, as quais podem ser incuas na presena de variantes. Entretanto, o sucesso naobteno do procedimento de remoo (automtico ou manual) correto completamentedependente da identificao provida pelo mecanismo antivrus que, como visto anterior-mente, pode ter sido feita de maneira errnea.

    3.1.3. Anlise esttica e suas limitaes

    A anlise de cdigo malicioso visa o entendimento profundo do funcionamento de ummalwarecomo atua no sistema operacional, que tipo de tcnicas de ofuscao so uti-lizadas, quais fluxos de execuo levam ao comportamento principal planejado, se hoperaes de rede, download de outros arquivos, captura de informaes do usurio oudo sistema, entre outras atividades. Divide-se a anlise de malware em anlise estticae dinmica, sendo que no primeiro caso tenta-se derivar o comportamento do malwareextraindo caractersticas de seu cdigo sem execut-lo, atravs de anlise de strings, di-sassembling e engenharia reversa, por exemplo. J na anlise dinmica, o malware monitorado durante sua execuo, por meio de emuladores, debuggers, ferramentas paramonitorao de processos, registros e arquivos e tracers de chamadas de sistema. Depen-dendo da tcnica ou ferramenta que se utiliza para fazer cada anlise, a velocidade podevariar, mas, em geral, anlises estticas simples so mais rpidas do que as dinmicas.Entretanto, se h a necessidade de engenharia reversa, se o malware possui muitos fluxosde execuo ou se est comprimido com um packer de difcil descompresso, a anlisedinmica tradicional muito mais rpida e eficaz na proviso de resultados acerca docomportamento do exemplar analisado. Em [Moser et al. 2007] apresentada uma ferra-menta que transforma um programa de forma a ofuscar seu fluxo de execuo, disfarar oacesso a variveis e dificultar o controle dos valores guardados pelos registradores, mos-trando que a anlise esttica de um malware ofuscado por essa ferramenta um problemaNP-difcil. Alm disso, durante a anlise esttica no se sabe como o sistema vai reagirem resposta s operaes do programa.

    A anlise esttica pode ser utilizada para obter informaes gerais sobre o pro-grama e para identificar a existncia de cdigo malicioso. Dentre as tcnicas utilizadaspara a obteno de informaes gerais esto a gerao de hashes criptogrficos que iden-tificam o arquivo de forma nica, a identificao das funes importadas e exportadas, aidentificao de cdigo ofuscado e a obteno de cadeias de caracteres que possam serlidas por uma pessoa, como mensagens de erro, URLs e endereos de correio eletrnico.Para identificar cdigo malicioso so usadas, de forma geral, duas abordagens: a verifica-o de padres no arquivo binrio e a anlise do cdigo assembly gerado a partir do cdigode mquina do malware. No caso da verificao de padres, so geradas seqncias debytes, chamadas de assinaturas, que identificam um trecho de cdigo freqentemente en-contrado em programas maliciosos e verifica-se se o programa possui esta seqncia. Jno caso da investigao do cdigo assembly, so empregadas tcnicas de anlise maisprofundas que buscam padres de comportamento malicioso. Em [Song et al. 2008]os autores transformam o cdigo assembly em uma linguagem intermediria e, a partir

  • 111

    desta, extraem informaes a respeito do fluxo de dados e fluxo de controle do programa.A maior dificuldade encontrada pela anlise esttica o uso dos packers. Para combatera evoluo destes, foram desenvolvidos diversos mecanismos [Yegneswaran et al. 2008][Kang et al. 2007] [Martignoni et al. 2007] que visam obter o cdigo no ofuscado domalware, permitindo que a anlise esttica seja efetuada.

    3.1.4. Analisadores dinmicos

    Embora o modus operandi dos antivrus ainda seja majoritariamente a identificao combase em assinaturas, tem crescido o interesse por heursticas, pois uma heurstica bemconstruda pode resultar na substituio de dezenas de assinaturas. Para gerar uma heurs-tica que identifique um exemplar de malware (ou uma classe), necessrio conhecer pri-meiro o seu comportamento, isto , quais so as aes realizadas no sistema operacionalalvo que denotam uma atividade anormal ou suspeita. Como opo aos emuladores limi-tados embutidos nos antivrus com o objetivo de realizar a identificao por heursticas,os sistemas de anlise dinmica de malware foram sendo aprimorados e popularizadosnos ltimos anos. Tais sistemas lanam mo de uma variedade de tcnicas para monitorara execuo de um malware de maneira controlada, utilizando desde a instrumentao deemuladores complexos at a interceptao de chamadas ao kernel do sistema operacionalmonitorado.

    comum as empresas fabricantes de antivrus possuirem seus prprios sistemasde anlise dinmica demalware, tambm chamados de sandboxes, mas h solues dispo-nveis gratuita e publicamente via Internet, como Anubis6, ThreatExpert7 e CWSandbox8.No contexto deste trabalho, uma sandbox um ambiente restrito e controlado que permitea execuo de um cdigo malicioso de forma a causar danos mnimos sistemas exter-nos por meio da combinao de filtragem e bloqueio de trfego de rede e da execuotemporizada do malware. Em geral, o malware executado por quatro ou cinco minutose, durante este tempo, so monitoradas as aes pertinentes tanto ao malware quanto aosprocessos derivados dele. Aps o perodo de monitorao, um relatrio de atividades gerado para anlise.

    Entretanto, um dos grandes problemas da anlise dinmica que a interpretaodos relatrios deixada a cargo do usurio que submeteu o exemplar, ou seja, no se poderealmente dizer que o sistema fez uma anlise, mas sim, uma monitorao da execuocom registro das atividades efetuadas no perodo. Alm disso, limitaes das tcnicascomumente utilizadas para interceptar as chamadas de sistema ou instrumentar o ambienteda sandbox podem levar evaso da anlise por exemplares de malware modernos. Isso,agravado pelo fato de alguns exemplares de malware terem por caracterstica a mutaode seus comportamentos durante execues distintas, faz com que o relatrio gerado porum sistema possa ser diferente do relatrio gerado por outro, no que diz respeito s aesefetuadas pelo malware sob anlise.

    Ainda assim, a anlise dinmica um importante instrumento para prover infor-maes teis a um usurio ou analista de segurana, permitindo tomadas de deciso com

    6http://anubis.iseclab.org7http://www.threatexpert.com8http://mwanalysis.org

  • 112

    base no padro de aes nocivas executadas pelo exemplar de malware analisado.

    3.1.5. Organizao do texto e consideraes

    Este texto visa cobrir as tcnicas mais utilizadas em anlise dinmica de malware, sejameles voltados aos ataques via Web ou no nvel do sistema operacional e suas aplicaes.Na Seo 3.2 so apresentadas algumas destas tcnicas, enquanto que as ferramentas queas utilizam so mostradas na Seo 3.3. esperado que o leitor compreenda os pontosfortes e as limitaes de cada tcnica, bem como o funcionamento destas de forma a poderescolher aquela que se adapta s suas necessidades de anlise. Um conjunto de ferramen-tas para a extrao de informaes da execuo de um cdigo malicioso mostrado naSeo 3.4. As etapas da anlise sero ilustradas por meio de exemplos prticos, permi-tindo o seu acompanhamento detalhado em um estudo de caso apresentado na Seo 3.6.

    3.2. Tcnicas de AnliseA anlise dinmica demalware, normalmente realizada para identificar as aes desenvol-vidas pelo malware no sistema, pode ser implementada atravs de diversas tcnicas, cadauma com suas vantagens e desvantagens. Neste captulo sero apresentadas as principaistcnicas utilizadas por sistemas de anlise importantes ou por ferramentas que auxiliamna anlise dinmica. Dentre elas, podemos citar Virtual Machine Introspection e Hookingcomo as principais. Cada subseo ir tratar cada uma delas de forma detalhada, de formaque ao final deste capitulo o leitor ser capaz de compreender cada uma delas, podendoescolher dentre elas a que mais se adequar para a sua anlise.

    3.2.1. Virtual Machine Introspection

    Virtual Machine Introspection (VMI) uma tcnica onde se cria uma camada entre osistema de anlise (guest) e o ambiente de processamento (host), de forma que todas asaes que ocorrem dentro do sistema guest no so propagadas para o host. Seu usopossibilita a captura das aes que esto sendo executadas dentro do ambiente de an-lise, sem que haja qualquer interferncia dentro do ambiente onde est sendo executado,possibilitando assim que um malware seja anlise sem qualquer tipo de modificao nosistema guest. Como no h modificao no sistema guest, a anlise fica transparente parao malware, impossibilitando qualquer tentativa de identificao do componente de cap-tura. A ilustrao apresentada na figura 3.3 visa clarificar o funcionamento da tcnica deVirtual Machine Introspection, que ser tratada mais detalhadamente nas sees seguin-tes. possvel verificar a diferenciao entre os sistemas guest, que funcionam dentro doambiente emulado e o sistema host, onde est executando a aplicao responsvel pelaimplementao da camada entre o ambiente guest e o host.

    Programas para emulao e virtualizao, tais comoQemu [Bellard 2005], VMWare[VMware 2011] e VirtualBox [Virtualbox 2011] possibilitam a aplicao desta tcnica,dado que estes implementam a camada intermediria de maneira nativa, fazendo assimuma distino entre o ambiente real (ou sistema host) e o emulado/virtualizado (ou oguest). A seguir sero explicados os conceitos de emulao e como a tcnica de VMIpode ser aplicado ela.

    Emulao um termo utilizado na rea de computao para descrever o modo de

  • 113

    Figura 3.3. Ilustrao do uso da tcnica de Virtual Machine Introspection.

    operao de um software desenvolvido para simular um determinado hardware [Martig-noni et. al. 2009], como por exemplo um processador especfico diferente do que estexecutando o emulador. Na anlise de malware, este tipo de software utilizado parasimular uma mquina, para que seja possvel a instalao do sistema operacional que serutilizado no processo de anlise. Alm disso, o emulador pode ser utilizado para separaro ambiente de anlise, fazendo com que as aes efetuadas por um exemplar de malwaredurante sua execuo no contaminem o ambiente real, dado que as modificaes exe-cutadas pelo malware s iro ocorrer no ambiente de anlise host. Um emulador muitoutilizado para este fim o Qemu [Bellard 2005]uma ferramenta de cdigo aberto ede fcil utilizao com o qual possvel emular o processador, o disco rgido e demaisdispositivos do sistema de forma que seja possvel instalar vrios tipos de sistemas ope-racionais.

    Virtualizao, de modo similar emulao, utilizada para simular uma m-quina, tornando possvel a instalao e execuo de vrios sistemas operacionais em pa-ralelo com o mesmo hardware. Porm, na virtualizao as instrues so executadas nohardware real da mquina, ao contrrio do que ocorre na emulao, na qual as instruesso executadas em um processador emulado. Isto torna a virtualizao mais rpida em re-lao emulao, pois as instrues do guest ficam sob responsabilidade do hardware dohost. A limitao da virtualizao que ela possibilita somente a instalao de sistemascuja arquitetura seja a mesma do host. Quando se utiliza um virtualizador para anlisede malware, as funcionalidades so parecidas com as do emulador: h o isolamento entreos ambientes dos sistemas host e guest. Nesse caso, o programa responsvel pela virtu-alizao, acrescenta uma camada adicional entre o ambiente real e o de anlise chamadade Virtual Machine Monitor. Esta camada realiza a abstrao do hardware real para as

  • 114

    mquinas virtuais, executando suas aes de forma que sejam percebidas somente dentrodo ambiente virtual [Rosenblum 2004].

    Tanto a virtualizao quanto a emulao fazem uma distino entre o ambienteonde o malware executado e o real. Para simplificar a forma de mencionar tais am-bientes, a partir de agora sero utilizados os termos guest e host, sendo que o primeiroidentifica o sistema operacional virtualizado ou emulado utilizado na anlise dinmica eo ltimo identifica o sistema base que executa o emulador ou virtualizador.

    O programa de virtualizao/emulao responde ao sistema guest da mesma formaque os dispositivos fsicos (processador, disco rgido, placas de rede e vdeo etc) res-ponderiam, sem entretanto comprometer o host no qual ele est sendo executado. Essatransparncia faz com que o host tenha total controle sobre o guest, podendo inclusiveobservar em tempo real o estado dos diversos recursos da mquina onde o malware estsendo executado, como memria e CPU, por exemplo.

    Desta forma, torna-se trivial a obteno de informaes a respeito da execuo domalware de maneira externa ao guest, bastando que se modifique o software respons-vel por executar a emulao/virtualizao para que este realize a captura dos dados. Amodificao de um programa de virtualizao ou emulao com o objetivo de se obterinformaes internas ao guest a partir do sistema host chamada de VMI e, com a uti-lizao desta tcnica possvel alcanar um nvel de privilgio adicional na camada deabstrao intermediria entre o host e o guest. Uma das caractersticas mais interessantesda VMI que esta torna possvel a anlise de malware cuja execuo ocorre no nvel dokernel, tais como os rootkits. As tcnicas comumente utilizadas por rootkits para esconderou alterar estruturas internas do sistema operacional atacados [Hoglund and Butler 2005]podem inviabilizar sua deteco e monitorao por mecanismos de segurana ou outrosmtodos de anlise, como por exemplo, hooking (Seo 3.2.2).

    Para ilustrar a tcnica de VMI, um tipo de informao que pode ser capturadado sistema guest so as syscalls que o malware executou durante a anlise. Um mtodomuito utilizado para identificar a ocorrncia de uma syscall baseia-se na leitura do valorcontido no registrador SYSENTER_EIP_MSR do processador. Este registrador utili-zado quando ocorre uma instruo do tipo SYSENTER, que indica que uma chamadade sistema deve ser feita. Quando a chamada efetuada, o sistema realiza a troca de con-texto entre o espao de usurio e o espao de kernel, permitindo finalmente a execuo dasyscall.

    Uma forma de identificar qual syscall est sendo invocada atravs da leiturado valor contido no registrador EAX. No momento em que a instruo SYSTENTER forexecutada, o registrador EAX armazena um valor utilizado para se encontrar o endereoda syscall que se quer realizar. Esse valor corresponde ao ndice de uma tabela que contmos endereos de todas as syscalls possveis no sistema operacional. Em sistemasWindows,esta tabela corresponde a uma estrutura que atende pelo nome de System Service DispatchTable. Os parmetros utilizados para compor a syscall podem ser obtidos atravs deverificaes nos registradores do processador e na memria do sistema, no momento emque a chamada estiver sendo executada.

    Um sistema de anlise dinmica bem conhecido e disponvel publicamente para

  • 115

    utilizao atravs da Internet , Anubis [Anubis 2011], o qual utiliza a tcnica de VMIpara monitorar as aes de um exemplar de malware durante sua execuo em um sis-tema operacional Windows XP. A fim de aplicar VMI, Anubis foi implementado sobre oemulador Qemu, modificado para efetuar a captura de informaes de maneira externa aoguest. Mais detalhes da implementao de Anubis podem ser encontrados em [Bayer et.al. 2006].

    A principal desvantagem da VMI que um malware pode detectar que est sendoexecutado em um ambiente emulado/virtual, evitando a anlise como um todo ou apresen-tando um comportamento alternativo ao malicioso. No caso dos emuladores, a detecopode ser feita de forma muito simples, por exemplo, atravs da realizao de uma instru-o no processador que causa um comportamento especfico. Um dos modos utilizadospara realizar tal verificao por meio de bugs conhecidos em processadores de determi-nadas arquiteturas que fazem com que certas instrues no se comportem como esperado.Se esta instruo for executada no emulador e este no estiver preparado para apresentaro mesmo comportamento de um processador real, o malware ir perceber essa diferena,podendo parar ou modificar a sua execuo [Raffetseder et. al. 2007]. A deteco de am-biente virtualizado tambm simples, com apenas uma instruo assembly que, mesmoexecutada em um nvel de baixo privilgio, retorna informaes internas sobre o sistemaoperacional presente no guest. Tais informaes identificam o ambiente virtualizado combase nas diferenas entre estes e sistemas reais [Quist and Smith 2006].

    Para contornar as tcnicas de anti-anlise, existem meios de detectar que ummalware verifica se est em ambiente emulado, ou mesmo de modificar alguns valorespresentes no ambiente virtual para tentar disfar-lo [Kang et. al. 2009],[Liston andSkoudis 2006]. Entretanto, o uso destas tcnicas muitas vezes insuficiente e o malwareainda pode detectar que est sendo executado em ambiente emulado/virtual.

    Um outro sistema utilizado para traar o comportamento de um malware e que sebaseia em VMI Ether [Dinaburg et. al. 2008]. Este sistema utiliza VMI para obter asaes realizadas no guest, porm, ao contrrio de Anubis, Ether se utiliza de virtualizaodireta do hardware, o que o torna imune s tcnicas de anti-anlise que verificam se ohardware real ou emulado. A implementao da VMI feita em uma verso modificadado Xen hypervisor, um software de virtualizao. Uma vantagem de Ether sobre Anubisdiz respeito anlise de exemplares de malware com packers que apresentam mau funci-onamento em emuladores. Diferentemente de Anubis, Ether consegue analisar este tipode malware sem qualquer problema em sua execuo, dado que o Xen utiliza o hardwarenativo para executar as operaes do processador. Entretanto, Ether apresenta problemasde desempenho para obter o trao composto pelas syscalls que o malware realizou. Issoocorre porque cada chamada de sistema executada pelo programa gera uma page fault,a qual tratada pelo componente de Ether responsvel pela obteno do referido trao.Alm disso, apesar de ser dito em sua documentao que no possvel detectar suapresena, existem meios de verific-la, como os descritos em [Pk et. al. 2011]. Nestareferncia, so apontados alguns possveis modos de detectar a presena de Ether, comopor exemplo atravs de uma modificao feita pelo sistema de anlise que desabilita o bitTSC (Time-Stamp Counter). Este bit retornado quando se executa a instruo CPUID eserve para indicar quando a instruo RDTSC suportada. Portanto, para detectar a exe-cuo em Ether, basta que se execute a instruo CPUID e se observe o valor retornado

  • 116

    no bit TSC.

    Alm dos problemas apresentados com o uso da VMI para captura de informaes,h uma outra limitao que diz respeito ao desempenho. Como o componente que obtmas informaes fica na camada da VMI, que faz o interfaceamento entre o guest e o host, osdados capturados so de nvel mais baixo, isto , valores encontrados em registradores daCPU ou endereos de memria. Porm, a anlise do comportamento domalware, isto , asmodificaes feitas no sistema da vtima, requer a obteno de valores de mais alto nvel,como nomes de arquivos criados, registros modificados e processos inicializados. Assim,para acessar tal contedo precisa-se interpretar, em tempo de execuo, os dados contidosna memria e no processador durante a monitorao do malware, o que na maioria dasvezes no uma tarefa fcil e causa uma sobrecarga no processo de anlise.

    3.2.2. Hooking

    A tcnica de hooking pode ser definida como um meio de se alterar as requisies e res-postas resultantes das interaes realizadas em um sistema operacional ou por suas apli-caes, atravs da interceptao das funes ou eventos utilizados [Holy Father 2004].Pode-se categorizar hooking como sendo de modo de usurio (userland hooking) ou demodo de kernel (kernel hooking). O que difere estes dois tipos a extenso da modifi-cao que pode ser feita no sistema e, consequentemente, nas aplicaes. Malware ge-ralmente utilizam-se de tcnicas de hooking para capturar ou modificar informaes queestejam transitando em uma aplicao ou no sistema operacional. Atravs disto poss-vel a ocultao de suas atividades, dificultando assim a sua identificao. Alguns rootkitsempregam hooking para tornar sua presena indetectvel ao sistema [Hoglund and Butler2005]. Na figura 3.4 apresentada uma ilustrao da aplicao da tcnica de SSDT hoo-king, que ser explicada com mais detalhes nas sees seguintes, em um sistema. Pode-seperceber como era o fluxo de execuo antes do hooking e depois dele.

    Figura 3.4. Ilustrao da aplicao da tcnica de SSDT Hooking.

    Nas sees a seguir, sero detalhadas as diferenas existentes entre hooking denvel de usurio e de kernel. Sero citados tambm exemplos de cada uma das abordagens.

  • 117

    3.2.2.1. Userland Hooking

    Userland hooking ou hooking de nvel de usurio uma tcnica de interceptao que podeafetar somente programas que executam em nvel de usurio, no podendo interferir emqualquer aplicao que opere em um nvel mais privilegiado. Mesmo com esta limitao,tal tcnica bastante utilizada por malware, dado que sua implementao mais simples.Embora sua utilizao seja frequente, userland hooking pode ser facilmente detectado,o que pode levar o programa a desfazer o hooking ou no executar a funo modificada.Como esse tipo de hooking feito normalmente sobre APIs9 disponibilizadas pelo sistemaoperacional, para um programa detectar se a interceptao est sendo feita ou no bastaverificar se os endereos das APIs utilizadas por ele esto modificados ou se o endereo uma instruo de pulo incondicional (JMP), que uma prtica comumente utilizada emhooking. Alm deste tipo de deteco, existem outras formas que podem ser utilizadaspara evitar um possvel hooking. Uma delas, muito eficaz, a utilizao de funes na-tivas do sistema operacional, ao invs das APIs fornecidas por ele. Entretanto, empregareste processo requer um maior cuidado na implementao do programa, pois este deverfornecer um nmero maior de informaes quando for executar cada funo, tarefa estaque antes ficava a cargo do sistema operacional. A fim de exemplificar tcnicas de user-land hooking para modificao de APIs, apresenta-se a seguir IAT hooking, Detours einline hooking.

    IAT Hooking

    Import Address Table hooking, ou (IAT hooking), uma tcnica aplicada para in-terceptar as funes utilizadas por um determinado programa, antes que este esteja emexecuo. Para isso, a tcnica deve ser empregada sem que o malware tenha compro-metido o sistema. A Import Address Table uma estrutura presente no cabealho dearquivos do tipo PE32 (arquivos executveis do sistema Windows), e responsvel porindicar os endereos das rotinas externas utilizadas por um programa [Microsoft 2008].Esses endereos so definidos no processo de carregamento do programa que antecedea sua execuo, quando este est sendo inicializado pelo sistema operacional. Tais en-dereos so fornecidos por DLLs (dynamic-link libraries), pacotes binrios que contmfunes e variveis as quais podem ser utilizadas por outros programas [Russinovich andSolomon 2004]. Quando o programa est na fase de inicializao, o sistema operacio-nal se encarrega de verificar quais DLLs e mtodos externos so utilizadas por ele. Deposse destas informaes, o sistema operacional pode preencher a IAT com os endereosreferentes aos mtodos usados, de forma que durante a execuo o programa carregadoconsiga invocar corretamente as funes [Holy Father 2004].

    Para realizar este tipo de hooking necessrio modificar a tabela IAT do programaque se deseja monitorar, de forma que os endereos contidos nela sejam de funes quese tem controle. Portanto, para cada funo modificada necessria uma nova funo, aqual poder modificar ou simplesmente monitorar os dados passados pelo programa sobanlise para a funo original. Alm disso, cada funo deve invocar a funo originalpara que as aes produzidas por um programa tenham seu efeito consumado no sistema,prosseguindo assim com a execuo normal do programa monitorado. Um problema evi-

    9Application Programming Interfaces

  • 118

    dente desta abordagem a necessidade de modificaes no programa sob anlise, a fimde que seja possvel instalar os hookings nas APISsmonitoradas. A deteco deste tipo deao pode ser feita com um simples teste de integridade no cdigo do programa monito-rado. Se isto ocorrer, um malware pode identificar que est sendo monitorado, o que podefaz-lo tomar medidas que inviabilizem sua anlise ou que os resultados retornados poresta no correspondam ao fluxo de execuo malicioso pretendido originalmente. Outroproblema com a abordagem que pode inutilizar a captura ocorre caso o malware carreguea DLL que ir utilizar durante a sua execuo. Para isso, basta que ele use APIs disponi-bilizadas pelo Windows, as quais possibilitam que a DLL seja utilizada, mesmo sem serpreviamente inicializada com o malware. Esta prtica bem simples de ser utilizada edesabilita por completo o IAT hooking, j que as APIs utilizadas assim pelo malware nosero afetadas.

    Detours

    Uma outra forma de interceptar APIs do Windows atravs do uso de Detours,uma biblioteca provida pela prpria Microsoft para interceptar funes do Windows emarquiteturas x86 [Hunt and Brubacher 1999]. Atravs de sua utilizao, possvel realizarmodificaes no incio da funo que se deseja interceptar de maneira dinmica, durante aexecuo do programa. Esta tcnica implementada atravs da insero de uma instruoassembly de pulo incondicional (JMP) no incio da funo. Assim, quando tal funo forinvocada, o JMP ser executado e ir direcionar o fluxo de execuo para uma regiosobre a qual se tem controle. Isto possibilita a captura dos dados que esto passando pelafuno, bem como os valores retornados com sua execuo. Sua implementao pode serfeita de maneira simples, visto que o prprio sistema operacional prov suporte para isso,atravs de um programa que executa em nvel de usurio.

    Um sistema open source para anlise dinmica de malware disponibilizado recen-temente, chamado Cuckoobox [Cukoo Sandbox 2011], aplica a tcnica de Detours paraobter as informaes das APIs utilizadas pelo malware durante sua execuo. Embora osistema necessite de mquinas virtuais para realizar uma anlise, o mecanismo de captura inserido no guest e passa as informaes obtidas via protocolo de comunicao parao host, diferentemente de Anubis, que requer uma modificao no software de emulaopara capturar as informaes de execuo domalware. Isto torna a implementao da tc-nica mais simples, porm, seu custo que pode-se facilmente verificar o uso de Detoursatravs de uma checagem no incio da funo que se quer realizar: se a instruo inicialfor um JMP, h a presena de um Detour.

    Inline Hooking

    Inline Hooking uma outra tcnica que pode ser utilizada para redirecionar o fluxode execuo normal de um programa para uma regio que se tenha total controle. Emgeral, esta tcnica utilizada em malware para alterar as APIs do sistema operacional,de forma que as respostas produzidas sejam capturadas ou modificadas. Cabe ressaltarque inline hooking pode ser implementada tanto no nvel do usurio como no do kernel,entretanto, sua forma mais comum aparece em nvel de usurio devido simplicidadeda implementao. Seu funcionamento bem parecido com o do Detours, mas em vezde trocar somente a primeira instruo assembly da funo que se deseja interceptar, possvel alterar uma poro maior de cdigo. Como a parte que desvia a execuo do

  • 119

    programa para a regio de que se tem controle no fica no incio do cdigo, a detecodo hooking mais complicada, visto que ser necessrio inspecionar uma rea maior docdigo que se quer executar em busca de algum desvio de execuo.

    O sistema de anlise demalware CWSandBox [CWSandbox 2011] utiliza a tcnicade inline hooking para capturar as informaes resultantes da execuo de ummalware emum sistema Windows XP. O inline hooking feito por ele similar tcnica do WindowsDetour, onde o comeo da funo que se deseja interceptar substitudo por um JMP[Willems et. al. 2007].

    3.2.2.2. Kernel Hooking

    O kernel hooking, ou hooking em nvel de kernel, executa em um nvel mais privilegiado,utilizando tcnicas mais complexas que no so trivialmente detectadas pormalware. Istoatribui uma vantagem sobre o userland hooking, pois torna a sua deteco mais difcil.Porm, na maioria das vezes a deteco de kernel hooking pode ser feita por programasque executam em nvel privilegiado, como por exemplo os rootkits [Hoglund and Butler2005]. No caso geral, a anlise de malware cuja execuo ocorre no nvel de usurio mais confivel caso se aplique a tcnica de kernel hooking, pois o componente respons-vel pela captura das aes do malware est em um nvel de privilgio mais elevado, cujoacesso direto no permitido. Por outro lado, mesmo com a possibilidade de subverso dohooking, os rootkits (e programas de nvel de kernel em geral) precisam ser inicializadospor programas de nvel de usurio. Portanto, todas as aes executadas durante o pro-cesso de inicializao, como por exemplo, o carregamento de um driver, so capturadas,podendo ao menos levantar suspeitas sobre um possvel comportamento malicioso. Umexemplo de kernel hooking comumente utilizado por mecanismos de segurana, como osantivrus, e tambm por rootkits a tcnica de SSDT hooking, explicada a seguir. Outroexemplo, explicado adiante, a tcnica de kernel callbacks.

    SSDT Hooking

    O hooking da System Service Dispatch Table, comumente conhecido como SSDThooking, consiste na modificao de uma estrutura interna presente em sistemasWindows,a qual responsvel por armazenar os endereos das syscalls do sistema. Esta estrutura composta basicamente por um vetor de endereos, onde cada ndice corresponde a umadas rotinas de chamadas de sistema disponibilizadas pelo sistema operacional, represen-tando uma tabela. Tal tabela reside no kernel do sistema operacional e, portanto, pro-gramas no nvel de usurio no tm acesso a ela. Esta tabela utilizada pelo sistemaoperacional quando uma chamada de sistema requisitada, retornando assim o endereode memria da funo apropriada [Blunden 2009]. Para realizar o hooking de SSDT preciso utilizar um driver que opere em nvel de kernel. Como esse driver executa emmodo privilegiado, ele pode realizar alteraes em outros programas e estruturas internasdo sistema presentes no nvel de kernel. Portanto, o driver tem permisso para alteraros endereos contidos na SSDT, trocando-os por valores que indiquem mtodos de seucontrole. Antes de realizar a troca, os endereos originais precisam ser armazenadospara que possam ser utilizados posteriormente, completando assim a requisio feita ori-ginalmente. Os endereos alterados iro apontar para funes interceptadas, que sero

  • 120

    executadas ao invs das originais. Como se tem o controle destas funes, possvel mo-nitorar as requisies feitas ao sistema e os valores retornados, ou modificar as respostasretornadas pelo sistema operacional ao programa sob anlise. Alm disso, fica a cargodas funes controladas realizar a chamada s syscalls originais, atravs dos endereossalvos antes das modificaes na SSDT, possibilitando que o fluxo de execuo originalde um malware monitorado seja mantido.

    Tcnicas de kernel hooking so muito mais poderosas do que as de userland jus-tamente por atuarem em um nvel privilegiado, o que lhes permite maior controle sobreos demais programas que executam no sistema operacional. Outra vantagem que o mo-nitoramento fica transparente para as aplicaes de nvel de usurio, pois elas no tmacesso s aplicaes que executam no nvel do kernel. Uma desvantagem deste tipo detcnica diz respeito s informaes que so extradas das funes que se pode interceptar.Na abordagem de IAT hooking, possvel capturar funes contidas nas DLLs utilizadaspor um programa, as quais correspondem muitas vezes ao modo utilizado pelo programa-dor para executar a chamada de sistema. J no caso das chamadas de sistema capturadasatravs do SSDT hooking, a informao no se apresenta de uma forma to clara. Porexemplo, caso se queira obter o nome de um arquivo utilizado durante uma syscall, podeser necessrio realizar a verificao do contedo de outras estruturas utilizadas na invo-cao da syscall, dado que este nome muitas vezes no passado de forma direta. Nestecaso necessrio realizar alguns procedimentos para traduzir os dados passados comoargumento para a syscall de forma a encontrar a informao desejada. Alm deste pro-blema, o SSDT hooking dependente da verso do sistema onde ele est sendo aplicado,sendo que para cada verso o SSDT hooking deve ser feito de uma maneira diferente. Talefeito acontece pois podem ocorrer modificaes na SSDT entre as verses, fazendo comque endereos antes utilizados para identificar uma syscall no sejam os mesmos.

    Um sistema de anlise de malware que faz uso desta tcnica o JoeBox [Joebox2011]. Alm de interceptar as chamadas da SSDT ele tambm realiza um hooking de nvelde usurio, o que possibilita obter um volume bem maior de informao. Infelizmente s possvel submeter um nmero limitado de malware a este sistema, dado que se trata deum sistema comercial.

    3.2.3. Kernel Callbacks e Filter Driver

    Callbacks so funes disponibilizadas pelo sistema operacional que notificam uma apli-cao sobre determinadas modificaes no sistema, como por exemplo, a criao de umachave de registro ou de um novo arquivo [Seifert et. al. 2007]. Estas funes so bemdocumentadas e, portanto, sua implementao no apresenta incompatibilidades entre asdiferentes verses do Windows, como ocorre no caso do SSDT Hooking, que realiza mo-dificaes em estruturas do kernel especfico de cada verso do sistema operacional. Istotorna possvel a monitorao de determinadas aes que ocorrem no sistema de uma formamais simples e genrica, permitindo a identificao de comportamento possivelmente ma-licioso. Uma limitao presente nesta abordagem que ela permite somente a captura dasaes realizadas por funes disponibilizadas pelo sistema operacional, o que pode levar obteno de um comportamento de execuo incompleto.

    Uma tentativa de melhorar a captura de dados com o uso de kernl callbacks atra-

  • 121

    vs do uso de filter drivers. Seu funcionamento similar ao de um filtro, interceptandotodas as requisies feitas a um determinado dispositivo do sistema. Eles se interpementre o driver, o qual esto sendo interceptadas as requisies, e o nvel de usurio, tendoacesso assim a todas as chamadas feitas ao dispositivo interceptado. Seu uso em conjuntocom kernel callbacks possibilitam que seja capturado um nmero maior de informaesporm, elas ainda so restritas a um limitado conjunto, o qual pode resultar em umaanlise incompleta ou inconclusiva. Uma ferramenta que implementa a tcnica de ker-nel callbacks e filter driver o CaptureBat [CaptureBat 2011]. Sua utilizao requer ocarregamento de drivers no sistema operacional a ser monitorado, o que possibilita suaaplicao tanto em mquinas virtuais como reais.

    3.2.4. Debugging

    Utilizada inicialmente para fins no maliciosos, a tcnica de debugging consiste em paraexecuo de um programa em um dado momento, sendo possvel verificar o que serexecutado a seguir. Normalmente ela utilizada por desenvolvedores de software, quedesejam encontrar em qual ponto sua aplicao est apresentando problemas. Para isto,basta colocar um marcador em determinados pontos, chamados de breakpoints, os quaisiro interromper o fluxo de execuo do programa no aguardo de um comando sobre oque fazer a seguir. Debuggers, programas que executa o processo de debugging de umaaplicao, so separados em duas categorias, os que utilizam os recursos providos peloprocessador, mais comuns, e os que emulam o processador, sendo estes os mais poderosospois controlam toda a execuo do programa. Se o emulador for bem feito, ser muitodifcil para um programa descobrir que est sofrendo debugging, dado que o debuggerestar no controle da execuo.

    Os breakpoints podem ser divididos em dois grupos, os software breakpoints, quemodificam o cdigo da aplicao onde se deseja realizar o debugging, e os hardwarebreakpoints, que utilizam recursos do processador, sendo os mais difceis de serem iden-tificados. Como os software breakpoints modificam a aplicao, basta um simples testede intergridade para identificar a presena de um breakpoint no cdigo. J os hardwarebreakpoints no sofrem deste problema, dado que as modificaes feitas para realizar odebugging esto em estruturas disponibilizadas pelo processador. Mesmo que o programatente identificar estas mudanas, o debugger pode interceptar estas requisies e retornaruma resposta falsa, no revelando assim que o programa est sofrendo um debugging.

    Na anlise dinmica de malware a tcnica de debugging pode ser utilizada paraidentificar caractersticas do malware. Com isto ser possvel desenvolver mtodos quepossam identificar novos malware com caractersticas semelhantes, facilitando a identifi-cao destes exemplares e evitando que novas contaminaes ocorram. Por obter dadosde mais baixo nvel, composto pelo cdigo assembly da aplicao, preciso realizar algu-mas inferncias para obter informaes de mais alto nvel, como por exemplo um nomede arquivo. Algumas aplicaes possibilitam que o debugger tenha acesso direto essainformao, sendo possvel identificar o momento em que a aplicao faz referncia a ela.

    Duas ferramentas de debugger bem conhecidas e utilizadas constantemente, umapaga e outra gratuita, so o IDA Pro e o OllyDBG respectivamente. A primeira dispe demais recursos que podem auxiliar durante o processo de debugging, como por exemplo

  • 122

    um grfico que mostra todas as chamadas de funes identificadas no programa. Com ele possvel ver a relao existente entre as funes presentes no programa. J a segunda,OllyDBG, mesmo sendo uma ferramenta gratuita dispe de recursos indispensveis du-rante o processo de debugging, como por exemplo uso de plugins que podem ajudar noprocesso de anlise.

    3.2.5. Engenharia Reversa

    O processo de engenharia reversa consiste em extrair informaes sobre um software, deforma que seja possvel compreender seu funcionamento. No existe uma ferramenta querealize de forma automtica este processo, sendo somente possvel realiz-lo de formamanual. Normalmente aplicado em software onde no possvel se ter acesso ao c-digo fonte, possibilitando assim um maior entendimento sobre as aes executadas pelosoftware durante sua execuo, auxiliando inclusive na remontagem do cdigo do pro-grama.

    Na anlise de malware, esta tcnica utilizada quando se deseja descobrir, deforma detalhada, quais os passos desenvolvidos pelo malware no sistema. Isso possibi-lita, por exemplo, identificar quais tcnicas ele utilizou para comprometer o sistema, comoele esconder suas atividades para ocultar sua execuo, quais dados do sistema compro-metido ele captura, dentre outras atividades normalmente executadas pormalware. A par-tir dessas informaes, possvel inclusive criar procedimentos que retirem da mquinacomprometida todas as modificaes feitas pelo malware, levando-a a um estado integro,anterior ao comprometimento. Outra aplicao para a engenharia reversa de malware o reconhecimento de rotinas de cifrao presentes nele. Elas normalmente so aplicadasao malware para evitar que certos dados fiquem em claro no cdigo binrio, como porexemplo um endereo utilizado pelo malware onde est outro componente utilizado porele, o qual ser obtido durante sua execuo, ou um endereo de email para onde seroenviados os dados capturados na mquina comprometida.

    Para que uma engenharia reversa seja realizada, preciso um bom nvel de conhe-cimento sobre o ambiente onde a aplicao ir executar, para compreender as iteraesrealizadas entre o programa e o sistema operacional bem como as respostas retornadas emcada uma delas. Com a mescla de tcnicas que combinam dados de baixo e alto nvel, possvel obter informaes necessrias para realizar uma engenharia reversa de forma f-cil e rpida. Portanto, todas as tcnicas de anlise dinmica apresentadas at aqui podemser aplicadas durante o processo de engenharia reversa, evitando que seja desperdiadotempo na busca de informaes que so providas naturalmente por elas.

    3.3. Sistemas de Anlise DinmicaAs tcnicas apresentadas no capitulo anterior so utilizadas em um grande nmero desistemas de anlise de malware e Web malware. Normalmente, os sistemas apresentamos dados coletados de modo que seja fcil compreender as aes executadas pela amostradurante a anlise. Alguns sistemas aceitam somente submisso atravs de seus Web sitesenquanto outros s podem ser executados se instalados em uma mquina local. Nestecapitulo sero discutidos em cada subseo sistemas de anlise relevantes, frequentementeutilizados na anlise de malware e Web malware.

  • 123

    3.3.1. Sistemas de anlise de malware

    3.3.1.1. Anubis

    Iniciou suas atividades em 2007, baseado em um trabalho de mestrado, TTAnalyze [Bayeret. al. 2006]. Utiliza a tcnica de Virtual Machine Introspection (VMI) aplicada aoQemu, explicada detalhadamente no capitulo anterior, para capturar as aes executadaspelo malware no sistema de anlise. O sistema operacional utilizado no ambiente deanlise um Windows XP SP3, com uma instalao bsica. Ao final da anlise, que podedemorar 8 minutos, produzido um relatrio em vrios formatos, html, xml e txt, quesumariza as aes do malware. Alm disto, caso seja gerado algum trfego de rede, umarquivo no formato pcap tambm fornecido. A submisso pode ser feita em lote, atravsde um script python, ou de forma singular, onde somente um malware enviado. No casodesta submisso, possvel torna-la mais rpida, passando-a frente das submisses emlote. Para isto, basta que um captcha seja fornecido no momento da submisso.

    Apesar do uso de VMI para capturar as aes desenvolvidas pelo malware, o Anu-bis tm dois componentes no sistema de anlise, um driver e um programa de nvel deusurio, os quais iro capturar os valores contidos no registrador CR3, usados pelos pro-cessos do malware, e realizar a comunicao entre o ambiente de anlise e a mquina hostrespectivamente. A tabela 3.2 mostra as vantagens e desvantagens presentes no sistemaAnubis, levado em considerao todos os pontos levantados at aqui.

    Tabela 3.2. Vantagens e desvantagens do sistema de anlise Anubis.

    Vantagens DesvantagensA captura feita por um componente forado ambiente de anlise.

    Existem componentes do sistema de an-lise dentro do ambiente de anlise.

    No necessrio nenhum preparo localpara executar a anlise.

    Caso o sistema esteja fora do ar, a anliseno pode ser realizada.

    3.3.1.2. CWSandbox

    Teve incio em 2007, utilizando a tcnica de userland hooking para obter as informaesgeradas pelo malware, em mquinas virtuais. Os ambientes de anlise tm como sistemaoperacional um Windows XP [Willems et. al. 2007]. A captura das informaes re-alizada por uma DLL (Dynamic Link Library), que precisa ser injetada no processo domalware. Quando ela carregada, as principais funes utilizadas para fazer a interfaceentre o programa e o sistema de anlise, como por exemplo modificaes em arquivos,tm seu incio modificado, de forma que um desvio incondicional seja executado assimque a funo chamada. Finalizada a anlise, gerado um relatrio nos formatos html,xml e txt, contendo as aes realizadas no ambiente pelo malware. O processo de submis-so pode ser feito de forma singular, para um nico arquivo, ou na forma de um arquivocomprimido, contendo mltiplos arquivos para anlise. necessrio fornecer um ende-reo de email para onde ser enviado o link para o resultado da anlise, quando este estiverpronto.

  • 124

    Para iniciar o processo de anlise, existe um componente dentro do ambiente deanlise, o cwsandbox.exe, que ir comear o processo do malware em estado suspenso,injetar a DLL e retomar a execuo do processo. Alm disto, este componente ser in-formado caso o malware inicialize ou modifique algum processo, para que a DLL sejainjetada neles tambm. Existe um outro componente dentro do ambiente de anpalise, que responsvel pela proteo dos componentes de captura, escondendo evidncias de suaexistncia. Na tabela 3.3 possvel ver as vantagens e desvantagens presentes no sistemaCWSandbox.

    Tabela 3.3. Vantagens e desvantagens do sistema de anlise CWSandbox.

    Vantagens DesvantagensOs dados capturados so de funes demais alto nvel.

    Caso o sistema esteja fora do ar, a anliseno pode ser realizada.

    No necessrio nenhum preparo localpara executar a anlise.

    Existem componentes do sistema de an-lise dentro do ambiente de anlise.

    Existem componentes que dificultam a de-teco do sistema

    3.3.1.3. Cuckoobox

    Comeou como um projeto do Google Summer of Code de 2010 ligado The HoneynetProject sendo disponibilizado somente em 2011, tendo seu cdigo totalmente disponvelpara download. Em 2011, foi novamente selecionado para o Google Summer of Code,onde foram feitas modificaes na tcnica de captura de informaes e criado um novocomponente que esconde os elementos do Cuckoobox que esto no ambiente de anlise.Utiliza a tcnica de inline hooking para interceptar as chamadas de sistema executadaspelo malware. No dispe de uma interface de submisso, sendo que para realizar umaanlise preciso preparar o ambiente antes, instalando localmente todos os requisitosnecessrios. No apresenta restries quanto a verso do sistema que pode ser utilizadono ambiente de anlise, podendo ser qualquer verso do Windows a partir do XP. Depoisde instalado o ambiente e todas as dependncias do Cuckoobox preciso inicializar umscript em python, o qual ir carregar todas as configuraes necessrias para realizar umanova anlise. Aps isto possvel ento invocar um outro script em python que ir enviaro malware para anlise. Ao final dela, estaro disponveis em uma pasta os traos deexecuo criados pelos processos gerados durante a anlise, os snapshots de telas geradas,arquivos modificados/criados/deletados e o trfego de rede.

    Para implementar o inline hooking o Cuckoobox precisa carregar uma DLL noprocesso que deseja monitorar. O hooking implementado de forma diferente em cadafuno interceptada diferentemente de um simples salto incondicional no incio da funo.Isto dificulta mtodos triviais de deteco, evitando assim que a anlise no seja bemsucedida. Atualmente, existem dois mtodos implementados, os quais so escolhidosde forma aleatria no momento que o inline hooking instalado. Esta DLL carregadapor um script em python que fica em execuo no ambiente de anlise durante todo oprocesso. Alm desta tarefa, ele tambm notificado caso o malware modifique ou crie

  • 125

    um novo processo durante a anlise, indicando ao script que a DLL de monitorao deveser carregada nestes outros processos. A tabela 3.4 explicita as vantagens e desvantagenspresentes no sistema Cuckoobox.

    Tabela 3.4. Vantagens e desvantagens do sistema de anlise Cuckoobox.

    Vantagens DesvantagensOs dados capturados so de funes demais alto nvel.

    Existem componentes do sistema de an-lise dentro do ambiente de anlise.

    O cdigo est disponvel e possvel cus-tomizar o sistema de acordo com suas ne-cessidades.

    necessrio preparar o ambiente para exe-cutar a anlise.

    Existem componentes que dificultam a de-teco do sistema

    3.3.1.4. Ether

    Foi apresentado em 2008 e teve seu cdigo disponibilizado em 2009. Utiliza VirtualMachine Introspection (VMI), aplicada ao Xen, um hypervisor open source bem conhe-cido, para capturar as informaes geradas. Para realizar uma anlise preciso instal-lolocalmente, em uma mquina com processador com suporte Intel VT, um conjunto deinstrues que facilita a virtualizao de instrues x86. Terminada a instalao, neces-srio preparar o ambiente de anlise, instalando um Windows XP com SP2 sem nenhumprograma adicional. O controle da anlise feito inteiramente por um componente forado ambiente de anlise, o que evita possveis deteces do sistema. Sempre que for re-alizar uma nova anlise preciso utilizar este componente, o qual ir enviar o malwarepara o ambiente de anlise e execut-lo. Infelizmente, a captura das aes realizadas serestringe a todos os processos do sistema ou somente ao processo do malware. Portanto,caso o malware crie ou modifique outros processos, o Ether no ser capaz de restringir acaptura somente estas aes. A tabela 3.5 mostra as vantagens e desvantagens presentesno sistema Ether, baseados nos pontos levantados at aqui.

    Tabela 3.5. Vantagens e desvantagens do sistema de anlise Ether.

    Vantagens DesvantagensA captura feita por um componente forado ambiente de anlise.

    S faz a monitorao de um processo porvez.

    O cdigo est disponvel e possvel cus-tomizar o sistema de acordo com suas ne-cessidades.

    necessrio preparar o ambiente para exe-cutar a anlise.

    No tm componentes dentro do sistemade anlise

    necessrio indicar o nome/endereo doprocesso que se deseja monitorar.

  • 126

    3.3.1.5. Joebox

    Iniciou suas atividades em 2007, disponibilizando de forma gratuita anlises de malware.No ano de 2011, tornou-se um servio pago, aceitando submisses somente mediante pa-gamento de uma taxa mensal. Utiliza tcnicas de hooking para obter as aes executadasno ambiente de anlise. Fornece relatrios em formato html e xml junto com os arquivoscriados, capturas de tela, trfego de rede e dumps de memria gerados durante a an-lise. No h restries quanto ao sistema de anlise que deve ser utilizado, podendo serqualquer verso Windows, acima do XP. Alm disto, ele pode ser executado em diversasplataformas como mquinas virtuais, emuladas e reais.

    Combinando vrias tcnicas de hooking, tanto de userland quanto de kernel, oJoebox capaz de obter informaes mais detalhadas, capturando dados tanto de baixoquanto de alto nvel. Existe um componente interno no sistema de anlise, joesandbox-control.exe, que contm vrias funcionalidades, dentre elas a inicializao do malware.Na tabela 3.6 possvel verificar as vantagens e desvantagens presentes no sistema.

    Tabela 3.6. Vantagens e desvantagens do sistema de anlise Joebox.

    Vantagens DesvantagensPode ser executado em diversas arquitetu-ras.

    No est disponvel gratuitamente.

    Implementa vrias tcnicas de captura di-ferentes.

    Existem componentes do sistema de an-lise dentro do ambiente de anlise.

    3.3.2. Sistemas de anlise deWeb malware

    3.3.2.1. JSand

    JSand um sistema de anlise de Web malware, de baixa interatividade, que foi apre-sentado em [Cova et. al. 2010] e pode ser usado atravs da interface pblica de sub-misso online10. Sua principal funo analisar o cdigo JavaScript presente na pgina,provendo informaes a respeito de sua execuo e informando se a pgina analisada benigna, suspeita ou maliciosa. Essa identificao feita por meio da deteco de ano-malia no comportamento do cdigo JavaScript. Para emular a pgina a ser analisada, oJSand utiliza uma verso modificada do HtmlUnit, uma plataforma em Java para testes deaplicaes Web. Como os Web malware atualmente atacam vulnerabilidades de diversasaplicaes, o sistema emula todo objeto ActiveX requisitado pelo cdigo, de forma queuma verificao pela presena dele retornar positiva e o cdigo continuar sua execuo.

    Para realizar a deteco por anomalia, o sistema JSand extrai dez atributos a partirda anlise realizada. Esses atributos representam caractersticas de redirecionamento,ofuscao, preparao do ambiente para o abuso de vulnerabilidades e o processo deabuso. O treinamento e deteco so realizados com o uso da ferramenta libAnomaly11,desenvolvida pelo mesmo grupo que desenvolveu JSand.

    10http://wepawet.cs.ucsb.edu11http://www.cs.ucsb.edu/seclab/projects/libanomaly/

  • 127

    As informaes disponibilizadas aps a anlise dizem respeito ao comportamentodo cdigo JavaScript presente na pgina e incluem trechos de cdigo desofuscados, vulne-rabilidades das quais o cdigo tenta abusar, shellcodes utilizados, objetos ActiveX utiliza-dos, links para o sistema Anubis com a anlise de arquivos executveis que o cdigo tenhatentado obter e requisies HTTP. A tabela 3.7 apresenta as vantagens e desvantagens daabordagem usada por esse sistema.

    Tabela 3.7. Vantagens e desvantagens do sistema de anlise JSand.

    Vantagens DesvantagensPor ser emulada, a anlise executada ra-pidamente.

    O ambiente emulado falha ao analisar cer-tos cdigos.

    Pode detectar ataques a vulnerabilidadesdesconhecidas.

    Pode detectar apenas ataques que utilizamJavaScript.

    3.3.2.2. PhoneyC

    O sistema PhoneyC, apresentado em [Nazario 2009], um honeyclient de baixa intera-tividade que tambm utiliza um emulador para processar as pginas analisadas e possuiseu cdigo disponvel para download. Ele capaz de analisar cdigos JavaScript e VisualBasic Script. A emulao do ambiente de JavaScript feita com o uso do interpretador daMozilla Foundation, SpiderMonkey, que faz parte do navegadorWeb Firefox. J o cdigoVisual Basic Script primeiramente transformado em um cdigo equivalente em Python,pela ferramenta vb2py12, e ento processado pelo prprio interpretador da linguagem.

    Para detectar tentativas de abuso de vulnerabilidades o sistema emula certos com-ponentes vulnerveis. PhoneyC prove informaes sobre objetos ActiveX utilizados, vul-nerabilidades que o cdigo tenta atacar e shellcodes utilizados. A tabela 3.8 apresenta asvantagens e desvantagens desse sistema.

    Tabela 3.8. Vantagens e desvantagens do sistema de anlise PhoneyC.

    Vantagens DesvantagensPor ser emulada, a anlise executada ra-pidamente.

    O ambiente emulado falha ao analisar cer-tos cdigos.

    Alm de JavaScript, detecta ataques queutilizam Visual Basic Script

    No pode detectar ataques a vulnerabilida-des desconhecidas.

    3.3.2.3. Capture-HPC

    O sistema Capture-HPC, descrito commais detalhes em [Seifert and Steenson 2006], umhoneyclient de alta interatividade que possui seu cdigo disponvel. As pginas a seremanalisadas so processadas dentro de um ambiente virtualizado, utilizando um navegadorWeb completo e um driver de kernel que captura as chamadas de sistemas realizadas

    12http://vb2py.sourceforge.net

  • 128

    pelo navegador. Caso essas chamadas de sistema sejam consideradas anmalas, a pginaanalisada classificada como maliciosa.

    Aps a anlise o sistema informa as chamadas de sistema que foram identifica-das como anmalas. As vantagens e desvantagens desse sistema podem ser vistas natabela 3.9.

    Tabela 3.9. Vantagens e desvantagens do sistema de anlise Capture-HPC.

    Vantagens DesvantagensUtiliza um navegador Web completo paraprocessar as pginas

    Devido ao uso de ambiente virtualizado, aanlise mais demorada.

    Pode detectar ataques a vulnerabilidadesdesconhecidas.

    Pode detectar apenas ataques bem sucedi-dos, que resultem em chamadas de sistemaanmalas.

    Pode detectar ataques independentementeda linguagem utilizada.

    3.4. Caixa de Ferramentas3.4.1. Informaes Gerais

    Neste captulo ser apresentado um conjunto de ferramentas gratuitas e disponveis naInternet que so capazes de criar um ambiente de anlise dinmica de malware. Almdisso, sero apresentadas ferramentas para anlises mais aprofundadas, debugging e fo-rense computacional. O ambiente de anlise a ser implementado neste captulo ser deno-minado de Prottipo Sandbox. Como base para sua construo, ser usada uma mquinavirtual para agilizar a restaurao do ambiente. importante deixar claro algumas limita-es do sistema, visto que em sua concepo foi dado enfoque praticidade na montageme no uso. Dessa forma o sistema possuir pontos vulnerveis, que sero destacados no de-correr do texto. As ressalvas so a necessidade de um analista para dar confiabilidade aosrelatrios providos e a falta de proteo contra tcnicas de deteco de ambientes virtuais.

    3.4.2. Modelo proposto para o sistema de anlise

    importante identificar e organizar a ordem com que as ferramentas devero ser execu-tadas. Dessa forma, pode-se tornar a anlise mais eficaz. Na Figura 3.5 pode-se observarque o conhecimento sobre o funcionamento das ferramentas fundamental para uma boaanlise, pois a ordem em que os comandos foram executados altera diretamente a quali-dade das informaes obtidas. No trecho 1, caso o malware contenha algum packer queofusque o cdigo, a extrao das strings dificilmente trar informaes teis, enquantono trecho 2, verifica-se se foi utilizado o packer UPX. Caso este tenha sido utilizado, removido do malware13, assim a ferramenta strings conseguir capturar dados relevantesque estiverem no cdigo.

    O Prottipo Sandbox possui dois ambientes,o primeiro o hospedeiro, no qualhaver um sistema operacional base, para processar as informaes obtidas da anlisedinmica. Este ambiente a rea de trabalho principal do analista e no deve ser conta-

    13A mesma ferramenta que empacota um binrio com o packer UPX pode ser usada para remov-lo.

  • 129

    Figura 3.5. Pseudo-cdigo que demonstra a importncia do uso das ferramentasna ordem correta

    minada pelo malware, ficando responsvel apenas pela anlise esttica e por hospedar asmquinas virtuais.

    O segundo ambiente o virtualizado. Nele os exemplares demalware sero execu-tados para que seu comportamento seja capturado. Portanto, esses ambientes devero serpreparados para estimular e monitorar as atividades maliciosas e, posteriormente, enviaras informaes coletadas para a mquina hospedeira. importante que a mquina virtualno esteja na mesma rede que outros sistemas, pois pode haver contaminao destes. Aarquitetura projetada para o Prottipo Sandbox ilustrada na Figura 3.6.

    Figura 3.6. Arquitetura do Prottipo Sandbox

    Na Figura 3.6, observa-se que o ambiente base (Gerenciador) opera como umacamada intermediria entre a Internet e o ambiente de anlise (Anlise Dinmica) virtu-

  • 130

    alizado. Isto torna possvel restringir o acesso da mquina virtual atravs de um firewallentre os ambientes, alm de bloquear tentativas de interao com a mquina real. Outraresponsabilidade importante do Gerenciador o armazenamento dos relatrios em umabase de dados, podendo ser feito de forma simples, como um diretrio, ou algo maiscomplexo como um banco de dados.

    3.5. Mquina basePara os testes com o Prottipo Sandbox foi utilizado um computador com processadorIntel Core 2 Duo de 1.6 GHz, 2GB de memria RAM e disco rgido de 160 GB. Outrasconfiguraes que sejam equivalentes ou superiores tambm so vlidas. A sugesto apenas uma estimativa do mnimo que o computador precisa ter para realizar anlises se-quenciais sem overheads prejudiciais. Esta mquina a que ser usada para armazenar osresultados dos relatrios, efetuar a anlise esttica, hospedar a mquina virtual e gerenciara anlise dinmica. O sistema operacional escolhido para a mquina base foi um Ubuntulinux com sua instalao padro.

    3.5.1. Base de resultados

    A base de resultados do Prottipo Sandbox ter como finalidade armazenar malware etodos os arquivos produzidos durante as anlises, inclusive o relatrio final. Para isto,ser construda em um diretrio normal do sistema, ter como chaves primrias o hashsha256 do malware e ser gerenciada atravs de shell script.

    A base de resultados contm diversos diretrios, cada um com a coletnea de ar-quivos relacionados ao malware, tais como o arquivo executvel, o relatrio e os arquivosauxiliares produzidos nas anlises. A organizao da base de resultados pode ser melhorvisualizada na Figura 3.7.

    Figura 3.7. Estrutura de pastas para armazenamento dos arquivos produzidospelas anlises

    Existem algumas operaes que so fundamentais para gerenciar a base de dados a

  • 131

    ser construda, como a busca, a excluso e a verificao se existe uma anlise. Estas aespodem ser implementadas com comandos de shell script, como o exemplo mostrado naFigura 3.8.

    Figura 3.8. Comandos de shell script usados para verificar se um malware j foianalisado

    3.5.2. Anlise esttica simplificada

    A anlise esttica tem como objetivo coletar informaes presentes no malware sem terque execut-lo. No Prottipo Sandbox as informaes foram divididas em quatro gruposque podem ser visualizados na Figura 3.9.

    Figura 3.9. Informaes obtidas na anlise esttica

    Aps o incio da anlise esttica, a primeira informao buscada uma chave queidentifique univocamente o malware, a opo escolhida foi a funo de hash criptogrficosha256, todavia poderia ser qualquer outra, como md5 (mais comum) ou sha512.

    Posteriormente, utilizado o programa strings para buscar cadeias de caracte-res relevantes, com pelo menos 3 bytes, no cdigo. Assim, recomenda-se o uso de filtroscom expresses regulares e a remoo prvia do packer, como mostrado na Seo 3.4.2.Mesmo que o packer no seja removido, informaes sobre as bibliotecas utilizadas esta-ro presentes e sero teis para indicar as aes do malware e caminhos para um processode engenharia reversa, como pode ser visto na Figura 3.10.

    Algumas identificaes do malware podem ser coletadas com o uso de progra-mas antivrus, identificadores de packer e identificadores de bibliotecas. No Prottipo

  • 132

    Figura 3.10. Exemplo de strings encontradas em um malware com o packer Armadillo

    Sandbox foram utilizados apenas identificadores de packer e de bibliotecas, atravs dosprogramas pefile e sigcheck. interessante saber o packer utilizado para tentarremov-lo, e tambm saber se a anlise dinmica poder ser feita, visto que certos pac-kers, como o tElock e o Themida, so capazes de identificar ambientes emulados. Oprograma sigcheck importante para verificar se as bibliotecas nativas utilizadas so le-gtimas.

    Caso alguma biblioteca seja falsa, pode-se extrair informaes usando os progra-mas objdump e Dependency Walker, que revelaram dados do cabealho, sees e funesda biblioteca. Para a anlise esttica automatizada prefervel o programa objdump, porpermitir seu uso atravs de linha de comando.

    3.5.3. Mquina virtual

    A mquina virtual tem como finalidade prover um ambiente de anlise controlado parao malware ser executado, isolando a mquina base, alm de possibilitar a rpida restau-rao do ambiente aps o comprometimento. Para o Prottipo Sandbox foi escolhido oprograma Virtualbox como tecnologia de virtualizao.

    3.5.4. Anlise dinmica

    Na anlise dinmica preparado um ambiente para monitorar todas as atividades domalware que ser executado, obtendo assim seu comportamento e a interao dele com osistema. No caso do Prottipo Sandbox as aes do malware foram divididas em rede, ar-quivos modificados e excludos, registros modificados e excludos, rootkits, processos cri-ados e finalizados e DLLs. O processo de anlise dinmica pode ser visto na Figura 3.11.

    3.5.4.1. Preparao do ambiente virtual

    O ambiente virtualizado foi configurado com um disco de expanso dinmica e 256 MBde memria RAM, e foi instalado com a configurao padro do Windows XP ServicePack 3.

    Para iniciar a mquina virtual utilizado um conjunto de scripts, tanto na mquinavirtual como na mquina base. A mquina base fica encarregada por iniciar a mquinavirtual e depois desligar foradamente a mesma, aps o tempo limite de anlise. A Fi-gura 3.12 mostra os comandos utilizados para iniciar e finalizar a mquina virtual.

  • 133

    Figura 3.11. Processo de anlise dinmica

    Figura 3.12. Comandos para inicializao e trmino de mquinas virtuais

    A mquina virtual iniciada a partir de um snapshot14, no qual o sistema estcompletamente inicializado e com um script do tipo WSH (Windows Script Host) sendoexecutado. Esse script tem a funo de obter o malware atravs de FTP, iniciar/executaras ferramentas de anlise e executar o malware, como observado na figura 3.13.

    3.5.4.2. Monitorao do sistema

    Para a monitorao do sistema utilizada a ferramenta Capture-BAT [CaptureBat2011], que capaz de monitorar certas operaes feitas pelo malware. Essas operaes

    14Snapshots so arquivos que guardam o estado do sistema. Com ele possvel iniciar o sistema virtua-lizado a partir de um estado previamente salvo

  • 134

    Figura 3.13. Script WSH para inicializao da ferramenta de anlise e execuodo malware no ambiente virtualizado

    incluem criao, modificao e remoo de arquivos e registros, alm da inicializao etrmino de processos. So usados filtros para monitorar apenas as aes do malware e deprocessos iniciados por ele.

    3.5.4.3. Trfego de rede

    O trfego de rede pode ser monitorado de duas formas, internamente mquina virtual,atravs do programa Capture-BAT, ou na mquina base, com o programa tcpdump,utilizando filtros. Por meio do trfego de rede possvel descobrir servidores de distribui-o de malware, contas de email utilizadas pelo criador do artefato, tentativas de ataquea outros sistemas e sistemas de comando e controle utilizados para passar comandos aomalware caso seja do tipo bot.

    3.5.4.4. Rootkit

    Alguns exemplares de malware mais sofisticados utilizam rootkits para que as aes ma-liciosas sejam executadas em nvel de kernel e, portanto, no possa ser monitorada por fer-ramentas que capturam as aes dentro do ambiente virtualizado, como o Capture-BAT.Dessa forma preciso, pelo menos, identificar quando os rootkits esto sendo usados. Aferramenta Gmer utilizada para essa tarefa

    3.5.4.5. DLLs

    As bibliotecas encontradas na anlise esttica no so necessariamente as mesmas utili-zadas durante a execuo do malware, assim preciso checar quais foram carregadas emtempo de execuo. Para essa tarefa utiliza-se a ferramenta ListDlls.

  • 135

    3.5.4.6. Trmino da anlise dinmica

    Ao fim da anlise, o script WSH de controle dever terminar os processos do malware edas ferramentas utilizadas, reunir todos os arquivos de registro e envi-los por FTP paraa mquina base. Esta, por sua vez, dever conferir se os arquivos de registro foram en-viados corretamente e deve desligar a mquina virtual foradamente, caso precise, comomostrado na Seo 3.5.4.1. Por fim, a mquina utilizada ser restaurada para o ltimosnapshot. Os diversos arquivos de resultados sero processados pela mquina base e reu-nidos em um nico relatrio, para ento ser armazenado na base de dados.

    3.5.5. Vulnerabilidades do sistema

    Como enunciado na Seo 3.4.1, o Prottipo Sandbox possui diversas vulnerabilidades,como por exemplo, no ter proteo contra rotinas que identifiquem ambientes virtuali-zados. Outra fragilidade a identificao de uma das ferramentas utilizadas na anlisedinmica. Assim, caso o relatrio seja suspeito preciso realizar uma anlise manual eaprofundada no malware.

    3.5.6. Anlise aprofundada

    Para anlises mais aprofundadas preciso compreender em baixo nvel o que o malwareest fazendo no sistema, para isto, possvel fazer um dump da memria RAM em ummomento crtico para analis-lo ou fazer debugging do cdigo binrio. Atravs de umdump possvel identificar interceptaes, rootkits e mutexes (objetos de sincronizao)presentes no sistema e que podem estar bloqueando a monitorao de alguma atividademaliciosa, alm de ser possvel ver strings, bibliotecas, contedo da pilha (stack) e con-tedo da heap dos processos que estavam em execuo. Uma opo de programa para essafinalidade o Memoryze. Para realizar a engenharia reversa e o compreendimento pro-fundo do funcionamento do malware, preciso utilizar um debugger, como o OllyDbg.Como a anlise manual do cdigo uma tarefa exaustiva, recomenda-se utiliz-la apenaspara conferir os trechos mais suspeitos.

    3.6. Estudo de CasoNesta parte ser apresentado um estudo de caso do processo completo de comprometi-mento de uma mquina, que ocorreu a partir do acesso a uma URL maliciosa. Este ende-reo foi retirado do site www .malwaredomainlist.com que disponibiliza URLs maliciosasdiariamente. A anlise foi feita utilizando um sistema de anlise de URLs maliciosas,desenvolvido por um dos autores, onde todas as aes desenvolvidas pela URL so inspe-cionadas, juntamente com as system calls realizadas pelo processo do browser e o trfegode rede gerado. Sero apresentados alguns trechos dos relatrios produzidos pelo sistema,bem como uma explicao sobre as aes que esto sendo observadas. O exemplar anali-sado utiliza um applet java malicioso, o qual explora uma vulnerabilidade e possibilita odownload de um malware, que executado no sistema logo aps a explorao.

    A arquitetura do sistema onde foi realizado o estudo composto de um Desk-top com uma mquina virtual do sistema VirtualBox, dispondo de acesso controlado internet. O sistema utilizado no ambiente guest, ou seja o ambiente virtualizado, um

  • 136

    Windows XP SP2 com instalao bsica. Para permitir a execuo de certos tipos de c-digo que no dispem de suporte nativo em sistemas Windows foi necessrio adicionaralguns aplicativos extras, como por exemplo Java e Flash. A URL maliciosa foi aces-sada em um browser Internet Explorer 8, normalmente utilizado pela grande maioria deusurios de sistema Windows.

    Primeiramente, o Internet Explorer iniciado juntamente com o componente res-ponsvel pela captura das aes desenvolvidas pela URL e pelo que faz a captura daschamadas de sistema executadas pelo processo dobrowser e seus filhos. Aps esta etapa,o browser fica a espera de uma URL, para que ento possa ser realizada uma anlise.Diferentemente do componente que obtm as informaes de execuo da URL, o com-ponente de captura de chamadas de sistema fica capturando todas as aes do InternetExplorer, mesmo que a URL no tenha sido carregada ainda. As aes desnecessrias se-ro filtradas posteriormente, deixando somente as aes relevantes. Terminada a etapa deinstanciao do sistema, a URL maliciosa passada para o browser, o qual ir acess-la,tendo assim todas as atividades geradas capturadas.

    Quando a pgina utilizada no estudo de caso carregada pelo browser, o com-ponente de captura obtm vrias aes inofensivas, realizadas normalmente por qualquerpgina web. No meio destas aes pode haver cdigo de explorao, caso algum scriptmalicioso em JavaScript seja executado. No trecho de cdigo apresentado a seguir 3.1,uma pgina HTML utilizada para chamar um objeto Java que recebe um parmetro(linha 4) cujo valor, representado por uma sequncia de caracteres "A", usado para ex-plorar uma vulnerabilidade na mquina virtual Java que executa no browser do lado docliente.

    Trecho de Cdigo 3.1. Cdigo HTML utilizado na explorao do browser1 2 < ob j e c t id=" j a v a _ o b j " c l a s s i d =" c l s i d :CAFEEFACDEC700000000

    ABCDEFFEDCBA" width="0 " he igh t="0 ">3 4 5 < / ob j e c t>6 < / html>

    Observando a sada gerada pela ferramenta que captura as aes executadas du-rante o carregamento da pgina, mostrada no trecho de cdigo 3.2, podemos observar queum dos atributos presentes na linha 2, e os das linhas 3 e 4 do trecho de cdigo 3.1 estopresentes nas aes capturadas pela ferramenta de anlise. possvel identificar isto naslinhas 1, 2 e 3 do trecho de cdigo 3.2, que correspondem a uma parte do cdigo obtidodurante a execuo da pagina maliciosa no browser.

    Trecho de Cdigo 3.2. Aes capturadas durante o carregamento da URL maliciosa.1 10 : 2 7 : 4 5 . 0 1 0 SET PROPERTY c l s i d =CAFEEFACDEC700000000

    ABCDEFFEDCBA2 10 : 2 7 : 4 5 . 0 7 0 SET PROPERTY l a u n c h j n l p =13 10 : 2 7 : 4 5 . 2 3 0 SET PROPERTY docbase=

    J nas aes desenvolvidas pelo processo do browser e seus filhos, foi possvelnotar a ao de um applet java e de vrios outros processos. Cada ao executada

  • 137

    colocada em uma linha dividida em trs campos, sendo o primeiro o nome do processoexecutor da ao, o segundo o tipo de ao realizada e o terceiro o alvo da ao. Dentre asaes executadas pelo processo do browser foi possvel identificar um conjunto de aesrelevantes, que correspondem criao de arquivos, de um applet java e de um novoprocesso, possivelmente um malware.

    No trecho de cdigo apresentado em 3.3 possvel ver um trecho das aes exe-cutadas no sistema pelo applet java.

    Trecho de Cdigo 3.3. Trecho de atividade realizada pelo processo applet Javacarregado pelo Internet Explorer.

    1 javaw . exe ; C r e a t e F i l e ;C : \WINDOWS\ sys tem32 \ d3d9caps . tmp2 javaw . exe ; W r i t e F i l e ;C : \WINDOWS\ sys tem32 \ d3d9caps . tmp

    J o trecho de cdigo apresentado em 3.4, que corresponde a algumas aes execu-tadas pelo processo do browser, possvel ver que ele cria um novo arquivo e executa-o.Este novo processo ir realizar vrias aes, sendo que as mais relevantes esto apresen-tadas no trecho de cdigo 3.5. Neste pedao de cdigo existem trechos de execuo dequatro processos: o primeiro deles corresponde s aes que vo da linha 1 a 13 e oarquivo criado e executado pelo Internet Explorer, como pode ser verificado na linha 3do trecho de cdigo 3.4. Os outros trs processos, que esto entre as linhas 15 a 21, 23a 25 e 27 a 28, foram todos criados pelo processo 9eg1.exe, conforme mencionadoanteriormente.

    Trecho de Cdigo 3.4. Trecho de atividade realizada pelo processo do Internet Explorer.1 i e x p l o r e . exe ; C r e a t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ 9 eg1 . exe2 i e x p l o r e . exe ; W r i t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ 9 eg1 . exe3 i e x p l o r e . exe ; C r e a t e P r o c e s s ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ 9 eg1 . exe

    Trecho de Cdigo 3.5. Trecho de atividade realizada pelos processos criadospelo Internet Explorer.

    1 9eg1 . exe ; Connec tNet ; :80002 9eg1 . exe ; SendNet ; TCP : :80003 9eg1 . exe ; Rece iveNe t ; TCP : :80004 9eg1 . exe ; C r e a t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _4 . tmp5 9eg1 . exe ; W r i t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _4 . tmp6 9eg1 . exe ; C r e a t e P r o c e s s ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _4 . tmp7 9eg1 . exe ; C r e a t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _5 . tmp8 9eg1 . exe ; W r i t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _5 . tmp9 9eg1 . exe ; C r e a t e P r o c e s s ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _5 . tmp

    10 9eg1 . exe ; C r e a t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _6 . tmp11 9eg1 . exe ; W r i t e F i l e ;C : \DOCUME~1\ADMINI~1 \LOCALS~1\Temp \ _6 . tmp12 9eg1 . exe ; C r e a t e P r o c e s s ;C : \DOCUME~1\ADM