Você está na página 1de 41

Captulo

3
Tcnicas para Anlise Dinmica de Malware
Dario Simes Fernandes Filho1 , Vitor Monte Afonso1 , Victor Furuse Martins1 , Andr Ricardo Abed Grgio1,2 , Paulo Lcio de Geus1 , Mario Jino1 , Rafael Duarte Coelho dos Santos3 1 Universidade Estadual de Campinas (Unicamp) 2 Centro de Tecnologia da Informao 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 mechanisms that operate in a dynamic and controlled manner. These mechanisms (dynamic analysis systems) use a variety of techniques to obtain the behavior from malware samples execution. The complexity of those techniques varies from monitoring events on user-level interfaces, to Web malicious code desobfuscation, to hooking operating system (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 analysis 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 ameaa dos cdigos e programas maliciosos segurana dos sistemas computacionais fez com que surgissem muitos sistemas cujo propsito analisar, de maneira dinmica e controlada, tais programas. Estes sistemas se utilizam de diversas tcnicas para obter o comportamento apresentado por amostras de malware durante sua execuo. A complexidade destas tcnicas varia desde a monitorao de eventos atravs de interfaces no nvel de privilgio dos usurios, passando pela desofuscao de programas maliciosos em linguagens tpicas da Web, at a insero de cdigo em estruturas do kernel do

sistema operacional. Neste captulo, visa-se apresentar as principais tcnicas utilizadas para efetuar a anlise dinmica de malware - sejam estes do nvel do sistema operacional ou da Web - e as quais esto presentes nos principais sistemas de anlise disponveis publicamente. Alm disso, so mencionadas algumas ferramentas utilizadas na captura de informaes da execuo dos programas maliciosos. Mostra-se, tambm, como construir um sistema simples de anlise dinmica de malware utilizando ferramentas gratuitas ou de cdigo aberto. Para nalizar o captulo, os leitores tero a oportunidade de acompanhar um estudo de caso completo da anlise de um exemplar de malware, do ataque a partir da Web at o comprometimento do sistema operacional.

3.1. Cdigo Malicioso


Ataques realizados por meio de malware tomaram uma dimenso to grande que atividades simples como a navegao na Web [Chen et. al. 2011], [Cova et. al. 2010], a participao em redes sociais digitais [Stringhini et. al. 2010], [Yang et. al. 2011] e o uso de celulares[Becher et. al. 2011], [Egele et. al. 2011] tornaram-se perigosas. Para se ter uma idia do cenrio nacional, quase a totalidade dos 142.844 incidentes reportados ao CERT.br1 entre janeiro e dezembro de 2010 referem-se a ataques envolvendo cdigo malicioso. 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 que um dos maiores culpados pelo alto custo nanceiro causado por um ataque relacionado atividade de malware. Na Figura 3.2 mostrado o resultado do levantamento do custo de invases em diversos pases no ano de 2009. No decorrer do tempo, em intervalos determinados, pode-se notar maior incidncia de grupos especcos de malware. Por exemplo, nos ltimos cinco anos tem havido uma proliferao grande de botnets2 , gerando tentativas (muitas vezes frustradas) do fechamento 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].
de Estudos, Resposta e Tratamento de Incidentes de Segurana no Brasil. (Link: http:// www.cert.br). 2 redes de mquinas comprometidas controladas remotamente por comandos dados por um atacante.
1 Centro

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 frequentemente responsveis por srios incidentes de propores globais, tais como os recentes resultados do alastramento dos malware StuxNet [Falliere et. al. 2010], Zeus [Binsalleeh et. al. 2010] e Concker [Shin and Gu 2010], ou casos que ganharam notoriedade 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 vulnerabilidades do momento e do contexto no qual esto inseridos, comum a revisitao de antigos ataques, o compartilhamento de funes com nalidade maliciosavarreduras, conexes com servidores, mtodos de exploraoou mesmo a mutao de pequenos trechos do cdigo, a qual pode levar reduo da detectabilidade das famlias cujas vacinas j so conhecidas e, em paralelo, manter as funcionalidades e o comportamento malicioso apresentados nos ancestrais. No mbito da defesa, a mera identicao de um arquivo executvel como sendo um malware conhecido (j coletado, analisado e talvez combatido) permite a tomada de contra-medidas de maneira rpida e eciente. Isto facilita a conteno de danos, minimiza prejuzos e reduz a possibilidade de infeco em redes e sistemas ainda intactos por meio de regras de bloqueio ou aplicao de patches de segurana. Com isso, necessrio haver meios de se identicar malware para que aes defensivas possam ser coordenadas, ao mesmo tempo em que sejam obtidos conhecimentos sobre o comportamento de um certo malware e sobre a possvel extenso dos danos aos sistemas comprometidos por este cdigo especco. A soluo mais tradicional para identicao de malware ainda o uso de antivrus. Porm, cada vez mais comum a utilizao de sistemas de anlise dinmica para traar a execuo de um programa e vericar por aes maliciosas. Adiante, ser apresentada uma taxonomia sucinta de algumas classes importante de malware. Para motivar o leitor na identicao de comportamentos maliciosos, sero discutidos brevemente problemas relacionados ao emprego de mecanismos antivrus, da anlise esttica de malware e, por m, da anlise dinmica, que o tema deste texto.

3.1.1. Classes de cdigo malicioso Cdigos maliciosos podem ser classicados de uma maneira geral de acordo com alguma faceta especca de seu comportamento. Embora atualmente seja difcil enquadrar um exemplar de malware em uma nica classe, devido evoluo destes cdigos e facilidade de se adicionar novas funcionalidades, a taxonomia apresentada a seguir ainda utilizada para se referir a certos tipos de malware e tambm nos identicadores atribudos por mecanismos antivrus. As classes e descries abordadas a seguir baseiam-se nas denies de Peter Szor [Szor 2005]. Vrus. Segundo Fred Cohen, considerado o pai dos vrus de computador, um vrus um programa que capaz de infectar outros programas pela modicao destes de forma a incluir uma cpia possivelmente evoluda de si prprio. Os vrus costumam infectar sees de um arquivo hospedeiro, propagando-se atravs da distribuio deste arquivo. Comumente, os vrus necessitam ser acionados e propagados por uma entidade externa (e.g., usurio). Worm. Os worms, por sua vez, propagam-se pela rede e em geral no necessitam de ativao por parte do usurio. Uma outra caracterstica a independncia de outro programa para disseminao e ataque. Alguns worms podem carregar dentro de si um outro tipo de malware, que descarregado na vtima aps o sucesso da propagao e do ataque. Trojan. Cavalos-de-tria so tipos comuns de malware cujo modo de infeco envolve despertar a curiosidade do usurio para que este o execute e comprometa o sistema. Este tipo de cdigo malicioso tambm pode ser encontrado em verses modicadas de aplicaes do sistema operacional, substitudas por indivduos maliciosos. Estas verses apresentam as mesmas funcionalidades da aplicao ntegra, porm tambm contm funcionalidades adicionais com a nalidade de ocultar as aes malignas. Backdoor. Tradicionalmente, as backdoors permitem a um atacante a manuteno de uma mquina comprometida por abrirem portas que permitem a conexo remota. Um outro tipo de backdoor envolve erros na implementao de uma aplicao ou sistema que o tornam vulnervel e podem levar execuo de cdigo arbitrrio na mquina da vtima Downloader. Um programa malicioso que conecta-se rede para obter e instalar um conjunto de outros programas maliciosos ou ferramentas que levem ao domnio da mquina comprometida. Para evitar dispositivos de segurana instalados na vtima, comum que downloaders venham anexos mensagens de correio eletrnico e, a partir de sua execuo, obtenham contedo malicioso de uma fonte externa. (e.g., Web site). Dropper. Possui caractersticas similares as dos downloaders, com a diferena que um dropper considerado um instalador, uma vez que contm o cdigo malicioso compilado dentro de si. Rootkit. um tipo especial de malware, pois consiste de um conjunto de ferramentas para possibilitar a operao em nvel mais privilegiado. Seu objetivo permanecer residindo no sistema comprometido sem ser detectado e pode conter exploits, backdoors e verses trojan de aplicaes do sistema. Os rootkits modernos atacam o kernel do sistema

operacional, modicando-o para que executem as aes maliciosas de modo camuado. Este tipo de rootkit pode inclusive interferir no funcionamento de mecanismos de segurana. 3.1.2. O problema dos antivrus Um dos mecanismos de defesa contra malware mais populares ainda o antivrus, que pode ser explicado basicamente como um programa que varre arquivos ou monitora aes pr-denidas em busca de indcios de atividades maliciosas. Em geral, os antivrus operam de duas formas para identicar cdigo malicioso: correspondncia de padres em bancos de dados de assinaturas ou heursticas comportamentais. Na deteco por assinatura, um arquivo executvel dividido em pequenas pores (chunks) de cdigo, as quais so comparadas com a base de assinaturas do antivrus. Assim, se um ou mais chunks do arquivo analisado esto presentes na base de assinaturas, a identicao relacionada atribuda ao referido arquivo. J na deteco por heurstica, um arquivo sob anlise executado virtualmente em um emulador minimalista e os indcios de comportamento suspeito so avaliados a m de se vericar se a atividade realizada pelo programa pode ser considerada normal ou se um alerta deve ser emitido. O grande problema dos antivrus o surgimento frequente e crescente de variantes de malware previamente identicados, cujas aes modicadas visam evadir a deteco. Essas variantes precisam ser tratadas muitas vezes individualmente (e manualmente), no caso da confeco de uma assinatura para um antivrus. Alm do mais, pode ser preciso modicar a heurstica de deteco de toda uma classe para que esta seja capaz de identicar a variante, sempre levando-se em conta se a modicao no vai gerar mais falsos-positivos. Esses, por sua vez, so uma outra diculdade no processo de criao de assinaturas/heursticas de malwareidenticar erroneamente uma aplicao inofensiva do usurio como sendo maliciosa e, consequentemente, remov-la, coloc-la em quarentena (bloqueio) ou restringir de algum modo a usabilidade de um sistema computacional no um requisito desejvel para os fabricantes de antivrus. Deve-se considerar tambm que muitos exemplares de malware possuem mecanismos prprios de defesa cujas aes variam entre desabilitar as protees existentes no sistema operacional alvo (rewall, antivrus, plugins de segurana), vericar se o exemplar est sob anlise (o que pode causar uma modicao em seu comportamento em razo disto), e disfarar-se de programas do sistema, inclusive de falsos antivrus. Portanto, evitar que o mecanismo antivrus seja desabilitado, identicar programas maliciosos rapidamente com uma taxa mnima de falsos-positivos sem interferir na usabilidade do sistema e, ainda, expandir a capacidade de deteco sem causar sobrecarga tm se tornado tarefas cada vez mais difceis. Contribui a isso o cenrio atual das variantes, popularizao das redes sociais, proliferao de celulares e tablets com o mesmo poder e funcionalidade de computadores, e o estabelecimento da cloud computing. No bastassem os problemas supracitados, a comunidade de desenvolvedores de antivrus ainda no possui padronizao para a classicao dos malware identicados por suas ferramentas. Isso faz com que o processo de resposta a incidentes de segurana envolvendo cdigo malicioso seja prejudicado, tornando-o ineciente em determinados casos. De modo ilustrativo, pode-se tomar como exemplo alguns sistemas que identicam

um programa como malicioso baseando-se apenas no packer3 com o qual o arquivo foi cifrado, ou ainda, que fazem a identicao baseada em apenas uma faceta do binrio, a qual pode no condizer com as atividades efetuadas na mquina4 . Divergncias de nomenclatura terminam por atrapalhar na classicao, pois a falta de um padro faz com que cada fabricante de antivrus atribua o identicador que desejar. Assim, um dado malware pode ser identicado como Famlia_X.A por um fabricante, Famlia_X.123 por outro e Famlia_Z.y por um terceiro. Para ilustrar este problema de forma mais clara, na Tabela 3.1 esto os resultados obtidos pela indenticao de um exemplar de malware submetido ao VirusTotal5 .
Tabela 3.1. Resultado do VirusTotal para um exemplar de cdigo malicioso.

Antivirus McAfee K7AntiVirus NOD32 F-Prot Symantec Norman TrendMicro-HouseCall Avast eSafe Kaspersky Sophos Comodo DrWeb VIPRE AntiVir TrendMicro McAfee-GW-Edition eTrust-Vet AhnLab-V3 VBA32 PCTools Rising Ikarus Panda

Identicao PWS-OnlineGames.bu Trojan a variant of Win32/PSW.OnLineGames.OAF W32/Agent.L.gen!Eldorado Infostealer.Gampass W32/Packed_Upack.H TSPY_ONLING.AG Win32:OnLineGames-ECV [Trj] Win32.Looked.gen Trojan-GameThief.Win32.OnLineGames.akyb Mal/Behav-214 TrojWare.Win32.Trojan.Inject.II Trojan.DownLoader.62898 BehavesLike.Win32.Malware.bsu (vs) TR/Spy.Gen TSPY_ONLING.AG Heuristic.BehavesLike.Win32.Packed.A Win32/Lemir!generic Win-Trojan/Xema.variant BScope.Trojan-PSW.SataGames.3 Rootkit.Order Trojan.PSW.Win32.GameOL.odt Virus.Win32.Virut Trj/Lineage.ISP

Para a resposta ser efetiva, isto , permitir a remoo do cdigo malicioso e as atividades derivadas da infeco do sistema comprometido, necessrio, em muitos cacontexto deste texto, um packer um programa utilizado para cifrar ou comprimir o contedo de um arquivo/programa malicioso para disfar-lo. 4 Exemplares de malware infectados por outros malware podem fazer com que o antivrus emita um alerta devido a assinatura do infectante, e no do malware original infectado. 5 VirusTotal 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 parte das ferramentas antivrus atualmente disponveis no mercado.
3 No

sos, uma interveno manual, dado que nem todos os antivrus possuem o procedimento de desfazimento das aes efetuadas (nem h tal procedimento para todas as amostras de malware em atividade, devido ao j citado problema da existncia massiva de variantes). Alguns casos mais epidmicos acabam por ter aplicaes ou rotinas automatizadas para remoo, as quais podem ser incuas na presena de variantes. Entretanto, o sucesso na obteno do procedimento de remoo (automtico ou manual) correto completamente dependente da identicao provida pelo mecanismo antivrus que, como visto anteriormente, 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 um malwarecomo atua no sistema operacional, que tipo de tcnicas de ofuscao so utilizadas, quais uxos de execuo levam ao comportamento principal planejado, se h operaes de rede, download de outros arquivos, captura de informaes do usurio ou do sistema, entre outras atividades. Divide-se a anlise de malware em anlise esttica e dinmica, sendo que no primeiro caso tenta-se derivar o comportamento do malware extraindo caractersticas de seu cdigo sem execut-lo, atravs de anlise de strings, disassembling e engenharia reversa, por exemplo. J na anlise dinmica, o malware monitorado durante sua execuo, por meio de emuladores, debuggers, ferramentas para monitorao de processos, registros e arquivos e tracers de chamadas de sistema. Dependendo da tcnica ou ferramenta que se utiliza para fazer cada anlise, a velocidade pode variar, 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 uxos de execuo ou se est comprimido com um packer de difcil descompresso, a anlise dinmica tradicional muito mais rpida e ecaz na proviso de resultados acerca do comportamento do exemplar analisado. Em [Moser et al. 2007] apresentada uma ferramenta que transforma um programa de forma a ofuscar seu uxo de execuo, disfarar o acesso a variveis e dicultar o controle dos valores guardados pelos registradores, mostrando que a anlise esttica de um malware ofuscado por essa ferramenta um problema NP-difcil. Alm disso, durante a anlise esttica no se sabe como o sistema vai reagir em resposta s operaes do programa. A anlise esttica pode ser utilizada para obter informaes gerais sobre o programa e para identicar a existncia de cdigo malicioso. Dentre as tcnicas utilizadas para a obteno de informaes gerais esto a gerao de hashes criptogrcos que identicam o arquivo de forma nica, a identicao das funes importadas e exportadas, a identicao de cdigo ofuscado e a obteno de cadeias de caracteres que possam ser lidas por uma pessoa, como mensagens de erro, URLs e endereos de correio eletrnico. Para identicar cdigo malicioso so usadas, de forma geral, duas abordagens: a vericao de padres no arquivo binrio e a anlise do cdigo assembly gerado a partir do cdigo de mquina do malware. No caso da vericao de padres, so geradas seqncias de bytes, chamadas de assinaturas, que identicam um trecho de cdigo freqentemente encontrado em programas maliciosos e verica-se se o programa possui esta seqncia. J no caso da investigao do cdigo assembly, so empregadas tcnicas de anlise mais profundas que buscam padres de comportamento malicioso. Em [Song et al. 2008] os autores transformam o cdigo assembly em uma linguagem intermediria e, a partir

desta, extraem informaes a respeito do uxo de dados e uxo de controle do programa. A maior diculdade encontrada pela anlise esttica o uso dos packers. Para combater a 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 do malware, permitindo que a anlise esttica seja efetuada. 3.1.4. Analisadores dinmicos Embora o modus operandi dos antivrus ainda seja majoritariamente a identicao com base em assinaturas, tem crescido o interesse por heursticas, pois uma heurstica bem construda pode resultar na substituio de dezenas de assinaturas. Para gerar uma heurstica que identique um exemplar de malware (ou uma classe), necessrio conhecer primeiro o seu comportamento, isto , quais so as aes realizadas no sistema operacional alvo que denotam uma atividade anormal ou suspeita. Como opo aos emuladores limitados embutidos nos antivrus com o objetivo de realizar a identicao por heursticas, os sistemas de anlise dinmica de malware foram sendo aprimorados e popularizados nos ltimos anos. Tais sistemas lanam mo de uma variedade de tcnicas para monitorar a execuo de um malware de maneira controlada, utilizando desde a instrumentao de emuladores complexos at a interceptao de chamadas ao kernel do sistema operacional monitorado. comum as empresas fabricantes de antivrus possuirem seus prprios sistemas de anlise dinmica de malware, tambm chamados de sandboxes, mas h solues disponveis gratuita e publicamente via Internet, como Anubis6 , ThreatExpert7 e CWSandbox8 . No contexto deste trabalho, uma sandbox um ambiente restrito e controlado que permite a execuo de um cdigo malicioso de forma a causar danos mnimos sistemas externos por meio da combinao de ltragem e bloqueio de trfego de rede e da execuo temporizada do malware. Em geral, o malware executado por quatro ou cinco minutos e, durante este tempo, so monitoradas as aes pertinentes tanto ao malware quanto aos processos derivados dele. Aps o perodo de monitorao, um relatrio de atividades gerado para anlise. Entretanto, um dos grandes problemas da anlise dinmica que a interpretao dos relatrios deixada a cargo do usurio que submeteu o exemplar, ou seja, no se pode realmente dizer que o sistema fez uma anlise, mas sim, uma monitorao da execuo com registro das atividades efetuadas no perodo. Alm disso, limitaes das tcnicas comumente utilizadas para interceptar as chamadas de sistema ou instrumentar o ambiente da sandbox podem levar evaso da anlise por exemplares de malware modernos. Isso, agravado pelo fato de alguns exemplares de malware terem por caracterstica a mutao de seus comportamentos durante execues distintas, faz com que o relatrio gerado por um sistema possa ser diferente do relatrio gerado por outro, no que diz respeito s aes efetuadas pelo malware sob anlise. Ainda assim, a anlise dinmica um importante instrumento para prover informaes teis a um usurio ou analista de segurana, permitindo tomadas de deciso com
6 http://anubis.iseclab.org 7 http://www.threatexpert.com 8 http://mwanalysis.org

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, sejam eles 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 que as utilizam so mostradas na Seo 3.3. esperado que o leitor compreenda os pontos fortes e as limitaes de cada tcnica, bem como o funcionamento destas de forma a poder escolher aquela que se adapta s suas necessidades de anlise. Um conjunto de ferramentas para a extrao de informaes da execuo de um cdigo malicioso mostrado na Seo 3.4. As etapas da anlise sero ilustradas por meio de exemplos prticos, permitindo o seu acompanhamento detalhado em um estudo de caso apresentado na Seo 3.6.

3.2. Tcnicas de Anlise


A anlise dinmica de malware, normalmente realizada para identicar as aes desenvolvidas pelo malware no sistema, pode ser implementada atravs de diversas tcnicas, cada uma com suas vantagens e desvantagens. Neste captulo sero apresentadas as principais tcnicas utilizadas por sistemas de anlise importantes ou por ferramentas que auxiliam na anlise dinmica. Dentre elas, podemos citar Virtual Machine Introspection e Hooking como as principais. Cada subseo ir tratar cada uma delas de forma detalhada, de forma que ao nal deste capitulo o leitor ser capaz de compreender cada uma delas, podendo escolher 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 o sistema de anlise (guest) e o ambiente de processamento (host), de forma que todas as aes que ocorrem dentro do sistema guest no so propagadas para o host. Seu uso possibilita a captura das aes que esto sendo executadas dentro do ambiente de anlise, sem que haja qualquer interferncia dentro do ambiente onde est sendo executado, possibilitando assim que um malware seja anlise sem qualquer tipo de modicao no sistema guest. Como no h modicao no sistema guest, a anlise ca transparente para o malware, impossibilitando qualquer tentativa de identicao do componente de captura. A ilustrao apresentada na gura 3.3 visa claricar o funcionamento da tcnica de Virtual Machine Introspection, que ser tratada mais detalhadamente nas sees seguintes. possvel vericar a diferenciao entre os sistemas guest, que funcionam dentro do ambiente emulado e o sistema host, onde est executando a aplicao responsvel pela implementao da camada entre o ambiente guest e o host. Programas para emulao e virtualizao, tais como Qemu [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 assim uma distino entre o ambiente real (ou sistema host) e o emulado/virtualizado (ou o guest). A seguir sero explicados os conceitos de emulao e como a tcnica de VMI pode ser aplicado ela. Emulao um termo utilizado na rea de computao para descrever o modo de

Aplicao 1 Aplicao 1 Aplicao 2

Guest OS 1 Guest OS 2 Virtual Machine Monitor Aplicao 1 Hardware


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

OS

operao de um software desenvolvido para simular um determinado hardware [Martignoni et. al. 2009], como por exemplo um processador especco diferente do que est executando o emulador. Na anlise de malware, este tipo de software utilizado para simular uma mquina, para que seja possvel a instalao do sistema operacional que ser utilizado no processo de anlise. Alm disso, o emulador pode ser utilizado para separar o ambiente de anlise, fazendo com que as aes efetuadas por um exemplar de malware durante sua execuo no contaminem o ambiente real, dado que as modicaes executadas pelo malware s iro ocorrer no ambiente de anlise host. Um emulador muito utilizado para este m o Qemu [Bellard 2005]uma ferramenta de cdigo aberto e de fcil utilizao com o qual possvel emular o processador, o disco rgido e demais dispositivos do sistema de forma que seja possvel instalar vrios tipos de sistemas operacionais. Virtualizao, de modo similar emulao, utilizada para simular uma mquina, tornando possvel a instalao e execuo de vrios sistemas operacionais em paralelo com o mesmo hardware. Porm, na virtualizao as instrues so executadas no hardware real da mquina, ao contrrio do que ocorre na emulao, na qual as instrues so executadas em um processador emulado. Isto torna a virtualizao mais rpida em relao emulao, pois as instrues do guest cam sob responsabilidade do hardware do host. A limitao da virtualizao que ela possibilita somente a instalao de sistemas cuja arquitetura seja a mesma do host. Quando se utiliza um virtualizador para anlise de malware, as funcionalidades so parecidas com as do emulador: h o isolamento entre os ambientes dos sistemas host e guest. Nesse caso, o programa responsvel pela virtualizao, acrescenta uma camada adicional entre o ambiente real e o de anlise chamada de Virtual Machine Monitor. Esta camada realiza a abstrao do hardware real para as

mquinas virtuais, executando suas aes de forma que sejam percebidas somente dentro do ambiente virtual [Rosenblum 2004]. Tanto a virtualizao quanto a emulao fazem uma distino entre o ambiente onde o malware executado e o real. Para simplicar a forma de mencionar tais ambientes, a partir de agora sero utilizados os termos guest e host, sendo que o primeiro identica o sistema operacional virtualizado ou emulado utilizado na anlise dinmica e o ltimo identica o sistema base que executa o emulador ou virtualizador. O programa de virtualizao/emulao responde ao sistema guest da mesma forma que os dispositivos fsicos (processador, disco rgido, placas de rede e vdeo etc) responderiam, sem entretanto comprometer o host no qual ele est sendo executado. Essa transparncia faz com que o host tenha total controle sobre o guest, podendo inclusive observar em tempo real o estado dos diversos recursos da mquina onde o malware est sendo executado, como memria e CPU, por exemplo. Desta forma, torna-se trivial a obteno de informaes a respeito da execuo do malware de maneira externa ao guest, bastando que se modique o software responsvel por executar a emulao/virtualizao para que este realize a captura dos dados. A modicao de um programa de virtualizao ou emulao com o objetivo de se obter informaes internas ao guest a partir do sistema host chamada de VMI e, com a utilizao desta tcnica possvel alcanar um nvel de privilgio adicional na camada de abstrao intermediria entre o host e o guest. Uma das caractersticas mais interessantes da VMI que esta torna possvel a anlise de malware cuja execuo ocorre no nvel do kernel, tais como os rootkits. As tcnicas comumente utilizadas por rootkits para esconder ou alterar estruturas internas do sistema operacional atacados [Hoglund and Butler 2005] podem inviabilizar sua deteco e monitorao por mecanismos de segurana ou outros mtodos de anlise, como por exemplo, hooking (Seo 3.2.2). Para ilustrar a tcnica de VMI, um tipo de informao que pode ser capturada do sistema guest so as syscalls que o malware executou durante a anlise. Um mtodo muito utilizado para identicar a ocorrncia de uma syscall baseia-se na leitura do valor contido no registrador SYSENTER_EIP_MSR do processador. Este registrador utilizado quando ocorre uma instruo do tipo SYSENTER, que indica que uma chamada de sistema deve ser feita. Quando a chamada efetuada, o sistema realiza a troca de contexto entre o espao de usurio e o espao de kernel, permitindo nalmente a execuo da syscall. Uma forma de identicar qual syscall est sendo invocada atravs da leitura do valor contido no registrador EAX. No momento em que a instruo SYSTENTER for executada, o registrador EAX armazena um valor utilizado para se encontrar o endereo da syscall que se quer realizar. Esse valor corresponde ao ndice de uma tabela que contm os endereos de todas as syscalls possveis no sistema operacional. Em sistemas Windows, esta tabela corresponde a uma estrutura que atende pelo nome de System Service Dispatch Table. Os parmetros utilizados para compor a syscall podem ser obtidos atravs de vericaes nos registradores do processador e na memria do sistema, no momento em que a chamada estiver sendo executada. Um sistema de anlise dinmica bem conhecido e disponvel publicamente para

utilizao atravs da Internet , Anubis [Anubis 2011], o qual utiliza a tcnica de VMI para monitorar as aes de um exemplar de malware durante sua execuo em um sistema operacional Windows XP. A m de aplicar VMI, Anubis foi implementado sobre o emulador Qemu, modicado para efetuar a captura de informaes de maneira externa ao guest. 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 sendo executado em um ambiente emulado/virtual, evitando a anlise como um todo ou apresentando um comportamento alternativo ao malicioso. No caso dos emuladores, a deteco pode ser feita de forma muito simples, por exemplo, atravs da realizao de uma instruo no processador que causa um comportamento especco. Um dos modos utilizados para realizar tal vericao por meio de bugs conhecidos em processadores de determinadas 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 apresentar o mesmo comportamento de um processador real, o malware ir perceber essa diferena, podendo parar ou modicar a sua execuo [Raffetseder et. al. 2007]. A deteco de ambiente virtualizado tambm simples, com apenas uma instruo assembly que, mesmo executada em um nvel de baixo privilgio, retorna informaes internas sobre o sistema operacional presente no guest. Tais informaes identicam o ambiente virtualizado com base nas diferenas entre estes e sistemas reais [Quist and Smith 2006]. Para contornar as tcnicas de anti-anlise, existem meios de detectar que um malware verica se est em ambiente emulado, ou mesmo de modicar alguns valores presentes no ambiente virtual para tentar disfar-lo [Kang et. al. 2009],[Liston and Skoudis 2006]. Entretanto, o uso destas tcnicas muitas vezes insuciente e o malware ainda pode detectar que est sendo executado em ambiente emulado/virtual. Um outro sistema utilizado para traar o comportamento de um malware e que se baseia em VMI Ether [Dinaburg et. al. 2008]. Este sistema utiliza VMI para obter as aes realizadas no guest, porm, ao contrrio de Anubis, Ether se utiliza de virtualizao direta do hardware, o que o torna imune s tcnicas de anti-anlise que vericam se o hardware real ou emulado. A implementao da VMI feita em uma verso modicada do Xen hypervisor, um software de virtualizao. Uma vantagem de Ether sobre Anubis diz respeito anlise de exemplares de malware com packers que apresentam mau funcionamento em emuladores. Diferentemente de Anubis, Ether consegue analisar este tipo de malware sem qualquer problema em sua execuo, dado que o Xen utiliza o hardware nativo para executar as operaes do processador. Entretanto, Ether apresenta problemas de desempenho para obter o trao composto pelas syscalls que o malware realizou. Isso ocorre 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 sua presena, existem meios de veric-la, como os descritos em [Pk et. al. 2011]. Nesta referncia, so apontados alguns possveis modos de detectar a presena de Ether, como por exemplo atravs de uma modicao feita pelo sistema de anlise que desabilita o bit TSC (Time-Stamp Counter). Este bit retornado quando se executa a instruo CPUID e serve para indicar quando a instruo RDTSC suportada. Portanto, para detectar a execuo em Ether, basta que se execute a instruo CPUID e se observe o valor retornado

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 obtm as informaes ca na camada da VMI, que faz o interfaceamento entre o guest e o host, os dados capturados so de nvel mais baixo, isto , valores encontrados em registradores da CPU ou endereos de memria. Porm, a anlise do comportamento do malware, isto , as modicaes feitas no sistema da vtima, requer a obteno de valores de mais alto nvel, como nomes de arquivos criados, registros modicados e processos inicializados. Assim, para acessar tal contedo precisa-se interpretar, em tempo de execuo, os dados contidos na memria e no processador durante a monitorao do malware, o que na maioria das vezes no uma tarefa fcil e causa uma sobrecarga no processo de anlise. 3.2.2. Hooking A tcnica de hooking pode ser denida como um meio de se alterar as requisies e respostas resultantes das interaes realizadas em um sistema operacional ou por suas aplicaes, atravs da interceptao das funes ou eventos utilizados [Holy Father 2004]. Pode-se categorizar hooking como sendo de modo de usurio (userland hooking) ou de modo de kernel (kernel hooking). O que difere estes dois tipos a extenso da modicao que pode ser feita no sistema e, consequentemente, nas aplicaes. Malware geralmente utilizam-se de tcnicas de hooking para capturar ou modicar informaes que estejam transitando em uma aplicao ou no sistema operacional. Atravs disto possvel a ocultao de suas atividades, dicultando assim a sua identicao. Alguns rootkits empregam hooking para tornar sua presena indetectvel ao sistema [Hoglund and Butler 2005]. Na gura 3.4 apresentada uma ilustrao da aplicao da tcnica de SSDT hooking, que ser explicada com mais detalhes nas sees seguintes, em um sistema. Pode-se perceber como era o uxo de execuo antes do hooking e depois dele.
Original

ZwCreateFile ZwReadFile ZwWriteFile


NewZwCreateFile

OriginalZwCreateFile

SSDT

Driver.sys

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

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

3.2.2.1. Userland Hooking Userland hooking ou hooking de nvel de usurio uma tcnica de interceptao que pode afetar somente programas que executam em nvel de usurio, no podendo interferir em qualquer 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 modicada. Como esse tipo de hooking feito normalmente sobre APIs9 disponibilizadas pelo sistema operacional, para um programa detectar se a interceptao est sendo feita ou no basta vericar se os endereos das APIs utilizadas por ele esto modicados ou se o endereo uma instruo de pulo incondicional (JMP), que uma prtica comumente utilizada em hooking. Alm deste tipo de deteco, existem outras formas que podem ser utilizadas para evitar um possvel hooking. Uma delas, muito ecaz, a utilizao de funes nativas do sistema operacional, ao invs das APIs fornecidas por ele. Entretanto, empregar este processo requer um maior cuidado na implementao do programa, pois este dever fornecer um nmero maior de informaes quando for executar cada funo, tarefa esta que antes cava a cargo do sistema operacional. A m de exemplicar tcnicas de userland hooking para modicao de APIs, apresenta-se a seguir IAT hooking, Detours e inline hooking. IAT Hooking Import Address Table hooking, ou (IAT hooking), uma tcnica aplicada para interceptar as funes utilizadas por um determinado programa, antes que este esteja em execuo. Para isso, a tcnica deve ser empregada sem que o malware tenha comprometido o sistema. A Import Address Table uma estrutura presente no cabealho de arquivos do tipo PE32 (arquivos executveis do sistema Windows), e responsvel por indicar os endereos das rotinas externas utilizadas por um programa [Microsoft 2008]. Esses endereos so denidos no processo de carregamento do programa que antecede a sua execuo, quando este est sendo inicializado pelo sistema operacional. Tais endereos so fornecidos por DLLs (dynamic-link libraries), pacotes binrios que contm funes e variveis as quais podem ser utilizadas por outros programas [Russinovich and Solomon 2004]. Quando o programa est na fase de inicializao, o sistema operacional se encarrega de vericar quais DLLs e mtodos externos so utilizadas por ele. De posse destas informaes, o sistema operacional pode preencher a IAT com os endereos referentes aos mtodos usados, de forma que durante a execuo o programa carregado consiga invocar corretamente as funes [Holy Father 2004]. Para realizar este tipo de hooking necessrio modicar a tabela IAT do programa que se deseja monitorar, de forma que os endereos contidos nela sejam de funes que se tem controle. Portanto, para cada funo modicada necessria uma nova funo, a qual poder modicar ou simplesmente monitorar os dados passados pelo programa sob anlise para a funo original. Alm disso, cada funo deve invocar a funo original para que as aes produzidas por um programa tenham seu efeito consumado no sistema, prosseguindo assim com a execuo normal do programa monitorado. Um problema evi9 Application

Programming Interfaces

dente desta abordagem a necessidade de modicaes no programa sob anlise, a m de que seja possvel instalar os hookings nas APISs monitoradas. A deteco deste tipo de ao pode ser feita com um simples teste de integridade no cdigo do programa monitorado. Se isto ocorrer, um malware pode identicar que est sendo monitorado, o que pode faz-lo tomar medidas que inviabilizem sua anlise ou que os resultados retornados por esta no correspondam ao uxo de execuo malicioso pretendido originalmente. Outro problema com a abordagem que pode inutilizar a captura ocorre caso o malware carregue a DLL que ir utilizar durante a sua execuo. Para isso, basta que ele use APIs disponibilizadas pelo Windows, as quais possibilitam que a DLL seja utilizada, mesmo sem ser previamente inicializada com o malware. Esta prtica bem simples de ser utilizada e desabilita por completo o IAT hooking, j que as APIs utilizadas assim pelo malware no sero 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 em arquiteturas x86 [Hunt and Brubacher 1999]. Atravs de sua utilizao, possvel realizar modicaes no incio da funo que se deseja interceptar de maneira dinmica, durante a execuo do programa. Esta tcnica implementada atravs da insero de uma instruo assembly de pulo incondicional (JMP) no incio da funo. Assim, quando tal funo for invocada, o JMP ser executado e ir direcionar o uxo de execuo para uma regio sobre a qual se tem controle. Isto possibilita a captura dos dados que esto passando pela funo, bem como os valores retornados com sua execuo. Sua implementao pode ser feita 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 recentemente, chamado Cuckoobox [Cukoo Sandbox 2011], aplica a tcnica de Detours para obter as informaes das APIs utilizadas pelo malware durante sua execuo. Embora o sistema necessite de mquinas virtuais para realizar uma anlise, o mecanismo de captura inserido no guest e passa as informaes obtidas via protocolo de comunicao para o host, diferentemente de Anubis, que requer uma modicao no software de emulao para capturar as informaes de execuo do malware. Isto torna a implementao da tcnica mais simples, porm, seu custo que pode-se facilmente vericar o uso de Detours atravs de uma checagem no incio da funo que se quer realizar: se a instruo inicial for um JMP, h a presena de um Detour. Inline Hooking Inline Hooking uma outra tcnica que pode ser utilizada para redirecionar o uxo de execuo normal de um programa para uma regio que se tenha total controle. Em geral, esta tcnica utilizada em malware para alterar as APIs do sistema operacional, de forma que as respostas produzidas sejam capturadas ou modicadas. Cabe ressaltar que 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 simplicidade da implementao. Seu funcionamento bem parecido com o do Detours, mas em vez de 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

programa para a regio de que se tem controle no ca no incio do cdigo, a deteco do hooking mais complicada, visto que ser necessrio inspecionar uma rea maior do cdigo que se quer executar em busca de algum desvio de execuo. O sistema de anlise de malware CWSandBox [CWSandbox 2011] utiliza a tcnica de inline hooking para capturar as informaes resultantes da execuo de um malware em um sistema Windows XP. O inline hooking feito por ele similar tcnica do Windows Detour, 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 por malware. Isto atribui 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 programas que executam em nvel privilegiado, como por exemplo os rootkits [Hoglund and Butler 2005]. No caso geral, a anlise de malware cuja execuo ocorre no nvel de usurio mais convel caso se aplique a tcnica de kernel hooking, pois o componente responsvel pela captura das aes do malware est em um nvel de privilgio mais elevado, cujo acesso direto no permitido. Por outro lado, mesmo com a possibilidade de subverso do hooking, os rootkits (e programas de nvel de kernel em geral) precisam ser inicializados por programas de nvel de usurio. Portanto, todas as aes executadas durante o processo de inicializao, como por exemplo, o carregamento de um driver, so capturadas, podendo ao menos levantar suspeitas sobre um possvel comportamento malicioso. Um exemplo de kernel hooking comumente utilizado por mecanismos de segurana, como os antivrus, e tambm por rootkits a tcnica de SSDT hooking, explicada a seguir. Outro exemplo, explicado adiante, a tcnica de kernel callbacks. SSDT Hooking O hooking da System Service Dispatch Table, comumente conhecido como SSDT hooking, consiste na modicao de uma estrutura interna presente em sistemas Windows, 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 uma das rotinas de chamadas de sistema disponibilizadas pelo sistema operacional, representando uma tabela. Tal tabela reside no kernel do sistema operacional e, portanto, programas no nvel de usurio no tm acesso a ela. Esta tabela utilizada pelo sistema operacional quando uma chamada de sistema requisitada, retornando assim o endereo de 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 em modo privilegiado, ele pode realizar alteraes em outros programas e estruturas internas do sistema presentes no nvel de kernel. Portanto, o driver tem permisso para alterar os endereos contidos na SSDT, trocando-os por valores que indiquem mtodos de seu controle. Antes de realizar a troca, os endereos originais precisam ser armazenados para que possam ser utilizados posteriormente, completando assim a requisio feita originalmente. Os endereos alterados iro apontar para funes interceptadas, que sero

executadas ao invs das originais. Como se tem o controle destas funes, possvel monitorar as requisies feitas ao sistema e os valores retornados, ou modicar as respostas retornadas pelo sistema operacional ao programa sob anlise. Alm disso, ca a cargo das funes controladas realizar a chamada s syscalls originais, atravs dos endereos salvos antes das modicaes na SSDT, possibilitando que o uxo de execuo original de um malware monitorado seja mantido. Tcnicas de kernel hooking so muito mais poderosas do que as de userland justamente por atuarem em um nvel privilegiado, o que lhes permite maior controle sobre os demais programas que executam no sistema operacional. Outra vantagem que o monitoramento ca transparente para as aplicaes de nvel de usurio, pois elas no tm acesso s aplicaes que executam no nvel do kernel. Uma desvantagem deste tipo de tcnica diz respeito s informaes que so extradas das funes que se pode interceptar. Na abordagem de IAT hooking, possvel capturar funes contidas nas DLLs utilizadas por um programa, as quais correspondem muitas vezes ao modo utilizado pelo programador para executar a chamada de sistema. J no caso das chamadas de sistema capturadas atravs do SSDT hooking, a informao no se apresenta de uma forma to clara. Por exemplo, caso se queira obter o nome de um arquivo utilizado durante uma syscall, pode ser necessrio realizar a vericao do contedo de outras estruturas utilizadas na invocao da syscall, dado que este nome muitas vezes no passado de forma direta. Neste caso necessrio realizar alguns procedimentos para traduzir os dados passados como argumento para a syscall de forma a encontrar a informao desejada. Alm deste problema, 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. Tal efeito acontece pois podem ocorrer modicaes na SSDT entre as verses, fazendo com que endereos antes utilizados para identicar uma syscall no sejam os mesmos. Um sistema de anlise de malware que faz uso desta tcnica o JoeBox [Joebox 2011]. Alm de interceptar as chamadas da SSDT ele tambm realiza um hooking de nvel de 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 de um sistema comercial. 3.2.3. Kernel Callbacks e Filter Driver Callbacks so funes disponibilizadas pelo sistema operacional que noticam uma aplicao sobre determinadas modicaes no sistema, como por exemplo, a criao de uma chave de registro ou de um novo arquivo [Seifert et. al. 2007]. Estas funes so bem documentadas e, portanto, sua implementao no apresenta incompatibilidades entre as diferentes verses do Windows, como ocorre no caso do SSDT Hooking, que realiza modicaes em estruturas do kernel especco de cada verso do sistema operacional. Isto torna possvel a monitorao de determinadas aes que ocorrem no sistema de uma forma mais simples e genrica, permitindo a identicao de comportamento possivelmente malicioso. Uma limitao presente nesta abordagem que ela permite somente a captura das aes 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-

vs do uso de lter drivers. Seu funcionamento similar ao de um ltro, interceptando todas as requisies feitas a um determinado dispositivo do sistema. Eles se interpem entre o driver, o qual esto sendo interceptadas as requisies, e o nvel de usurio, tendo acesso assim a todas as chamadas feitas ao dispositivo interceptado. Seu uso em conjunto com kernel callbacks possibilitam que seja capturado um nmero maior de informaes porm, elas ainda so restritas a um limitado conjunto, o qual pode resultar em uma anlise incompleta ou inconclusiva. Uma ferramenta que implementa a tcnica de kernel callbacks e lter driver o CaptureBat [CaptureBat 2011]. Sua utilizao requer o carregamento de drivers no sistema operacional a ser monitorado, o que possibilita sua aplicao tanto em mquinas virtuais como reais. 3.2.4. Debugging Utilizada inicialmente para ns no maliciosos, a tcnica de debugging consiste em para execuo de um programa em um dado momento, sendo possvel vericar o que ser executado a seguir. Normalmente ela utilizada por desenvolvedores de software, que desejam encontrar em qual ponto sua aplicao est apresentando problemas. Para isto, basta colocar um marcador em determinados pontos, chamados de breakpoints, os quais iro interromper o uxo de execuo do programa no aguardo de um comando sobre o que fazer a seguir. Debuggers, programas que executa o processo de debugging de uma aplicao, so separados em duas categorias, os que utilizam os recursos providos pelo processador, mais comuns, e os que emulam o processador, sendo estes os mais poderosos pois controlam toda a execuo do programa. Se o emulador for bem feito, ser muito difcil para um programa descobrir que est sofrendo debugging, dado que o debugger estar no controle da execuo. Os breakpoints podem ser divididos em dois grupos, os software breakpoints, que modicam o cdigo da aplicao onde se deseja realizar o debugging, e os hardware breakpoints, que utilizam recursos do processador, sendo os mais difceis de serem identicados. Como os software breakpoints modicam a aplicao, basta um simples teste de intergridade para identicar a presena de um breakpoint no cdigo. J os hardware breakpoints no sofrem deste problema, dado que as modicaes feitas para realizar o debugging esto em estruturas disponibilizadas pelo processador. Mesmo que o programa tente identicar estas mudanas, o debugger pode interceptar estas requisies e retornar uma resposta falsa, no revelando assim que o programa est sofrendo um debugging. Na anlise dinmica de malware a tcnica de debugging pode ser utilizada para identicar caractersticas do malware. Com isto ser possvel desenvolver mtodos que possam identicar novos malware com caractersticas semelhantes, facilitando a identicao destes exemplares e evitando que novas contaminaes ocorram. Por obter dados de mais baixo nvel, composto pelo cdigo assembly da aplicao, preciso realizar algumas inferncias para obter informaes de mais alto nvel, como por exemplo um nome de arquivo. Algumas aplicaes possibilitam que o debugger tenha acesso direto essa informao, sendo possvel identicar o momento em que a aplicao faz referncia a ela. Duas ferramentas de debugger bem conhecidas e utilizadas constantemente, uma paga e outra gratuita, so o IDA Pro e o OllyDBG respectivamente. A primeira dispe de mais recursos que podem auxiliar durante o processo de debugging, como por exemplo

um grco que mostra todas as chamadas de funes identicadas 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 durante o processo de debugging, como por exemplo uso de plugins que podem ajudar no processo de anlise. 3.2.5. Engenharia Reversa O processo de engenharia reversa consiste em extrair informaes sobre um software, de forma que seja possvel compreender seu funcionamento. No existe uma ferramenta que realize de forma automtica este processo, sendo somente possvel realiz-lo de forma manual. Normalmente aplicado em software onde no possvel se ter acesso ao cdigo fonte, possibilitando assim um maior entendimento sobre as aes executadas pelo software durante sua execuo, auxiliando inclusive na remontagem do cdigo do programa. Na anlise de malware, esta tcnica utilizada quando se deseja descobrir, de forma detalhada, quais os passos desenvolvidos pelo malware no sistema. Isso possibilita, por exemplo, identicar quais tcnicas ele utilizou para comprometer o sistema, como ele esconder suas atividades para ocultar sua execuo, quais dados do sistema comprometido ele captura, dentre outras atividades normalmente executadas por malware. A partir dessas informaes, possvel inclusive criar procedimentos que retirem da mquina comprometida todas as modicaes 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 aplicadas ao malware para evitar que certos dados quem em claro no cdigo binrio, como por exemplo um endereo utilizado pelo malware onde est outro componente utilizado por ele, o qual ser obtido durante sua execuo, ou um endereo de email para onde sero enviados os dados capturados na mquina comprometida. Para que uma engenharia reversa seja realizada, preciso um bom nvel de conhecimento sobre o ambiente onde a aplicao ir executar, para compreender as iteraes realizadas entre o programa e o sistema operacional bem como as respostas retornadas em cada 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 fcil e rpida. Portanto, todas as tcnicas de anlise dinmica apresentadas at aqui podem ser aplicadas durante o processo de engenharia reversa, evitando que seja desperdiado tempo na busca de informaes que so providas naturalmente por elas.

3.3. Sistemas de Anlise Dinmica


As tcnicas apresentadas no capitulo anterior so utilizadas em um grande nmero de sistemas de anlise de malware e Web malware. Normalmente, os sistemas apresentam os dados coletados de modo que seja fcil compreender as aes executadas pela amostra durante a anlise. Alguns sistemas aceitam somente submisso atravs de seus Web sites enquanto outros s podem ser executados se instalados em uma mquina local. Neste capitulo sero discutidos em cada subseo sistemas de anlise relevantes, frequentemente utilizados na anlise de malware e Web malware.

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 [Bayer et. al. 2006]. Utiliza a tcnica de Virtual Machine Introspection (VMI) aplicada ao Qemu, explicada detalhadamente no capitulo anterior, para capturar as aes executadas pelo malware no sistema de anlise. O sistema operacional utilizado no ambiente de anlise um Windows XP SP3, com uma instalao bsica. Ao nal da anlise, que pode demorar 8 minutos, produzido um relatrio em vrios formatos, html, xml e txt, que sumariza as aes do malware. Alm disto, caso seja gerado algum trfego de rede, um arquivo no formato pcap tambm fornecido. A submisso pode ser feita em lote, atravs de um script python, ou de forma singular, onde somente um malware enviado. No caso desta submisso, possvel torna-la mais rpida, passando-a frente das submisses em lote. 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 Anubis tm dois componentes no sistema de anlise, um driver e um programa de nvel de usurio, os quais iro capturar os valores contidos no registrador CR3, usados pelos processos do malware, e realizar a comunicao entre o ambiente de anlise e a mquina host respectivamente. A tabela 3.2 mostra as vantagens e desvantagens presentes no sistema Anubis, levado em considerao todos os pontos levantados at aqui.
Tabela 3.2. Vantagens e desvantagens do sistema de anlise Anubis. Vantagens A captura feita por um componente fora do ambiente de anlise. No necessrio nenhum preparo local para executar a anlise. Desvantagens Existem componentes do sistema de anlise dentro do ambiente de anlise. Caso o sistema esteja fora do ar, a anlise no pode ser realizada.

3.3.1.2. CWSandbox Teve incio em 2007, utilizando a tcnica de userland hooking para obter as informaes geradas pelo malware, em mquinas virtuais. Os ambientes de anlise tm como sistema operacional um Windows XP [Willems et. al. 2007]. A captura das informaes realizada por uma DLL (Dynamic Link Library), que precisa ser injetada no processo do malware. Quando ela carregada, as principais funes utilizadas para fazer a interface entre o programa e o sistema de anlise, como por exemplo modicaes em arquivos, tm seu incio modicado, de forma que um desvio incondicional seja executado assim que 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 submisso pode ser feito de forma singular, para um nico arquivo, ou na forma de um arquivo comprimido, contendo mltiplos arquivos para anlise. necessrio fornecer um endereo de email para onde ser enviado o link para o resultado da anlise, quando este estiver pronto.

Para iniciar o processo de anlise, existe um componente dentro do ambiente de anlise, 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 informado caso o malware inicialize ou modique algum processo, para que a DLL seja injetada neles tambm. Existe um outro componente dentro do ambiente de anpalise, que responsvel pela proteo dos componentes de captura, escondendo evidncias de sua existncia. Na tabela 3.3 possvel ver as vantagens e desvantagens presentes no sistema CWSandbox.
Tabela 3.3. Vantagens e desvantagens do sistema de anlise CWSandbox. Vantagens Os dados capturados so de funes de mais alto nvel. No necessrio nenhum preparo local para executar a anlise. Existem componentes que dicultam a deteco do sistema Desvantagens Caso o sistema esteja fora do ar, a anlise no pode ser realizada. Existem componentes do sistema de anlise dentro do ambiente de anlise.

3.3.1.3. Cuckoobox Comeou como um projeto do Google Summer of Code de 2010 ligado The Honeynet Project sendo disponibilizado somente em 2011, tendo seu cdigo totalmente disponvel para download. Em 2011, foi novamente selecionado para o Google Summer of Code, onde foram feitas modicaes na tcnica de captura de informaes e criado um novo componente que esconde os elementos do Cuckoobox que esto no ambiente de anlise. Utiliza a tcnica de inline hooking para interceptar as chamadas de sistema executadas pelo malware. No dispe de uma interface de submisso, sendo que para realizar uma anlise preciso preparar o ambiente antes, instalando localmente todos os requisitos necessrios. No apresenta restries quanto a verso do sistema que pode ser utilizado no ambiente de anlise, podendo ser qualquer verso do Windows a partir do XP. Depois de instalado o ambiente e todas as dependncias do Cuckoobox preciso inicializar um script em python, o qual ir carregar todas as conguraes necessrias para realizar uma nova anlise. Aps isto possvel ento invocar um outro script em python que ir enviar o malware para anlise. Ao nal dela, estaro disponveis em uma pasta os traos de execuo criados pelos processos gerados durante a anlise, os snapshots de telas geradas, arquivos modicados/criados/deletados e o trfego de rede. Para implementar o inline hooking o Cuckoobox precisa carregar uma DLL no processo que deseja monitorar. O hooking implementado de forma diferente em cada funo interceptada diferentemente de um simples salto incondicional no incio da funo. Isto diculta mtodos triviais de deteco, evitando assim que a anlise no seja bem sucedida. Atualmente, existem dois mtodos implementados, os quais so escolhidos de forma aleatria no momento que o inline hooking instalado. Esta DLL carregada por um script em python que ca em execuo no ambiente de anlise durante todo o processo. Alm desta tarefa, ele tambm noticado caso o malware modique ou crie

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

Tabela 3.4. Vantagens e desvantagens do sistema de anlise Cuckoobox. Vantagens Os dados capturados so de funes de mais alto nvel. O cdigo est disponvel e possvel customizar o sistema de acordo com suas necessidades. Existem componentes que dicultam a deteco do sistema Desvantagens Existem componentes do sistema de anlise dentro do ambiente de anlise. necessrio preparar o ambiente para executar a anlise.

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

Tabela 3.5. Vantagens e desvantagens do sistema de anlise Ether. Vantagens A captura feita por um componente fora do ambiente de anlise. O cdigo est disponvel e possvel customizar o sistema de acordo com suas necessidades. No tm componentes dentro do sistema de anlise Desvantagens S faz a monitorao de um processo por vez. necessrio preparar o ambiente para executar a anlise. necessrio indicar o nome/endereo do processo que se deseja monitorar.

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 pagamento de uma taxa mensal. Utiliza tcnicas de hooking para obter as aes executadas no ambiente de anlise. Fornece relatrios em formato html e xml junto com os arquivos criados, capturas de tela, trfego de rede e dumps de memria gerados durante a anlise. No h restries quanto ao sistema de anlise que deve ser utilizado, podendo ser qualquer verso Windows, acima do XP. Alm disto, ele pode ser executado em diversas plataformas como mquinas virtuais, emuladas e reais. Combinando vrias tcnicas de hooking, tanto de userland quanto de kernel, o Joebox capaz de obter informaes mais detalhadas, capturando dados tanto de baixo quanto de alto nvel. Existe um componente interno no sistema de anlise, joesandboxcontrol.exe, que contm vrias funcionalidades, dentre elas a inicializao do malware. Na tabela 3.6 possvel vericar as vantagens e desvantagens presentes no sistema.
Tabela 3.6. Vantagens e desvantagens do sistema de anlise Joebox. Vantagens Pode ser executado em diversas arquiteturas. Implementa vrias tcnicas de captura diferentes. Desvantagens No est disponvel gratuitamente. Existem componentes do sistema de anlise dentro do ambiente de anlise.

3.3.2. Sistemas de anlise de Web malware 3.3.2.1. JSand JSand um sistema de anlise de Web malware, de baixa interatividade, que foi apresentado em [Cova et. al. 2010] e pode ser usado atravs da interface pblica de submisso 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 identicao feita por meio da deteco de anomalia no comportamento do cdigo JavaScript. Para emular a pgina a ser analisada, o JSand utiliza uma verso modicada do HtmlUnit, uma plataforma em Java para testes de aplicaes Web. Como os Web malware atualmente atacam vulnerabilidades de diversas aplicaes, o sistema emula todo objeto ActiveX requisitado pelo cdigo, de forma que uma vericao pela presena dele retornar positiva e o cdigo continuar sua execuo. Para realizar a deteco por anomalia, o sistema JSand extrai dez atributos a partir da anlise realizada. Esses atributos representam caractersticas de redirecionamento, ofuscao, preparao do ambiente para o abuso de vulnerabilidades e o processo de abuso. O treinamento e deteco so realizados com o uso da ferramenta libAnomaly11 , desenvolvida pelo mesmo grupo que desenvolveu JSand.
10 http://wepawet.cs.ucsb.edu 11 http://www.cs.ucsb.edu/seclab/projects/libanomaly/

As informaes disponibilizadas aps a anlise dizem respeito ao comportamento do cdigo JavaScript presente na pgina e incluem trechos de cdigo desofuscados, vulnerabilidades das quais o cdigo tenta abusar, shellcodes utilizados, objetos ActiveX utilizados, links para o sistema Anubis com a anlise de arquivos executveis que o cdigo tenha tentado obter e requisies HTTP. A tabela 3.7 apresenta as vantagens e desvantagens da abordagem usada por esse sistema.
Tabela 3.7. Vantagens e desvantagens do sistema de anlise JSand. Vantagens Por ser emulada, a anlise executada rapidamente. Pode detectar ataques a vulnerabilidades desconhecidas. Desvantagens O ambiente emulado falha ao analisar certos cdigos. Pode detectar apenas ataques que utilizam JavaScript.

3.3.2.2. PhoneyC O sistema PhoneyC, apresentado em [Nazario 2009], um honeyclient de baixa interatividade que tambm utiliza um emulador para processar as pginas analisadas e possui seu cdigo disponvel para download. Ele capaz de analisar cdigos JavaScript e Visual Basic Script. A emulao do ambiente de JavaScript feita com o uso do interpretador da Mozilla Foundation, SpiderMonkey, que faz parte do navegador Web Firefox. J o cdigo Visual 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 componentes vulnerveis. PhoneyC prove informaes sobre objetos ActiveX utilizados, vulnerabilidades que o cdigo tenta atacar e shellcodes utilizados. A tabela 3.8 apresenta as vantagens e desvantagens desse sistema.
Tabela 3.8. Vantagens e desvantagens do sistema de anlise PhoneyC. Vantagens Por ser emulada, a anlise executada rapidamente. Alm de JavaScript, detecta ataques que utilizam Visual Basic Script Desvantagens O ambiente emulado falha ao analisar certos cdigos. No pode detectar ataques a vulnerabilidades desconhecidas.

3.3.2.3. Capture-HPC O sistema Capture-HPC, descrito com mais detalhes em [Seifert and Steenson 2006], um honeyclient de alta interatividade que possui seu cdigo disponvel. As pginas a serem analisadas so processadas dentro de um ambiente virtualizado, utilizando um navegador Web completo e um driver de kernel que captura as chamadas de sistemas realizadas
12 http://vb2py.sourceforge.net

pelo navegador. Caso essas chamadas de sistema sejam consideradas anmalas, a pgina analisada classicada como maliciosa. Aps a anlise o sistema informa as chamadas de sistema que foram identicadas como anmalas. As vantagens e desvantagens desse sistema podem ser vistas na tabela 3.9.
Tabela 3.9. Vantagens e desvantagens do sistema de anlise Capture-HPC. Vantagens Utiliza um navegador Web completo para processar as pginas Pode detectar ataques a vulnerabilidades desconhecidas. Pode detectar ataques independentemente da linguagem utilizada. Desvantagens Devido ao uso de ambiente virtualizado, a anlise mais demorada. Pode detectar apenas ataques bem sucedidos, que resultem em chamadas de sistema anmalas.

3.4. Caixa de Ferramentas


3.4.1. Informaes Gerais Neste captulo ser apresentado um conjunto de ferramentas gratuitas e disponveis na Internet que so capazes de criar um ambiente de anlise dinmica de malware. Alm disso, sero apresentadas ferramentas para anlises mais aprofundadas, debugging e forense computacional. O ambiente de anlise a ser implementado neste captulo ser denominado de Prottipo Sandbox. Como base para sua construo, ser usada uma mquina virtual para agilizar a restaurao do ambiente. importante deixar claro algumas limitaes do sistema, visto que em sua concepo foi dado enfoque praticidade na montagem e no uso. Dessa forma o sistema possuir pontos vulnerveis, que sero destacados no decorrer do texto. As ressalvas so a necessidade de um analista para dar conabilidade aos relatrios providos e a falta de proteo contra tcnicas de deteco de ambientes virtuais. 3.4.2. Modelo proposto para o sistema de anlise importante identicar e organizar a ordem com que as ferramentas devero ser executadas. Dessa forma, pode-se tornar a anlise mais ecaz. Na Figura 3.5 pode-se observar que o conhecimento sobre o funcionamento das ferramentas fundamental para uma boa anlise, pois a ordem em que os comandos foram executados altera diretamente a qualidade das informaes obtidas. No trecho 1, caso o malware contenha algum packer que ofusque o cdigo, a extrao das strings dicilmente trar informaes teis, enquanto no trecho 2, verica-se se foi utilizado o packer UPX. Caso este tenha sido utilizado, removido do malware13 , assim a ferramenta strings conseguir capturar dados relevantes que estiverem no cdigo. O Prottipo Sandbox possui dois ambientes,o primeiro o hospedeiro, no qual haver um sistema operacional base, para processar as informaes obtidas da anlise dinmica. Este ambiente a rea de trabalho principal do analista e no deve ser conta13 A

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

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

minada pelo malware, cando responsvel apenas pela anlise esttica e por hospedar as mquinas virtuais. O segundo ambiente o virtualizado. Nele os exemplares de malware sero executados para que seu comportamento seja capturado. Portanto, esses ambientes devero ser preparados para estimular e monitorar as atividades maliciosas e, posteriormente, enviar as informaes coletadas para a mquina hospedeira. importante que a mquina virtual no esteja na mesma rede que outros sistemas, pois pode haver contaminao destes. A arquitetura 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 uma camada intermediria entre a Internet e o ambiente de anlise (Anlise Dinmica) virtu-

alizado. Isto torna possvel restringir o acesso da mquina virtual atravs de um rewall entre os ambientes, alm de bloquear tentativas de interao com a mquina real. Outra responsabilidade importante do Gerenciador o armazenamento dos relatrios em uma base de dados, podendo ser feito de forma simples, como um diretrio, ou algo mais complexo como um banco de dados.

3.5. Mquina base


Para os testes com o Prottipo Sandbox foi utilizado um computador com processador Intel Core 2 Duo de 1.6 GHz, 2GB de memria RAM e disco rgido de 160 GB. Outras conguraes que sejam equivalentes ou superiores tambm so vlidas. A sugesto apenas uma estimativa do mnimo que o computador precisa ter para realizar anlises sequenciais sem overheads prejudiciais. Esta mquina a que ser usada para armazenar os resultados dos relatrios, efetuar a anlise esttica, hospedar a mquina virtual e gerenciar a anlise dinmica. O sistema operacional escolhido para a mquina base foi um Ubuntu linux com sua instalao padro. 3.5.1. Base de resultados A base de resultados do Prottipo Sandbox ter como nalidade armazenar malware e todos os arquivos produzidos durante as anlises, inclusive o relatrio nal. Para isto, ser construda em um diretrio normal do sistema, ter como chaves primrias o hash sha256 do malware e ser gerenciada atravs de shell script. A base de resultados contm diversos diretrios, cada um com a coletnea de arquivos relacionados ao malware, tais como o arquivo executvel, o relatrio e os arquivos auxiliares produzidos nas anlises. A organizao da base de resultados pode ser melhor visualizada na Figura 3.7.

Figura 3.7. Estrutura de pastas para armazenamento dos arquivos produzidos pelas anlises

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

ser construda, como a busca, a excluso e a vericao se existe uma anlise. Estas aes podem ser implementadas com comandos de shell script, como o exemplo mostrado na Figura 3.8.

Figura 3.8. Comandos de shell script usados para vericar se um malware j foi analisado

3.5.2. Anlise esttica simplicada A anlise esttica tem como objetivo coletar informaes presentes no malware sem ter que execut-lo. No Prottipo Sandbox as informaes foram divididas em quatro grupos que 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 que identique univocamente o malware, a opo escolhida foi a funo de hash criptogrco sha256, todavia poderia ser qualquer outra, como md5 (mais comum) ou sha512. Posteriormente, utilizado o programa strings para buscar cadeias de caracteres relevantes, com pelo menos 3 bytes, no cdigo. Assim, recomenda-se o uso de ltros com 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 estaro presentes e sero teis para indicar as aes do malware e caminhos para um processo de engenharia reversa, como pode ser visto na Figura 3.10. Algumas identicaes do malware podem ser coletadas com o uso de programas antivrus, identicadores de packer e identicadores de bibliotecas. No Prottipo

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

Sandbox foram utilizados apenas identicadores de packer e de bibliotecas, atravs dos programas pefile e sigcheck. interessante saber o packer utilizado para tentar remov-lo, e tambm saber se a anlise dinmica poder ser feita, visto que certos packers, como o tElock e o Themida, so capazes de identicar ambientes emulados. O programa sigcheck importante para vericar se as bibliotecas nativas utilizadas so legtimas. Caso alguma biblioteca seja falsa, pode-se extrair informaes usando os programas objdump e Dependency Walker, que revelaram dados do cabealho, sees e funes da biblioteca. Para a anlise esttica automatizada prefervel o programa objdump, por permitir seu uso atravs de linha de comando. 3.5.3. Mquina virtual A mquina virtual tem como nalidade prover um ambiente de anlise controlado para o malware ser executado, isolando a mquina base, alm de possibilitar a rpida restaurao do ambiente aps o comprometimento. Para o Prottipo Sandbox foi escolhido o programa Virtualbox como tecnologia de virtualizao. 3.5.4. Anlise dinmica Na anlise dinmica preparado um ambiente para monitorar todas as atividades do malware que ser executado, obtendo assim seu comportamento e a interao dele com o sistema. No caso do Prottipo Sandbox as aes do malware foram divididas em rede, arquivos modicados e excludos, registros modicados e excludos, rootkits, processos criados e nalizados 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 congurado com um disco de expanso dinmica e 256 MB de memria RAM, e foi instalado com a congurao padro do Windows XP Service Pack 3. Para iniciar a mquina virtual utilizado um conjunto de scripts, tanto na mquina virtual como na mquina base. A mquina base ca encarregada por iniciar a mquina virtual e depois desligar foradamente a mesma, aps o tempo limite de anlise. A Figura 3.12 mostra os comandos utilizados para iniciar e nalizar a mquina virtual.

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 est completamente inicializado e com um script do tipo WSH (Windows Script Host) sendo executado. Esse script tem a funo de obter o malware atravs de FTP, iniciar/executar as ferramentas de anlise e executar o malware, como observado na gura 3.13.

3.5.4.2. Monitorao do sistema Para a monitorao do sistema utilizada a ferramenta Capture-BAT [CaptureBat 2011], que capaz de monitorar certas operaes feitas pelo malware. Essas operaes
so arquivos que guardam o estado do sistema. Com ele possvel iniciar o sistema virtualizado a partir de um estado previamente salvo
14 Snapshots

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

incluem criao, modicao e remoo de arquivos e registros, alm da inicializao e trmino de processos. So usados ltros para monitorar apenas as aes do malware e de processos 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 ltros. Por meio do trfego de rede possvel descobrir servidores de distribuio de malware, contas de email utilizadas pelo criador do artefato, tentativas de ataque a outros sistemas e sistemas de comando e controle utilizados para passar comandos ao malware caso seja do tipo bot.

3.5.4.4. Rootkit Alguns exemplares de malware mais sosticados utilizam rootkits para que as aes maliciosas sejam executadas em nvel de kernel e, portanto, no possa ser monitorada por ferramentas que capturam as aes dentro do ambiente virtualizado, como o Capture-BAT. Dessa forma preciso, pelo menos, identicar quando os rootkits esto sendo usados. A ferramenta Gmer utilizada para essa tarefa

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

3.5.4.6. Trmino da anlise dinmica

Ao m da anlise, o script WSH de controle dever terminar os processos do malware e das ferramentas utilizadas, reunir todos os arquivos de registro e envi-los por FTP para a mquina base. Esta, por sua vez, dever conferir se os arquivos de registro foram enviados corretamente e deve desligar a mquina virtual foradamente, caso precise, como mostrado na Seo 3.5.4.1. Por m, a mquina utilizada ser restaurada para o ltimo snapshot. Os diversos arquivos de resultados sero processados pela mquina base e reunidos 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 identiquem ambientes virtualizados. Outra fragilidade a identicao de uma das ferramentas utilizadas na anlise dinmica. Assim, caso o relatrio seja suspeito preciso realizar uma anlise manual e aprofundada no malware. 3.5.6. Anlise aprofundada Para anlises mais aprofundadas preciso compreender em baixo nvel o que o malware est fazendo no sistema, para isto, possvel fazer um dump da memria RAM em um momento crtico para analis-lo ou fazer debugging do cdigo binrio. Atravs de um dump possvel identicar interceptaes, rootkits e mutexes (objetos de sincronizao) presentes no sistema e que podem estar bloqueando a monitorao de alguma atividade maliciosa, alm de ser possvel ver strings, bibliotecas, contedo da pilha (stack) e contedo da heap dos processos que estavam em execuo. Uma opo de programa para essa nalidade o Memoryze. Para realizar a engenharia reversa e o compreendimento profundo do funcionamento do malware, preciso utilizar um debugger, como o OllyDbg. Como a anlise manual do cdigo uma tarefa exaustiva, recomenda-se utiliz-la apenas para conferir os trechos mais suspeitos.

3.6. Estudo de Caso


Nesta parte ser apresentado um estudo de caso do processo completo de comprometimento de uma mquina, que ocorreu a partir do acesso a uma URL maliciosa. Este endereo foi retirado do site www .malwaredomainlist.com que disponibiliza URLs maliciosas diariamente. 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 inspecionadas, juntamente com as system calls realizadas pelo processo do browser e o trfego de rede gerado. Sero apresentados alguns trechos dos relatrios produzidos pelo sistema, bem como uma explicao sobre as aes que esto sendo observadas. O exemplar analisado utiliza um applet java malicioso, o qual explora uma vulnerabilidade e possibilita o download de um malware, que executado no sistema logo aps a explorao. A arquitetura do sistema onde foi realizado o estudo composto de um Desktop com uma mquina virtual do sistema VirtualBox, dispondo de acesso controlado internet. O sistema utilizado no ambiente guest, ou seja o ambiente virtualizado, um

Windows XP SP2 com instalao bsica. Para permitir a execuo de certos tipos de cdigo que no dispem de suporte nativo em sistemas Windows foi necessrio adicionar alguns aplicativos extras, como por exemplo Java e Flash. A URL maliciosa foi acessada em um browser Internet Explorer 8, normalmente utilizado pela grande maioria de usurios de sistema Windows. Primeiramente, o Internet Explorer iniciado juntamente com o componente responsvel pela captura das aes desenvolvidas pela URL e pelo que faz a captura das chamadas de sistema executadas pelo processo dobrowser e seus lhos. Aps esta etapa, o browser ca 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 componente de captura de chamadas de sistema ca capturando todas as aes do Internet Explorer, mesmo que a URL no tenha sido carregada ainda. As aes desnecessrias sero ltradas posteriormente, deixando somente as aes relevantes. Terminada a etapa de instanciao 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 componente de captura obtm vrias aes inofensivas, realizadas normalmente por qualquer pgina web. No meio destas aes pode haver cdigo de explorao, caso algum script malicioso 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 explorar uma vulnerabilidade na mquina virtual Java que executa no browser do lado do cliente.
Trecho de Cdigo 3.1. Cdigo HTML utilizado na explorao do browser 1 2 3 4 5 6 < html > < o b j e c t i d = " j a v a _ o b j " c l a s s i d = " c l s i d : CAFEEFACDEC70000 0000 ABCDEFFEDCBA" width = " 0 " h e i g h t = " 0 " > <PARAM name = " l a u n c h j n l p " v a l u e = " 1 " / > <PARAM name = " d o c b a s e " v a l u e = "AAAAAAAAAAAAAAAAAAAAA . . . " / > </ object> < / html >

Observando a sada gerada pela ferramenta que captura as aes executadas durante o carregamento da pgina, mostrada no trecho de cdigo 3.2, podemos observar que um dos atributos presentes na linha 2, e os das linhas 3 e 4 do trecho de cdigo 3.1 esto presentes nas aes capturadas pela ferramenta de anlise. possvel identicar isto nas linhas 1, 2 e 3 do trecho de cdigo 3.2, que correspondem a uma parte do cdigo obtido durante a execuo da pagina maliciosa no browser.
1 2 3 Trecho de Cdigo 3.2. Aes capturadas durante o carregamento da URL maliciosa. 1 0 : 2 7 : 4 5 . 0 1 0 <URL MALICOSA> SET PROPERTY c l s i d =CAFEEFACDEC70000 0000 ABCDEFFEDCBA 1 0 : 2 7 : 4 5 . 0 7 0 <URL MALICOSA> SET PROPERTY l a u n c h j n l p =1 1 0 : 2 7 : 4 5 . 2 3 0 <URL MALICOSA> SET PROPERTY d o c b a s e =<EXPLOIT>

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

colocada em uma linha dividida em trs campos, sendo o primeiro o nome do processo executor da ao, o segundo o tipo de ao realizada e o terceiro o alvo da ao. Dentre as aes executadas pelo processo do browser foi possvel identicar um conjunto de aes relevantes, que correspondem criao de arquivos, de um applet java e de um novo processo, possivelmente um malware. No trecho de cdigo apresentado em 3.3 possvel ver um trecho das aes executadas no sistema pelo applet java.
Trecho de Cdigo 3.3. Trecho de atividade realizada pelo processo applet Java carregado pelo Internet Explorer. j a v a w . e x e ; C r e a t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d 3 d 9 c a p s . tmp j a v a w . e x e ; W r i t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d 3 d 9 c a p s . tmp

1 2

J o trecho de cdigo apresentado em 3.4, que corresponde a algumas aes executadas 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 apresentadas no trecho de cdigo 3.5. Neste pedao de cdigo existem trechos de execuo de quatro processos: o primeiro deles corresponde s aes que vo da linha 1 a 13 e o arquivo criado e executado pelo Internet Explorer, como pode ser vericado na linha 3 do trecho de cdigo 3.4. Os outros trs processos, que esto entre as linhas 15 a 21, 23 a 25 e 27 a 28, foram todos criados pelo processo 9eg1.exe, conforme mencionado anteriormente.
1 2 3 Trecho de Cdigo 3.4. Trecho de atividade realizada pelo processo do Internet Explorer. i e x p l o r e . e x e ; C r e a t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ 9 eg1 . e x e i e x p l o r e . e x e ; W r i t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ 9 eg1 . e x e i e x p l o r e . e x e ; C r e a t e P r o c e s s ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ 9 eg1 . e x e Trecho de Cdigo 3.5. Trecho de atividade realizada pelos processos criados pelo Internet Explorer. 9 eg1 . e x e ; C o n n e c t N e t ; < I P > : 8 0 0 0 9 eg1 . e x e ; SendNet ; TCP : < I P > : 8 0 0 0 9 eg1 . e x e ; R e c e i v e N e t ; TCP : < I P > : 8 0 0 0 9 eg1 . e x e ; C r e a t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _4 . tmp 9 eg1 . e x e ; W r i t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _4 . tmp 9 eg1 . e x e ; C r e a t e P r o c e s s ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _4 . tmp 9 eg1 . e x e ; C r e a t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _5 . tmp 9 eg1 . e x e ; W r i t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _5 . tmp 9 eg1 . e x e ; C r e a t e P r o c e s s ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _5 . tmp 9 eg1 . e x e ; C r e a t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _6 . tmp 9 eg1 . e x e ; W r i t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _6 . tmp 9 eg1 . e x e ; C r e a t e P r o c e s s ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ _6 . tmp 9 eg1 . e x e ; T e r m i n a t e P r o c e s s ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ 9 eg1 . ex _4 . tmp ; C o n n e c t N e t ; < I P > : 8 0 _4 . tmp ; SendNet ; TCP : < I P > : 8 0 _4 . tmp ; D i s c o n n e c t N e t ; TCP : < I P > : 8 0 _4 . tmp ; C r e a t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ DAT7 . tmp . e x e _4 . tmp ; W r i t e F i l e ; C : \ DOCUME~ 1 \ ADMINI ~ 1 \LOCALS~ 1 \ Temp \ DAT7 . tmp . e x e _4 . tmp ; C r e a t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d r i v e r s \ s t r . s y s _4 . tmp ; W r i t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d r i v e r s \ s t r . s y s

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

23 24 25 26 27

_5 . tmp ; C r e a t e F i l e ; C : \ Documents S e t t i n g s \ Temporary I n t e r n e t _5 . tmp ; D e l e t e F i l e ; C : \ Documents S e t t i n g s \ Temporary I n t e r n e t

and S e t t i n g s \ A d m i n i s t r a t o r \ L o c a l F i l e s \ C o n t e n t . IE5 \ ZMD946CA \ g r [ 1 ] . htm and S e t t i n g s \ A d m i n i s t r a t o r \ L o c a l F i l e s \ C o n t e n t . IE5 \ ZMD946CA \ g r [ 1 ] . htm

_6 . tmp ; C r e a t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d l l . d l l _6 . tmp ; W r i t e F i l e ; C : \ WINDOWS\ s y s t e m 3 2 \ d l l . d l l

Analisando todas as linhas que mostram o comportamento dos processos criados por 9eg1.exe possvel vericar que existem aes de conexo de rede (linhas 15 a 17), criao de drivers (linha 20), DLLs (linha 27) e criao e remoo de arquivos (linhas 23 e 24). Uma outra informao importante obtida durante a anlise o trfego de rede gerado pela execuo do cdigo malicioso. A partir dele possvel observar que o malware faz conexes em redes P2P utilizando o protocolo Gnutella. No conjunto de aes presentes no trecho de cdigo 3.6 possvel ver a ao de download de uma lista de servents (clientes) Gnutella presentes na rede (linha 1) e a tentativa de conexo a um destes servents (linhas 16 a 22).
Trecho de Cdigo 3.6. Requisies rede Gnutella realizadas pelo malware. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 GET / s k u l l s . php ? n e t = g n u t e l l a 2&g e t =1& c l i e n t =RAZA2 . 5 . 0 . 0 HTTP / 1 . 1 H o s t : gwc2 . wodi . o r g C o n t e n t Type : t e x t / h t m l Accept Language : en User Agent : S h a r e a z a Connection : close HTTP / 1 . 1 200 OK D a t e : Wed , 30 Mar 2011 1 3 : 2 8 : 4 6 GMT S e r v e r : Apache / 2 . 2 . 1 5 ( L i n u x / SUSE ) XPowered By : PHP / 5 . 3 . 3 Connection : close XRemote I P : < I P > C o n t e n t L e n g t h : 1257 C o n t e n t Type : t e x t / p l a i n <LISTA DE HOSTs> GNUTELLA CONNECT / 0 . 6 L i s t e n I P : 0 . 0 . 0 . 0 : 1 8 5 0 9 Remote I P : < I P > User Agent : S h a r e a z a 2 . 5 . 0 . 0 A c c e p t : a p p l i c a t i o n / x g n u t e l l a 2 X U l t r a p e e r : F a l s e X U l t r a p e e r Needed : T r u e

Neste captulo foi exibida uma anlise de um comprometimento que ocorreu a partir do acesso a uma URL maliciosa, tendo incio na explorao de uma vulnerabilidade na mquina virtual Java utilizada pelo browser e culminando em aes nocivas efetuadas diretamente no sistema operacional. O endereo da URL foi obtido de um domnio que disponibiliza diariamente links de sites maliciosos. Na anlise foi apresentado todo o processo do ataque, desde as aes maliciosas realizadas pelo cdigo HTML da pgina maliciosa, at as modicaes realizadas no sistema por um malware que foi obtido por download.

Referncias
[1] Thorsten Holz, Markus Engelberth, Felix Freiling. Learning More About the Underground Economy: A Case-Study of Keyloggers and Dropzones. Reihe informatik tr-2008-006, University of Mannheim, 2008. [2] B. Stone-Gross, M. Cova, B. Gilbert, R. Kemmerer, C. Kruegel, and G. Vigna. Analysis of a Botnet Takeover. IEEE Security and Privacy Magazine, 9(1):6472, January 2011. [3] Chao Yang, Robert Harkreader, and Guofei Gu. Die free or live hard? empirical evaluation and new design for ghting evolving twitter spammers. In Proceedings of the 14th International Symposium on Recent Advances in Intrusion Detection (RAID11)), September 2011. [4] Kevin Zhijie Chen, Guofei Gu, Jose Nazario, Xinhui Han, and Jianwei Zhuge. WebPatrol: Automated collection and replay of web-based malware scenarios. In Proceedings of the 2011 ACM Symposium on Information, Computer, and Communication Security (ASIACCS11), March 2011. [5] Michael Becher, Felix C. Freiling, Johannes Hoffmann, Thorsten Holz, Sebastian Uellenbeck, and Christopher Wolf. Mobile security catching up? revealing the nuts and bolts of the security of mobile devices. In Proceedings of the 2011 IEEE Security and Privacy Symposium, pages 96111, May 2011. [6] M. Egele, C. Kruegel, E. Kirda, and G. Vigna. PiOS: Detecting Privacy Leaks in iOS Applications. In Proceedings of the Network and Distributed System Security Symposium (NDSS), San Diego, CA, February 2011. [7] G. Stringhini, C. Kruegel, and G. Vigna. Detecting spammers on social networks. In Annual Computer Security Applications Conference, 2010. [8] Dawn Song, David Brumley, Heng Yin, Juan Caballero, Ivan Jager, Min Gyung Kang, Zhenkai Liang, Newso James, Pongsin Poosankam, and Prateek Saxena. Bitblaze: A new approach to computer security via binary analysis. In Proceedings of the 4th International Conference on Information Systems Security, ICISS 08, pages 125, Berlin, Heidelberg, 2008. Springer-Verlag. [9] Chia Yuan Cho, Juan Caballero, Chris Grier, Vern Paxson, and Dawn Song. Insights from the inside: a view of botnet management from inltration. In Proceedings of the 3rd USENIX conference on Large-scale exploits and emergent threats: botnets, spyware, worms, and more, LEET10, pages 22, Berkeley, CA, USA, 2010. USENIX Association. [10] Junjie Zhang, Xiapu Luo, Roberto Perdisci, Guofei Gu, Wenke Lee, and Nick Feamster. Boosting the scalability of botnet detection using adaptive trafc sampling. In Proceedings of the 2011 ACM Symposium on Information, Computer, and Communication Security (ASIACCS11), March 2011.

[11] Seungwon Shin, Raymond Lin, and Guofei Gu. Cross-analysis of botnet victims: New insights and implications. In Proceedings of the 14th International Symposium on Recent Advances in Intrusion Detection (RAID11)), September 2011. [12] Jason Franklin, Vern Paxson, Adrian Perrig, Stefan Savage. An inquiry into the nature and causes of the wealth of internet miscreants. In Proceedings of the 14th ACM conference on Computer and communications security, CCS 07, pages 375 388. ACM, 2007. [13] Hamad Binsalleeh, Thomas Ormerod, Amine Boukhtouta, Prosenjit Sinha, Amr Youssef, Mourad Debbabi, Lingyu Wang. On the Analysis of the Zeus Botnet Crimeware Toolkit. In Proceedings of the Eighth Annual Conference on Privacy, Security and Trust, PST 2010. IEEE Press, August 2010. [14] Seungwon Shin, Guofei Gu. Concker and beyond: a large-scale empirical study. In Proceedings of the 26th Annual Computer Security Applications Conference, ACSAC 10, pages 151160. ACM, 2010. [15] Nicholas Falliere, Liam O. Murchu, Eric Chien. Symantec Stuxnet Report: W32.Stuxnet Dossier. Report, Symantec, October 2010. [16] Julio Canto, Marc Dacier, Engin Kirda, Corrado Leita. Large scale malware collection: lessons learned. In 27th International Symposium on Reliable Distributed Systems, SRDS 2008. IEEE, October 2008. [17] Andr R. A. Grgio, Isabela L. Oliveira, Rafael D. C. dos Santos, Adriano M. Cansian, Paulo L. de Geus. Malware distributed collection and pre-classication system using honeypot technology. In Data Mining, Intrusion Detection, Information Security and Assurance, and Data Networks Security 2009, volume 7344. SPIE. [18] Andr R. A. Grgio, Dario S. Fernandes Filho, Vitor M. Afonso, Rafael D. C. dos Santos, Mario Jino and Paulo L. de Geus. Behavioral analysis of malicious code through network trafc and system call monitoring. In Defense, Security and Sensing 2011, volume 8059. SPIE. [19] Paul Baecher, Thorsten Holz, Markus Ktter, Georg Wicherski. The Malware Collection Tool (mwcollect). Pgina na internet, 2011. http://www.mwcollect. org/. [20] Joanna Rutkowska. Introducing Stealth Malware Taxonomy. White paper, 2006. http://invisiblethings.org/papers/malware-taxonomy.pdf. [21] Nicholas Weaver, Vern Paxson, Stuart Staniford, and Robert Cunningham. A taxonomy of computer worms. In Proceedings of the 2003 ACM workshop on Rapid malcode, WORM 03, pages 1118, New York, NY, USA, 2003. ACM. [22] David Dagon, Guofei Gu, Cliff Zou, Julian Grizzard, Sanjeev Dwivedi, Wenke Lee, and Richard Lipton. R.: A taxonomy of botnets. In In: Proceedings of CAIDA DNS-OARC Workshop, 2005.

[23] Jonathon Gifn, Somesh Jha, and Barton Miller. Automated discovery of mimicry attacks. In Symposium on Recent Advances in Intrusion Detection (RAID), 2006. [24] Gregoire Jacob, Eric Filiol, and Herve Debar. Functional polymorphic engines: formalisation, Implementation and use cases. Journal in Computer Virology, 5(3), 2008. [25] Justin Seitz. Gray Hat Python: Python Programming for Hackers and Reverse Engineers. No Starch Press, San Francisco, CA, USA, 2009. [26] Hispasec Sistemas. Virustotal. http://www.virustotal.com/, 2011. [27] Nicolas Fallieri, Liam O. Murchu, and Eric Chien. W32.stuxnet dossier. http://www.symantec.com/en/ca/content/en/us/enterprise/ media/security\_response/whitepapers/w32\_stuxnet\ _dossier.pdf, 2011. [28] Norman Sandbox. Norman sandbox whitepaper. http://download.norman. no/whitepapers/whitepaper_Norman_SandBox.pdf, 2003. [29] Joris Kinable and Orestis Kostakis. Malware classication based on call graph clustering. CoRR, abs/1008.4365, 2010. [30] Madhu Shankarapani, Subbu Ramamoorthy, Ram Movva, and Srinivas Mukkamala. Malware detection using assembly and api call sequences. Journal in Computer Virology, 7:107119, 2011. 10.1007/s11416-010-0141-5. [31] Konrad Rieck, Thorsten Holz, Carsten Willems, Patrick Dssel, and Pavel Laskov. Learning and classication of malware behavior. In Proceedings of the 5th International Conference on Detection of Intrusions and Malware, and Vulnerability Assessment, DIMVA 08, pages 108125, Berlin, Heidelberg, 2008. Springer-Verlag. [32] Ulrich Bayer, Paolo Milani Comparetti, Clemens Hlauscheck, Christopher Kruegel, and Engin Kirda. Scalable, Behavior-Based Malware Clustering. In 16th Symposium on Network and Distributed System Security (NDSS), 2009. [33] Gregoire Jacob, Matthias Neugschwandtner, Paolo Milani Comparetti, Christopher Kruegel, and Giovanni Vigna. A static, packer-agnostic lter to detect similar malware samples. Technical Report 2010-26, UCSB, November 2010. [34] Younghee Park, Douglas Reeves, Vikram Mulukutla, and Balaji Sundaravel. Fast malware classication by automated behavioral graph matching. In Proceedings of the Sixth Annual Workshop on Cyber Security and Information Intelligence Research, CSIIRW 10, pages 45:145:4, New York, NY, USA, 2010. ACM. [35] Michael Bailey, Jon Oberheide, Jon Andersen, Zhuoqing Morley Mao, Farnam Jahanian, and Jose Nazario. Automated Classication and Analysis of Internet Malware. In Proceedings of the 10th International Symposium on Recent Advances in Intrusion Detection (RAID 07), pages 178197, Gold Coast, Australia, September 2007.

[36] Qinghua Zhang and D.S. Reeves. Metaaware: Identifying metamorphic malware. In Computer Security Applications Conference. ACSAC 2007., pages 411 420, dec. 2007. [37] A. Moser, C. Kruegel, and E. Kirda. Limits of static analysis for malware detection. In Computer Security Applications Conference, 2007. ACSAC 2007. Twenty-Third Annual, pages 421 430, dec. 2007. [38] Gnu diff. http://en.wikipedia.org/wiki/Diff, 2011. [39] The jaccard index. http://en.wikipedia.org/wiki/ Jaccard{\textunderscore}index, 2011. [40] Clam antivirus. http://www.clamav.net, 2011. [41] Peng Li, Limin Liu, Debin Gao, and Michael K. Reiter. On challenges in evaluating malware clustering. In Proceedings of the 13th International Conference on Recent Advances in Intrusion Detection, RAID10, pages 238255, Berlin, Heidelberg, 2010. Springer-Verlag. [42] C. Seifert, R. Steenson, I. Welch, P. Komisarczuk, and B. Endicott-Popovsky. Capture-a behavioral analysis tool for applications and documents. digital investigation, 4:2330, 2007. [43] Virtualbox, Julho 2011. http://www.virtualbox.org/. [44] Lorenzo Martignoni, Roberto Paleari, Giampaolo Fresi Roglia, and Danilo Bruschi. Testing CPU emulators. In Proceedings of the eighteenth international symposium on Software testing and analysis, ISSTA 09, pages 261272, New York, NY, USA, 2009. ACM. [45] Galen Hunt and Doug Brubacher. Detours: binary interception of Win32 functions. In Proceedings of the 3rd conference on USENIX Windows NT Symposium - Volume 3, pages 1414, Berkeley, CA, USA, 1999. USENIX Association. [46] Gbor Pk, Boldizsr Bencsth, and Levente Buttyn. nEther: in-guest detection of out-of-the-guest malware analyzers. In Proceedings of the Fourth European Workshop on System Security, EUROSEC 11, pages 3:13:6, New York, NY, USA, 2011. ACM. [47] Artem Dinaburg, Paul Royal, Monirul Sharif, and Wenke Lee. Ether: malware analysis via hardware virtualization extensions. In Proceedings of the 15th ACM conference on Computer and communications security, CCS 08, pages 5162, New York, NY, USA, 2008. ACM. [48] Tom Liston and Ed Skoudis. On the Cutting Edge: Thwarting Virtual Machine Detection., 2006. http://handlers.sans.org/tliston/ ThwartingVMDetection\_Liston\_Skoudis.pdf.

[49] Danny Quist and Val Smith. Detecting the Presence of Virtual Machines Using the Local Data Table, 2006. http://www.offensivecomputing.net/ files/active/0/vm.pdf. [50] Mendel Rosenblum. The Reincarnation of Virtual Machines. Queue, 2:3440, July 2004. [51] Microsoft Portable Executable and Common Object File Format Specication. http://www.microsoft.com/whdc/system/platform/firmware/ PECOFF.mspx. [52] Mark E. Russinovich and David A. Solomon. Microsoft Windows Internals, Fourth Edition: Microsoft Windows Server(TM) 2003, Windows XP, and Windows 2000 (Pro-Developer). Microsoft Press, Redmond, WA, USA, 2004. [53] Carsten Willems, Thorsten Holz, and Felix Freiling. Toward Automated Dynamic Malware Analysis Using CWSandbox. IEEE Security and Privacy, 5(2):3239, March 2007. [54] CWSandbox :: Behavior-based Malware Analysis, Julho 2011. mwanalysis.org/. http://

[55] Cuckoo Sandbox - Automated Malware Analysis System, Maro 2011. http: //www.cuckoobox.org/. [56] JoeBox, Julho 2011. http://www.joesecurity.org/. [57] Anubis - Analyzing Unknown Binaries, Maro 2011. iseclab.org/. [58] CaptureBat, Maro 2011. CaptureBAT. http://anubis.

http://www.honeynet.org/project/

[59] Greg Hoglund and Jamie Butler. Rootkits: Subverting the Windows Kernel. Addison-Wesley Professional, 2005. [60] Thomas Raffetseder, Christopher Krugel, and Engin Kirda. Detecting System Emulators. In ISC, pages 118, 2007. [61] Bill Blunden. The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System. Jones and Bartlett Publishers, Inc., USA, 2009. [62] Holy Father. Hooking Windows API-Technics of Hooking API Functions on Windows, 2004. [63] Fabrice Bellard. Qemu, a fast and portable dynamic translator. In Proceedings of the annual conference on USENIX Annual Technical Conference, ATEC 05, pages 4141, Berkeley, CA, USA, 2005. USENIX Association. [64] Ulrich Bayer, Christopher Kruegel, and Engin Kirda. TTanalyze: A Tool for Analyzing Malware, 2006.

[65] M. Cova, C. Kruegel, and G. Vigna. Detection and analysis of drive-by-download attacks and malicious javascript code. In Proceedings of the 19th international conference on World wide web, WWW 10, pages 281290, New York, NY, USA, 2010. ACM. [66] J. Nazario. Phoneyc: A virtual client honeypot. In Proceedings of the 2nd USENIX conference on Large-scale exploits and emergent threats: botnets, spyware, worms, and more, pages 66. USENIX Association, 2009. [67] C. Seifert and R. Steenson. Capture - honeypot client (capture-hpc), 2006. [68] Vmware, Julho 2011. http://www.vmware.com/. [69] Min Gyung Kang, Heng Yin, Steve Hanna, Stephen McCamant, and Dawn Song. Emulating emulation-resistant malware. In Proceedings of the 1st ACM workshop on Virtual machine security, VMSec 09, pages 1122, New York, NY, USA, 2009. ACM.