FATEC SÃO JOSE DOS CAMPOS FLAVIO LUCIO ARAYA MOREIRA ANÁLISE DE TRÁFEGO EM REDES TCP/IP NA DETECÇÃO DE INTRUSÃO SÃO JOSÉ DOS CAMPOS 2009 I FLAVIO LUCIO ARAYA MOREIRA ANÁLISE DE TRÁFEGO EM REDES TCP/IP NA DETECÇÃO DE INTRUSÃO Trabalho de graduação apresentado à FATEC de São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Tecnólogo. Orientador: Esp. Renan França Gomes Nogueira SÃO JOSÉ DOS CAMPOS 2009 II FLAVIO LUCIO ARAYA MOREIRA ANÁLISE DE TRÁFEGO EM REDES TCP/IP NA DETECÇÃO DE INTRUSÃO Trabalho de graduação apresentado à FATEC de São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Tecnólogo. _______________________________________________ Dr. José Carlos Lombardi _______________________________________________ Me. Carlos Henrique Lourenço Feichas _______________________________________________ Esp. Renan França Gomes Nogueira ___/___/___ DATA DE APROVAÇÃO III A minha família, aos meus colegas e meus animais de estimação. IV Agradecimentos Agradeço ao professor e orientador Renan França Gomes Nogueira pelo apoio no desenvolvimento deste trabalho e ao demais professores pelo conhecimento compartilhado. Aos colegas da faculdade pela ajuda mútua ao longo desses anos na faculdade. A família pela força e incentivo em todos esses anos. E a Deus que me guiou durante estes anos de luta e dedicação. V “Não existe um caminho para a felicidade. A felicidade é o caminho” Mahatma Gandhi VI RESUMO Conforme os meios de comunicações avançam, facilitando assim a vida do homem, surgem problemas com relação a sua má utilização ou simplesmente por falta de conhecimento destes sistemas. Visando prevenir e corrigir esses problemas é necessária a conscientização dos usuários e a utilização de ferramentas que protejam os sistemas informatizados assim como a informação propriamente dita. Essas ferramentas são conhecidas como firewalls, antivírus e IDS (Intrusion detection system). IDS ou sistemas de detecção de intrusão são projetados para detectar ataques a uma rede ou computador, comunicando o administrador da rede através de alertas a fim de evitar maiores prejuízos para a empresa ou para o utilizador do sistema. A cada dia que passa a quantidade de ataques se intensificam tornado assim, um IDS, uma ferramenta indispensável em uma rede. Para este trabalho optou-se pela ferramenta freeware Snort. Esta ferramenta foi submetida a uma seqüência de ataques, rodando em um ambiente virtual, projetado para este fim. Ao final dos testes, foram verificados os resultados obtidos, a fim de constatar a eficiência da ferramenta, demonstrando que através da análise de tráfego em redes TCP/IP é possível detectar comportamentos anômalos, tentativas de intrusão e ataques. VII ABSTRACT As mass media advances, making man's life easier, problems arrive concerning the miss utilization or simply the lack of knowledge about such systems. Aiming to prevent and correct those problems the critical consciousness of the users is needed, as well as the use of tools that protect the information systems and the information itself. Such tools are known as firewalls, antivirus, and IDS. IDS or intrusion detection systems are built to detect attacks towards a network or computer, alerting the network administrator through alarms in order to avoid bigger damages to the company or user. The quantity of attacks is intensified as time passes, making an IDS an indispensable tool on a network. For this work the freeware most worldwide used tool, Snort, was chosen. This tool was submitted to several attacks while operating on a virtual environment designed for the tests. At the end of the tests the obtained results were presented in order to give proof of the tool's efficiency, it was shown that with TCP/IP networks traffic analysis it is possible to detect abnormal behaviors, attempts to invade and attacks. VIII LISTA DE FIGURAS 1.1 Novas assinaturas de códigos maliciosos.............................................................12 2.1 Os 4 níveis conceituais da tecnologia TCP/IP e os objetos que trafegam entre níveis ............................................................................................................15 2.2 Vários protocolos nas diferentes camadas da tecnologia TCP/IP ...................17 2.3 Datagrama IP, mostrando os campos no cabeçalho IP ....................................19 2.4 Formato da mensagem ICMP .............................................................................20 2.5 Tipos e códigos de um Pacote ICMP ..................................................................21 2.6 Formato da mensagem UDP ...............................................................................23 2.7 Formato da mensagem TCP ................................................................................24 2.8 Estabelecimento de uma conexão TCP ..............................................................25 2.9 Encerramento de uma conexão TCP ..................................................................26 3.1 Sistema de Detecção por Abuso ..........................................................................35 3.2 Sistemas de Detecção de intrusão baseados em rede ........................................36 3.3 Sistema de Detecção baseado em Hosts ..............................................................38 3.4 Sistema de Detecção de Intrusão Distribuído ....................................................39 3.5 Arquitetura do Snort ...........................................................................................41 3.6 Esquema de funcionamento de um farejador de pacotes .................................41 3.7 Pré-Processador do Snort ....................................................................................42 3.8 Mecanismo de Detecção .......................................................................................43 3.9 Cabeçalho de uma regra do Snort.......................................................................45 4.1 Arquitetura cliente-servidor com servidor Windows .......................................51 4.2 Inteface gráfica do NMAP – Zenmap.................................................................52 4.3 Hydra e suas opções de uso..................................................................................53 4.4 Interface gráfica do Mestasploit Framework.....................................................54 4.5 Software Valhala Honeypot.................................................................................55 4.6 Hping e suas opções de uso...................................................................................55 4.7 Resultados obtidos com o Snort sendo demonstrados no Base.........................58 IX LISTA DE TABELAS 2.1 Exemplos de protocolos no nível de aplicação e suas respectivas portas.........28 3.1 Opção de Flags TCP no Snort..............................................................................47 4.1 Resultados Obtidos...............................................................................................57 4.2 Resultado da análise de geração de falsos positivos...........................................59 X LISTA DE SIGLAS E ABREVIATURAS ARP: Address Resolution Protocol CPU: Central Processor Unit DIDS: Distributed Intrusion Detection System DNS: Domain Name System FTP: File Transfer Protocol HIDS: Host Intrusion Detection System HTTP: Hyper Text Transfer Protocol IANA: Internet Assigned Numbers Authority ICMP: Internet Control Message Protocol IDS: Intrusion Detection System IMAP: Internet Message Access Protocol I/O: Input/Output IP: Internet Protocol MAC: Media Access Control NIC: Network Interface Card NIDS: Network Intrusion Detection System NFS: Network File System NTP: Network Time Protocol POP: Post Office Protocol RARP: Reverse Address Resolution Protocol RFC: Request for Comment RPC: Remote Procedure Call SMTP: Simple Mail Transfer Protocol SNMP: Simple Network Management Protocol SSH: Secure Shell TCP: Transmission Control Protocol UDP: User Datagram Protocol XI SUMÁRIO 1 INTRODUÇÃO.....................................................................................................13 1.1 Motivação...............................................................................................................13 1.2 Objetivos................................................................................................................14 1.2.1 Objetivo Geral.......................................................................................................14 1.2.2 Objetivos Específicos............................................................................................14 1.3 Metodologia...........................................................................................................14 1.4 Organização do Trabalho.....................................................................................15 2 TCP/IP....................................................................................................................16 2.1 Camadas do Modelo TCP/IP...............................................................................16 2.2 Protocolos de resolução de endereço ARP e RARP...........................................18 2.3 Protocolo IP...........................................................................................................19 2.4 Protocolo ICMP.....................................................................................................21 2.5 Protocolo UDP.......................................................................................................23 2.6 Protocolo TCP.......................................................................................................24 2.6.1 Estabelecimento de uma conexão TCP...............................................................25 2.6.2 Encerramento de uma conexão TCP...................................................................26 2.7 Protocolos de Aplicação........................................................................................27 2.8 Considerações Finais.............................................................................................30 3 SEGURANÇA EM REDES E IDS......................................................................31 3.1 Confidencialidade, Integridade e Disponibilidade.............................................31 3.2 Ameaças.................................................................................................................32 3.3 Objetivos da segurança.........................................................................................32 3.4 IDS..........................................................................................................................33 3.4.1 Detecção de intrusão por anomalia.....................................................................34 3.4.1.1 Abordagem estatística...........................................................................................34 3.4.1.2 Abordagem por prognósticos de padrões...........................................................35 3.4.2 Detecção de intrusão por abuso...........................................................................35 3.4.3 Classificação de Sistemas de Detecção de Intrusão por Funcionalidade........36 3.4.3.1 Sistemas de Detecção baseados em rede.............................................................36 XII 3.4.3.2 Sistemas de Detecção baseados em Host.............................................................38 3.4.3.3 Sistemas de Detecção Distribuídos......................................................................39 3.4.4 Snort.......................................................................................................................41 3.4.4.1 Farejador...............................................................................................................42 3.4.4.2 Pré-Processador...................................................................................................43 3.4.4.3 Mecanismo de detecção........................................................................................44 3.4.4.4 Componente de Alerta\Registro..........................................................................45 3.4.4.5 Regras no Snort.....................................................................................................45 3.4.4.6 Ação da Regra.......................................................................................................46 3.4.4.7 Protocolos...............................................................................................................47 3.4.4.8 Opções de Regras..................................................................................................47 3.5 Honeypots..............................................................................................................49 3.5.1 Honeypots de baixa Interatividade......................................................................49 3.5.2 Honeyposts de alta Interatividade.......................................................................50 3.6 Considerações Finais.............................................................................................50 4 ANÁLISE DE TRÁFEGO EM REDES TCP\IP................................................51 4.1 Arquitetura de teste..............................................................................................51 4.2 O ambiente de teste...............................................................................................52 4.3 Casos de Teste........................................................................................................57 4.4 Tipos de Ataques utilizados..................................................................................57 4.5 Resultados obtidos.................................................................................................58 4.6 Considerações Finais.............................................................................................60 5 CONCLUSÃO.......................................................................................................62 5.1 Experiências Obtidas............................................................................................62 5.2 Trabalhos Futuros.................................................................................................63 REFERÊNCIAS............................................................................................................................64 13 1 INTRODUÇÃO 1.1. Motivação As redes de computadores representaram um grande avanço nos meios de comunicação, permitindo a troca de informações em frações de segundos seja em qualquer lugar do globo terrestre. Contudo surgem problemas com relação à segurança da informação que trafega pela rede e dos serviços disponíveis na rede. O Relatório Symantec de Ameaças à Segurança na Internet analisa e discute as atividades das ameaças ocorridas durante um período de um ano. Ele inclui atividades de ameaças na Internet, vulnerabilidades, códigos maliciosos, phishing, spams, riscos à segurança e futuras tendências. A figura 1.1 representa o relatório de ameaças de segurança da Internet da Symantec (publicado em 2008) e mostra o número de novas ameaças que surgiram desde 2002. Figura 1.1 – Novas assinaturas de códigos maliciosos Fonte: Symantec Corporation 14 1.2 Objetivos Nas sessões a seguir são apresentados os objetivos deste Trabalho. 1.2.1. Objetivo Geral O objetivo desse trabalho é demonstrar que através da analise de tráfego em redes tcp/ip é possível detectar comportamentos anômalos, tentativas de intrusão e o ataque propriamente dito. 1.2.2. • Objetivos Específicos Selecionar ferramentas, sendo estas freeware ou opensource, e utilizar as mais adequadas para simular ataques e a respectiva detecção de intrusão; • Com base nas ferramentas escolhidas, simular ataques em um ambiente de teste; • Após a simulação de ataques, analisar os dados obtidos com IDS e verificar a eficácia do sistema. 1.3 Metodologia A metodologia utilizada nesta monografia foi baseada em livros de redes de computadores de renome, de segurança em redes assim como no acesso a sites reconhecidos mundialmente na área de segurança. Muitas destas referências foram recomendadas por profissionais da área de 15 segurança. As ferramentas utilizadas na execução prática dos testes foram baseadas nessas referências bibliográficas assim como indicadas por profissionais na área de redes e segurança. Para tanto, serão utilizados sistemas de detecção de Intrusão que automatizam o processo de análise de tráfego. 1.4 Organização do Trabalho Este Trabalho está organizado como segue: a) O Capítulo 2 apresenta uma visão sobre TCP/IP e mais especificamente os protocolos que serão utilizados na realização dos ataques. b) No Capítulo 3 será feita uma apresentação sobre conceitos básicos de segurança em redes, Honeypots e também sistemas de detecção de intrusão, demonstrando os tipos de IDS e como é o funcionamento de cada um. c) O Capítulo 4 mostra a arquitetura de rede e a implementação do que virá a ser o ambiente de teste onde serão realizados os ataques e as ferramentas utilizadas, serão apresentados também os resultados obtidos, mediante a realização dos ataques, com IDS e breves comentários sobre seu comportamento. d) No Capítulo 5 apresenta a conclusão do trabalho, sendo composta das considerações finais, experiências obtidas e dos trabalhos futuros. 16 2 TCP/IP Este capítulo mostra uma revisão teórica sobre a tecnologia TCP/IP, assunto fundamental para o entendimento do funcionamento de sistemas de detecção de intrusão, assim como os ataques utilizados neste trabalho. É também apresentada a pilha de protocolos TCP/IP, com uma breve descrição sobre as camadas que a compõe assim como seus respectivos protocolos. Serão apresentados também alguns protocolos da camada de aplicação que merecem atenção quanto à segurança deles em redes de computadores. 2.1 Camadas do Modelo TCP/IP Optou-se pela abordagem down-top, por ser a maneira evolutiva dos meios de telecomunicações, sendo assim, apresenta de uma maneira simples para complexa conforme vão subindo as camadas do modelo TCP/IP. Segundo (COMER, 2000), o modelo TCP/IP está dividido em quatro camadas construídas em cima de uma quinta camada de hardware. FIGURA 2.1 - Os 4 níveis conceituais da tecnologia TCP/IP e os objetos que trafegam entre níveis. FONTE: adaptada de Comer (2000, p. 184) 17 a) Camada de aplicativo: É o nível mais alto do modelo TCP/IP, é nele que os usuários rodam aplicativos e estes acessam serviços através das redes TCP/IP. Um aplicativo interage com um dos protocolos do nível de transporte para enviar ou receber dados, escolhendo assim o meio de transporte adequado podendo ser, uma seqüência individual de mensagens ou um fluxo contínuo de bytes. Nessa camada os dados são passados de forma adequada para a camada de transporte para que possam ser transmitidos. b) Camada de Transporte: A camada de transporte provê a comunicação entre programas aplicativos, também conhecida como comunicação fim-a-fim. Essa camada estabelece e regula o fluxo de informações e pode fornecer transporte confiável. c) Camada de Rede: A camada de rede trata das informações entre as maquinas. Esta camada recebe da camada de transporte um pedido para enviar um pacote junto com a identificação da maquina destino. O pacote é encapsulado em um datagrama IP e preenchido com endereços lógicos de origem e destino entre outros dados e usa um algoritmo para decidir se o datagrama será entregue diretamente ou enviado para um roteador. d) Camada de Enlace de Dados: A camada de Enlace recebe os datagramas IP e os encapsula em frames, preenchendo o cabeçalho de cada frame com os endereços físicos de origem e destino, entre outros dados. Esta camada é responsável também por transmitir os frames para uma rede especifica. Na camada de enlace de dados está o driver da placa de rede, por onde é feita a comunicação com a camada física. e) Camada Física: A camada Física corresponde ao hardware que tratará os sinais elétricos. Esta camada recebe os frames da camada de enlace e os converte em sinais elétricos que iram trafegar pelo meio físico até a próxima interface de rede que pode ser o host destino ou o roteador da rede. 18 FIGURA 2.2 - Vários protocolos nas diferentes camadas da tecnologia TCP/IP. FONTE: adaptada de Stevens (1994, p. 6). 2.2 Protocolos de resolução de endereço ARP e RARP Os nós da rede possuem um ou mais endereços de IP, porém esses endereços não podem ser usados para transmitir pacotes, já que o hardware da camada de enlace não reconhece endereços da Internet. Então supondo que o host 1 queira se comunicar com o host 2 e saiba apenas o ip dele, um pacote de difusão será enviado para a Ethernet perguntando a quem pertence o endereço ip em questão, e o host 2 respondera com seu endereço Ethernet. É o protocolo ARP (Address Resolution Protocol) quem faz essa pergunta e recebe a resposta (TANENBAUM, 2003). O Protocolo RARP (Reverse Adress Resolution Protocol) realiza o contrário do protocolo ARP, ele encontra o endereço IP correspondente a um endereço Ethernet. Ele é muito utilizado em estações de trabalho sem disco, pois é necessário obter uma imagem do sistema operacional a 19 partir de um servidor de arquivos. Para tanto ele precisa de um endereço IP, sendo este solicitado como um pedido em broadcast pela rede, então o servidor RARP vê essa solicitação e procura o endereço Ethernet recebido em seus arquivos de configuração e envia o endereço IP correspondente. 2.3 Protocolo IP O Protocolo IP (Internet Protocol) pode ser considerado como a base para toda comunicação em redes TCP/IP, já que todos os protocolos da pilha TCP/IP dependem dele (COMER, 2000). O Protocolo IP possui um mecanismo de transmissão sem conexão e não-confiavel já que essas funções são de protocolos de mais alto nível. O IP possui três definições. A Primeira, o protocolo IP define a unidade de transferência de dados, ou seja, ela especifica o formato exato dos dados (Datagrama IP). Segunda, o IP é responsável pelo roteamento, escolhendo o caminho por aonde os dados irão. Terceira, inclui regras baseadas na entrega não confiável de pacotes, dizendo assim aos hosts e gateways como deve ser processado o datagrama, como e quando mensagens de erro devem ser geradas e as condições em que pacotes devem ser descartados. Basicamente um datagrama é constituído de um cabeçalho mais a área de dados. A Figura 2.3 mostra o cabeçalho de um Datagrama e uma descrição de seus campos. 20 FIGURA 2.3 - Datagrama IP, mostrando os campos no cabeçalho IP. FONTE: adaptada de Stevens (1994, p. 34). O Campo IP Version contém a versão do protocolo IP utilizada para criar o Datagrama. Hdr Length contem o tamanho do cabeçalho do datagrama mais opções caso estas existam. Type of Service especifica como o datagrama deve ser tratado. Total Length fornece o comprimento do datagrama IP, ou seja, é o tamanho do cabeçalho mais os dados. Identification serve para identificar o datagrama enviado. O campo Flags é dividido em três partes: R, DF e MF, sendo R o bit reservado e que normalmente tem o valor 0, DF o bit responsável por dizer que o datagrama não deve ser fragmentado, e MF o bit responsável por informar que o datagrama esta fragmentado e existem mais fragmentos. Offset indica a posição do fragmento no datagrama. TTL é o contador que indica o numero Maximo de roteadores que o datagrama pode passar. Protocol indica qual o protocolo de transporte usado. Source IP Adress e Destination IP Adress possuem os endereços lógicos de origem e destino, respectivamente. O cabeçalho do datagrama pode ter de 20 bytes a 60 bytes dependendo das opções do Hrd Length. 21 2.4 Protocolo ICMP O protocolo ICMP (Internet Control Message Protocol) foi acrescentado à pilha de protocolos TCP/IP com a finalidade de que os roteadores forneçam erros ou informações sobre ocorrências inesperadas e também que os hosts testem a disponibilidade do destino. As mensagens ICMP trafegam pela rede através de datagramas IP. Contudo, o destino final desta mensagem não chega a nível de aplicativo ou do usuário, e sim do Software IP daquela maquina onde será tratado. O formato de uma mensagem ICMP é apresentado na figura 2.4. FIGURA 2.4 - Formato da mensagem ICMP. FONTE: adaptada de Stevens (1994, p. 70). Embora cada mensagem ICMP possua seu próprio formato, todas elas possuem os campos Type, Code, CheckSum em comum. Type identifica a mensagem. Code fornece informações adicionais sobre o tipo da mensagem e Checksum para tratamento de erros. O protocolo ICMP é utilizado para relatar erros e também solicitação de informação e resposta de informação, podendo, portanto, ser dividido em mensagens ICMP de erro e mensagens ICMP de informação. As condições para que um destino seja considerado alcançável, testado através de uma solicitação de eco e de resposta ao eco, é que primeiramente o software IP no host origem envie o datagrama, em seguida os roteadores intermediários devem rotear o datagrama corretamente, e por ultimo a 22 máquina destino deve estar ativa ou pelo menos respondendo a interrupções, e o trajeto de retorno deve ter rotas corretas. Sempre que houver um erro que impeça que o roteador roteie ou entregue o datagrama, o mesmo deve enviar uma mensagem de destinatário inacessível de volta a origem e em seguida descarta o datagrama recebido (COMER, 2000). Mensagens ICMP são identificadas pelo campo Type sendo que o valor do campo Code depende do Type podendo ter um ou mais valores diferentes, como mostra a figura 2.5. Figura 2.5: Tipos e códigos que um pacote ICMP pode ter FONTE: adaptada de Stevens (1994, p. 73). 23 2.5 Protocolo UDP O protocolo UDP (User Datagram Protocol) opera na camada de transporte logo acima da camada de rede e utiliza o IP para enviar e receber datagramas de uma aplicação para a outra. Ele assim como o IP, é um protocolo sem conexão e sem garantia de entrega, ou seja, não usa confirmação para garantir que as mensagens cheguem, não ordena as mensagens de entrada e não fornece um controle de velocidade das informações que fluem entre as máquinas. Contudo ele acrescenta a habilidade de distinguir múltiplos destinos em um único host através da utilização de portas. Uma mensagem UDP possui duas partes: um cabeçalho UDP e uma área de dados como na Figura 2.6. FIGURA 2.6 - Formato da mensagem UDP. FONTE: adaptada de Stevens (1994, p. 144). O campo Source port number contem o numero da porta utilizado pela aplicação na máquina origem. O campo Destination Port Number contem o numero da porta utilizado pela aplicação na maquina destino. A porta de origem é opcional, quando usada, especifica para qual porta devem ser enviadas as respostas. O campo UDP Length contém o tamanho do cabeçalho UDP mais o tamanho dos dados. O campo UDP Checksum é opcional e nem sempre é usado para diminuir o overhead, através de uma rede local altamente confiável. 24 2.6 Protocolo TCP O TCP (Transmission Control Protocol) é um protocolo de transporte que ao contrario do UDP, é orientado a conexão e oferece garantia de entrega. Uma conexão é como uma chamada telefônica, ou seja, é necessário que o outro lado da ponta aceite a comunicação, portanto é fechado um circuito virtual entre origem e destino. Quanto à garantia de entrega, significa que antes do host enviar os dados ele precisa de uma confirmação quanto à chegada dos dados, sem contar que os dados são seqüenciados de forma que os pacotes são identificados permitindo que os dados sejam reordenados caso cheguem fora de ordem e descartados caso haja pacotes duplicados. Outra funcionalidade do protocolo TCP é o controle de fluxo, em que um host informa ao outro quantos bytes ainda poderão ser aceitos, evitando sobrecarga de buffer. O formato de uma mensagem é mais complexo apresentando campos utilizados no controle da comunicação e transmissão de dados entre hosts como na figura 2.7. FIGURA 2.7 - Formato da mensagem TCP. FONTE: adaptada de Stevens (1994, p. 225). 25 Os campos Source Port Number e Destination Port Number, identificam as portas utilizadas para comunicação pelos aplicativos de origem e destino respectivamente. Quando combinados com o IP de origem e destino, identificam sem equivoco a conexão. Sequence Number identifica a posição no stream do segmento, sendo que o primeiro segmento recebe um valor atribuído pelo SO chamado de Initial Sequence Number (ISN). Acknowledgement Number identifica o numero de seqüência do próximo segmento. Hrd Length contem o tamanho do cabeçalho do segmento. Reserved é reservado para utilização futura. Bits de código identificam a finalidade e o conteúdo do segmento, eles definem como interpretar outros campos do cabeçalho. Window Size prove o controle de fluxo, informando o numero Maximo de bytes que podem ser recebidos por um host. Urgent Pointer informa que os dados a partir do byte por ele indicado têm maior prioridade. 2.6.1 Estabelecimento de uma conexão TCP O protocolo TCP utiliza um processo conhecido como three-way handshake, para estabelecer uma conexão. No primeiro passo o host envia um segmento com a Flag SYN (synchronize) no campo de código, passando ao servidor o numero da seqüência inicial dos dados que serão enviados. No segundo passo a maquina destino responde com um segmento com ambas Flags SYN e ACK ativados, indicando que confirma o primeiro segmento SYN. No ultimo passo o host envia um segmento com a Flag ACK apenas confirmando o SYN enviado pelo servidor, conforme ilustrado na figura 2.8. 26 FIGURA 2.8 – Estabelecimento de uma conexão TCP. FONTE: adaptada de Comer (2000, p.238). 2.6.2 Encerramento de uma conexão TCP Para o termino de uma conexão é utilizado um handshake de três vias modificado, que na verdade, são quatro mensagens. Quando não houver mais dados a serem enviados o aplicativo informa ao TCP, que, envia um segmento com a Flag FIN dizendo para encerrar a conexão naquele sentido, que é respondido com um segmento contendo um ACK. O outro lado da conexão pode continuar enviando dados, até que não haja mais dados a enviar, realizando o mesmo processo de envio de um segmento FIN, sendo respondido com um segmento ACK. Contudo além do encerramento normal de uma conexão, existem situações em que é necessário um termino forçado da conexão. Para tanto se utiliza a Flag RST, em que a outra extremidade responde a esse segmento com essa Flag, abortando a conexão. O TCP se encarrega de informar ao aplicativo que ocorreu um reset. Quando um reset é utilizado, a transferência em ambas às direções cessa imediatamente e recursos como buffers passam a ser liberados (COMER, 2000). Este processo é ilustrado na figura 2.9. 27 FIGURA 2.9 – Encerramento de uma conexão TCP. FONTE: adaptada de Comer (2000, p.240). 2.7 Protocolos de Aplicação As aplicações, também chamadas de serviços, operam na camada mais alta do modelo TCP/IP que é a camada de Aplicação. Estes protocolos estão associados a parâmetros como (Número da porta, identificadores, entre outros), que são nomeados pela IANA (Internet Assigned Numbers Authority), que é um órgão responsável por atribuir valores únicos para os parâmetros destes protocolos. O número das portas pode ser dividido em três categorias: a) Portas privilegiadas (0 – 1023): São portas reservadas para serviços e processos do sistema, ou por aplicações executadas por usuários privilegiados. b) Portas registradas (1024 – 49151): São portas usadas na maioria dos sistemas, por processos de usuários não privilegiados ou por aplicações executadas por usuários sem privilégios. 28 c) Portas dinâmicas ou privadas (49152 – 65535): São portas que não sofrem nenhum controle por parte da IANA. A seguir alguns protocolos do nível de aplicação: a) FTP (File Transfer Protocol): Este protocolo permite o compartilhamento de arquivo entre hosts. Contudo, o FTP oferece algumas vantagens alem da função de transferência de arquivo como por exemplo: a. Acesso interativo: Permite que as pessoas interajam facilmente com servidores remotos. b. Especificação de formato: Permite que o cliente especifique o tipo e o formato dos dados armazenados, como por exemplo, o usuário pode determinar se um arquivo contém texto ou números binários e se os arquivos de textos usam os conjuntos de caracteres ASCII ou EBCDIC. c. Controle de autenticação: Requer que os clientes efetuem um login no servidor para poder requisitar a transferência de arquivos. b) SMTP (Simple Mail Transfer Protocol): Protocolo responsável pelo envio de correio eletrônico. Por se tratar de um serviço simples, ele não especifica como a mensagem é armazenada ou a freqüência com que o sistema de correio eletrônico tenta enviar mensagens. A comunicação entre o cliente e um servidor consiste em um texto ASCII legível (COMER, 2000). c) Telnet: É um protocolo simples de terminal, que permite que um usuário estabeleça uma conexãoTCP com um servidor de terminal remoto mediante uma autenticação. O Telnet oferece três serviços básicos. Primeiro, define um terminal virtual de rede, fornecendo uma interface padrão para sistemas remotos. Segundo, o Telnet fornece um conjunto de opções ao cliente como por exemplo, negociar o tipo de dados passados pela conexão. E por ultimo, não obriga a entrada do cliente via teclado nem a saída indicada na tela. d) DNS (Domain Name System): Protocolo de nomes de domínio que implementa uma hierarquia de nome de máquinas. Um nome de domínio consiste em uma seqüência de subnomes separados por um ponto indo de maneira hierárquica da direita para a esquerda. 29 e) HTTP (Hyper Text Transfer Protocol): Protocolo responsável pela transferência de hipertexto e multimídia é também conhecido como WWW (World Wide Web). f) POP (Post Office Protocol): Protocolo que permite que um cliente obtenha mensagens de correio eletrônico, armazenadas em um servidor POP3. g) SNMP (Simple Network Management Protocol): É um protocolo utilizado no gerenciamento de redes TCP/IP. Este protocolo coleta informações da rede provindas de hosts, gateways ou equipamentos de transmissão. Essas informações são utilizadas para detectar a presença de falhas no funcionamento desses componentes da rede. Tabela 2.1: Exemplos de protocolos no nível de aplicação e suas respectivas portas Aplicação\Serviço Porta FTP 21 SSH 22 TELNET 23 SMTP 25 DNS 53 FINGER 79 HTTP 80 POP3 110 Sun RPC 111 NTP 123 IMAP 143 SNMP 161 NFS 2049 30 2.8 Considerações Finais Este capítulo fez uma abordagem sobre as camadas do modelo TCP/IP assim como alguns protocolos em suas respectivas camadas, que serão abordados nos tópicos a seguir, sendo de fundamental importância O próximo capítulo irá abordar a questão de segurança em redes, dando uma visão sobre conceitos de segurança em redes, políticas, ataques além de abordar as ferramentas que são o foco deste trabalho, os IDS´s, e também Honeypots para simular os serviços. 31 3 SEGURANÇA EM REDES E IDS Segurança em redes se baseia em três princípios: confidencialidade, integridade e disponibilidade. A interpretação desses três aspectos varia de acordo com o contexto. A interpretação de um aspecto em um dado ambiente depende das necessidades individuais, customizadas e leis de uma organização particular. A seguir serão apresentados conceitos básicos sobre segurança e em seguida IDS e Honeypots. 3.1 Confidencialidade, Integridade e Disponibilidade a) Confidencialidade é o acesso da informação apenas a pessoas autorizadas. Mecanismos de controle de acesso auxiliam a confidencialidade, como por exemplo, a criptografia que modifica a maneira como se vêem os dados tornando a informação incompreensível. b) Integridade diz respeito ao estado da informação, ela garante que a informação não é destruída ou corrompida, garantindo assim a prevenção de mudanças impróprias ou não autorizadas. Mecanismos de integridade podem ser divididos em mecanismos de prevenção e mecanismos de detecção. Mecanismos de prevenção são baseados em autenticação adequada e controles de acesso. Mecanismos de detecção não previnem violações de integridade, eles simplesmente reportam que a integridade do dado não é mais confiável, analisando eventos do sistema ou o próprio dado. c) Disponibilidade se refere à capacidade de usar a informação ou recurso quando desejado. Os sistemas normalmente são desenvolvidos com base em modelos estatísticos de uso, com um padrão de uso esperado. 32 3.2 Ameaças Uma ameaça é uma potencial violação da segurança (Bishop, 2002). A violação não necessariamente precisa acontecer para ser considerada uma ameaça. O fato de que uma violação possa ocorrer significa que aquelas ações que poderiam causar isso devem ser protegidas ou preparadas contra. Estas ações são conhecidas como ataques e as pessoas que realizam são chamados de atacantes. Os três princípios de segurança de um sistema – confidencialidade, integridade e disponibilidade contra atacam ameaças a segurança de um sistema. Shirey (1994) divide as ameaças em quatro grandes grupos: disclosure (acesso não autorizado); deception (aceitação de dados falsos); disruption (interrupção ou prevenção correta da operação); e usurpation (controle não autorizado de alguma parte do sistema). 3.3 Objetivos da segurança Uma Política de segurança é um estado que define o que é e o que não é permitido. Um Mecanismo de segurança é um método, ferramenta ou procedimento que fortalece a política de segurança. Dada uma especificação de política de segurança de ações seguras ou não seguras, estes mecanismos de segurança podem: prevenir, detectar ou recuperar-se do ataque. As estratégias podem ser usadas juntas ou separadas. Prevenção significa que um ataque irá falhar. Um exemplo simples de prevenção são as senhas que visam prevenir o acesso de usuários não autorizados. Teoricamente uma vez implementado um mecanismo de prevenção, o recurso protegido não precisa ser monitorado. 33 Detecção é muito utilizado quando um ataque não pode ser prevenido. Mecanismos de detecção aceitam que um ataque irá ocorrer, e determinam quando o ataque esta sendo realizado ou quando já tenha ocorrido reportando o mesmo. O ataque pode ser monitorado a fim de prover dados a respeito de sua natureza, gravidade e resultados. Típicos sistemas de detecção monitoram vários aspectos do sistema procurando informações ou ações que indiquem um ataque. Recuperação são mecanismos que primeiramente param um ataque e tentam reparar o dano ocorrido. Por exemplo se um atacante apaga um arquivo, o mecanismo de recuperação deveria restaurar o arquivo de fitas de backup. Mais do que isso um mecanismo de recuperação envolve a identificação e reparo da vulnerabilidade usada pelo atacante já que o mesmo pode retornar. Em alguns casos é função desse mecanismo realizar uma retaliação, fazendo um contra ataque no atacante. 3.4 IDS Intrusion Detection System ou Sistemas de Detecção de Intrusão são tecnologias de software e hardware desenvolvidas para detectar comportamento anômalo na rede ou em um computador. Uma intrusão pode ser vista como uma tentativa ou a ocorrência em si de maneira não autorizada de acesso a informação, manipulação da informação ou tornar um sistema não confiável ou indisponível. As técnicas para detecção de intrusão podem ser divididas em duas categorias: detecção de intrusão por anomalia e detecção por abuso. 34 3.4.1 Detecção de intrusão por anomalia Essa técnica de detecção de intrusão é baseada na idéia de que todo evento intrusivo gera um comportamento anômalo, já que um intruso ao invadir um sistema gera um comportamento anômalo pois ele não conhece exatamente o padrão de recursos de uma máquina. Contudo essa idéia é uma teoria de como deveria ser uma invasão, mas na prática isso nem sempre acontece gerando eventos que são conhecidos como: a) Intrusivo e não anômalo: Chamado de falso-negativo, é uma atividade intrusiva porém não representa um comportamento anômalo. b) Não Intrusivo e anômalo: Chamado de falso-positivo, é uma atividade não intrusiva, mas por representar um comportamento anômalo é considerado um ataque. c) Não intrusivo e não anômalo: É considerada uma atividade normal d) Intrusivo e anômalo: Considerado uma intrusão, pois representa uma atividade intrusiva e anômala ao mesmo tempo. IDS por anomalia são baseados em perfis de sistema, portanto eles analisam o comportamento do sistema que ele esta instalado. Esses sistemas são baseados em alguns tipos de abordagens. 3.4.1.1 Abordagem estatística Neste tipo de abordagem, o sistema analisa as atividades do usuário e processos do sistema e gera perfis de comportamento destes. Periodicamente é gerado um valor indicativo de anormalidade baseado em medidas de anormalidades relacionadas ao perfil do usuário. Essas medidas de atividades, relacionadas a um perfil podem ser, tempo de uso da CPU, número de conexões na rede em um certo período, acesso a arquivos,utilização de processos envolvendo I/O, freqüência de login a partir de um determinado local, utilização de servidor de e-mail, compiladores, shells, editores do sistema, etc. O perfil do usuário é armazenado em um perfil corrente que em 35 intervalos regulares é comparado com o perfil armazenado, a fim de detectar comportamento anômalo. Alguns sistemas utilizam um modelo estático, e não altera o perfil armazenado uma vez definido. 3.4.1.2 Abordagem por prognósticos de padrões Neste tipo de abordagem, tenta-se prever eventos futuros, baseando-se em evento ocorridos. Geralmente esses eventos não são aleatórios e sim previsíveis, pois normalmente seguem um padrão. Uma anomalia é detectada caso a seqüência de eventos a seguir sejam iguais ao padrão previsto. Uma desvantagem deste modelo é que nem todos os comportamentos são conhecidos. 3.4.2 Detecção de intrusão por abuso Este tipo de detecção de intrusão se baseia na idéia de que ataques podem ser representados na forma de padrões e assinaturas (seqüência de eventos que levam a uma intrusão). Na maioria dos IDS há um módulo de detecção por abuso, já que técnicas estatísticas isoladas são limitadas na detecção de intrusão de todos os eventos de segurança, conforme ilustrado na figura 3.1 Uma desvantagem ou limitação deste tipo de detecção é que são utilizadas vulnerabilidades conhecidas, sendo que novas vulnerabilidades não são reconhecidas. Um aspecto relacionado aos IDS que utilizam este método é como desenvolver uma assinatura de modo a esta englobar todas as possíveis variações e que esta assinatura não se encaixe em atividades não intrusivas. 36 Figura 3.1: Sistema de Detecção por Abuso FONTE: Sundaram (2000, p. 4). 3.4.3 Classificação de Sistemas de Detecção de Intrusão por Funcionalidade Sistemas de Detecção de Intrusão podem ser divididos em três categorias quanto ao tipo de análise. a) Sistemas de Detecção baseados em rede (NIDS) b) Sistemas de Detecção baseados em host (HIDS) c) Sistemas de Detecção distribuídos (DIDS) 3.4.3.1 Sistemas de Detecção baseados em rede Este tipo de sistema (Network Intrusion Detection System) deriva seu nome através do fato de que ele monitora um segmento de rede ou sub-rede. Isto é feito mudando o modo de operação da placa de rede (NIC – Network Interface Card). Normalmente uma NIC opera em modo não promiscuo, ouvindo apenas pacotes destinados ao seu próprio endereço de controle de acesso a media (MAC). Para monitorar todo trafego da sub-rede, a placa de rede deve aceitar não somente pacotes endereçados a ela como também os que não são endereçados a ela (modo promíscuo). 37 Para que isto ocorra não apenas a placa deve estar em modo promiscuo, caso os dispositivos que interligam as maquinas na rede seja um hub, todas as portas receberam os pacotes já que um hub envia os pacotes a todas as portas. Caso seja um switch a porta onde este conectado o NIDS, deve estar em modo monitoramento recebendo assim o trafego das outras máquinas. A figura 3.2 mostra uma rede usando três NIDS. As unidades foram colocadas em segmentos de rede estratégicos monitorando assim o trafego de todos dispositivos em seus segmentos. Figura 3.2: Sistemas de Detecção de intrusão baseados em rede FONTE: Bayle (2002, p.12) 38 3.4.3.2 Sistemas de Detecção baseados em Host Sistemas de Detecção baseados em Host (HIDS – Host Intrusion Detection System) diferem de NIDS em dois pontos. Primeiro, um HIDS protege somente o sistema onde esta instalado e não toda a sub-rede. Segundo, a interface de rede do sistema normalmente opera em modo não promiscuo, o que representa uma vantagem em alguns casos – nem todas NICs são capazes de operar em modo promiscuo, apesar das placas modernas poderem. Além de que o modo promiscuo pode forçar muito a CPU em maquinas lentas. Outra vantagem dos HIDS é a habilidade de montar uma regra bem especifica em um sistema em particular. Por exemplo, não há necessidade de configurar regras múltiplas destinadas a detectar Network File System (NFS) exploits em um host que não utiliza NFS. Podendo aperfeiçoar as regras, haverá uma melhora no desempenho e diminuição de falsos positivos. Mas a maior vantagem dos HIDS é a capacidade de detectar mudanças especificas nos arquivos e no sistema operacional do host. É possível monitorar tamanho de arquivos e checksum a fim de garantir que arquivos do sistema não foram maliciosamente modificados. Também é possível interceptar rogue call system (chamadas de sistemas não autorizadas executadas por um atacante) que podem ser uma tentativa de explorar uma vulnerabilidade local. E por ultimo um HIDS pode visualizar trafego que chega somente a um host, o que significa que um NIDS não capturaria. Desvantagens de HIDS são relacionadas à escolha do IDS de acordo com seu sistema operacional. Um IDS age como um serviço adicionando assim carga ao host o que irá gerar consumo de recursos. Outra desvantagem é com relação ao gerenciamento, pois em redes com muitos nós, esta será uma tarefa complexa. A figura 3.3 mostra uma rede usando HIDS em alguns servidores específicos assim como algumas máquinas clientes. Como mencionadas anteriormente as regras para um servidor de email, por exemplo, são configuradas para proteger o servidor, de exploits de servidores de e-mail, enquanto o servidor web de Web exploits. Máquinas individuais podem ser configuradas com regras padrões. Novas regras podem ser adicionadas periodicamente. 39 Figura 3.3: Sistema de Detecção baseado em Hosts FONTE: Bayle (2002, p.14) 3.4.3.3 Sistemas de Detecção Distribuídos Um Sistema de Detecção Distribuído ou DIDS (Distributed Intrusion Detection System) é uma combinação de sensores NIDS e sensores HIDS, distribuídos ao longo de uma rede, e todos eles reportando a um sistema central. Logs de ataques são gerados nos sensores e enviados (periodicamente ou continuamente) para a estação central, onde eles serão armazenados em um banco de dados central. Novas assinaturas são criadas ou adquiridas da Internet para a estação de gerenciamento assim que disponíveis, e essas assinaturas podem ser enviadas para os sensores de acordo com suas necessidades bases. 40 Diferentes tipos de sensores podem ou não ser gerenciados pelo mesmo servidor. Alertas podem ser enviados para um sistema de mensagens usado para comunicar o administrador de IDS. A figura 3.4, mostra um sistema DIDS formado por quatro sensores e uma estação de gerenciamento central. Sensores NIDS 1 e NIDS 2 estão operando em modo promiscuo stealth1 e estão protegendo os servidores públicos. Os sensores NIDS 3 e NIDS 4 estão protegendo os sistemas baseados em host. Figura 3.4 Sistema de Detecção de Intrusão Distribuído. FONTE: Bayle (2002, p.15) 1 Um NIDS em modo stealth significa que ele não esta visível à rede onde esta monitorando. Normalmente isto é feito não fornecendo um endereço IP para o NIC que esta monitorando, é usado um dispositivo conhecido como “Tap” que somente permite a recepção do tráfego. Este método de observar o tráfego da rede é a chave para prevenir que atacantes descubram algo sobre seu NIDS. 41 Uma das maiores vantagens de NIDS é a capacidade de observar sistemas geograficamente distribuídos. As transações entre sensores e gerentes devem ser encriptadas. Pois se enviadas em modo de texto plano pode ser interceptadas e lidas facilmente por atacantes. Outra desvantagem é quanto ao congestionamento da rede, o que pode fazer com que as mensagens enviadas entre sensores e gerentes não sejam recebidas e processadas. 3.4.4 Snort O Snort é um IDS freeware muito popular e utilizado pela comunidade e empresas. É um NIDS baseado em assinaturas, sendo que elas podem ser criadas ou adquiridas no site oficial do fornecedor < www.snort.org/>. A arquitetura do Snort é composta basicamente por quatro componentes: • Farejador • Pré-processador • Mecanismo de detecção • Alerta/Registro A figura 3.5 mostra a arquitetura do Snort: 42 Figura 3.5 – Arquitetura do Snort Fonte: CASWELL et AL., 2003, p.26. 3.4.4.1 Farejador Os farejadores de tráfego são dispositivos de hardware ou software desenvolvidos para capturar os pacotes que trafegam na rede, alguns deles são capazes de analisar diferentes protocolos para transformar os dados de maneira legível. A figura 3.6 mostra o funcionamento do farejador. Figura 3.6: Esquema de funcionamento de um farejador de pacotes. Fonte: CASWELL et AL., 2003, p.27. Para que seja possível capturar tráfego em uma rede, o snort utiliza no Windows a biblioteca Winpcap, permitindo capturar os dados que chegam no host e os que são destinados a outras máquinas também. 43 3.4.4.2 Pré-Processador Este componente é responsável pela classificação dos dados capturados pelo farejador. CASWELL et AL(2003) diz que os pacotes capturados são verificados em relação a certos plugins, como por exemplo um plug-in de portscan, determinando assim o comportamento do mesmo. Quando detectado o comportamento do pacote, ele é enviado para o mecanismo de detecção. Uma vantagem de se utilizarem plug-ins, é a possibilidade de desativar os mesmos de acordo com o perfil da rede onde o IDS é instalado. A figura 3.7 mostra o esquema do Pré-Processador. Figura 3.7: Pré-Processador do Snort Fonte: CASWELL et AL., 2003, p.28. 44 3.4.4.3 Mecanismo de detecção Considerado a parte mais importante de qualquer IDS, é neste mecanismo que os dados vindos do pré-processador serão comparados com as regras definidas de ataques definidos. Quando um pacote corresponde com a informação de alguma regra, ele é enviado para o sistema de alerta. As regras podem ser criadas pelo próprio usuário assim como podem ser baixadas do site oficial do Snort, onde é desenvolvido pela equipe Snort. A figura 3.8 mostra o esquema do Mecanismo de Detecção. Figura 3.8 Mecanismo de Detecção Fonte: CASWELL et AL., 2003, p.29. 45 3.4.4.4 Componente de Alerta\Registro Os dados que chegam ao mecanismo de detecção e correspondem com alguma regra, geram um registro ou alerta, que é disparado por um plug-in de saída. Os plug-ins fornecem a capacidade de configurar logs e alerta de maneira fácil e amigável de ler e entender. Muitos plug-ins são utilizados como banco de dados para armazenar os dados de saída, assim como servidores web para demonstrar os dados processados de maneira bem legível. 3.4.4.5 Regras no Snort As assinaturas no Snort são compostas de regras que podem ser divididas basicamente em cabeçalho e corpo, assim como em um pacote TCP/IP. Os cabeçalhos identificam a ação a ser tomada, qual protocolo está em uso, porta, endereço IP e rede de origem e destino. O cabeçalho pode ser dividido em quatro categorias: a) Ação da Regra b) Protocolo c) Informação de Origem d) Informação de Destino A figura 3.9 mostra os campos de uma regra Snort. 46 Figura 3.9: Cabeçalho de uma regra do Snort Fonte: FONTE: Bayle (2002, p.196) O Snort trabalha com variáveis de rede. As mais utilizadas são as variáveis $EXTERNAL_NET que declara um valor para a rede externa e $HOME_NET para a rede a ser protegida. A declaração de regras no Snort obedece o modelo: <tipo_de_alerta> <protocolo> <rede_origem> <porta_origem> -> <rede_destino> <porta_destino> (Cabeçalho da Regra; Opções; sid:X;...); Ex: alert tcp any any -> any 12345 (msg:" Test Message";) 3.4.4.6 Ação da Regra Uma ação define o que fazer com a informação que vem do pré-processador. O Snort possui cinco ações a serem tomadas: a) Alert – Gera um alerta usando um método selecionado e então loga o pacote; b) Log – Loga o pacote; c) Pass – Ignora o pacote; 47 d) Activate – Alerta e então ativa outra regra dinâmica; e) Dynamic – Permanece inativa até ser ativado por uma regra activate, então atua como uma regra de log; 3.4.4.7 Protocolos Para Protocolos, o Snort suporta atualmente: a) TCP; b) UDP; c) ICMP; 3.4.4.8 Opções de Regra O Snort não precisa do campo corpo para criar uma regra, porém as opções utilizadas no corpo da regra aprofundam a análise da informação, identificando assim ataques mais complexos. Existem quatro categorias para analisar a carga útil do pacotes, sendo que em cima dessas categorias temos diversas opções. As categorias são: a) Meta-data -> Essas opções provêem informação sobre a regra, mas não tem qualquer efeito durante a detecção; b) Payload -> Todas essas opções procuram por dados dentro do payload(seção DATA) do pacote e podem ser inter-relacionadas; c) Non-payload -> Essas opções procuram por dados fora do payload; d) Post-detection -> Essas opções são regras específicas que acontecem após uma regra ter sido detectada. 48 Em cada categorias, temos opções que são utilizadas no corpo da regra, a seguir serão citadas algumas das opções utilizadas, para uma lista completa e detalhada, consulte o manual do Snort: a) Msg: Quando gerado um alerta, imprime uma mensagem escrita na forma de String A opção msg informa a ferramenta de log e alerta qual a mensagem que deve ser impressa quando o alerta for dado. Formato: msg ”mensagem texto aqui”; b) Reference: Permite as regras incluírem URL´s de referência ao ataque. Isto categoriza e provê informação relevante sobre o ataque. Formato: reference: <id system>,<id>; [reference: <id system>,<id>;] Ex: log tcp any any -> any 12345 (reference:CVE, CAN-2002-1010; reference:URL, www.poc2.com; msg:" NetBus";) c) Sid: Utilizado para categorizar, distinguir e identificar ID de regras únicas no Snort. A numeração segue um padrão que precisa ser obedecido da seguinte maneira: a. < 100 – Reservada para uso Futuro; b. 100 – 1000000 – Regras incluídas com a distribuição do Snort; c. > 1000000 – Regras usadas localmente; d) Priority: Emite um nível de alerta para a regra. Essa opção é importante na definição de alertas críticos. Formato: priority: <PRIORITY_VALUE>; Ex: alert udp any any -> $INTERNAL 21974 (priority:1; msg: "Bad Worm Backdoor";) e) Flag: Esta opção permite determinar se cada Flag potencial esta marcada, desmarcada ou usada em combinação com outra Flag. Formato: flags: <TCP_VALUE(s)>; A tabela 3.1 mostra as opções de flags usadas no snort com a opção Flag. 49 Tabela 3.1 Opção de Flags TCP no Snort TCP Flags Descrição da Flag A Checa se a Flag ACK esta ativa Checa se a Flag FIN esta ativa F Checa se a Flag Push esta ativa P Checa se a Flag RST esta ativa R Checa se a Flag SYN esta ativa S Checa se a Flag URG esta ativa U Checa se nenhuma Flag esta ativa 0 Determina se uma flag esta ativa e seguida de outra flag qualquer + Determina se um conjunto de flags esta ativo * a) Content: Analisa a carga útil do pacote a fim de localizar determinada string. Formato: content: “STRING” Exemplo: alert tcp any any -> any 23 (content: "administrator"; nocase;) 3.5 Honeypots Honeypots são sistemas computacionais de segurança cuja finalidade é ser sondado, atacado ou comprometido. Podem ser divididos em Honeypots de baixa interatividade e alta interatividade. 3.5.1 Honeypots de baixa Interatividade Honeypots de baixa interatividade emulam sistemas e serviços, os quais serão expostos a ataques. São mais fáceis de instalar, configurar e capturam quantidade menor de informações se comparado com honeypots de alta interatividade e oferecem menos riscos, pois a emulação dos serviços permite controlar o que pode ser feito ou não. Exemplos de honeypots de baixa interatividade são o software Valhala e o Honeyd. 50 3.5.2 Honeypots de alta Interatividade Utilizam os serviços, sistemas e aplicações reais da máquina. São mais complexos, oferecem maior risco devido ao contato direto com o atacante e capturam maior quantidade de dados. Exemplos de honeypots de alta interatividade são as honeynets e as honeynets virtuais. Uma Honeynet é uma ferramenta de pesquisa, que consiste de uma rede projetada especificamente para ser comprometida, e que contém mecanismos de controle para prevenir que seja utilizada como base de ataques contra outras redes. Podem ser físicas ou virtuais, sendo esta ultima por exemplo um software de virtualização como oVMware. 3.6 Considerações Finais Este capítulo explicou a questão das políticas de seguranças, focando a parte de IDS, mais precisamente o Snort, além de dar um breve enunciado sobre Honeypots para melhor entendimento do ambiente simulado. O capítulo a seguir apresentará a proposta deste trabalho, propriamente dita, onde serão executados os testes, para testar a eficácia do Snort, através de diversas ferramentas usadas em auditoria de segurança. 51 4 ANÁLISE DE TRÁFEGO EM REDES TCP\IP Para verificar a eficiência e observar o funcionamento do Snort, foi montado um ambiente de teste com máquinas virtuais isoladas. Para tanto foram utilizadas as regras disponibilizadas no site do Snort, utilizando assim suas configurações padrão. Este capítulo apresenta a arquitetura de rede e a especificação dos softwares e hardware para o estudo de caso que será realizado. A organização deste capítulo segue da seguinte maneira: a) 4.1 Arquitetura de teste: A arquitetura da rede utilizada nos testes realizados, sendo esta reproduzida através de máquinas virtuais. b) 4.2 O ambiente de teste: Provê as configurações físicas e lógicas dos elementos ativos utilizados no ambiente de teste. c) 4.3 Ferramentas: Aqui serão apresentadas as configurações dos programas utilizados na realização dos ataques. d) 4.4 Tipos de Ataques utilizados: Descrição dos ataques utilizados. e) 4.5 Resultados obtidos: Demonstração dos resultados obtidos com o Snort. 4.1 Arquitetura de teste A rede que será utilizada para desenvolver o ambiente de teste será composta por três maquinas clientes e uma servidora além de uma máquina invasora. Ambiente de Teste: Um servidor Windows Server 2003, três máquinas clientes Windows xp Professional, uma maquina intrusa rodando Windows xp Professional. A figura 4.1 mostra o ambiente de teste. 52 Figura 4.1: Arquitetura cliente-servidor com servidor Windows Server 2003 4.2 O ambiente de teste A configuração das máquinas utilizadas para reproduzir o cenário de teste é apresentada a seguir: a) Servidor Windows: Nesta máquina foi instalado no Virtual Pc (Disponível em < www.microsoft.com/windows/virtual-pc/>) o Windows Server 2003 com 1 GB RAM, rodando o Snort 2.8.4.1, Valhala 1.7, Winpcap 4.0.2 (Disponível em <www.winpcap.org/>), o banco de dados MySql 5.1 ( Disponivel em < www.mysql.com/>) para armazenamento do histórico dos ataques, a ferramenta BASE 1.4.4 (Basic Analysis and Security Engine. Disponivel em < http://base.secureideas.net/>) que foi usada para exibição dos relatórios de ataques através do servidor web Apache 2.2.14 configurado com o módulo de acesso a linguagem PHP 5.3.0 (Disponível em < php.net/index.php>). b) Máquina Atacante: Virtual Pc com Windows XP SP3 com instalação default e 256 MB RAM. 53 c) Máquinas Clientes: Virtual Pc com Windows XP SP3 com instalação default 256 MB RAM. A seguir serão apresentadas algumas ferramentas usadas em segurança em rede e auditoria que serão utilizadas nesse trabalho: a) Nmap 4.76 (Lyon 2008): É uma ferramenta livre e de código aberto usada em auditoria de segurança e exploração de vulnerabilidades em redes. Nmap determina quais hosts estão disponíveis na rede, quais serviços estes hosts estão oferecendo, quais SO´s eles estão executando além de identificar quais filtros de pacotes e firewall estão em uso, sem contar muitas outras características. Sua interface gráfica é mostrada na figura 4.2 a. Vantagens: Flexível – Suporta dezenas de técnicas avançadas de mapeamento. Poderoso – Usado para scannear redes com milhares de computadores. Portável – Roda em diversas plataformas como Linux, Windows, Mac OS, etc. Popular – Muito utilizado por pessoas de todo o mundo além de vir incluso em muitas Distribuições Linux como RedHat, Debian, Gentoo, FreeBSD, etc. Aclamado – Vencedor de vários prêmios incluindo Produto de Segurança da Informação do ano pelo Linux Journal. Figura 4.2: Inteface gráfica do NMAP – Zenmap 54 b) Hydra 5.4 (Hauser, 2006): É uma ferramenta freeware, usada para quebrar autenticações de rede de maneira rápida, que suporta muitos serviços diferentes, entre eles: Telnet, FTP, HTTP, HTTPS, smb, entre outros. Hydra realiza ataques do tipo dicionário contra mais de 30 protocolos. A figura 4.3 mostra as opções do software. Figura 4.3: Hydra e suas opções de uso c) Metasploit 3.2 (Haper et al, 2008) : Metasploit é uma ferramenta gratuita, que torna muito fácil a aquisição, desenvolvimento e execução de exploits para vulnerabilidades de softwares de computadores. Ele vem com milhares de exploits para vulnerabilidades de softwares conhecidas. Metasploit roda em plataformas Linux, BSD, Mac OS X e Windows. Disponível em <www.metasploit.com/>. A figura 4.4 mostra a interface gráfica do software. 55 Figura 4.4: Interface gráfica do Mestasploit Framework d) Valhala (Marcos, 2008): O Valhala é o único honeypot totalmente em português para o sistema Windows e é opensource. Ele é um honeypot de baixa interatividade, o que significa que possui um risco menor de comprometimento do que honeypots baseados em sistemas operacionais reais. Disponível em <valhalahoneypot.sourceforge.net/>. A figura 4.5 mostra a interface do software. 56 Figura 4.5: Software Valhala Honeypot e) Hping2 rc3: Ferramenta para ataques do tipo DoS (negação de serviço). Disponível tanto para Linux quanto para Windows. A figura 4.6 mostra as opções do software. Figura 4.6: Hping e suas opções 57 f) TcpReplay32: Ferramenta usada para gerar tráfego de rede baseado em um arquivo criado no formato tcpdump. Foi usado o comando: tcpreplay –i(Interface) –r(rate Mbps) 100 –v(verbose) –l=100(Loop) <nome do arquivo tcpdump>. Disponível em <http://sourceforge.net/projects/tcpreplay/>. 4.3 Casos de Teste Os testes executados testaram a capacidade de o IDS detectar ataques. Os testes foram executados a fim de verificar a eficácia da ferramenta Snort usando suas regras padrões, disponíveis no site do fabricante, diante dos diferentes tipos de ataques realizados com a presença de tráfego de rede. 4.4 Tipos de Ataques utilizados a) Portscan: Scaneamento de portas, afim de detectar quais portas estão abertas e quais serviços estão rodando nelas; Comando utilizado: nmap –sS (TCP SYN) <ip destino>; nmap –sT(TCP Connect) <ip destino>; nmap –sN(TCP NULL) <ip destino>. Disponível em <nmap.org/>. b) Ataque de dicionário: tentativa de acesso aos serviços através de uma lista com senhas para um determinado login; Comando utilizado: hydra –L(Nome do usuário) login –p(carrega um txt com senhas) file <ip> FTP\telnet. Disponível em <www.thc.org/thc-hydra/>. c) Denial of Service: Ataque que visa saturar uma máquina para que ela não consiga responder requisições dos serviços oferecidos por ela; Foi utilizado o seguinte comando para gerar o ataque: hping –c( packet count) 100 <host destino> ; hping -i(intervalo) m1(1 milisegundo) –c 100 <host destino>; hping 8(scan mode) –c 100 <host destino>. Disponível em <www.hping.org/> 58 d) Exploits: programas que exploram vulnerabilidades de softwares geralmente a fim de obter acesso a máquina alvo ou executar código arbitrário; Esses ataques foram realizados nessa ordem, utilizando as ferramentas citadas na seção de ferramentas. Depois de realizado um ataque, os resultados obtidos com o IDS foram documentados e apresentados na tabela 4.1. 4.5 Resultados obtidos Os resultados a seguir demonstram a quantidade de ataques gerados, detecção e os tipos de ataques utilizados. A tabela 4.1 foi utilizada para melhor representar os resultados obtidos. Tabela 4.1 Resultados Obtidos Snort: Quantidade de ataques reconhecidos Ataques Gerados Detectados % Portscan 3 3 100% Dic.Ataque 2 2 100% DoS 3 1 33% Exploit 5 3 60% Como pode ser verificado na Tabela1, nem todos os ataques puderam ser detectados. O Snort mostrou-se muito eficaz na detecção de portscan, que representa sempre o inicio de um ataque. As falhas na detecção podem ser atribuídas a dois fatores: a) Falta de atualização das assinaturas: Como qualquer outro programa usado na segurança de sistemas que precisa de uma base de dados para detectar uma ameaça, como por 59 exemplo, um antivírus, um IDS que não possui uma assinatura em seu conjunto de regras, não é capaz de detectar um ataque. b) Falha na configuração do IDS: Como dito anteriormente, as regras foram utilizadas com suas configurações padrões e o ambiente virtual rodado em máquinas virtuais, sem a utilização de mídias e interfaces de redes físicas. Tal resultado deve-se ao fato, também, de que o equipamento onde o IDS estava instalado tinha um poder de processamento limitado, sendo assim seu desempenho depende da capacidade da máquina onde esta instalado, para processar mais informações que chegam à rede. Ainda com relação à configuração do IDS, o mesmo foi utilizado com várias regras de serviços que não estavam sendo utilizados, limitando o IDS apenas para os serviços a serem utilizados, a quantidade de testes a serem realizados diminui, permitindo assim que o mesmo analise um maior número de informações em um período de tempo menor. A figura 4.7 mostra o resultado do ataque , nmap –sT, no Base através do navegador. Figura 4.7: Resultados obtidos com o Snort sendo demonstrados no Base. 60 Tabela 4.2 – Resultado da análise de geração de falsos positivos. Ataque Portscan Dic.Ataque DoS Exploits Tipo Detectado Falso Positivo nmap -sT <ip> Sim 1 nmap -sS <ip> Sim 2 nmap -sN <ip> Sim 1 hydra –L login –p file <ip> FTP\telnet Sim 1 hping –c 100 <host destino> Sim 2 hping -1 –c 100 <host destino> Não 1 hping -8 –c 100 <host destino> Não 3 IIS Unicode Remote Command Execution Sim 4 Web Server Transversal Sim 7 Microsoft RPC DCOM interface Overflow Sim 3 Microsoft IIS 5.0 IDQ Path Não 2 Microsoft SQL Server Resolution Overflow Não 1 Como pode ser verificado pela tabela 4.2, o Snort demonstrou eficácia na detecção de muitos ataques, porém ocorreram muitos falsos positivos, devido à utilização de todas as regras ao mesmo tempo, o que fez com que ele detectasse ataques inexistentes, totalmente diferentes daqueles que realmente estavam sendo realizados. O próximo capítulo irá apresentar a conclusão da proposta oferecida neste trabalho. 4.6 Considerações Finais Este capítulo descreveu o ambiente de teste, onde foram realizados os ataques, que testaram a eficiência do Snort como IDS, além da descrição dos ataques realizados contra ele, e os softwares utilizados no ambiente de teste. Foram descritos os resultados obtidos, além de comentários sobre a eficiência do mesmo. 61 O próximo capítulo apresentará as conclusões finais deste trabalho, mediante a proposta e os resultados obtidos. 62 5 CONCLUSÃO Este trabalho apresentou a eficácia dos sistemas de detecção de intrusão baseados em rede e assinaturas, que através da análise do tráfego, são capazes de identificar ataques destinados a máquinas da rede alvo. Foi efetuada uma bateria de testes a fim de testar a eficiência do IDS e comprovar que o mesmo é capaz de identificar ataques e alertar o administrador da rede. 5.1 Experiências obtidas Diferente dos softwares utilizados no dia a dia, um IDS não pode ser configurado de maneira eficaz por uma pessoa inexperiente, pois é necessário conhecimento avançado em redes (tipos de protocolos, funcionamento interno, meios de comunicação, criptografia, roteamento), normas de segurança (política de segurança, conhecimento de vulnerabilidade de softwares, tipos de ataques que podem ser realizados) e atualizações das regras do fabricante assim como novas vulnerabilidades que são descobertas todos os dias por hackers e especialistas em segurança. O uso das configurações padrões do Snort, como utilizado neste trabalho, mostrou certa margem de erros, o que deve ser evitado por um administrador de rede que pretende garantir a segurança de sua rede com um IDS como o Snort. A configuração do Snort é considerada complexa, pois seu arquivo de configuração padrão possui muitas linhas e não possui interface gráfica para configuração do mesmo. Qualquer alteração em seu funcionamento deve ser feita em seu arquivo “.conf” através dos parâmetros de configuração. Outro ponto quanto a configuração manual, diz respeito a sintaxe, pois qualquer parâmetro errado pode interferir no funcionamento do sistema. 63 Portanto, para implantar com eficiência o Snort, deve-se entender bem a configuração, assim como, saber as vulnerabilidades da rede que pode ser atacada, para não comprometer assim sua eficácia. 5.2 Trabalhos Futuros Como sugestão para outros trabalhos sobre este assunto, pode ser abordada a análise minuciosa das regras específicas para determinados tipos de serviços ou ataques assim como o desenvolvimento de novas regras, com base em testes realizados em ambientes de testes ou casos de usos. Uma questão levantada com a utilização do Snort é a utilização de outros sistemas para funcionar em conjunto com ele, no caso um banco de dados, um servidor web e um front end para visualizar os dados, sendo assim a pesquisa e desenvolvimento de uma solução que torne menos complexa a configuração e funcionamento do Snort, talvez seja um trabalho a ser continuado. Outra sugestão sobre a continuidade deste trabalho seria a análise de outras soluções para IDS a fim de verificar a eficiência das mesmas, pois em alguns casos, soluções pagas são de qualidade equivalente ou superior há softwares freeware e open source. 64 REFERÊNCIAS Bayle. J. Snort 2.1 Intrusion Detection. 2 ed. Massachusetts: Syngress, 2002. Bishop, M. Computer Security: Art and Science. Addison – Wesley, 2002. Burns et al. Security Power Tools. 1 ed. California: O’Reilly Media, 2007. Campos, G. Criando Regras para o Snort. Disponível em < www.intruders.com.br/artigos/snoc_criando_regras_snort_v02.pdf>. Acesso em: 01 Out. 2009. CASWELL, Brian et al. Snort 2: Sistema de detecção de intrusão. Rio de Janeiro: Alta Books, 2003. Chaves, M. Análise de Estado de Tráfego de Redes TCP/IP para Aplicação em Detecção de Intrusão. Disponível em <http://mtc-m05.sid.inpe.br/col/sid.inpe.br/jeferson/2003/06.30.09.23/doc/publicacao.pdf> Acesso em: 15 set. 2009. Comer, D. E. Interligação em Rede com TCP/IP . 4. ed. New Jersey: Prentice Hall, 2000. v. 1 princípios, protocolos e arquiteturas. Even, Loras. Intrusion Detection FAQ: Running Snort under Windows. Disponível em < http://www.sans.org/security-resources/idfaq/snort.php>. Acesso em 06 set. 2009. Internet protocol: DARPA Internet program, protocol specification. Request for Comments RFC 791. Disponivel em <http://www.rfc-editor.org/rfc/rfc791.txt>. Acesso em: 31 mar. 2009. Lyon, Gordon, Software NMap. Disponível em <http://nmap.org/download.html>. Acesso em: 09 jul. 2009. 65 Postel, J.; Reynolds, J. File transfer protocol (FTP). Request for Comments RFC 959. Disponível em <http://www.rfc-editor.org/rfc/rfc959.txt>. Acesso em: 01 abr. 2009. Roech, M. Snort Manual 2.8.3. SourceFire, Inc, 2008. Simple mail transfer protocol: Request for Comments RFC 821. Disponível em <http://www.rfc-editor.org/rfc/rfc821.txt>. Acesso em: 01 abr. 2009. Shiry, R. Security Architecture for Internet Protocols: A Guide for Protocol Designs and Standards. Disponível em <www.ietf.org/id-info/draft-irtf-psrg-secarch-sect1-00.txt>. Acesso em 05 abr. 2009. Sundaram, A. An introduction to intrusion detection. Disponível em < http://www.acm.org/crossroads/xrds2-4/intrus.html >. Acesso em: 29 jul. 2009. TANENBAUM, Andrew Stuart. Redes de computadores. 4. ed. Rio de Janeiro: Campus, 2003. TELNET protocol specification. Request for Comments RFC 854. Disponível em <http://www.rfc-editor.org/rfc/rfc854.txt>. Acesso em: 01 abr. 2009. Transmission control protocol: DARPA Internet program, protocol specification. Request for Comments RFC 793. Disponível em <http://www.rfc-editor.org/rfc/rfc793.txt>. Acesso em: 30 Mar 2009. User datagram protocol: Request for Comments RFC 768. Disponível em <http://www.rfc-editor.org/rfc/rfc768.txt>. Acesso em: 30 mar. 2009.