Aquando - Montra de Projetos de Informática
Transcrição
Aquando - Montra de Projetos de Informática
Detecção de Botnets Pedro Ferreira nº-21307 Trabalho realizado sob a orientação de Nuno Gonçalves Rodrigues Engenharia Informática 2012/2013 i ii Detecção de Botnets Relatório da UC de Projeto Licenciatura em Engenharia Informática Escola Superior de Tecnologia e Gestão Pedro Ferreira 2012/2013 iii iv A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. v vi Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projeto. ___________________________________________ Nuno Gonçalves Rodrigues Orientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projeto. ___________________________________________ Arguente Aceite para avaliação da UC de Projeto vii viii Dedicatória Dedico este trabalho à minha família, principalmente aos meus pais, que sempre me apoiaram e que com esforço, me permitiram condições para conseguir terminar o curso. A eles um muito obrigado pela paciência e pelo esforço que tiveram, para que pudesse cumprir o sonho de ser Engenheiro Informático. Á minha namorada, que sempre me apoiou e que teve paciência durante estes anos de academia. Aos meus amigos, que de uma forma ou de outra me ajudaram a realizar este trabalho e a concluir esta etapa da minha vida académica. A todos estes dedico este trabalho. ix x Agradecimentos Agradeço ao meu orientador, professor Nuno Rodrigues, pelo tempo dispensado para me ajudar neste trabalho, bem como a ajuda que me deu na orientação para a sua realização. Agradeço também, a todos os professores que tive ao longo das diferentes cadeiras, pelos conhecimentos transmitidos, para que pudesse realizar este trabalho. xi xii Resumo A ampliação dos mecanismos de defesa no combate a ataques informáticos, ocasionou a evolução dos programas maliciosos (malware), que se tornaram cada vez mais estruturados para aruptura destas novas barreiras de segurança. Atualmente, as redes de computadores têm vindo a ser afectadas por vários tipos de ataques informáticos, que deixam as suas máquinas infectadas, agindo de forma automatizada e sem consciência por parte dos utilizadores, formando aquilo que se designa por Botnet. O protocolo DNS constitui uma importante parte da infra-estrutura da Internet, fornecendo um serviço que se tornou essencial ao longo dos anos. A sua disponibilidade é crucial para o bom andamento de quase todos os serviços da Internet. Após uma contextualização sobre os diferentes tipos de ataques que um computador está sujeito, e os diferentes tipos de botnets existentes, este trabalho propõe um sistema de análise do tráfego DNS para detectar hosts infectados por malware. Palavras-chave: Ameaças, ataques, botnet, DNS, blacklist, domain-flux, malware xiii xiv Abstract The expansion of the defense mechanisms to combat cyber attacks, led to the evolution of malicious software (malware), which have become increasingly structured to break these new safety barriers. Today, computer networks have been affected by various types of cyber attacks that leave their infected machines, automated and acting without awareness by users, forming what is known as Botnet.The DNS protocol is an important part of the infrastructure of the Internet, providing a service that has become essential over the years. Their availability is crucial to the smooth running of almost all Internet services. After an on the different types of attacks that a computer is subject, and the different types of existing botnets, this paper proposes a system for analysis of DNS traffic to detect hosts infected by malware. Keywords: Threats, attacks, botnet, DNS, blacklist, domain-flux, malware xv xvi Conteúdo Capitulo 1 .................................................................................................................................. 1 1 Introdução .......................................................................................................................... 1 1.1 Enquadramento ............................................................................................................ 1 1.2 Objectivos .................................................................................................................... 2 1.3 Organização do Trabalho............................................................................................. 2 Capitulo 2 .................................................................................................................................. 5 2 Segurança de Rede e Botnets ............................................................................................ 5 2.1 Vulnerabilidades, Ameaças e Ataques ........................................................................ 5 2.1.1 Ameaças e ataques ............................................................................................... 6 2.1.2 Motivações do atacante ........................................................................................ 6 2.1.3 Definição de Malware .......................................................................................... 7 2.2 Estado de arte na detecção de Botnets ....................................................................... 13 2.2.1 Arquitectura de uma Botnet ............................................................................... 14 2.2.2 Botmaster ........................................................................................................... 14 2.2.3 Servidor C&C ..................................................................................................... 14 2.2.4 Bot ou zombie .................................................................................................... 19 2.3 Ciclo de vida das Botnets .......................................................................................... 19 2.4 O que as Botnets podem causar? ............................................................................... 21 2.4.1 Ataques de DDoS ............................................................................................... 22 2.4.2 SPAM ................................................................................................................. 23 2.4.3 Sniffing e Keylogging ........................................................................................ 23 2.4.4 Pirataria .............................................................................................................. 24 2.5 Detecção de Botnets .................................................................................................. 24 2.5.1 Detecção baseada em assinaturas ....................................................................... 25 2.5.2 Anomalias........................................................................................................... 25 2.5.3 Detecção baseada em mineração ........................................................................ 26 2.5.4 Detecção baseado em logs de DNS ................................................................... 27 Capitulo 3 ................................................................................................................................ 29 3 Botnets e análise do trafego DNS ................................................................................... 29 3.1 Sistema de Domínio de Nomes ................................................................................. 29 Figura 13 – Hierarquia do sistema DNS ............................................................................ 30 3.1.1 Estrutura hierárquica do DNS ............................................................................ 30 3.1.2 Mensagens DNS ................................................................................................. 32 3.2 Monitorização do tráfego DNS.................................................................................. 35 3.3 Técnicas de Fast-flux e Domain-flux ........................................................................ 38 3.4 Trabalhos relacionados .............................................................................................. 44 xvii Capitulo 4 ................................................................................................................................ 47 4 Implementação de um sistema de detecção de Botnets com base na análise de logs DNS .......................................................................................................................................... 47 4.1 Arquitectura do sistema ............................................................................................. 47 4.1.1 Linguagem de programação e IDE’s usadas ...................................................... 48 4.1.2 Descrição genérica da aplicação ........................................................................ 49 4.2 Modelação ................................................................................................................. 50 4.2.1 Base de Dados .................................................................................................... 50 4.2.2 Diagrama de classes ........................................................................................... 52 4.3 Implementação e funcionalidades ............................................................................. 53 4.3.1 Funcionalidades .................................................................................................. 53 4.4 Testes e Resultados .................................................................................................... 56 Capitulo 5 ................................................................................................................................ 59 5 Conclusões e Trabalhos Futuros .................................................................................... 59 5.1 Trabalhos futuros ....................................................................................................... 60 Bibliografia ............................................................................................................................. 61 xviii Lista de Figuras Figura 1– Exemplo de botnet ................................................................................................ 13 Figura 2– Arquitectura de uma botnet ................................................................................ 14 Figura 3– Arquitectura de uma botnet de modelo centralizado ........................................ 15 Figura 4– Exemplo de um ataque ordenado pelo botmaster ............................................. 18 Figura 5– Exemplo de uma botnet P2P ............................................................................... 19 Figura 6– Ciclo de vida de uma botnet ................................................................................. 20 Figura 7– Botnet pronta com 3 bots ..................................................................................... 22 Figura 8– Atacante manda ordem de ataque para bots ..................................................... 22 Figura 9– Ataque DDoS ao alvo ............................................................................................ 23 Figura 10– Propagação de uma botnet ................................................................................. 27 Figura 11– Hieraquia do sistema DNS ................................................................................. 30 Figura 12– Formato de Mensagem DNS .............................................................................. 32 Figura 13– Estrutura de resource record ............................................................................ 33 Figura 14– Exemplo de uma mensagem DNS ...................................................................... 35 Figura 15– Diferenças entre DNS legitimo e de Botnet ...................................................... 37 Figura 16– ciclo de vida de uma solicitação web numa rede single-flux, comparada com a de um servidor normal ........................................................................................................ 40 Figura 17– Exemplo de resultados de um comando "dig" ................................................. 41 Figura 18– Difenrença entre single-flux e double-flux ....................................................... 42 Figura 19– Exemplo de domain-flux .................................................................................... 43 Figura 20– Arquitectura da aplicação a implementar ........................................................ 47 Figura 21– Base de daos do sistema ...................................................................................... 51 Figura 22– Diagrama de classesdo sistema ......................................................................... 52 Figura 23– Pagina inicial na primeira vez que utiliza programa ...................................... 53 Figura 24– Janela para análise e mostragem de resultados ............................................... 54 Figura 25– Janela para analisar um dominio ...................................................................... 55 Figura 26– Janela para poder ir ao menu blacklist ............................................................ 56 Figura 27– Exemplo de ficheiro de logs ............................................................................... 57 Figura 28– Output do ficheiro analisado ............................................................................. 58 xix 13 Capitulo 1 1 Introdução 1.1 Enquadramento Com o crescimento exponencial que as redes de computadores obtiveram nestas últimas duas décadas, nomeadamente com o boom da Internet, apareceram indivíduos que abusaram destas redes para fins menos lícitos. Estes hackers utilizam Botnets para lançar ataques de larga escala na Internet, assim como, para obter informações confidenciais dos hosts infectados da rede, normalmente designados por bots. Assim sendo, podemos dizer que uma Botnet é uma rede de computadores comprometidos, controlados por uma entidade designada por botmaster, que é responsável pela distribuição de código comprometido, de modo a angariar mais bots para a sua Botnet, sendo igualmente responsável pelas instruções enviadas aos bots de forma a estes poderem tomar as acções pretendidas. Contrastando com o comportamento típico do início de actividade dos hackers, em que normalmente gostavam apenas de mostrar as suas habilidades, hoje em dia a organização de uma Botnet é efectuada de modo a que se possam obter lucros monetários. Assim, um atacante que use a rede infectada pode distribuir spam, roubar contas de jogos, roubar números de cartões de crédito, praticar uma extorsão através da ameaça de ataques de DoS (denialof service), lançar ataques de phishing, scanning e espionagem. Esta capacidade de lançar ataques é atribuída ao número de hosts comprometidos que sejam controlados pelo botmaster, que podem ser na ordem das centenas ou milhares e que trabalhando em conjunto proporcionam ataques em maior escala. Segundo[39],“códigos BotNet executam quase todas as formas de malware, desde spywares para Downloaders, rootkits, spam e muito mais. Para ter um bom desempenho, os 1 “antídotos” devem proteger múltiplas camadas de segurança. A boa notícia é que essas camadas são surpreendentemente eficazes contra botnets.” 1.2 Objectivos O objectivo principal deste projecto é o de desenvolver uma aplicação informática que permita detectar automaticamente, a presença de computadores infectados por malware, através da análise do tráfego DNS. Com base nesse pressuposto, foi decidido implementar um sistema que analise um ficheiro de logs do servidor DNS, para detectar através do uso de uma blacklist e de querys anómalas, a presença de botnets. Assim, no âmbito deste trabalho pretende-se: Conhecer e analisar as vulnerabilidades, ameaças e ataques a que uma rede pode estar sujeita; Identificar e analisar possíveis abordagens e metodologias para detecção de botnets; Perceber a importância do protocolo DNS no uso da internet, bem como é composto e utilizado na rede; Analisar os logs de servidores de DNS e caracterizar os padrões de tráfego que possam identificar a presença de malware na rede; Desenvolver uma aplicação em C# que permita detectar automaticamente pedidos de DNS com origem em aplicações maldosas. 1.3 Organização do Trabalho Este trabalho é composto por 5 (cinco) capítulos, estruturados da seguinte forma: O 1º Capítulo apresenta o cenário que motivou a realização deste trabalho e identifica os objectivos propostos. No 2º Capítulo é apresentada uma visão geral sobre a Segurança Informática, baseando-se numa visão geral dos riscos, no perfil do atacante e nas suas motivações, 2 nas ameaças e tipos de ataques. É apresentado também a definição de botnet, assim como as estruturações de como é composta, os tipos que existem e os modos de detecção existentes, bem como uma breve descrição de cada. O 3º Capítulo centra-se no levantamento do estado da arte na detecção de botnets através da análise dos logs de um servidor DNS. É explicado o protocolo DNS tanto nas suas definições bem como no principio de funcionamento. São explicadas algumas técnicas de detecção de botnets através da análise do tráfego DNS e é ainda descrito um pequeno tópico sobre trabalhos já realizados sobre esta matéria. No 4º Capitulo é descrita a implementação do sistema para detecção debotnets. É explicada a arquitectura do sistema bem como a sua modelação e funcionalidades. São expostas as problemáticas da implementação bem como as decisões que levaram a que a aplicação assim fosse feita. Finalmente são expostos alguns testes e resultados obtidos, para verificação da funcionalidade do sistema. E por último, no 5º Capítulo são apresentadas as considerações finais, possíveis ideias de continuidade deste trabalho bem como as contribuições do mesmo. 3 4 Capitulo 2 2 Segurança de Rede e Botnets Um “ataque informático” pode ser considerado como a exploração de uma falha num sistema informático, ao nível do softwaredo mesmo, para atingir determinados objectivos que são quase sempre de acção danosa e prejudicial ao sistema atacado. Na Internet são diários os tipos de ataques a que somos sujeitos e para isso basta um simples click. Os ataques são normalmente feitos a partir de máquinas infectadas, ou seja, funcionam como contágio como se de uma doença se tratasse. As máquinas são normalmente infectadas por malware, que provoca os ataques, esses claramente sem consentimento e conhecimento do utilizador. Um utilizador da internet tem que estar sempre alerta contra possíveis ameaças, muitas vezes mesmo ao receber ficheiros de conhecidos nossos[1]. 2.1 Vulnerabilidades, Ameaças e Ataques Uma vulnerabilidade é definida como uma condição que, quando explorada por um atacante, pode resultar numa violação de segurança. Exemplos de vulnerabilidades são falhas no projeto, na implementação ou na configuração de programas, serviços ou equipamentos de rede. Um ataque de exploração de vulnerabilidades ocorre quando um atacante, aproveitandose de uma vulnerabilidade, tenta executar ações maldosas, como invadir um sistema, aceder a informações confidenciais, disparar ataques contra outros computadores ou tornar um serviço inacessível, etc. 5 2.1.1 Ameaças e ataques Uma vulnerabilidade pode transformar-se numa ameaça, que pode ser explorada por agentes agressores para se transformarem num ataque. Um ataque consiste numa possível violação de um sistema computacional e pode ser acidental ou intencional. Um ataque acidental é aquele que não foi planeado. Pode ser, por exemplo, uma falha no hardware ou no software. Já um ataque intencional, como o nome diz, está associado à intencionalidade premeditada. Pode ser desde uma monitorização não autorizada do sistema, até a ataques sofisticados como aqueles realizados pelos hackers. Algumas das principais ameaças e ataques aos sistemas nas redes de computadores envolvem destruição de informações ou recursos, modificação ou deturpação da informação, roubo, remoção ou perda de informação, revelação de informações confidenciais ou não, chegando até a paralisação dos serviços de rede. Um ataque ocorre quando uma ameaça intencional é realizada. Os ataques ocorrem por motivos diversos. Variam desde a pura curiosidade, passando pelo interesse em adquirir maior conhecimento sobre sistemas, até ao extremo, envolvendo ganhos financeiros, extorsão, etc. Quando isso acontece, a notícia da invasão é proporcional à fama de quem a sofreu e normalmente representa um desastre em termos de repercussão pública. 2.1.2 Motivações do atacante Ataques costumam ocorrer na Internet com diversos objectivos, visando diferentes alvos e usando variadas técnicas. Qualquer serviço, computador ou rede que seja acessível via Internet pode ser alvo de um ataque, assim como qualquer computador com acesso à Internet pode participar num ataque. Os motivos que levam os atacantes a desferir ataques na Internet são bastante diversos, variando da simples diversão até a realização de ações criminosas. Alguns exemplos são: 6 Demonstração de poder: mostrar a uma empresa que ela pode ser invadida ou ter os serviços suspensos e, assim, tentar vender serviços ou chantageá-la para que o ataque não ocorra novamente. Prestígio: vangloriar-se, perante outros atacantes, por ter conseguido invadir computadores, tornar serviços inacessíveis ou desfigurar sites considerados visados ou difíceis de serem atacados; disputar com outros atacantes ou grupos de atacantes para revelar quem consegue realizar o maior número de ataques ou ser o primeiro a conseguir atingir um determinado alvo. Motivações financeiras: utilizar informações confidenciais de utilizadores para aplicar golpes nas suas contas. Motivações ideológicas: tornar inacessível ou invadir sites que divulguem conteúdo contrário à opinião do atacante; divulgar mensagens de apoio ou contrárias a uma determinada ideologia. Motivações comerciais: tornar inacessível ou invadir sites e computadores de empresas concorrentes, para tentar impedir o acesso dos clientes ou comprometer a reputação destas empresas. 2.1.3 Definição de Malware Malware ou software malicioso, é qualquer tipo de software que se instala numa máquina sem a permissão do proprietário e realiza uma série de acções que podem ir apenas de irritar o utilizador (como o pop-up das publicidades), até causar graves e sérios danos ao seu hospedeiro (roubar identidades, senhas, impossibilitar segurança, eliminardados, entre outros). É difícil caracterizar todos estes programas ilegais, pois a sua definição varía de autor para autor. Alguns autores dividem em três grupos: malware, crimeware e grayware. Outros, usam apenas dois grupos principais: o grayware e malware, que inclui o crimeware. Tomando a última abordagem em consideração, o primeiro grupo pode ser classificado como todas as aplicações que se comportam de uma forma irritante ou indesejável, reduzindo o desempenho do computador, pop-up, alguma publicidade extra ou, simplesmente, perturbar o utilizador. No entanto, estes problemas são menos graves ou incómodos que malware, que é 7 orientado para danificar o computador e roubar dados pessoais ou confidenciais, entre outras acções maliciosas. Infelizmente, a maior parte do ficheiro é desenvolvido para realizar actividades ilegais. Malwares recentes já não sãodesenvolvidos para ser intrusivos ou danificar o computador, em vez disso, são projectados para ser de perfil baixo, por isso todas as suas actividades podem continuar sob o radar. Existem várias categorias ou tipos de malware, desde a forma mais conhecida - vírus - ouwabbits, o tipo mais raro de malware. Como existem vários tipos e nomes de malware, é complicado para definir uma barreira entre uma e outra definição. Na sequência do texto, são descritas algumas das categorias e tipos de malware, dando uma breve visão geral. 2.1.3.1 Vírus Vírus são programas ou segmentos de código que são instalados/copiados para um computador sem que o utilizador tenha consentido ou conhecimento e que podem alterar o normal funcionamento do computador assim como as restantes aplicações e tarefas do mesmo[1]. Os vírus podem-se espalhar através do uso da Internet, por exemplo, fazendo o download e instalação de programas maliciosos que possam intencionalmente “instalar” um vírus assim como até mesmo clicando apenas em determinados sites, abertura de ficheiros ou programas infectados, por e-mail ou partilha de discos[2]. 2.1.3.2 Trojans O Cavalo de Tróia ou Trojan Horse é um tipo de software malicioso que pode entrar num computador disfarçado de um programa comum e legítimo. Tem como finalidade possibilitar a abertura de uma porta de entrada, de forma que utilizadores malintencionados possam invadir o PC. O invasor pode realizar tarefas simples como ter controlo sobre o rato ou teclado até a utilização do IP da máquina infectada como ponte para outros ataques. Com o crescimento da Internet, e com a facilidade com que é possível criar um trojan, faz com que seja um perigo diariamente, porque não depende de falhas do sistema. É muito difícil detectar, o que faz com que por vezes uma simples distracção do utilizador ao 8 instalar um programa duvidoso ou mesmo abrir um ficheiro duvidoso resulte na infecção do computador[3,4]. 2.1.3.3 Adware Adwares são programas indesejáveis que exibem publicidade e anúncios sem a autorização do utilizador tornando o computador mais lento assim como a ligação à rede. Normalmente são associados a spyware porque são semelhantes na sua infecção e remoção. Alguns adwares assumem características de spyware, uma vez que podem transmitir informações sobre o utilizador para terceiros sem a autorização, e por vezes enviam spam para as listas de contacto do e-mail do utilizador. Com um grande crescimento e desenvolvimento dos adwares, este começaram a ter capacidade de monitorizar a actividade e comportamentos dos utilizadores na Internet, podendo mostrar a publicidade mais “correcta” para cada utilizador, podendo fornecer esses comportamentos e hábitos a certos site[5,6]. 2.1.3.4 Spyware Spywares são programas espiões, isto é, são programas automáticos, em que a sua finalidade é obter informações sobre uma ou mais actividades realizadas num computador e transmite essa informação a uma entidade externa na Internet, sem o conhecimento ou consentimento do utilizador. No entanto, isto não significa que todos os spywares sejam programas “maus”. É verdade que existem muitos spywares criados para actividades ilícitas, criados para obter informações pessoais e, com elas, praticar actividades ilegais. No entanto, ainda assim, existem, por exemplo, empresas de publicidade que utilizam spywares para, de forma legal, obter informações sobre os seus clientes, de forma a oferecer ao cliente um específico anúncio. Os spywares são diferentes dos cavalos de Tróia por não terem como objectivo que o sistema do utilizador seja dominado ou manipulado por uma entidade externa[7,8,9]. 9 2.1.3.5 Phishing O Phishing é um tipo de ataque relativamente fácil de executar mas algo difícil de interpretar logo à primeira vista, pois este método consiste no envio por parte do atacante de um engodo. O engodo mais recorrente e se calhar até cada um de nós já foi posto à prova neste ataque, consiste no envio de um e-mail muitas vezes com um link (endereço) para o site do nosso banco ou outra entidade que possivelmente somos filiados com o intuito de nos ludibriar, levando-nos a preencher com os nossos dados confidenciais e assim posteriormente terem acesso aos nossos dados[1]. 2.1.3.6 Rootkit Rootkit é uma aplicação (ou conjunto de aplicações) que, utilizando funções do sistema operativo, oculta a sua presença ou a presença de outros malwares, sendo que é por vezes quase indetectável por programas anti-malware comuns. Os rootkits podem ser bons ou maus. Os rootkits correctos podem ser parte integrante ou ser instalados como uma aplicação legitima. Por essa razão é necessário ter atenção nos possíveis resultados de um anti-rootkit. Uma máquina pode ser infectada com um rootkit de várias formas, sendo o mais comum através de algum cavalo de tróia ou até mesmo de um anexo suspeito de e-mail. Na navegação na Internet, por vezes pode resultar na infecção de um rootkit, instalando plug-ins maliciosos, mesmo que por vezes estes pareçam legítimos. Por vezes basta apenas um click para haver uma infecção do computador, sendo que também podem automaticamente nos serem roubadas informações pessoais e dar acesso a invasores maliciosos [10,11,12]. 2.1.3.7 Dialers É um género de software que é instalado no computador e que utiliza a ligação com a linha telefónica para ligar para um certo número de taxação especial, causando assim enormes aumentos nos pagamentos da conta telefónica. Hoje em dia, os utilizadores que tenham acesso à Internet por banda larga estão protegidos contra este malware, no 10 entanto os utilizadores com Internetdial-up por modem podem ainda ser atacados. Alguns dialers ligam para Fornecedores de Acesso à Internet (ISPs) e foram desenhados para fornecer assistência genuína [13]. 2.1.3.8 Backdoors Backdoor é um programa de controlo remoto que permite a um invasor ter acesso e controlar um computador através da Internet. Esta invasão surge através de uma falha de segurança que pode existir num programa ou mesmo no sistema operativo e permite que a mesma seja possível, de forma que o invasor possa ter acesso total da máquina. Através dessa falha de segurança o computador poderá ser acedido remotamente, dando ao invasor controlo total sobre a máquina, desde ver/modificar/apagar ficheiros, a instalação de programas, desligar a máquina, conectar a outros computadores entre outros[14,15]. 2.1.3.9 Spam O termo SPAM é utilizado para designar todo o correio electrónico não-solicitado pelo utilizador e enviado em massa. Entende-se por não-solicitado quando uma mensagem de correio electrónico enviada para alguém sem autorização/consentimento prévio, enquanto enviada em massa corresponde ao envio para um grande número de destinatários à mesma mensagem. As newsletters de subscrição e comunicações a clientes são dois exemplos de mensagens enviadas em massa que não são SPAM, isto se considerarmos que os clientes deram autorização para que lhes seja enviado[17,18]. 2.1.3.10 Keylogger Keylogger é um programa (spyware) que tem como finalidade guardar informação, de registar tudo o que é digitado, tendo como principal motivação guardar passwords, números de cartões de créditos, logins e afins. 11 Por vezes este tipo de programas pode ser usado por empresas para controlar os seus funcionários, no entanto, quase sempre é usado para fins maliciosos. Durante a execução de um keylogger, sempre que o utilizador prime uma tecla, o keylogger edita e guarda o LOG de dados, sendo que aos olhos mais atentos pode ser perceptível um ligeiro atraso entre o tempo que se digita e o tempo em que aparece no ecrã a tecla digitada, sendo que, mesmo assim, poderão ser apenas fracções de décimas de segundos, dependendo claramente da capacidade de processamento das máquinas. Com processadores de alta velocidade será quase impossível detectar esse atraso entre os dispositivos de Entrada e Saída[19,20]. 2.1.3.11 Ransonware O Ransomware é uma ameaça informática que nos últimos tempos tem vindo a ser uma prática muito comum. O Ransomware, também conhecidos como “sequestradores digitais”, são trojans que após invadirem as máquinas impedem o acesso a várias funcionalidades e até documentos. Estes ataques podem ser de tal forma eficientes que por vezes podem codificar/encriptar os dados, recorrendo a algoritmos bastante eficientes, e para voltar a aceder ou voltar a ter acesso a esses dados, o invasor pede ao utilizador um montante monetário para que possa ter de volta todos os seus dados, ficheiros, etc. Em Portugal, o exemplo de Ransomware com mais impacto social foi uma burla informática que usou o nome da PSP e tinha como objectivo principal extorquir dinheiro aos utilizadores. As vítimas recebiam um email supostamente da PSP, onde era referido que este tinha acedido a “sites de conteúdo pornográfico, pedofilia, violência sobre menores, pelo que é condenado a pagar 100 euros”. Desta forma o utilizador é intimidado a proceder ao pagamento de 100€ para um NIB, evitando assim o bloqueio do computador, sendo que, o email não era da PSP, mas sim de um email “parecido” com o que poderia ser da PSP[21,22]. 12 2.2 Estado de arte na detecção de Botnets Hoje em dia as Botnets são consideradas as maiores e mais perigosas ameaças da Web. Provocam danos que podem ir desde o roubo de informações a infecções de malware com o objetivo de praticar fraude e outros crimes. Mas, o que é realmente uma Botnet? Uma botneté composta por um conjunto de máquinas comprometidas (bots) que podem ser controladas remotamente por uma entidade denominada botmaster. No fundo, uma rede de bots é um poderoso exército adormecido e às mãos de alguém que pode (e está!) mal-intencionado, podendo causar dano a qualquer altura, não só a computadores mas à própria rede. As acções desempenhadas pelas botnets, em geral, são prejudiciais à estrutura da Internet, tais como ataque de negação de serviço distribuído (DDoS), envio de spam, distribuição de malwaree roubo de informações. Estima-se que actualmente o número de máquinas infectadas (bots) na Internet seja superior a dezenas de milhões. A principal diferença em relação a outros tipos de malware é que, as Botnets possuem um tráfego característico entre a máquina infectada e um servidor de controlo (C&C). O grande valor de botnets é a capacidade de fornecer anonimato através da utilização de um comando de multicamadas e controlo de arquitetura (C&C). Além disso, os bots individuais não são fisicamente propriedade do botmaster, e podem estar localizados em vários locais em todo o mundo. Diferenças no tempo, zonas, línguas e leis tornam difícil investigar actividades maliciosas de botnets através das fronteiras internacionais. Estas característicastornam asbotnets uma ferramenta atraente para os cibercriminosos, e de facto é uma grande ameaça contra a segurança cibernética. Figura 1 – Exemplo de uma botnet 13 2.2.1 Arquitectura de uma Botnet A organização arquitectural da Botnet é composta por 3 (três) elementos básicos: O Botmaster, o Servidor de Comando e Controlo, e o Cliente (Bot). Esta arquitectura global da Botnet é apresentada na Figura 2. Figura2 -Arquitetura da Botnet 2.2.2 Botmaster Denomina-se de Botmaster o controlador humano da Botnet. Ele opera controlando remotamente os Bots, através de comandos enviados ao Servidor C&C, que estabelece a comunicação entre eles. Geralmente a Botnet é controlada pelo seu criador, mas muitas Botnets são criadas para comercialização e alugadas para acções criminosas [23]. 2.2.3 Servidor C&C A parte principal da Botnet é o servidor de C&C, responsável pela comunicação entre o Botmaster e os Bots, através do encaminhamento de comandos para a execução de acções. De acordo com a sua estrutura de comando e controlo (C&C) as Botnets podem ser baseadas em IRC, baseadas em HTTP, ou baseadas emtráfego Peer to Peer (P2P). Botnets P2P usam um protocolo P2P para evitar um ponto único de falha. Além disso, 14 Botnets P2P são mais difíceis de localizar e de desligar o seu servidor C&C. Botnets mais tradicionais são baseadas no protocolo Internet Relay Chat (IRC), com comando centralizado e mecanismo de controlo [23]. Em síntese, há duas grandes topologias de redesde Bots: A rede centralizada com base no IRC ou no protocolo HTTP; A rede descentralizada com base em protocolos P2P. 2.2.3.1 Topologia Centralizada Nesta topologia, um ponto central é responsável pela troca de comandos entre o Botmaster e os Clientes Bots. Neste modelo, o Botmaster escolhe um anfitrião, normalmente um computador com acesso a banda larga, para ser o ponto central, ou seja, o Servidor deC&C, que monitoriza o status dos Bots e envia as instruções dadas pelo proprietário. Este servidor C&C executa determinados serviços de rede como IRC ou HTTP. Esta topologia é a mais comum, devido à estrutura simples, facilidade de gestão e alta velocidade. A principal vantagem desta topologia é a baixa latência de mensagens utilizadas pelo Botmaster para a realização de ataques pelos Bots, uma vez que todas as conexões acontecem através do Servidor C&C. A desvantagem deste modelo é que o Servidor C&C é o ponto crítico. Se alguém conseguir descobrir a sua acção, pode eliminá-lo e assim a Botnet inteira será inútil e ineficaz. A Figura 3 mostra a arquitectura de comunicação de base para um modelo centralizado. Figura 3 – Arquitectura de uma botnet de modelo centralizado 15 Os protocolos IRC e HTTP são dois protocolos comuns utilizados por Servidores C&C para comunicação neste tipo de topologia [23]. 2.2.3.1.1 Botnets baseadas no protocolo IRC Tendo em conta o servidor de Controlo (C&C Server), e sabendo que este é um ponto fulcral do sistema de uma Botnet, o mesmo pode operar sobre diferentes tipologias de rede e usar diferentes mecanismos de comunicação, como os protocolos IRC e HTTP. No início da expansão das Botnets o protocolo IRC foi o mais usado, devido ao facto de ser mais simples de implementar e por uma questão de conveniência por parte dos hackers, pois era também bastante popular. Este protocolo foi inicialmente desenhado para conferências, no sentido de permitir uma comunicação em tempo real entre utilizadores. Uma rede IRC podia conter um ou vários servidores que trocavam informações entre si. De forma sucinta, numa rede deste tipo, um utilizador regista-se com um identificador único na rede e junta-se a um canal existente de forma a debater um determinado assunto com outros utilizadores. Ao analisarmos uma Botnet baseada em IRC deve-se ter em conta o tópico do canal, pois ele pode ser o meio de divulgar comandos aos bots. Uma sequência típica de acções por parte de um zombie numa Botnet IRC é a seguinte: juntar-se ao canal, executar a instrução do tópico do canal, manter a comunicação em aberto e escutar outros comandos do Botmaster. Grande parte do desenvolvimento de algoritmos de detecção de Botnets IRC baseou-se na análise dos identificadores únicos, nicknames com que os zombies se ligam ao canal IRC de comando e na análise de strings características da execução de comandos típicos de Botnets[24]. 2.2.3.1.2 Botnets baseadas no protocolo HTTP Actualmente o desenvolvimento de Botnets passa em parte, pelo desenvolvimento de bots HTTP, sendo que por volta de Abril de 2008 investigadores da empresa de segurança Damballa descobriram que a BotnetKraken (também conhecida por Bobax) 16 infectou 50 empresas da lista Fortune 500, que apresenta as melhores 500 empresas a nível mundial, e conseguiu atingir um número de 400.000 máquinas infectadas. Os investigadores estimaram também que esta BotnetKraken conseguia enviar cerca de 9 milhões de mensagens de spam por dia. Os modelos actuais de detecção de Botnets baseiam-se na análise de queries DNS que são enviadas dos bots para o servidor DNS quando os bots se ligam a um servidor C&C, ou atacam determinado alvo. Cada vez mais estes modelos de detecção irão apresentar mais falhas pois as Botnets estão a ser desenvolvidas de forma a diminuir a sua interacção com os servidores DNS. Tipicamente as Botnets HTTP usam o protocolo HTTP, que é bastante diferente do comportamento de um bot IRC que mantém uma ligação e que não faz novas ligações após a primeira ligação ao servidor de comando. Uma Botnet HTTP normalmente não mantém uma ligação permanente ao servidor C&C. Em vez disso, os bots contactam normalmente o servidor em intervalos regulares que habitualmente são passiveis de serem configurados pelo Botmaster. Outra direcção que o estudo da detecção de Botnets HTTP está a seguir é o método de correlação entre grupos, em que se observam as semelhanças na actividade de rede entre dois ou mais bots para verificar se são da mesma Botnet. No entanto, este método parte da premissa que haja pelo menos dois hosts infectados pelo mesmo bot na rede monitorizada. É óbvio que os criadores das Botnets baseadas no protocolo HTTP tentam esconder o tráfego gerado pelas mesmas, no tráfego legítimo de um host comprometido. Os investigadores do grupo de segurança TeamCymru descobriram que 46% dos servidores de C&C usam um domínio próprio e que estes têm somente o objectivo de alojar um servidor de comando de uma Botnet HTTP. Para melhorar a eficácia das Botnets de topologia centralizada, muitos controladores utilizam vários servidores para a realização dos ataques. Assim, a Botnet terá maior abrangência e diminuição de carga de controlo dos Servidores C&C. Esta arquitectura de múltiplos servidores é descrita na figura4 [23,24]. 2.2.3.2 Topologia Descentralizada ou distribuída Neste tipo de topologia, os bots não se comunicam com o servidor C&C central, mas com outros Bots. Esta abordagem aumenta a confiabilidade da botnet, mas complica a gestão e reduz a velocidade de acção, devido a inúmeras trocas de mensagens pelos 17 Botspara a realização dos ataques. Um exemplo deste tipo de topologia são as Botnets P2P [24]. Figura 4 –Exemplo de um ataque ordenado pelo botmaster 2.2.3.2.1 Botnets P2P As Botnets estruturadas numa rede P2P podem ser consideradas uma evolução natural por parte dos Botmasters, pois estes notaram que o controlo de uma vasta rede de máquinas infectadas (bots) iria atrair atenções por parte das autoridades competentes no combate aos crimes informáticos. Controlar uma Botnet de enorme tamanho sem uma estrutura de rede adequada não seria uma escolha sensata pois os ISP, e mais em concreto os agentes da autoridade, têm feito esforços cada vez maiores para derrubar as organizações criminosas que estão no controlo das maiores Botnets. Assim sendo, as redes P2P são o melhor exemplo de uma arquitectura distribuída, visto que no caso de um computador se desligar por ter sido desinfectado ou porque foi banido por parte do ISP, uma Botnet com uma estrutura centralizada iria perder de um modo mais perceptível funcionalidades. No entanto, no caso de uma Botnet numa rede distribuída, mesmo que exista a perca de um dos peers/bot da rede, os restantes irão reconstruir-se tentando ligar-se aos restantes peers existentes. Uma das desvantagens no uso de uma rede distribuída é o facto de serem mais lentas que uma rede centralizada e de não possuírem a capacidade de gerir um 18 grande número de bots. Mesmo assim, o Botmaster continua a poder ligar-se a um único sistema comprometido para controlar os bots[24]. Figura 5 – Exemplo de uma botnet P2P 2.2.4 Bot ou zombie É o computador ou dispositivo comprometido, controlado remotamente por um botmaster para a execução de algumas ordens através dos comandos recebidos. Depois que o código do malware for instalado no computador infectado, o computador tornarse um Bot ou Zombie. Os Bots normalmente propagam-se através da internet, a procura de computadores desprotegidos e vulneráveis para infectar. Quando encontram um computador desprotegido, infectam-no e depois enviam um relatório ao Botmaster [23]. 2.3 Ciclo de vida das Botnets Uma botnet típica pode ser criada e mantida em quatro fases: infecção inicial, injecção secundária, conexão, actualização/manutenção. Este ciclo de vida está representado na figura 6 [24, 25]. 19 Figura 6 – Ciclo de vida de uma botnet Infecção Inicial: Durante a fase de infecção inicial, o atacante, procura um alvo numa sub-rede que seja vulnerável e infecta as vítimas através de métodos de exploração diferentes, como por exemplo malware descarregado durante a visualização de páginasweb ou automaticamente através da visualização de um anexo de um email. Em redes sem fios, esta infecção pode ser facilitada pela estrutura deste tipo de rede, pois o ataque pode ser lançado directamente no dispositivo, sem necessidade de utilizar a estrutura da rede. Injecção secundaria: Após a infecção inicial, na fase de injecção secundária, as máquinas infectadas executam um script conhecido como shell-code. O Shellcode procura a imagem do binário da localização específica do bot actual via FTP, HTTP ou P2P. O binário instala-se na máquina de destino. Uma vez que o programa de bot está instalado, o computador transforma-se num "Zombie" e executa o código malicioso. Este procedimento ocorre em grupo, visto que, os Bots realizam as suas tarefas em conjunto. Após esta etapa, os Bots aguardam os comandos que serão enviados pelo Botmaster ao Servidor C&C. Conexão: Na fase de conexão, o programa cria um canal de comando e controle com o servidor (C&C), e liga-os. Após estabelecer ligação com o servidor de C&C, o zombie torna-se parte do exército botnet. Depois da ligação, as 20 actividades de comando e controle são iniciadas. O botmaster usa o canal C&C para enviar comandos para o seu exército bot. Programas bot recebem e executam comandos enviados pelo botmaster. O canal de C&C permite que o botmaster controle remotamente as acções de um grande número de bots para conduzir várias actividades ilícitas. Actualização/Manutenção: A última fase é a de manter vivos e actualizados os bots. Nesta fase, os bots são ordenados a descarregar um binário actualizado. Os Botmasters podem precisar actualizar as suas botnets por diversas razões. Por exemplo, podem precisar actualizar o binário bot para evitar novas técnicas de detecção, ou podem ter a intenção de adicionar novas funcionalidades para seu exército bot. Além disso, por vezes, os binários actualizados movem os bots para servidores C&C diferentes. Este processo é chamado de migração e é muito útil para botmasters manterem as suas botnets vivas. Botmasters tentam manter as suas botnets invisíveis e portáteis usando Dynamic DNS (DDNS), que é um serviço de resolução que facilita actualizações frequentes e mudanças de servidores. Se as autoridades interromperem um servidor C&C num determinado endereço IP, o botmaster pode facilmente configurar outra instância do servidor C&C com o mesmo nome num endereço IP diferente. As mudanças dos endereços IP nos servidores C&C propagam-se quase imediatamente para os bots. Consequentemente os bots irão migrar para a nova localização do servidor C&C e vão continuar vivas [25]. 2.4 O que as Botnets podem causar? O uso possível para máquinas comprometidas depende somente da imaginação e perícias do atacante. Hackers e crackers beneficiam das botnets ganhando dinheiro, vendendo botnets ”de qualidade”, descobrindo senhas de bancos, vendendo listas de emails, etc.. Seguem-se, os tipos de ataques mais comuns: 21 2.4.1 Ataques de DDoS Um ataque do tipo DoS (Denialof Service - Negação de serviço) basicamente visa indisponibilizar os serviços oferecidos por algum servidor de rede, como Web, mail ou Domain Name Services (DNS). Indisponibilizar pode significar retirar totalmente o servidor de operação, ou apenas deixá-lo lento, ao ponto do cliente abandonar o serviço devido ao tempo de resposta. Um ataque DoS ou DDoS não implica que osite seja invadido. Como os sistemas comprometidos estão sob controlo externo, existe uma grande dificuldade do administrador do site atacado, responder ao DDoS.Na Figura 7, temos uma botnet formada com 3 máquinas bots (indicadas com oRobot) e um controlador (indicado com uma caveira) que está num servidorIRC. O servidor alvo é a máquina mais a direita[26]. Figura 7: Botnet pronta com 3 bots Figura 8: Atacante manda ordem de ataque para bots 22 Figura 9: Ataque de DDoS ao alvo. Na Figura8, o controlador envia o comando para que as suas máquinas controladas ataquem o servidor alvo. Na Figura 9, todas as máquinas fazem um ataque de negação de serviço DDoS, tentando deixar o servidor lento ou então tirá-lo do ar. Muitos hackers usam de botnets para fazerem ataques de DDoS e cobram por isso. Enquanto o servidor não pagar uma quantia X para o hacker, os ataques de DDoS continuam. 2.4.2 SPAM As Botnets são úteis para spammers. Elas podem, e são, usadas para coleccionar endereços de e-mails e para mandar spam para vários endereços funcionando da mesma maneira que o ataque de DDoS. Mensagens spam podem ser enviadas para a botnet (vários bots) e então, estes bots mandam a mensagem. O spammer permanece anónimo pois são as bots que enviam as mensagens. 2.4.3 Sniffing e Keylogging Bots são também efectivos para usar a arte de escuta (sniffing). Observandoo tráfego de dados pode-se conseguir muita informação. Este tipo de informação inclui hábitos do 23 utilizador, senhas, etc. O mesmo se aplica para keyloggin - capturar toda a informação digitada pelo utilizador (e-mails, senhas, conta de banco, etc...). 2.4.4 Pirataria Máquinas infectadas podem ser usadas como repositórios dinâmicos de material ilegal (software pirata, pornografia, etc.).Muitas outras aplicações podem ser usadas por botnets. Bots são somente ferramentas que sozinhas não fazem nada, mas que podem ser facilmente adaptadas para várias tarefas que requerem um grande número de máquinas controladas por alguém [25,26]. 2.5 Detecção de Botnets Apesar da longa presença de botnets maliciosas, poucos estudos formais examinam o problema botnet. Até à data, muito pouco se sabe sobre o comportamento malicioso das botnets. O Honeynet Project foi um dos pioneiro a fazer estudos do problema botnet. No entanto, os esforços estão em andamento para, quantificar o problema das botnets, detectar a presença debots nas redes, e as defesas contra ataques de design. A detecção de Botnets tem sido um tema de grande pesquisa nos últimos anos. Soluções diferentes têm sido propostas. Existem basicamente duas grandes abordagens para a detecção de botnets. Uma abordagem baseia-se na criação de honeynets. Muitos trabalhos discutem como utilizar Honeynets para monitoramento e medição de botnets. No entanto, as Honeynets são principalmente úteis para compreender a tecnologia e as características das botnets, mas não necessariamente para detectar a infecção. A outra abordagem para a detecção baseia-se no monitoramento e análise de tráfego da rede. Técnicas de detecção, baseadas em monitoramento de tráfego podem ser úteis para identificar a existência de botnets. Estas técnicas podem ser classificadas como sendo baseadas em assinatura, anomalia, monitorização baseada em DNS e baseada em mineração. 24 2.5.1 Detecção baseada em assinaturas O conhecimento de assinaturas sobre o comportamento das botnets é útil para a sua detecção. O sistema é baseado em modelos de detecção que são orientados ao simples facto de que um bot recebe comandos de um botmaster e ao qual é respondido ao pedido de forma característica. Com o estudo destes comportamentos cooperativos foram aparecendo novas ferramentas de detecção, entre elas o BotHunter que modelou a fase de infecção, recorrendo a um conjunto de comandos vagamente ordenados entre um host interno e diversas entidades exteriores e usou estes modelos de modo a comparar eventos suspeitos no aparecimento de infecções. OSnort é um sistema de detecção de intrusão (IDS), que monitoriza o tráfego da rede para encontrar sinais de invasão. Como a maioria dos sistemas IDS, o Snort é configurado com um conjunto de regras ou assinaturas para registar o tráfego que é considerado suspeito. No entanto, as técnicas de detecção baseadas em assinatura podem ser utilizados para detecção de botnets conhecidos mas não é um método útil para as que são desconhecidas [25]. 2.5.2 Anomalias A detecção baseada em técnicas de anomalia baseia-se na análise de várias anomalias na rede de tráfego, tais como alta latência de rede, grandes volumes de tráfego, ou tráfego em portas incomuns, e o comportamento incomum do sistema, que pode indicar presença de bots maliciosos na rede. Embora as técnicas de detecção de anomalias resolvam o problema de detectar botnets desconhecidas, os problemas deste método podem incluir a detecção de uma rede de IRC, que pode ser uma botnet, mas não foi usado ainda para ataques, portanto, existe sem anomalias. Para resolver isso, Binkley e Singh propuseram um algoritmo eficaz que combina, com base em detecção de anomalia TCP, IRC e estatísticas de mensagens de IRC, para criar um sistema que pode detectar claramente clientes de botnets. Este algoritmo também pode revelar servidores C&C. No entanto, a abordagem Binkley poderia ser facilmente derrotada usando simplesmente um código trivial para codificar os comandos de IRC. Em 2007, Karasaridiset al apresentou um algoritmo para detecção e caracterização de botnets usando análise passiva com base em dados de fluxo na camada de transporte. Este 25 algoritmo pode detectar comunicações criptografadas. Ela ajuda a quantificar o tamanho de botnets, identificar e caracterizar a sua actividade sem ingressar na botnet. Recentemente, Guet al. propuseram Botsniffer, que utiliza a detecção de anomalias na rede para identificar os canais C&C num local da área da rede. Botsniffer baseia-se na observação de que, os bots dentro da mesma rede, provavelmente demonstram uma sincronização muito forte nas suas respostas e actividades. Por isso, emprega algoritmos de análise de correlação para detectar correspondência espaço temporal do tráfego de rede com um nível muito baixo nas taxas de falsos positivos [25]. 2.5.3 Detecção baseada em mineração Uma técnica eficaz para a detecção de botnets é identificar o tráfego do servidor C&C. No entanto, o tráfego de C&C é difícil de detectar. Na verdade, as botnets utilizam protocolos normais para comunicações C&C, logo o tráfego é semelhante ao tráfego normal. Além disso, o tráfego de C&C não é de grande volume e não provoca alta latência de rede. Portanto, as técnicas baseadas em anomalia não são úteis para identificar o trafego C&C. Várias técnicas de mineração de dados, incluindo a aprendizagem de máquina, classificação e agrupamento podem ser usadas de forma eficiente para detectar o trafego C&C de uma botnet. Rishi, proposto em 2007, funciona principalmente com base na monitorização de tráfego passivo para suspeitos anormais apelidos de IRC, servidores de IRC, e portas incomuns do servidor. Eles usam análises n-grama e um sistema de pontuação para detectar bots, que utilizam canais de comunicação incomuns, que não são detectados pela intrusão clássica. No entanto, esta abordagem é bastante limitada, na medida em que o apelido IRC pode ser alterado para se assemelhar ao utilizador normal. Além disso, este método não possibilita detectar comunicação encriptada. Em 2008, Strayeret al. Propôs uma solução utilizando técnicas de aprendizagem automática, para a detecção de tráfego botnet. Eles mostraram que a evidência de comandos e de actividades de controlo podem ser extraídos a partir de características de fluxo usando análise de tráfego passiva. Eles adoptam um processo de dois estágios, que, primeiro distingue fluxos de IRC, e então identifica o trafego C&C da botnet e o tráfego de fluxos de IRC normais. Embora estas técnicas sejam eficazes para detectar algumas botnets, são específicas para botnets baseadas em IRC. Além disso, para uma análise precisa e detecção destas técnicas requer acesso à ao conteúdo. 26 Assim, não se pode detectar o trafego encriptado C&C. Masudet al. propôs uma robusta e eficaz técnica de detecção baseada na detecção de tráfego botnet, por ficheiros de log de mineração múltiplos. Eles apresentam uma correlação log múltipla para detecção do tráfego C&C. Eles classificam um fluxo inteiro para identificar o tráfego C&C botnet. Este método não impõe qualquer restrição ao protocolo de comunicação da botnet e, portanto, aplicável às Botnets IRC. Além disso, este método não requer acesso para o conteúdo de carga útil. Por isso, é eficaz mesmo se a carga C&C for criptografada ou não estiver disponível. Botminer é a abordagem mais recente que se aplica a técnicas de mineração de dados para a detecção de trafego C&C. Botminer é uma melhoria do Botsniffer. Este agrupa tráfego de comunicação semelhante e tráfego malicioso similar. Em seguida, executa correlação cruzada aglomerada, para identificar os hospedeiros que têm padrões de comunicação semelhantes e que tem padrões de actividade similares em ambas as partes. Botminer é uma avançada ferramenta de detecção de botnets que é independente do protocolo e estrutura botnet. Botminer pode detectar botnets do mundo real, incluindo Botnets com base em IRC, baseado em HTTP e baseado em P2P com muita baixa taxa de falsos positivos [25]. Figura 10 – propagação de uma botnet 2.5.4 Detecção baseado em logsde DNS Técnicas de detecção baseadas em DNS recorrem àsinformações de DNS geradas por umabotnet.Técnicas de detecção baseadas em DNS são semelhantes às técnicas de detecção de anomalias. Os bots normalmente iniciam conexão com o servidor C&C para obter comandos. A fim de ter acesso aos servidores C&C, os bots realizam 27 consultas DNS para localizar o servidor respectivo, cujo nome é registado por um serviço de DDNS. Assim, é possível detectar umabotnet através da monitorização e anomalias do tráfego DNS. Dado que este tipo de técnicas é o objectivo central do pressuposto trabalho, a sua descrição mais detalhada será efectuada no capítulo seguinte. 28 Capitulo 3 3 Botnets e análise do tráfego DNS 3.1 Sistema de Domínio de Nomes Ao falarmos de DNS, muitas vezes não é claro se nos estamosareferir ao Sistema de Domínio de Nomes ou ao Serviço de Domínio de Nomes. Apesar de estarem fortemente relacionados e serem interdependentes, as suas definições são distintas. O DNS (domain name system) forma um sistema sofisticado que define um protocolo aplicacional responsável por associar nomes de máquinas e endereços IP na Internet. O DNS é um exemplo de um sistema distribuído de proporções mundiais, já que é sob o seu sistema de resolução de nomes que a Internet inteira opera. O Sistema de Nomes de Domínio (DNS) é baseado num sistema hierárquico denomes, construído por uma base distribuída de máquinas, serviços, ou qualquer recurso conectado à Internet ou numa rede privada. Associa várias informações com nomes de domínios designados para cada uma das entidades participantes. Mais importante que isso, o DNS fornece um serviço que realiza a tradução de nomes de domínios (facilmente memorizáveis por utilizadores) para identificadores numéricos associados a equipamentos de rede, com o propósito de localizar e endereçar esses equipamentos no mundo inteiro. A vantagem de se utilizar este sistema deve-se ao facto de que os nomes são mais fáceis de memorizar, além de que, caso o endereço de rede mude, o serviço ou a máquina, ainda poderá ser encontrada pelo seu nome lógico, sem que o utilizador precise decorar um endereço novo. Uma analogia bastante utilizada para explicar comofunciona o DNS, é como se ele fosse uma "agenda telefónica"daInternet, 29 traduzindo nomes que são memorizados facilmente (nomes de domínio), por números (endereços IP). O Sistema de Domínio de Nomes também especifica como funcionatecnicamente este serviço de dados. Ele define o protocolo DNS, uma descrição detalhada das estruturas de dados utilizadas e as trocas de informação utilizadas no DNS, como parte da suíte de protocolos utilizados na Internet[27, 28,29]. Figura 11 – Hierarquia do sistema DNS 3.1.1 Estrutura hierárquica do DNS Como já referido, o DNS é um sistema de nomes de domínios hierárquico e distribuído, ou seja, um domínio (como .com) pode ser particionado em diversos subdomínios e assim por diante. Esses domínios podem ser representados por uma estrutura em árvore onde no topo se encontram os domínios de alto nível (top-leveldomains) que representam entidades genéricas (comerciais, governamentais, educacionais,etc.) e países, e na base ou folhas, os subdomínios que ligam os respectivos hosts ao nome hierárquico [29]. Cada domínio consiste em etiquetas de vários domínios separados por um “.". O domínio identifica um caminho a partir do nó raiz da hierarquia DNS, e denotado o mais à direita por “.”,até um nó que representa o domínio. Este nó contém um conjunto de informações associado ao nome de domínio de forma a coleccionar registos de recursos (RR’s). Por exemplo, um nome de domínio F.D.B.A. é um caminho do nó raiz 30 ao nó F. Este nó na árvore de DNS contém informações sobre o nome de domínio FDBA. A profundidade do nó de uma árvore de DNS é designado como nível de domínio, por exemplo, “A.” é um nome de domínio de nível superior (TLD), “B.A.” é um domínio de segundo nível, e assim por diante. O sistema DNS é dividido em várias zonas, repartindo o espaço de nomes de domínios entre nodos irmãos. Cada zona é responsável por um grupo de nodos, daí corresponder os seus nomes de domínio e informações associadas para essa zona é autoritário. Essa zona é identificada pelo nome de domínio do nó mais próximo do nó raiz. Cada zona tem um ou mais servidores de autoridade onde RR´s dos seus nomes de domínio são armazenados. Estes servidores oficiais completam o conhecimento dos nomes de domínio dentro da sua zona e servem esta informação quando solicitado. Os servidores oficiais ainda podem transmitir a sua autoridade sobre parte da zona para outros servidores oficiais. Este modelo de DNS hierárquico faz o maior sistema distribuído da Internet. Este modelo e mecanismo de cache, fornece tolerância a falhas de capacidade para o sistema DNS [31]. Um cliente pode resolver um nome de domínio www.example.com usando um resolvedor “stub”. Este resolvedor “stub” envia uma consulta DNS a solicitar um resolvedor DNS recursivo (RDNS). Se o RDNS tiver informações sobre o nome de domínio consultado em cache, então esta informação será devolvida para o resolvedor “stub“. Caso contrário, o RDNS começa por consultar o servidor de raiz, e este redirecciona o RDNS para o nome do servidor que está autorizado para o TLD “.com". Este processo continua até que o RDNS atinja um servidor que esteja autorizado para www.example.com. Ele irá consultar os RR’s relevantes e retornar uma resposta para o resolvedor “stub” do cliente. Os RDNS também armazenam esses RRs para o nome de domínio www.example.com por um certo período de tempo, de modo que possa responder imediatamente se houver outro pedido desses RRs para este nome de domínio. O período de tempo em que os RR são armazenados em cache RDNS, depende do valor Time to Live (TTL) contido na informação retornada para RR’s associados com o nome de domínio www.example.com do servidor oficial [29]. 31 3.1.2 Mensagens DNS Mensagens DNS de solicitação e resposta compartilham o mesmo formato, que é mostrado na figura seguinte: Figura 12 - Formato de mensagens DNS O cabeçalho de uma mensagem DNS é formado pelos primeiros seis campos mostrados na imagem, que ao todo possuem o tamanho fixo de 12 bytes.Dentro do cabeçalho podemos encontrar os seguintes campos. [30]: Identificação: o valor deste campo é de definido pela máquina que realiza a solicitação, de forma a identificá-la. Flags: esse campo é dividido entre outros oito campos. O campo QR indica se a mensagem é uma solicitação ou resposta. O campo código indica se a solicitaçãoé tradicional (valor 0), reversa (valor 1) ou de verificação do estado interno do servidor DNS (valor 2). O campo AA indica se o servidor em questão é um servidor autoritário, ou seja, é o responsável final pelo domínio em questão. O campo TC indica se a mensagem foi desarticulada por ultrapassar o limite de 512 bytes. O campoRD indica se a resolução será realizada de forma recursiva ou iterativa. Comonem todos servidores possuem suporte a resoluções recursivas, essa capacidade é indicada pelo campo RA que estará habilitado caso o servidor em questão ofereça suporteàs resoluções recursivas. E, por fim, o campo CResp apresenta o código de resposta associado à solicitação DNS, 32 sendo os códigos mais comuns de valor 0(indica ausência de erro) e de valor 3 (indica erro de nome). Número de questões: número de perguntas realizadas. Esse número normalmente é 1. Número de respostas: número de respostas que serão enviadas. Este valor é, pelo menos 1. Número de registros de autoridades: número de servidores autoritários para o domínio em questão Número de outras informações: informações extras que possam ser relevantes na mensagem Assim, para ter acesso aum host que possui um endereço de rede através de um nome, uma aplicação deve fazer uma chamada ao procedimento de resolução (resolver),passando o nome como parâmetro. O resolver, por sua vez, comunica com o servidor DNS local,ao qual irá traduzir o nome fornecido para um endereço de rede (IP). Essa tradução é feita através da associação do nome do domínio a recursos de registos (resource records). Um resource record é identificado pelos campos demonstrados na figura 15. Figura 13 - Estrutura de resource record Um resource recordé um tupla de cinco campos. Apesar de serem codificados em binário para proporcionar maior eficiência, na maioria das exposições, os resource recordsão mostrador como texto ASCII, uma linha para cada resource record. O formato utilizado é: 33 Domain_nameTime_to_liveClassTypeValue(queengloba o RDLenght e o RData) Domain_name: informa o domínio onde esse registo se aplica. Time_to_live: fornece uma indicação da estabilidade do registo O terceiro campo de cada registo de recurso é Class. No caso de informações relacionadas à Internet, ele é sempre IN O campo Type informa qual é o tipo do registo. Os tipos mais importantes estão são: SOA, A, MX, NS, CNAME, PTR, HINFO e TXT. Um registo SOA (Inicio de Autoridade) fornece o nome da principal fonte de informações sobre a zona do servidor de nomes. O tipo de registo mais importante é o registro A (Address). Ele contém um endereço IP deumhost. O próximo tipo de registo mais importante é o registro MX. Ele especifica o nome do host preparado para aceitar mensagens de correio electrónico para o domínio especificado. Os registos NS especificam servidores de nomes. Os registosCNAME permitem a criação de nomes alternativos. A exemplo do CNAME, PTR indica outro nome. Os registos HINFO permitem que as pessoas descubram a que tipo de máquina e sistema operacional um domínio corresponde. Por fim, os registros TXT permitem que os domínios se identifiquem de forma arbitrária. Por fim, chegamos ao campo Value que engloba o RDLENGTH e RDATA. Esse campo pode ser um número, um nome de domínio ou um string ASCII. O campo RDLENGTH representa o tamanho do registo de recurso, o qual depende do valor atribuído ao campo TYPE. O campo RDATA representa os dados do registo, sendo que sua semântica é de definida pelo tipo do registo. Por exemplo, para um resource record do tipo A, o campo RDATA informará o endereço IP de um host. 34 ; Authoritative data for cs.vu.nl cs.vu.nl. 86400 IN SOA star boss(952771,7200,7200,2419200,86400) cs.vu.nl. 86400 IN TXT “DivisãoWiskunde de Informática.” cs.vu.nl. 86400 IN TXT “UniversidadeVrije Amsterdam.” cs.vu.nl. 86400IN MX 1 zephyr.os.vu.nl. cs.vu.nl. 86400IN MX 2 top.cs.vu.nl. flits.cs.vu.nl 86400 IN HINFO Sun Unix flits.cs.vu.nl 86400 IN A 130.37.16.112 flits.cs.vu.nl 86400 IN A 192.31.231.165 flits.cs.vu.nl 86400 IN MX 1 flits.cs.vu.nl. flits.cs.vu.nl 86400 IN MX 2 zephyr.os.vu.nl. www.cs.vu.nl 86400 IN CNAME star.os.nu.nl. fto.cs.vu.nl 86400 IN CNAME zephyr.os.vu.nl. Rowboat IN A 130.37.56.201 IN MX 1 rowboat IN MX 2 zephyr IN HINFO Sun Unix figura 14 - exemplo de uma mensagem DNS. 3.2 Monitorização do tráfego DNS Como já referido anteriormente, é possível detectar malware através da monitorização e análise do tráfego DNS. Como os ataques vão cada vez mais sendo melhorados por parte dos atacantes, para que sejam mais difíceis detecta-los e preveni-los, também novas técnicas e novas maneiras de análise vão sendo aperfeiçoadas. Através da técnica de análise do tráfego DNS, existem várias práticas aperfeiçoadas para melhor detectar trafego malicioso. Em 2005, Dagon propôs um mecanismo para identificar servidores C&C através da detecção de nomes de domínio com uma anormal, ou temporalmente concentrada, consulta das taxas DDNS. Esta técnica é semelhante à abordagem proposta pela Kristoff, em 2004. No entanto, ambas as técnicas têm a mesma fraqueza e poderiam facilmente ser evitadas usando falsas consultas DNS. Além disso esta técnica gera 35 muitos falsos positivos devido ao erro de classificação de domínios legítimos e populares que usam DNS com curto tempo de vida (TTL). Uma abordagem alternativa foi proposta por Schonewille e Van Helmond em 2006. Esta abordagem baseou-se nas recorrentes taxas de resposta NXDOMAIN. A fim de classificar as taxas de resposta anómalas, eles usam os algoritmos similares aos utilizados no Dagon para classificar as taxas de consulta análogas. De acordo comas suas respostas de observação DDNS, estas indicam os erros de nome (NXDOMAIN), muitas vezes correspondentes a servidores C&C que foram fechados pelas autoridades. Hosts que repetidamente emitam tais consultas podem ser infectados com um bot e eles podem ter vulnerabilidade para permitir uma infecção semelhante. Esta abordagem é muito eficaz para detectar vários nomes de domínio suspeitos e pode haver menos falsos positivos, porque as respostas NXDOMAIN são mais susceptíveis de se referira DDNS do que para outros nomes. Ramachandranet al. propôs um conjunto de técnicas para identificar botnets usando análise passiva baseada na pesquisa de trafego DNS de nome Lista Negra (DNSBL). Esta técnica resolve a possibilidade de realização de contrainteligência que nos ajuda a detectar actividade de reconhecimentoDNSBL, em que os botmasters devem realizar pesquisas em DNSBL, para determinarem o estado de seus bots da lista negra. O objectivo em desenvolver estes modelos é distinguir consultas DNSBL emitidas pelos botmasters do tráfego DNSBL legítimo, para identificar bots prováveis. Estas heurísticas poderiam ser usadas para detectar actividades de reconhecimento em tempo real e permitem activar contramedidas. Como os botmasters costumam fazer pesquisas de reconhecimento antes do uso de bots num ataque, este DNSBL contra-inteligência pode ser usado para o início alertando para impulsionar respostas. Além disso, a detecção desta técnica não requer comunicação directa com qualquer componente da botnet, e não perturba a actividade da botnet. Eles apresentaram o primeiro estudo que usa análise directa de logs DNSBL para inferir outros tipos de comportamento na rede. No entanto, esta técnica corre o risco de falsos positivos devido a contramedidas activas, como envenenamento de reconhecimento. Além disso, esta abordagem não pode detectar reconhecimentos distribuídos. Em 2007, Choi et al. propuseram um mecanismo de detecção baseado nas anomalias das actividades do grupo no tráfego de DNS, que formam simultaneamente uma actividade de grupo em consultas DNS enviadas por bots distribuídos. Eles definiram características únicas de tráfego de DNS, como actividade de grupo para distinguir 36 consultas DNS de botnet de consultas DNS normais. Como o tráfego DNS aparece em várias etapas do ciclo de vida da botnet, é possível detecta-las usando a propriedade actividade de grupo do tráfego DNS. Eles também desenvolveram um mecanismo que permite detectar a migração de servidores C&C. Esta anomalia é mais robusta do que abordagens anteriores e podem detectar botnets, independentemente do tipo de bot e botnet, olhando para as suas actividades de grupo no tráfego DNS. Além disso, pode detectar botnets com canais codificados uma vez que utiliza a informação de cabeçalhos de IP. No entanto, a principal desvantagem desta abordagem é o alto tempo de processamento necessário para a monitorização em enorme escala de rede. Na tabela seguinte, explicam-se as principais diferenças entre o trafego DNS gerado por Botnets e por um utilizador comum. IP’s acedidos por Actividade e nome de domínio padrões de Tipo de DNS aparência DNS Botnet Grupo de Tamanho Actividade aparece Recorre Limitado intermitentemente normalmente a DDNS DNS Utilizador Actividade Períodos de tempo Comum Aleatória aleatórios e Tipicamente DNS contínuos Figura 17 - Diferenças entre DNS legítimo e de Botnets No primeiro caso, apenas os membros das Botnets enviam queries para o domínio do servidor C&C enquanto os utilizadores legítimos normalmente nunca interpelam o domínio do servidor de controlo. Assim, o número de endereços IP's diferentes que são procurados no domínio da Botnet é na maior parte das vezes de tamanho fixo. Por outro lado, numa utilização por parte de utilizadores comuns, estes procuram endereços de domínios seguindo um método aleatório. No segundo ponto as actividades de grupo de uma Botnet fazem com que os membros atuem e executem tarefas ao mesmo tempo, assim as queries DNS ocorrem temporariamente e simultaneamente. No entanto, no caso de utilizadores legítimos, as queriesDNS ocorrem de uma forma contínua ao invés de um padrão de simultaneidade. Em relação ao tipo dos servidores DNS, as Botnets normalmente recorrem a servidores dinâmicos, ao contrário do que acontece com o 37 trafego normal. Existe um estudo de um sistema BOTGaD baseado exclusivamente na monitorização de tráfego DNS para detecção de actividades malignas, tendo por base as Botnets centralizadas efectuarem actividades de DNS intensas [25]. 3.3 Técnicas de Fast-flux e Domain-flux Técnicas, como a criação de listas negras, utilizadas para detectar actividades maliciosas tornaram-se mais concretas, pois métodos mais sofisticados foram utilizados por botmasters, a fim de contornar essa detecção e o esforço de mitigação. O DNS é um protocolo essencial na Internet, uma vez que fornece um mapeamento conveniente entre nomes de domínio e os seus endereços IP correspondentes. Ironicamente, a flexibilidade e disponibilidade global do DNS está a ser aproveitada por botnets para infra-estruturas de controlo e comando resilientes. Fast-flux e domain-flux são duas técnicas que estão atualmente a ser amplamente integradas nas botnets, a fim de melhorar sua resiliência. Estas não são técnicas novas, bem como os princípios subjacentes às mesmas, pois têm sido usadas por serviços legítimos à algum tempo. Detalhes destas técnicas são descritos nas subsecções a seguir. O seu uso em actividades maliciosas é evidente nas evoluções das técnicas utilizadas por hackers para criar botnets mais robustas [30]. 3.3.1.1 Fast-flux (também conhecido como IP- flux) Fast-Fluxé descrito pelo ICANN como: “Mudanças rápidas e repetidas de registos de recursos A ou NS de uma zona DNS, que tem o efeito de mudar rapidamente a localização (endereço IP) para que o nome de domínio de um host da Internet (A) ou nome do servidor (NS) resolva " Tecnicamente, essa mudança rápida é feita definindo um tempo de vida (TTL) baixo para um dado registo DNS e muda o IP associado com frequência. Esta técnica tem sido usada há muito tempo como um método de equilíbrio de carga por sistemas legítimos, como por exemplo sites com elevada carga e altamente disponíveis, tais como motores de pesquisa na Internet ou uma rede de distribuição de conteúdo (CDN). 38 Como o cibercrime evoluiu, esta técnica é agora usada de forma maliciosa, formando um Serviço de Rede Fast-flux (FFSN), uma rede de hosts comprometidos que compartilham o mesmo nome de domínio. Os endereços IP dos hosts são trocados rapidamente dentro, e para fora da entrada de DNS, com base na disponibilidade dos anfitriões e largura de banda. Normalmente FFSNs empregam um esquema de distribuição de carga, nomeando alguns hosts para verificar a integridade dos outros nós na rede. Com uma mudança tão rápida dos endereços IP, é quase impossível interromper as FFSNs usando simplesmente bloqueio de endereços IP específicos. Uma solução possível é a de suspender o domínio de nomes usados por FFSNs. No entanto, esta é uma tarefa muito enfadonha uma vez que estes domínios são geralmente registados junto de entidades que são resistentes ao bloqueio de domínios nomes. Outra vantagem de FFSNs é o seu alto nível de anonimato, expondo os hospedeiros que são normalmente configurados como redireccionadores de proxy cegos, que canalizam o tráfego para os servidores de back-end, que servem o conteúdo real malicioso. Ao canalizar o tráfego, os redireccionadores de proxy cegos interrompem qualquer tentativa de controlo e revelam as identidades dos servidores de back-end. Consequentemente, isto aumenta o tempo de vida dos servidores de back-end e torna mais simples de configurar e gerir esses servidores. Mesmo podendo localizar esses servidores, é difícil derrubá-los, pois normalmente residem em redes cúmplices ou comprometidas. Devido ao elevado nível do anonimato e resiliência, FFSNs foram observadas a participar em muitos diferentes tipos de práticas maliciosas, tais como hospedagem de conteúdo ilegal, distribuição de malware, ou phishing. FFSNs são normalmente parte das botnets, e osnós escolhidos para estar no FFSN, são seleccionados a partir de hosts comprometidos com um endereço IP globalmente acessível e com alta largura de banda. FFSNs escondem o canal C&C e guardam o código malicioso do bot. Existem dois tipos de FFSN: single-flux e duble-flux. No primeiro caso, apenas os registos de host são alterados, enquanto no segundo, tanto os registos do host como os do servidor são alterados. Figura 16 mostra o ciclo de vida de uma solicitação web numa rede single-flux, comparada com a de um servidor normal. A diferença é que, embora os utilizadores acreditem que estão a navegar num conteúdo do servidor legítimo, o redireccionador FFSN mudou o pedido para o servidor de back-end e 39 redireccionou a resposta a partir deste servidor para os utilizadores. Figura 16 – ciclo de vida de uma solicitação web numa rede single-flux, comparada com a de um servidor normal A figura 18 mostra os resultados do comando “dig”(domínio da informação groper é uma rede de administração de ferramentas de linha de comando para consultar os servidores de nomes DNS. Dig é uma ferramenta embutida em quase todas as distribuições Linux.), para uma rede single-flux de serviços. Podemos ver que no conjunto de endereços IP devolvidos para o mesmo nome de domínio após 30 minutos, existem dois novos endereços de IP. Além disso, a maior parte dos endereços no conjunto de IP’s devolvidos estão localizados em redes domésticas. R ;; WHEN: Sat Feb 3 20:08:08 2007 divewithsharks.hk. 1800 IN A 70.68.187.xxx [xxx.vf.shawcable.net] divewithsharks.hk. 1800 IN A 76.209.81.xxx [SBIS-AS-AT&T Internet Services] divewithsharks.hk. 1800 INA 85.207.74.xxx [adsl-ustixxx-74-207-85.bluetone.cz] divewithsharks.hk. 1800 INA 90.144.43.xxx [d90-144-43-xxx.cust.tele2.fr] divewithsharks.hk. 1800 INA 142.165.41.xxx[142-165-41-xxx.msjw.hsdb.sasknet.sk divewithsharks.hk.. 1800 IN NS ns1.world-wr.com. divewithsharks.hk.. 1800 IN NS ns2.world-wr.com. ns1.world-wr.com. 87169 IN ns2.world-wr.com. 87177 INA .ca] A 66.232.119.212 [HVC-AS - HIVELOCITY VENTURES CORP] 209.88.199.xxx [vpdn-dsl209-88-199-xxx.alami.net] 40 ;; WHEN: Sat Feb 3 20:40:04 2007 (˜30 minutes/1800 seconds later) divewithsharks.hk. 1800 INA 24.85.102.xxx[xxx.vs.shawcable.net] NEW divewithsharks.hk. 1800 IN A 69.47.177.xxx[d47-69-xxx-177.try.wideopenwest.com] divewithsharks.hk. 1800 INA 70.68.187.xxx [xxx.vf.shawcable.net] divewithsharks.hk. 1800 INA 90.144.43.xxx [d90-144-43-xxx.cust.tele2.fr] divewithsharks.hk. 1800 INA 142.165.41.xxx [142-165-41-xxx.msjw.hsdb.sasknet.sk divewithsharks.hk. 1800 IN NS ns1.world-wr.com. divewithsharks.hk. 1800 IN NS ns2.world-wr.com. ns1.world-wr.com. 85248 IN ns2.world-wr.com. 82991 INA NEW .ca] A 66.232.119.xxx [HVC-AS - HIVELOCITY VENTURES CORP] 209.88.199.xxx [vpdn-dsl209-88-199-xxx.alami.net] Figura 17 – Exemplo de resultados de um comando“dig” No serviço de rede double-flux, quando o utilizador solicita mais um passo no conteúdo tem lugar um processo para resolver o nome dos servidores de autoridade pelo domínio. Numa rede double-flux, os servidores de nomes estão comprometidos com os hosts que redireccionam as consultas DNS para um servidor DNS back-end e retornam as respostas deste servidor para o utilizador. A Figura 19 ilustra a diferença entre singleflux e double-flux quando resolvem nomes de domínio. Neste exemplo, não são apenas os endereços IP devolvidos para os registos A que são alterados, mas também aqueles que são devolvidos para os registos NS. Note-se que semelhante ao serviço de rede single-flux, o conjunto de endereços IP devolvidos está localizado principalmente num “xDSLy” ou em dial-up de rede. Isso significa que as interfaces associadas com esses endereços IP são na sua maioria de computadores pessoais localizados nas casas das pessoas. 3.3.1.2 Domain-flux Domain-flux é outra abordagem para ultrapassar as defesas no bloqueio do acesso aos servidores C&C. Ao contrário de fast-flux onde os endereços IP são rapidamente trocados, no domain-fluxsão alterados os nomes do domínio. Grande número de nomes de domínios (ou subdomínios) são embutidos no executável do bot ou são gerados por 41 um algoritmo incorporado no bot, chamado DomainGenerationAlgorithm (DGA). O botmaster tem a mesma lista de nomes de domínio, mas regista apenas um ou alguns deles. Esses nomes de domínio apontam para os servidores C&C. Os bots encontram o endereço do servidor C&C resolvendo sequencialmente ou aleatoriamente nomes de domínio na lista até ter sucesso, localizando um servidor C&C num nome de domínio registado pelo botmaster. Figura 18: Diferença entre single-flux e double-flux Listing 2.2: Results of dig command for a double-flux domain name [15] ;; WHEN: Wed Apr 4 18:47:50 2007 login.mylspacee.com. 177 IN A66.229.133.xxx[c-66-229-133-xx.hsd1.fl.comcast. login.mylspacee.com. 177 IN A 67.10.117.xxx [cpe-67-10-117-xxx.gt.res.rr.com] login.mylspacee.com. 177 IN net] A70.244.2.xxx [adsl-70-244-2-xxx.dsl.hrlntx.swbell. net] mylspacee.com. 108877 IN NS ns3.myheroisyourslove.hk. mylspacee.com. 108877 IN NS ns4.myheroisyourslove.hk. mylspacee.com. 108877 IN NS ns5.myheroisyourslove.hk. ns1.myheroisyourslove.hk. 854 IN A 70.227.218.xxx [ppp-70-227-218-xxx.dsl.sfldmi. ameritech.net] ns2.myheroisyourslove.hk.854 IN A70.136.16.xxx [adsl-70-136-16-xxx.dsl.bumttx. sbcglobal.net] ns3.myheroisyourslove.hk.854INA 68.59.76.xxx [c-68-59-76-xxx.hsd1.al.comcast. net] 42 ;; WHEN: Wed Apr 4 18:51:56 2007 (˜4 minutes/186 seconds later) login.mylspacee.com. 161 INA 74.131.218.xxx[74-131-218-xxx.dhcp.insightbb.com] NEW login.mylspacee.com. 161INA 24.174.195.xxx[cpe-24-174-195-xxx.elp.res.rr.com] NEW login.mylspacee.com. 161INA65.65.182.xxx[adsl-65-65-182-xxx.dsl.hstntx. swbell.net] NEW ;; WHEN: Wed Apr 4 21:13:14 2007 (˜90 minutes/4878 seconds later) ns1.myheroisyourslove.hk. 3596 INA75.67.15.xxx[c-75-67-15-xxx.hsd1.ma.comcast .net] NEW ns2.myheroisyourslove.hk.3596 IN A 75.22.239.xxx [adsl-75-22-239-xxx.dsl.chcgil .sbcglobal.net] NEW ns3.myheroisyourslove.hk.3596 IN A 75.33.248.xxx[adsl-75-33-248-xxx.dsl.chcgil .sbcglobal.net] NEW Fiisting 2.3: Domain names generated by K Figura 19 – Exemplo de domain-flux As Botnets que usam domain-flux variam muito no número de nomes de domínio gerados, no algoritmo utilizado, e como o algoritmo é semeado. Por exemplo, o botConficker-A, utiliza a data e hora actual como uma semente para gerar 250 nomes de domínio de três em três horas. Este número aumenta para 50 mil nomes de domínio no botConfiker-C. Outro exemplo é o bot Torpig com sementes do DGA, com um dos tópicos de tendências mais populares no Twitter. No entanto, todos estes bots têm algumas características ou necessidades em comum. Em primeiro lugar, o número de nomes de domínio gerados por bots tem de ser suficientemente grande, a fim de conseguir esgotar um esforço de blacklisting. Em segundo lugar, os domínios gerados não devem colidir com nomes de domínio existentes. Estas características do domainflux vieram sugerir algumas defesas. Por exemplo, como o número de nomes de domínio que está a ser gerado aumenta, antes de chegar a um nome de domínio que é efectivamente registado pelo botmaster, os bots causam um número significativo de consultas DNS falhadas na rede quando consultam nomes de domínio inexistentes. Isto poderia ser considerado como um comportamento anormal na rede, o que sugere que há domain-flux. A fim de evitar colisões com os domínios existentes, o domínio de nomes gerados aparecem geralmente para serem cadeias aleatórias, isto é, eles são geralmente impronunciáveis, não tendo significado, ao contrário de serviços legítimos em que nomes de domínio normalmente consistem de palavras significativas dum dicionário e são pronunciáveis, assim esta característica pode indicar domain-flux. Alguns 43 botstentaram superar este problema por meio de algoritmos que geram domínios em Inglês (ou outra linguagem). Um exemplo é o algoritmo usado pelo botKraken, que combina as palavras geradas com sufixos de palavras comuns em Inglês como-able, dom, ou -ly. Os recursos fonéticos destas palavras também são explorados por alguns algoritmos para fazer as palavras geradas o mais pronunciável possível. Domain-flux fornece grandes vantagens ao botmaster, pois este só precisa de registar alguns nomes de domínio na lista, a fim de manter o funcionamento da botnet, enquanto os defensores têm de se registar ou bloquear todos os nomes de domínio na lista para interromper o funcionamento da botnet. Além disso, no caso dos algoritmos que geram procura de nomes de domínio, o algoritmo requer engenharia reversa do bot para saber a lista de nomes de domínio que podem ser gerados, e esta tarefa de engenharia reversa leva muito tempo[29]. Uma técnica similar à do domain-flux é também utilizada por algumas redes sociais ou serviços de blog, como Wordpressz ou Tumblrx para personalizar páginas do utilizador para a modificação do subdomínio do UniformResourceLocator (URL). No entanto, a maioria dos nomes de domínio gerados por esses serviços estão associados com um ou poucos domínios de base e são mais persistentes em relação aos nomes de domínios utilizados pelo domain-flux. A diferença é que os serviços legítimos geram muitos subdomínios dum pequeno número de domínios,enquantoque as botnets tentam espalhar o seu uso numa parte muito maior do espaço de nome de domínio. As técnicas fast- flux e domain-flux podem ser combinadas em conjunto para proporcionar um elevado nível de anonimato, disponibilidade e resiliência para os servidores C&C. 3.4 Trabalhos relacionados Análise do trafego DNS é uma técnica emergente para a detecção de actividades maliciosas na rede. Esta técnica tem sido afirmada por muitos pesquisadores como uma técnica efectiva para detecção de botnets, especialmente aquelas com comportamentos do tipo fast- flux e domain-flux. Como a abordagem de análise DNS ganhou mais atenção na pesquisa de segurança na comunidade, técnicas mais sistemáticas foram desenvolvidas para utilizar o DNS na 44 detecção de malware. Dois sistemas de reputação de domínio de nomes foram propostos: NOTOS, por Antonakakis et al. [32] e EXPOSURE por L. Bilge et al. [33]. Estes são dois grandes sistemas de análise de trafego passivo DNS para a detecção de malware, que foram criados e implantados em grandes redes ISP. A premissa desse sistema é que o uso malicioso do serviço de DNS tem características únicas que podem ser usadas para distinguir o uso malicioso do uso benigno. Assim, nestes dois sistemas, os respectivos autores construíram um modelo de uso de DNS normal com base num conjunto de características que foram extraídos de trafego DNS capturado. O desvio de comportamentos de nomes de domínio malicioso são identificados por uma abordagem à aprendizagem da máquina para detecção de anomalias. Em NOTOS [32], as características de um nome de domínio é dividido em três tipos diferentes: baseados em recursos de rede, com base em características da zona, e com base em evidências características. Embora o tipo baseado em recursos de rede seja usado para afastar o domínio de nomes benignos que utilizam DNS estável, o tipo baseado em características da zona, extraí os nomes de domínio próprios (por análise de corda ou informação) e utiliza-os para distinguir os nomes de domínio maliciosos e nomes de domínio legítimos que pertencem a CDNs conhecidos. No plano baseado em evidências características, o nome de domínio e os seus endereços IP mapeados são verificados contra nome de domínios conhecidos e endereços IP maliciosos. A pontuação e reputação de um nome de domínio são derivados por uma árvore de decisão usando a estratégia Logit-Boost(LAD). Da mesma forma, Exposure [33] usa um conjunto de 15 características que são divididas em quatro grupos: com base nas características do tempo, com base nas características da resposta DNS, baseado nas características do valor TTL e baseado nas características e recursos de nomes de domínio. Estas características têm por objectivo detectar diferentes aspectos dos nomes de domínio de comportamentos maliciosos. As características baseadas no tempo captura os nomes de domínio de curta duração que têm repetido padrões regularmente. As características baseadas na respostaDNS expõe nomes de domínio cujos endereços IP mapeados, espalham mais de múltiplos sistemas autónomos (ASs). Os recursos baseados no valor TTL detectam nomes de domínio que possuem valores curtos TTL e se esses valores são alterados com frequência. Finalmente, as baseadas em recursos de nomes de domínioidentificam nomes de domínio que seriam estranhosao olhardos utilizadores. O algoritmo J48 de árvore de 45 decisão é usado para classificar e determinar se um nome de domínio é malicioso com base nassuas características [29]. Na continuação de trabalhos anteriores, Antonakakis et al.[34], propôs um sistema de monitorização de visão geral com o alto nível da hierarquia de DNS, para descobrir anomalias em actividades maliciosas DNS. Ao contrário dos sistemas de detecção anteriores, como Notos ou Exposure, que dependem da monitorização passiva do trafego DNS recursivo (RDNS) e de um número limitado de servidores RDNs, Kopis tira vantagens da visibilidade global do trafego DNS nos níveis superiores da hierarquia DNS, para detectar nomes de domínios maliciosos. Hao et al. [35] estuda os padrões de consulta iniciais de nomes de domínios maliciosos durante curto período de tempo depois de serem registados. Este estudo revelou uma série interessantede pesquisas relacionadas com comportamentos iniciais de nomes de domínios maliciosos, incluindo o tempo entre o registo e o ataque, a localização da infra-estrutura de DNS, e seus primeiros comportamentos de pesquisa. Essas descobertas poderiam ser utilizadas como um guia para a concepção e construção de sistemas de alerta precoce para detecção de nomes de domínios maliciosos baseados em análises de DNS. 46 Capitulo 4 4 Implementação de um sistema de detecção de Botnets com base na análise de logs DNS 4.1 Arquitectura do sistema Pretende-se, com o presente trabalho, desenvolver uma aplicação para análise offline de ficheiros de logs de um servidor DNS (usando o BIND), para detecção de tráfego que indicia a presença de clientes infectados por malware (e pertencentes a botnets). Na figura 21 é representada a arquitectura geral do sistema a implementar Figura 20 – Arquitectura da aplicação a implementar 47 4.1.1 Linguagem de programação e IDE’s usadas A linguagem escolhida para realizar a aplicação foi a linguagem C# (C Sharp). Como houve liberdade de escolha na linguagem, foi optada por esta devido ao maior conhecimento sobre a mesma bem como um maior à vontade em relação a outro tipo de linguagens. É uma linguagem de programação orientadas por objectos fortemente tipada, possuindo interfaces, espaços de nomes, aceita sobrecarga de operadores, excepções e gere automaticamente a memória. Tem como funcionalidades, a separação perante referências e tipos de valores para obter um aproveitamento mais adequado da memória. Já traz integrado um suporte para propriedades, faz passagem de parâmetros por referência e parâmetros de saída, todos os dados derivam de objectos e existe a possibilidade de definir eventos e delgados [36]. Para as tarefas de desenvolvimento, foi usada a IDE Microsoft Visual C# 2010. Trata-se de uma ferramenta gratuita e poderosa e ao mesmo tempo simplificada e fácil de usar para programadores Windows. Foi concebida no sentido de facilitar a aprendizagem para estudantes, podendo também ser usada por qualquer outro programador. O sistema de base de dados escolhidos foi o MySQL dado que é necessário guardar dados relativos à análise do ficheiro. O MySQL [37] é um sistema de gestão de base de dados (SGBD), que utiliza a linguagem SQLcomo linguagem de criação, manipulação e interrogação. Os responsáveis pela criação do MySQL facultam também clientes e drivers (como é o caso do JDBC[5] para MySQL) paraacesso ao serviço. As principais características do MySQL são: portabilidade (suporta praticamente qualquer plataforma actual); compatibilidade (existem drivers ODBC (Open Data Base Connectivity), JDBC e.NET5 e módulos de interface para diversas linguagens de programação); excelente desempenho, estabilidade e facilidade de uso. Para desenvolver a base de dados em linguagem SQL do projecto, o software utilizado foi o MySQLWorkbench [10] que é a ferramenta oficial do MySQL. É um ambiente completo quepermite além de realizar consultas, criar diagramas e trabalhar com 48 engenharia reversapodendo a modelagem da base de dados assumir níveis lógicos e físicos. O MySQL Workbench apresenta uma arquitectura extensível, sendo possível visualizar a representaçãode tabelas, funções, entre outros. 4.1.2 Descrição genérica da aplicação O método proposto para a realização do sistema tem como pressuposto analisar um ficheiro .txtde logs DNS, gerado por um servidor BIND, e detectar se existem domínios infectados ou se existem querys anómalas que possam indiciar a presença de botnets. O sistema poderá também fazer uso da utilização de uma blacklist, previamente inserida pelo utilizador, para comparação dos domínios existentes nesta, com os encontrados no ficheiroa ser analisado. A blacklist pode conter nomes de domínio e ip’s, tendo que ser inserida num ficheiro .txt. Como já foi descrito num capítulo anterior, as botnets podem gerar um trafego DNS anómalo o que indicia a sua presença. Segundo o domain-flux, uma grande quantidade de mensagens de erro geradas com um espaço de tempo reduzido, e em que o domínio seja o mesmo, pode indiciar a presença de uma botnet ou de algum tipo de malware. Assim, o sistema fará uso desta técnica para detectar presença de uma elevada quantidade de mensagens de erro correspondentes a queries para domínios inexistentes. Com este sistema, o utilizador poderá verificar também se um determinado domínio se encontra infectado com algum tipo de malware, desde que, este se encontre na blacklist inserida. O sistema terá dois tipos de blacklist: A inserida pelo utilizador, que poderá fazer download de um site que forneça blacklists e que sejam actualizadas regularmente. Exemplos: http://malc0de.com/bl/IP_Blacklist.txt; http://www.malwaredomainlist.com/mdl.php; http://exposure.iseclab.org/malware_domains.txt; https://zeustracker.abuse.ch/blocklist.php. E a criada pela aplicação à medida que encontra possíveis domínios infectados através da análise dos ficheiros inseridos. 49 A aplicação mostrará as estatísticas da última análise bem como uma pequena descrição dos últimos ficheiros analisados. Assim a aplicação quando inicializada, apresenta as estatísticas da ultima análise feita. Se for a primeira vez que utiliza a aplicação será mostrada uma mensagem de boas vindas bem como uma breve explicação de como usar o sistema. Depois de iniciar, o utilizador poderá fazer uma análise de um ficheiro de logs, bem como apenas de domíniosisolados. Se optar por analisar um ficheiro, o utilizador terá que procurar o ficheiro e assim poderá partir para a análise. Terminada a análise do ficheiro, se existirem domínios que se encontrem na blacklist, serão mostrados numa listview, bem como os domínios mais encontrados ao longo do ficheiro (tanto nomes de domínio, como ip’s). Serão ainda mostrados quantos ip’s foram encontrados, quantos nomes de domínio foram analisados, quantas mensagens de erro foram processadas e quantas linhas do ficheiro foram analisadas. Será ainda possível ver os domínios que possivelmente podem estar infectados por uma botnet. 4.2 Modelação 4.2.1 Base de Dados O sistema tem uma base de dados que permite guardar os diferentes tipos de dados provenientes da análise dum ficheiro de logs DNS. Assim na figura 21 é mostrada a estrutura da base de dados bem como as suas tabelas. 4.2.1.1 Tabelas Blacklist: É responsável por guardar os domínios da blacklist inserida pelo utilizador Analise: é uma tabela que guarda dados temporários. Aquando da análise do ficheiro, quando encontradas mensagens de “error” seguidas para o mesmo ip, é aqui que esse domínio fica guardado enquanto é feitoo processamento. Quando é terminada a sucessão de mensagens de “error” ou se o domínio estiver 50 infectado, esta tabela é esvaziada e o domínio é copiado para a tabela blacklist_analise. Blacklist_analise: Esta tabela guarda os domínios enviados pela tabela analise. Aqui são guardados todos os domínios infectados encontrados da análise de um ficheiro. Quando for iniciada outra análise, estes domínios serão enviados para a tabela blacklist_personal, que guarda os domínios infectados de todas as análises feitas. Blacklist_personal: é responsável por guardar os domínios infectados provenientes da tabela blacklist_análise. Esta tabela guarda todos os domínios infectados provenientes das análises feitas, para fazer comparação com os próximos ficheiros a serem analisados. Nome_dominio: aqui ficamguardados todos os nomes de domínio encontrados no ficheiro que está a ser analisado para posteriormente ser comparado com os das blacklists para ver se existem domínios infectados. Na próxima analise, os campos existentes serão eliminados. Ip: faz o inverso da tabela nome_dominio mas ao invés, guardando os ip’s encontrados. Estatitisticas:responsável por guardar a data e o nome do último ficheiro analisado Figura 21 – Base de dados do sistema 51 4.2.2 Diagrama de classes O sistema desenvolvido é descrito no diagrama de classes abaixo representado. O diagrama descreve as classes do sistema através dos seus respectivos relacionamentos. Figura 22 – Diagrama de classes do sistema A classe sistema define todos os métodos possíveis que o sistema pode ter. A classe ficheiro representa o ficheiro de logs que se deseja analisar. Esta classe é responsável por efectuar a respectiva análise do ficheiro e de chamar o método listar_infectados, que irá chamar o método mostrar da classe infectados. A classe infectados, representa os domínios infectados que forem encontrados no ficheiro. Assim, depois de ser analisado o ficheiro, será possível mostrar um relatório onde informará o utilizador quais os domínios que estão infectados. A classe blacklist será responsável por representar os ip´s infectados conhecidos, para posterior comparação aquando da análise de um ficheiro de logs. 52 4.3 Implementação e funcionalidades A solução implementada para detecção dedomínios infectados passou pela análise segundo comparação com blacklist e pela detecção de domain-flux. Assim, o sistema quando iniciado irá mostrar as estatísticas do último ficheiro analisado bem como o dia em que foi feita a última análise. Se o programa for iniciado pela primeira vez, será mostrada uma mensagem de boas vindas e uma breve descrição de ajuda sobre como usar o sistema (figura 23). Figura 23: Página inicial na primeira vez que utiliza programa 4.3.1 Funcionalidades Querendo então o utilizador analisar um ficheiro, basta ir ao separador análise e carregar no ícone “ficheiro”. Posto isto irá aparecer o ecrã mostrado na figura 24. 53 Aqui, o utilizador deverá escolher o ficheiro que deseja analisar, tendo este que ser em formato .txt. Depois de ser escolhido o documento, basta partir para análise, carregando no botão “Analisar”. Automaticamente o sistema começará a analisar cada linha do ficheiro para retirar todos os ip´s encontrados bem como os nomes de domínio. Estes serão guardados nas tabelas anteriormente identificadasda base de dados. Figura 24 – Janela para análise eapresentação de resultados Ao mesmo tempo, é analisado se a linha é de “error” e se for irá ser realizada outro tipo de análise. Essa análise começa por guardar o nome de domínio e o ip correspondente, na tabela da base de dados “analise”, que é uma tabela que guarda apenas dados temporários. Se na próxima linha do ficheiro, for encontrada outra linha de “error” e em que o ip seja o mesmo, então a informação da tabela analise não se altera. Se isto acontecer quatro vezes consecutivas, então existe a possibilidade da presença de uma botnet. Posto isto é guardado o ip referente da tabela analise, na tabela blacklist_analise, que guarda os domínios possivelmente infectados durante a análise do ficheiro. Terminada a análise, são mostradas as informações mais relevantes ao utilizador, tais como, os domínios infectados em comparação com a blacklist, os domínios infectados pela possível presença de botnets, os nomes de domínio e os ip’s mais encontrados por ordem decrescente. São ainda mostradas quantas linhas foram processadas, o número de ip’s e nomes de domínio encontrados e as linhas de “error” também encontradas. 54 O utilizador pode também optar por analisar apenas um domínio. Para isso, basta ter inserido uma blacklist, para que o sistema, procure se existe o domínio inserido na blacklist incluída. Assim o utilizador só tem que ir ao separador “Analise” e escolher a opção “Domínio”. Figura 25 – janela para analisar um domínio Mas, antes de o utilizador partir para a análise de um ficheiro, é aconselhado que insira previamente uma blacklist, para que possa ser efectuada a análise completa. O utilizador pode escolher inserir uma blacklist completa, ou apenas um domínio, ou ver a que existe na base de dados, ou ate mesmo remover a blacklist completa ou apenas um domínio. No final da utilização da aplicação, os dados ficam guardados nas tabelas correspondentes, para que seja possível na próxima utilização, ver os dados encontrados nesta análise. Mas quando o utilizador fizer uma nova analise, os dados da tabela blacklist_analise serão copiados para a blacklist_personal, que irá guardar sempre os domínios encontrados com possível infecção e botnet. Os dados das tabelas “ip”, “nome_dominio”, “analise” e “blacklist_analise” serão eliminados, para que seja possível efectuar nova análise. 55 Figura 26 – janela para poder ir ao menu blacklist 4.4 Testes e Resultados Para se testar a aplicação de modo a apresentar resultados válidos, foi disponibilizado um ficheiro de logs DNS do servidor de DNS do IPB, que continha toda a informação que pudesse levar à detecção de malware. O ficheiro continha as informações de um dia inteiro de logs. Assim, depois de adicionada uma blacklist, foi feita a análise do ficheiro que demorou algum tempo devido à extensidade de querysrealizadas pela aplicação. Depois de concluída a leitura do ficheiro e de toda a informação ter sido processada pelo sistema foram apresentados os resultados. 56 O ficheiro era em formato .txt e é mostrado um exemplo de algumas linhas, na figura 27. Figura 27: Exemplo de logs DNS Depois de analisado o ficheiro,foi apresentadoo output que está expresso na figura 28. Através da análise, foram encontrados alguns domínios infectados em comparação com a blacklist inserida, bem como alguns domínios detectados através da aparição de padrões que lavam a indiciar presença de botnets. Como é mostrado na output, foram processadas 119linhas onde foram encontrados 2 dominios infectados, presentes nablacklist, bem como 5 dominios com elevado grau de suspeita de estarem infectados por tentativa de domain-flux. São também mostrados os nomes de dominio por ordem de maior aparição e também os ip’s. Com esta análise, comprova-se a validade do sistema em realmente detectar presença de malware em hosts que usam um servidor de DNS. Como se viu neste exemplo, a 57 presença de malware na rede é usual, o que leva à necessidade de uma maior consciencialização dos utilizadores para este tipo de ameaças. Figura 28: Output do ficheiro analisado 58 Capitulo 5 5 Conclusões e Trabalho Futuro Com a realização deste trabalho os objectivos propostos foram cumpridos na sua grande maioria. Depois de um grande estudo sobre vulnerabilidades da rede e de temática sobre botnets, o conhecimento sobre esta matéria ficou muito acima daquilo que existia aquando do início do trabalho. Com o aumento do uso da Internet, cada vez mais novas formas de malware vão aparecendo e técnicas de combate a essas ameaças vão ficando cada vez melhores. Hoje em dia, a utilização de botnets, por parte de utilizadores mal-intencionados tem vindo a aumentar. Estes botmasters, que controlam a sua rede de hosts infectados, utilizam este “exército” para as mais variadas formas de ataque, que vai desde envio de spam até ataques DDoS a grandes instituições. Como este tipo de ameaça tem vindo a crescer, também novas técnicas vão aparecendo para as combater. A utilização do serviço de DNS é uma das formas de poder analisar e detectar este tipo de ataques. Através da análise dos logs gerados por um servidor DNS, é possível detectar querys e padrões anómalos que possam indiciar a presença de malware. Assim sendo, a aplicação que foi desenvolvida, pretende utilizar ficheiros gerados por servidores de DNS e partir para uma análise em que no final sejam mostrados domínios que possam estar infectados. Para isso o sistema retira todos os ip´s e nomes de domínio e compara com uma blacklist de domínios infectados. Ao mesmo tempo, é analisado o ficheiro de modo a detectar padrões anómalos que possam indiciar algum tipo de malware. Uma das técnicas usadas é verificar se existem varias querys seguidas de erro em que o domínio seja o mesmo. Segundo a técnica de domain flux, os botmasters registam alguns domínios, e os seus bots vão fazendo pedidos de informação para esses domínios, mas que às vezes podem não ter sido registados. Logo vão existir várias mensagens de erro o que pode permitir concluir que esse host esteja infectado. 59 Esta técnica é de grande valor visto ser não intrusiva (não interage com o tráfego de rede ou os utilizadores), pois é uma análise a nível offline. 5.1 Trabalho futuro A aplicação desenvolvida funciona como prova de conceito, que no entanto precisa evoluir para outros padrões de análise que não foram implementados neste sistema. Um deles poderia ser analisar o trafego de modo a detectar botnets que utilizam fast-flux. Outra melhoria necessária passa pela optimizaçãodo código desta aplicação, dado que o tempo de processamento quando um ficheiro é extenso, é elevado, o que pode levar a alguma perda de interesse na sua utilização por parte do utilizador. 60 Bibliografia [1] Sistema de Detecção de Botnets-Projecto de informática 2011/2012, acedido em: 12/1/2013 -http://projinf.estig.ipb.pt/~a19228a19236/sdb.pdf [2] Microsoft, Vírus informáticos: descrição, prevenção e recuperação, 2012, acedido em: 12/1/2013http://support.microsoft.com/kb/129972/pt [3] Panda Security, 2012, acedido em: 12/1/2013http://www.pandasecurity.com/portugal/homeusers/security-info/classicmalware/trojan/ [4] Pereira, Ana Paula, Tecmundo, O que é um Trojan?, Agosto de 2008, acedido em acedido em: 12/1/2013http://www.tecmundo.com.br/seguranca/196-o-que-e-um-trojan.htm [5]Honeycutt, Jerry, Como Proteger o seu Computador do Spyware e do Adware, Outubro de 2004, acedido em: 12/1/2013http://www.microsoft.com/brasil/windowsxp/using/security/expert/honeycutt _spyware.mspx [6] Martins, Elaine, Tecmundo, Setembro 2008, acedido em: 12/1/2013http://www.tecmundo.com.br/spyware/271-o-que-e-adware-.htm [7]Shetty, Sachin, Introduction to Spyware Keyloggers, Novembro de 2010, acedidoem: 12/1/2013 http://www.symantec.com/connect/articles/introduction-spyware-keyloggers [8]Panda Security, 2012, acedido em: 12/1/2013http://www.pandasecurity.com/portugal/homeusers/securityinfo/cybercrime/spyware/ [9]Xavier, Andressa,Tecmundo, O que é Spyware?, Julho de 2008, acedido emacedido em: 21/1/2013http://www.tecmundo.com.br/spyware/29-o-que-e-spyware-.htm 61 [10]Haumana, Origin and Current Meaning of Rootkit ,Junho 2012, acedidoem: 21/1/2013http://forum.kasperskyclub.com/index.php?showtopic=8676 [11]symantec, Windows RootkitOverview, 2005, acedido em: 21/1/2013https://www.symantec.com/avcenter/.../windows.rootkit.overview.pdf [12] Barwinski, Luísa, Tecmundo, Junho de 2009, a acedido em: 21/1/2013http://www.tecmundo.com.br/antivirus/2174-o-que-e-rootkit-.htm [13] Panda Security, acedido em: 4/3/201312/1/2013http://www.pandasecurity.com/homeusers/downloads/docs/product/h elp/is/2012/po/690.htm [14]Artigonal, Agosto de 2011, acedido em: 16/5/2013http://www.artigonal.com/seguranca-artigos/voce-sabe-o-que-e-backdoor5084941.html [15] Entenda o que é um backdoor, acedido em: 16/5/2013http://www.crimespelainternet.com.br/entenda-o-que-um-backdoor/ [16]Diário Digital, Julho de 2012, acedido em: 17/5/2013http://diariodigital.sapo.pt/news.asp?id_news=583395 [17] spamhaus, The Definition of Spam, acedidoem: 24/5/2013http://www.spamhaus.org/consumer/definition [18] Netfolio, O Que é o SPAM?,acedido em: 12/1/2013http://www.netfolio.pt/spam [19] Wikipédia, Junho de 2012, acedido em: 12/1/2013 acedido em: 24/5/2013 http://pt.wikipedia.org/wiki/Keylogger [20] Machado, Jonathan D, Tecmundo, Junho de 2012, acedido em: 24/5/2013 http://www.tecmundo.com.br/spyware/1016-o-que-e-keylogger-.htm 62 [21] Pinto, Pedro, Segurança Informática – Sabe o que é Ransomware?, Maio de 2012, acedido em: 12/1/2013http://pplware.sapo.pt/windows/software/seguranca-2/seguranainformtica-sabe-o-que-ransomware/ [22]Karas, Eduardo Vieira, Ransomware: conheça o invasor que sequestra o computador, Setembro de 2011, acedido em: 12/1/2013http://www.tecmundo.com.br/virus/13275-ransomware-conheca-o-invasorque-sequestra-o-computador.htm [23] Neto, Raimundo Pereira: Sistema de detecção de Intrusos em Ataques Oriundos de Botnets Utilizando Método De Detecção Hibrido, Junho 2011, acedido em: 12/1/2013http://www.tedebc.ufma.br/tde_arquivos/10/TDE-2012-04-30T103824Z640/Publico/dissertacao%20Raimundo.pdf [24] Correia, Pedro : Caracterização Estatistica de Botnets, 2011 acedido em: 24/5/2013 https://ria.ua.pt/bitstream/10773/7394/1/244860.pdf [25] Feily, Maryam e Shahrestani, Alireza, A Survey of Botnet and Botnet Detection, 2009acedidoem: 24/4/2013 [26] Arantes, Alison Carmo, Detecção e Remoção de botnets na rede do POP- MG, Dezembro de 2005acedido em: 24/5/2013 [27]Hossain, Soraya, Detecção de aplicações envio de SPAM através da mineração de trafego DNS, Dezembro de 2010, acedido em acedido em: 24/5/2013 http://www.lume.ufrgs.br/bitstream/handle/10183/28329/000767844.pdf?sequence=1 [28] Wikipedia, Domain Name System, acedidoem: 24/5/2013 http://pt.wikipedia.org/wiki/Domain_Name_System [29] Hong, Linh Vu, DNS Traffic Analysis for Network-based Malware Detection, Abril 2012acedidoem: 24/5/2013 63 [30] Arthur, Luiz, DNS – Domain Name System, Slides de suporte de aula de Redes de Computador, Junho de 2009, acedido em: 24/5/2013 http://www.slideshare.net/luiz_arthur/redes-dns [31]X. Hu, M. Knysz, and K. Shin, \Rb-seeker: auto-detection of redirection botnets," in ISOC Network and Distributed System Security Symp, 2009acedidoem: 24/5/2013 [32] M. Antonakakis, R. Perdisci, D. Dagon, W. Lee, and N. Feamster, \Buildinga dynamic reputation system for DNS," in 19th Usenix Security Symposium,2010.acedidoem: 24/5/2013 [33] L. Bilge, E. Kirda, C. Kruegel, and M. Balduzzi, \EXPOSURE: FindingMalicious Domains Using Passive DNS Analysis," in Proceedings of NDSS,2011acedidoem: 24/5/2013 [34] M. Antonakakis, R. Perdisci, W. Lee, N. Vasiloglou II, and D. Dagon, \Detecting malware domains at the upper DNS hierarchy," in Proceedings ofthe 20th USENIX Security Symposium, acedidoem: 24/5/2013 [35]S. Hao, N. Feamster, and R. Pandrangi, \Monitoring the Initial DNSBehavior of Malicious Domains," in ACM SIGCOMM Internet MeasurementConference, Berlin, Germany, November 2011 acedidoem: 24/5/2013 [36] Loureiro, H. C# 4.0 com Visual Studio 2010. FCA – Editora de Informática, LDA – Junho de2011.acedido em: 24/5/2013 [37] José Cordeiro. http://projinf.estig.ipb.pt/~a20186/proj.pdfacedido em: acedido em: 24/5/2013 [38] Vicente Carlos, Pinto Jorge, Setembro de 2012, acedido em: 24/5/2013 http://projinf.estig.ipb.pt/~a21280a20556/Relatorio_a20556_a21280.pdf [39] Pinzon, Scott;Nachreiner, Corey (2009) - Understanding and Blocking the New Botnetsacedidoem: 24/5/2013 64 65
Documentos relacionados
ministério da defesa exército brasileiro departamento de ciência e
Esse projeto tem por finalidade desenvolver uma técnica de detectar botnets a partir da análise de um tráfego da internet através de propriedades de grafos de dispersão de tráfego (TDGs) e estabele...
Leia mais