Detecção do Malware Conficker com Snort Evandro Costa1, Fausto Levandoski1, Guilherme Hoescher1, Vanessa Fernandes1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 – 93.022-000 – São Leopoldo– RS – Brasil [email protected], {farole, guinhog}@gmail.com, [email protected] Abstract. This article aims to demonstrate the behavior of the IDS Snort in detection of the malware Conficker, detailing the structure and functioning of the Worm and finally to explain how the Snort alert him based on a given signatures. Resumo. Este artigo tem por objetivo demonstrar o comportamento do IDS Snort na detecção do Malware Conficker, detalhalhando a estrutura e funcionamento deste Worm e por fim explicar o modo como o Snort o alerta baseado em uma determinada assinatura. Palavras-chave: Malware, Conficker, IDS, assinatura. 1. Introdução Todo o ano cresce o número de incidentes de segurança relacionados a empresas e usuários domésticos, gerando prejuízo para as mesmas. Entre eles estão roubo de informações, senhas de banco, cartões de crédito, alteração e uso indevido de dados coletados sem consentimento, espionagem, chantagem, motivações religiosas e terroristas, concorrência desleal ou até mesmo uma simples brincadeira de adolescente. As técnicas para tais crimes virtuais são inúmeros, em sua maior parte são realizadas sem que a vítima perceba que está sendo lesada. Mas então como se prevenir? Ferramentas antivírus, atualizações do sistema operacional, antispyware já não são suficientes. Algumas delas não conseguem detectar novas pragas virtuais, pois a arquitetura e funcionamento destas estão cada vez mais elaborados para se ocultarem dentro dos sistemas operacionais, programas, etc. As ferramentas de detecção de intrusão (IDS) auxiliam nestas descobertas, alertando o administrador da rede de que algo estranho pode estar ocorrendo e que pode ser um possível ataque. No estudo a seguir o exemplo é dado através do Malware Conficker que infectou milhões de máquinas no mundo inteiro causando lentidão nas redes coorporativas, alto consumo de CPU de servidores, bloqueio ao acesso de páginas antivírus e atualizações de softwares, entre outros transtornos. Na sessão 2 deste artigo serão descritos Malwares e IDS, na sessão 3 será abordado o funcionamento do Malware conficker, formas de propagação e seus objetivos. Na sessão 4 será comentada uma breve estrutura do IDS Snort bem como a assinatura existente para detecção do Conficker, como ela o identifica e o alerta de forma mais detalhada. Na sessão 5 será desmonstrado o estudo do caso. Por fim, na sessão 6 será mostrada a conclusão. 2. Descrição de Malwares e IDS Malwares são programas com códigos maliciosos projetados para executar ações danosas em um ou mais computadores alheios de forma ilícita. Dentre eles estão os vírus, cavalos de tróia, spywares, bakcdoors, keyloggers, worms, bots e rootkits. Os programas de malware destrutivos utilizam ferramentas conhecidas de comunicação para se propagarem. Por exemplo, worms enviados por e-mail e mensagens instantâneas, Cavalos de Tróia provenientes de websites e arquivos infectados com vírus obtidos por download. O malware também tenta explorar as vulnerabilidades existentes nos programas e sistemas operacionais, tornando sua entrada discreta e fácil. O Malware foi desenvolvido com a intenção de permanecer despercebido, ocultando-se ativamente ou simplesmente não se fazendo notar em um sistema conhecido pelo usuário [1, 2]. Com essa preocupação, a partir de observações realizadas por estudiosos, é que surgiram os IDS (Sistema de detecção de Intrusão) com a finalidade de monitorar a rede, atividades maliciosas no sistema ou violações de políticas em busca de possíveis incidentes de segurança, produzindo relatórios e enviando alertas aos administradores de redes, o que antes era feito manualmente, através da leitura de logs, eventos, etc. As técnicas de detecção que os IDSs utilizam são baseadas em assinaturas, anomalias ou análise do estado do protocolo. As técnicas estabelecidas em assinaturas trabalham na procura de tráfego de rede ou seqüências de pacotes conhecidos como maliciosos, as de anomalias procuram por comportamentos suspeitos, considerado anormal e por fim as técnicas que analisam o estado dos protocolos conhecem o comportamento destes e trabalham através da comparação de eventos com seus perfis, determinando como os protocolos devem ou não operar. 3. Malware W32/Conficker.worm O worm W32/Conficker.worm como apresenta a McAfee é conhecido também por outros nomes como: W32/Conficker.A/B, Mal/Conficker, W32.Downadup e WORM_DOWNAD.A[3]. Sua primeira detecção ocorreu em 21 de novembro de 2008 e afetou os sistemas operacionais Microsoft Windows 95, 98, 2000, ME, NT, Server 2003, Vista e XP [4] explorando uma falha reportada pela Microsoft nestes sistemas segundo Bulletin Board MS08-067 [6]. Este worm quando infecta o sistema hospedeiro imediatamente paralisa os serviços do Windows relacionados a antivírus, atualizações do sistema operacional bem como o funcionamento de todos os antivírus e anti spywares mais conhecidos além de bloquear o acesso a páginas de internet que contêm palavras relacionadas a solução dos problemas por ele causados e fabricantes de antivírus. [9] Após infectar o sistema hospedeiro ele tenta se copiar para todos os computadores detectados na mesma rede através de broadcast, primeiramente solicitando qual usuário está logado em cada máquina, utilizando uma lista de senhas pré-definidas, assim como as próprias credencias do usuário ativo no sistema hospedeiro para acessar o computador remoto através do compartilhamento administrativo ADMIN$ [3]. Ao tentar acesso a todos os computadores utilizando usuários e senhas inválidos, dependendo das políticas de segurança de cada site, as contas de usuários são bloqueadas para o uso [5]. Além de transmitir-se explorando a falha, pelo compartilhamento administrativo, o mesmo auto copia-se para todos os compartilhamentos de rede detectados, assim como dispositivos removíveis. Como medida para contornar firewall´s ele faz uso do protocolo SSDP para localizar outros computadores que tenham saída para a internet utilizando dispositivos Universal Plug and Play e através destes consegue infectar computadores protegidos. Outro método de propagação utilizado pelo worm é de criar uma rede peer-to-peer entre os sistemas infectados reduzindo assim a performance da rede [9]. Para fazer uso deste contorno o worm tenta acessar sites que retornam o endereçamento IP da conexão e com esta informação divulga para seus peers novos pontos de acesso a Internet [5]. 4. Snort O Snort é um software de código aberto destinado a monitorar o tráfego de pacotes em redes IP, realizando análises de diversos protocolos (nível de rede e aplicação) e conteúdo (hexa e ASCII) [7]. Como apresentado na sessão 2, um IDS utiliza-se de algumas técnicas de detecção que podem ser: por assinatura, anomalia ou estado do protocolo. Neste item é abordada a técnica de detecção por assinatura que está sendo utilizada neste experimento. A arquitetura do Snort é composta por quatro componentes [10]: • Farejadores: Pode ser um dispositivo de hardware ou software utilizado para capturar, através da biblioteca lipcap, os dados que trafegam por uma rede, possui a capacidade de analisar diversos protocolos e transformar os pacotes de dados em dados legíveis e conhecidos; • Pré-processadores: São responsáveis por classificar os dados capturados pelos farejadores, com o objetivo de detectar o comportamento dos pacotes; • Mecanismo de Detecção: Esse é o componente mais importante do Snort, pois compara as informações recebidas do pré-processamento com as regras/assinaturas de ataques conhecidos; • Componente de Alerta/Registro: Considerando que as informações classificadas pelo pré-processamento correspondem a alguma regra/assinatura, esse componente será responsável por emitir um alerta de acordo com configurações previamente realizadas pelos administradores do IDS. A técnica de detecção por assinatura possibilita a identificação de ataques conhecidos como buffer overflow, port scans, ataques CGI (Common Gateway Interface), verificação de SMB (Server Message Block). Com o conhecimento prévio do funcionamento dos ataques, torna-se possível desenvolver assinaturas que identifiquem os mesmos através da comparação dos dados coletados pelos sensores do IDS com a base de assinaturas [8]. Porém nessa técnica há uma desvantagem, pois identifica apenas ataques conhecidos. Foi identificado que a comunidade que mantém o Snort libera novas assinaturas a partir de horas ou dias de um novo ataque. Contudo, a técnica de detecção por assinatura reduz significativamente os falsos positivos [9]. 4.1 Assinatura Conficker_B_Shellcode O Conficker_P2P_Detector é um pré-processador do Snort capaz de detectar se alguma estação da rede está infectada pelo Conficker B. Para isso é necessário habilitar o processador e adicionar as assinaturas do worm a alguma regra de detecção. Nos testes efetuados foi utilizada a seguinte assinatura, e o seu funcionamento será apresentado de forma detalhada: [11] alert tcp $EXTERNAL_NET any -> $HOME_NET 445 (msg:"ET TROJAN Conficker.b Shellcode"; flow:established,to_server; content:"|e8 ff ff ff ff c2|_|8d|O|10 80|1|c4|Af|81|9MSu|f5|8|ae c6 9d a0|O|85 ea|O|84 c8|O|84 d8|O|c4|O|9c cc|Ise|c4 c4 c4|,|ed c4 c4 c4 94|&<O8|92|\;|d3|WG|02 c3|,|dc c4 c4 c4 f7 16 96 96|O|08 a2 03 c5 bc ea 95|\;|b3 c0 96 96 95 92 96|\;|f3|\;|24 |i|95 92|QO|8f f8|O|88 cf bc c7 0f f7|2I|d0|w|c7 95 e4|O|d6 c7 17 cb c4 04 cb|{|04 05 04 c3 f6 c6 86|D|fe c4 b1|1|ff 01 b0 c2 82 ff b5 dc b6 1f|O|95 e0 c7 17 cb|s|d0 b6|O|85 d8 c7 07|O|c0|T|c7 07 9a 9d 07 a4|fN|b2 e2|Dh|0c b1 b6 a8 a9 ab aa c4|]|e7 99 1d ac b0 b0 b4 fe eb eb|"; reference:url,www.honeynet.org/node/388; reference:url,doc.emergingthreats.net/2009201; reference:url,www.emergingthreats.net/cgibin/cvsweb.cgi/sigs/TROJAN/TROJAN_Conficker; classtype:trojan-activity; sid:2009201; rev:6;) Tabela 1: Assinatura Conficker_B_Shellcode O objetivo é gerar um alerta com o texto (ET TROJAN Conficker.b Shellcode) baseado na transferência dos dados "|e8 ff ff ff ff c2|_|8d|O|10 80|1|c4|Af|81|9MSu|f5|8|ae c6 9d a0|O|85 ea|O|84 c8|O|84 d8|O|c4|O|9c cc|Ise|c4 c4 c4|,|ed c4 c4 c4 94|&<O8|92|\;|d3|WG|02 c3|,|dc c4 c4 c4 f7 16 96 96|O|08 a2 03 c5 bc ea 95|\;|b3 c0 96 96 95 92 96|\;|f3|\;|24 |i|95 92|QO|8f f8|O|88 cf bc c7 0f f7|2I|d0|w|c7 95 e4|O|d6 c7 17 cb c4 04 cb|{|04 05 04 c3 f6 c6 86|D|fe c4 b1|1|ff 01 b0 c2 82 ff b5 dc b6 1f|O|95 e0 c7 17 cb|s|d0 b6|O|85 d8 c7 07|O|c0|T|c7 07 9a 9d 07 a4|fN|b2 e2|Dh|0c b1 b6 a8 a9 ab aa c4|]|e7 99 1d ac b0 b0 b4 fe eb eb|” entre quaisquer hosts na rede utilizando como porta TCP de destino 445. 5. Demonstrações práticas Para verificar a atividade do worm assim como seu comportamento foram utilizados 3 computadores sendo eles: 1. Microsoft Windows XP sem atualizações com conexão a internet. Sistema hospedeiro cujo IP é 192.168.1.80/24. 2. Linux CentOs 5.3 + IDS Snort para detecção da atividade do worm. IP 192.168.1.82/24. 3. Microsoft Windows 2003 Server. Servidor a ser atacado com o IP 192.168.1.30/24. Todos os computadores envolvidos estão localizados na mesma rede física e lógica. A configuração do Snort envolve em habilitar o pré-processador para detecção do Conficker além de criar as regras com as assinaturas do worm. Antes de infectarmos o sistema hospedeiro pode ser verificado que os serviços Microsoft permanecem disponíveis, que é possível fazer acesso aos sites de fornecedores de antivírus e que nenhum alerta é reportado pelo Snort além de que nenhum tipo de tráfego de rede suspeito pode ser observado no sistema hospedeiro. Após infectarmos o sistema hospedeiro, imediatamente após o inicio do sistema operacional os seguintes eventos podem ser detectados por ferramentas de monitoramento de rede bem como pelo Snort. 1. Envio de broadcast para localização de sistemas operacionais Windows Server. "10","4.010300","192.168.1.80","192.168.1.255","BROWSER","Request Announcement MAQ" "11","4.011605","192.168.1.80","192.168.1.255","BROWSER","Domain/Work group Announcement GRUPO, NT Workstation, Domain Enum" 2. Resposta de Windows Server "6","4.008083","192.168.1.30","192.168.1.80","NBNS","Registration NB 192.168.1.80" response 3. Envio de broadcast SSDP a procura de gateways para a Internet. "1","0.000000","192.168.1.80","239.255.255.250","SSDP","M-SEARCH HTTP/1.1 " * 4. Resposta de computador que serve como gateway de internet utilizando UPnP. "2","0.009929","192.168.1.177","192.168.1.80","SSDP","HTTP/1.1 200 OK " 5. Pesquisa DNS pelo host www.whatismyipaddress.com "51","2.283534","192.168.1.80","192.168.1.30","DNS","Standard www.whatsmyipaddress.com" query A 6. Tentativas de conexão pela porta de destino 445 que é onde se encontra a falha de segurança reportada. "1641","90.769319","192.168.1.80","192.168.1.30","SMB","Negotiate Protocol Request" 7. Tentativas de conexão ao compartilhamento administrativo "1647","90.777193","192.168.1.80","192.168.1.30","SMB","Tree AndX Request, Path: \\192.168.1.30\IPC$" Connect "1649","90.779329","192.168.1.80","192.168.1.30","SMB","NT Create AndX Request, FID: 0x800c, Path: \browser" 8. Pacote contendo worm e este é detectado pelo Snort. A área marcada na figura representa componentes da assinatura do worm. "1656","90.785036","192.168.1.80","192.168.1.30","SRVSVC","NetPathCanoni calize request" Figura 1: Log do programa Wireshark 9. Log registrado no Snort [1:2009201:6] ET TROJAN Conficker.b Shellcode [**] [Classification: A Network Trojan was detected] [Priority: 1] 09/30-08:48:17.914221 192.168.1.80:1110 -> 192.168.1.30:445 TCP TTL:128 TOS:0x0 ID:506 IpLen:20 DgmLen:832 DF ***AP*** Seq: 0x158C6A9B Ack: 0xD77F0FAF Win: 0xF603 TcpLen: 20 [Xref=>http://www.emergingthreats.net/cgibin/cvsweb.cgi/sigs/TROJAN/TROJAN_Conficker][Xref=> http://doc.emergingthreats.net/2009201][Xref=> http://www.honeynet.org/node/388] 6. Conclusões A Detecção de Intrusão com a utilização de NDIS auxilia fundamentalmente na proteção das redes organizacionais, mas no que tange a reatividade este controle de segurança deixa a desejar, o que é compreensível, tendo em vista a arquitetura e proposta de um NIDS. Mas, essa limitação pode ser solucionada com ferramentas auxiliares. A utilização da técnica de detecção por assinatura foi eficaz, mas permanece um aspecto (amplamente conhecido) de somente ataques conhecidos, ou seja, ataques para os quais o sistema já possui regras de identificação. A percepção foi que o Snort proporciona flexibilidade na construção de regras/assinaturas e plug-ins eficientes utilizados para inspecionar os pacotes capturados, deixando a desejar apenas na quantidade de protocolos que o sistema tem a capacidade de analisar. Os testes práticos e pesquisas referentes ao Snort mostraram que o mesmo é muito ágil para redes de pequeno porte, sendo utilizado por diversas empresas de renome no mercado. É um projeto vivo, mantido por diversos grupos e profissionais da segurança da informação. Referências Bibliográficas: [1] Cartilha de Segurança para a Internet. Parte VIII: Códigos Maliciosos. Cert.br (2006). http://cartilha.cert.br/download/cartilha-08-malware.pdf) (Consultado em 14 de setembro de 2010). [2] Malware. Como eles atacam. Symantec.com (http://www.symantec.com/pt/br/norton/security_response/malware.jsp) (Consultado em 14 de setembro de 2010). [3] W32/Conficker.worm (http://vil.nai.com/vil/content/v_153464.htm) (Consultado em 27 de setembro de 2010). [4] W32/Downnadup (http://www.symantec.com/security_response/writeup.jsp?docid=2008-112203-240899) (Consultado em 27 de setembro de 2010). [5] An Analysis of Conficker's Logic and Rendezvous Points (http://mtc.sri.com/Conficker/) (Consultado em 27 de setembro de 2010) [6] Microsoft Security Bulletin MS08-067 (http://www.microsoft.com/technet/security/bulletin/ms08-067.mspx) (Consultado em 27 de setembro de 2010). [7] Baker, Andrew R. et al. (2004) “Snort 2.1. Intrusion Detection”. 2 ed. Syngress Publishing, EUA. [8] O que é e como funciona uma ferramenta IDS? (http://www.clm.com.br/snort/comofuncionaids.asp) (Consultado em 14 de setembro de 2010). [9] Snort Brasil (http://www.snort.com.br/snort.asp) (Consultado em 17 de setembro de 2010). [10] Análise de sistemas de detecção de Intrusos em redes de computadores (http://www.snort.org.br/arquivos/Monografia-pedro.pdf) (Consultado em 27 de setembro de 2010). [11] Emerging Threats Virus Rules (http://www.emergingthreats.net/rules/emerging-virus.rules) (Consultado em 27 de setembro de 2010).