Universidade Federal de Itajubá UNIFEI. Detecção de Intrusão Utilizando Redes Neurais Artificiais no Reconhecimento de Padrões de Ataque - PDF
Universidade Federal de Itajubá UNIFEI. Detecção de Intrusão Utilizando Redes Neurais Artificiais no Reconhecimento de Padrões de Ataque
Download "Universidade Federal de Itajubá UNIFEI. Detecção de Intrusão Utilizando Redes Neurais Artificiais no Reconhecimento de Padrões de Ataque"
Luiz Guilherme Festas Ferreira
1 Universidade Federal de Itajubá UNIFEI PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA Detecção de Intrusão Utilizando Redes Neurais Artificiais no Reconhecimento de Padrões de Ataque ROBERTO SILVA NETTO Itajubá, dezembro de 2006
2 Universidade Federal de Itajubá UNIFEI ROBERTO SILVA NETTO Detecção de Intrusão Utilizando Redes Neurais Artificiais no Reconhecimento de Padrões de Ataque Dissertação apresentada à Universidade Federal de Itajubá para obtenção do título de Mestre em Engenharia Elétrica. Área de Concentração: Automação e Sistemas Elétricos Industriais Orientador: Prof. Dr. Otavio Augusto Salgado Carpinteiro Itajubá 2006
3 ii Dedico este trabalho a Deus, aos meus pais pelo amor e a minha esposa, carinho e dedicação presentes em cada um dos seus atos e conselhos.
4 iii Agradecimentos Agradeço a todos que de alguma forma contribuíram para o desenvolvimento deste trabalho, em especial: A Deus por estar sempre presente na minha vida, me ajudando e capacitando, que me deu forças quando precisei, que me consolou na minha tristeza e que sempre tem me dado alegrias. Aos meus pais, Lineu e Anna, por terem me educado e me darem apoio em todos os sentidos, por acreditarem no meu sonho e serem responsáveis pela minha formação. A minha amada esposa Fernanda, companheira, amiga, com a qual dividi e compartilhei as minhas tristezas, alegrias e que também é responsável por mais esta vitória. Aos meus sogros Eron e Edna, que também foram meus pais e em todos os momentos em que estive com eles, me trataram como filho. Aos meus sócios Caio, Cezar e Rodrigo, por dividirem seus sonhos comigo para realizar algo maior. Aos amados mestres Maurílio e Otavio por acreditarem na minha capacidade e me instruírem com algo a mais que levarei comigo no coração e aos professores Edmilson e Isaías que ajudaram na conclusão do trabalho. E ao meu filho, que me fez enxergar a vida com outros olhos.
5 iv Resumo O número de ataques cibernéticos vem crescendo cada vez mais, pois as ferramentas de invasão estão cada vez mais fáceis de encontrar e as vulnerabilidades encontradas, demoram a serem corrigidas. Em virtude disso, os sistemas de detecção de intrusão têm-se tornado um componente necessário na maioria dos sistemas de segurança de rede. O principal objetivo é identificar potenciais violações nas políticas de segurança. A maioria dos sistemas de detecção de intrusão é baseada em regras e necessitam que a base de dados seja atualizada a cada vez que um novo ataque é descoberto. Entretanto esta tarefa não é simples, pois as regras são complicadas e necessitam de conhecimento profundo do ataque que se deseja detectar, além de consumir um tempo importante do administrador do sistema que deverá fazer a verificação da base de dados constantemente. Caso o sistema de detecção de intrusão não seja atualizado, este se torna uma brecha no sistema de segurança, pois não irá relatar uma invasão quando a rede for invadida por um ataque desconhecido. Este trabalho tem como propósito apresentar o uso de redes neurais artificiais no problema de detecção de tais violações e em novos padrões de ataque. Para isso foi utilizado uma rede Multi-Layer Perceptron (MLP) com o intuito de reconhecer padrões de ataques de rede, tendo como base de dados o Third International Knowledge Discovery and Data Mining Tools Competition. Como essa base de dados possui campos discretos e contínuos, foi necessária a normalização dos 41 campos que a compõe para viabilizar o seu uso no treinamento das redes neurais. Optou-se pela utilização de 4 redes neurais, as quais tinham como objetivo detectar um tipo de ataque, Remote-to-Local, User-to-Root, Probe e DoS, além de reconhecer corretamente os padrões de tráfego normal. Obtiveram-se ótimos resultados na utilização de redes neurais no reconhecimento de padrões de ataque, com altas taxa de detecção dos novos ataques e baixas taxas de falsos positivos e falsos negativos, tendo um caso onde ocorre 100% de detecção de ataque e 100% de detecção de tráfego normal.
6 v Abstract The number of cyber attack is growing up more and more, because, the tools of invasion is become more widely e easy to find and the vulnerabilities take a long time to be corrected. For all this, the Intrusion Detection System has become a necessary device in the most of network security system. The main objective is identifying potential violations in security policy. The most Intrusion Detection System are based on rules and need that tha database be update every time that a new attack is discovered. However, this task is not too simple, since the rules are complicated and require deep knowledge of the attack that we wish detect, further than will consume important time of the system administrator, who should make the database update frequently. If the intrusion detection system not be updated, this system become a security flaw, because it will not report a invasion when the network be invaded by a unknown attack. This work has the purpose of show the use of artificial neural network for the problem of detection of those violations and newer attack pattern. For this, was used a Multi_layer Perceptorn (MLP) network whit the intuit of recognize network attack patterns, having whit database the Third International Knowledge Discover and Data Mining Tools Competition. As this database possesss discrete and continuous fields, the normalization of the 41 fields was necessary that composes it to make possible its use in the training of the neural nets. It was opted to the use of 4 neural nets, which had as objective to detect a type of attack, Remoteto- Local, User-to - the Root, Probe and Of, beyond recognizing the standards of normal traffic correctly. Excellent results in the use of neural nets in the recognition of standards of attack had been gotten, with high rate of detection of the new attacks and decreases taxes of false positives and false negatives, having a case where 100% of attack detention occur and 100% of detention of normal traffic.
7 vi Lista de Abreviaturas e Siglas IDS INTRUSION DETECTION SYSTEM MLP MULTI LAYER PERCEPTRON KDD KNOWLEDGE DISCOVERY AND DATA MINING DARPA DEFENSE ADVANCED RESEARCH PROJECTS AGENCY NIDS NETWORK BASED INTRUSION DETECTION SYSTEM HIDS HOST BASED INTRUSION DETECTION SYSTEM LAN LOCAL AREA NETWORK SOM SELF ORGANIZED MAPS MARS - MULTIVARIATE ADAPTATIVE REGRESSION SPLINES SVM SUPORT VECTOR MACHINE RN REDES NEURAIS RT REGRESSION TREE DOS DENIAL OF SERVICE R2L REMOTE TO LOCAL U2R USER TO ROOT
8 vii Sumário Resumo... iv Abstract... v Lista de Abreviaturas e Siglas... vi Lista de Figuras... x Lista de Tabelas... xi 1 INTRODUÇÃO CONSIDERAÇÕES INICIAIS IDS Sistema de detecção de intrusão SISTEMAS DE DETECÇÃO DE INTRUSOS O QUE É UMA INTRUSÃO? SCANNING VERSUS COMPROMISE Virus e Worms SQL Slammer Live Attacks Sendmail Buffer Overflow COMO FUNCIONA UM IDS IDS de Rede (NIDS) IDS baseado em Host (Host-Based) Distributed IDS Informação de uma Aplicação Específica Informação Específica do Host Informação Específica da Sub rede IDS Distribuído (Distributed) COMO O IDS OBSERVA SUA REDE Sniffing de pacotes Log Parsing Monitoramento de Chamadas do Sistema Observação do Sistema de Arquivo (Filesystem) COMO O IDS CAPTURA DADO Tentativas de Intrusão Saber o Bom ou Saber o Mau Tecnologias para implementação da estratégia do IDS O QUE O IDS FAZ QUANDO ENCONTRA UMA TENTATIVA DE ATAQUE Resposta Passiva (Passive Response) Resposta Ativa (Active Response) IDS em linha (Inline) Redes Neurais ARTIFICIAIS(Neural Networs) INTRODUÇÃO UM BREVE HISTÓRICO NEURÔNIO BIOLÓGICO E ARTIFICIAL... 30
9 viii 3.4 ARQUITETURA DE REDE PROCESSO DE APRENDIZAGEM MODELOS DE APRENDIZAGEM EM RELAÇÃO AO AJUSTE DE PESO Aprendizagem por Correção do Erro Aprendizagem Baseada em Memória Aprendizagem competitiva MÉTODOS DE APRENDIZAGEM Associação de Padrões Reconhecimento de Padrões Aproximação de Funções PERCEPTRON PERCEPTRON DE MÚLTIPLAS CAMADAS Arquitetura do Perceptron de Múltiplas Camadas O Algoritmo de Retropropagação Modo de Treinamento Seqüencial e por Lote Vetor Gradiente Momento VALIDAÇÃO CRUZADA GENERALIZAÇÃO HEURÍSTICA PARA MELHORAR O DESEMPENHO VANTAGENS E DESVANTAGENS Modelo e metodologia EXPLOITS Fontes Idade do Exploit Taxonomia de Ataques de Computadores Ataques de Negação de Serviço (Denial of Service Attacks) Ataques User to Root Ataques Remote to User Probes DADOS DE ENTRADA TRATAMENTO DOS DADOS TREINAMENTO DA REDE MLP Ataques User-to-Root Ataques Remote-to-Local Ataques Probe Ataque de Negação de Serviço (DoS) Resultados USER-TO-ROOT REMOTE-TO-LOCAL PROBE NEGAÇÃO DE SERVIÇO (DOS) COMPARAÇÃO DOS RESULTADOS... 74
10 ix 6 conclusões TRABALHOS FUTUROS REFERÊNCIAS BIBLIOGRÁFICAS... 78
11 x Lista de Figuras Figura 2-1 Regra do Snort para o SQL Slammer... 8 Figura 2-2 Regra do Snort para Wingate POP3 buffer overfow... 9 Figura 2-3 Rede com o NIDS Figura 2-4 Rede com HIDS Figura 2-5 Rede com DIDS Figura 2-6 Assinatura de acesso PHP Figura 3-1 Neurônio biológico Figura 3-2 Neurônio artificial de McCulloch e Pitts Figura 3-3 Exemplos de arquiteturas de RNAs Figura 3-4 Unidade de saída Figura 3-5 Neurônio artificial Figura 3-6 Arquitetura do Perceptron de Múltiplas Camadas com uma camada oculta Figura 3-7 Ilustração das direções de dois fluxos básicos em um Perceptron de Múltiplas Camadas: propagação para frente e a retropropagação Figura 3-8 Vetor gradiente do ponto f (x0, y0 ) Figura 3-9 Gráfico da função f (x, y) = x2 + y Figura 3-10 Ilustração da regra de parada antecipada baseada na validação cruzada Figura 3-11 (a) Dados ajustados adequadamente; (b) Dados ajustados em excesso Figura 4-1 Diagrama em Blocos das Atividades Realizadas Figura Vulnerabilidade do Ataque Figura 4-3 Processo de Treinamento Figura 5-1 Gráfico Comparativo de Desempenho... 75
12 xi Lista de Tabelas Tabela -1 Sumário de Ataques de Negação de Serviço Tabela 2 - Sumário de User to Root Tabela -3 Sumário de Remote to User Tabela -4 Sumário de Probes Tabela -5 Classificação dos Ataques para o Training e Testing Sets Tabela -6 Classificação dos Ataques para o Validation Set Tabela -7 Número de Padrões no Training Set e Validation Set Tabela -8 Descrição dos Campos de Entrada Tabela -9 Dados dos Campos empregados na Representação Tabela 10 - Matriz Confusão User-to-Root Tabela 11 - Matriz Confusão Remote-to-Local Tabela 12 - Matriz Confusão Probe Tabela 13 - Matriz Confusão DoS Tabela 14 Comparação de Desempenho... 75
13 1 1 INTRODUÇÃO Os sistemas de detecção de intrusão têm-se tornado um componente necessário na maioria dos sistemas de segurança de rede. O seu principal objetivo é identificar potenciais violações nas políticas de segurança [1]. A primeira proposta de um IDS foi feita por Dorothy E. Denning[2] em 1986, apresentando um modelo para a detecção de tentativas de invasão, penetração e outros tipos de abusos no uso do computador. Desde então, têm aparecido várias propostas para suprir as necessidades e deficiências dos IDS, como o NetRanger [3] e NID [4] e, posteriormente, o BRO [5] e NetStat [6], ambos baseados na verificação de assinaturas. Porém, estes sistemas necessitam de atualização sempre que um novo ataque é descoberto, o que dificulta o trabalho do administrador da rede; pois além de observar os relatórios dos IDS, precisa estar atento para as atualizações de banco de dados das assinaturas de ataques. 1.1 Considerações Iniciais Existem vários tipos de IDS s e também várias maneiras em que eles podem ser inseridos em uma rede de computadores. Este trabalho é baseado no NIDS, ou simplesmente Network Intrusion Detection System, que tem como objetivo detectar
14 2 intrusões através de informações coletadas a partir da rede em que o equipamento se encontra conectado. Um problema encontrado reside no fato dos IDS s disponíveis no mercado, como o Snort, serem na maioria baseados em regras (ruled-based), e com isso eles não são capazes de satisfazer exigências como precisão, eficiência e adaptabilidade automática simultaneamente [2]. Sendo assim, eles apenas reconhecem os ataques descritos em sua base de dados e qualquer mudança ou alteração das características dos ataques, fará com que a intrusão passe despercebida pelo IDS [6]. Pode ocorrer também que o invasor use um método desconhecido da base de dados do IDS, isso pode ocorrer devido a não atualização, ou para que os desenvolvedores do IDS criassem novas regras a serem inseridas no banco de dados do IDS. Desse modo, tem-se um falso positivo, ou seja, um ataque sendo classificado como um tráfego normal. Como a finalidade básica de um IDS é detectar um ataque que está para acontecer, ao ser enganado pelo atacante ou pela utilização de alguma ferramenta desconhecida que explora as falhas, também conhecida como exploit, o IDS passa a ser uma brecha no sistema de segurança de uma rede. Essa brecha ocorre, pois, os administradores ao monitorarem a rede através de respostas do IDS, e não há nenhuma adversidade encontrada, o invasor pode completar sua missão totalmente coberto pelo IDS, já que este não executou seu papel. Em problemas como esses, o trabalho propõe o uso de redes neurais na detecção de intrusão, para que os novos ataques possam ser detectados, sem a necessidade de atualização rotineiramente da base de dados. Isto é possível pela característica das redes neurais em reconhecer padrões. Uma rede MLP (Multi Layer Perceptron) foi usada como proposta e o conjunto de teste, a base do KDD Cup99, que é uma sub-versão do DARPA98, utilizada em vários experimentos para avaliação de desempenho de modelos de IDS. Como os ataques são classificados em quatro categorias, optou-se por uma rede para cada tipo de ataque. No capítulo 2 é apresentado o funcionamento do IDS, quais os modos em que ele pode ser configurado dentro de uma empresa para a detecção de intrusão e quais os mecanismos que ele utiliza para a obtenção da informação que será utilizada para a detecção. Também é apresentado como ele realiza a classificação
15 3 por anomaly, buscando reconhecer desvios do padrão normal, ou misuse, que busca a identificação de mal uso de recursos. No capítulo 3 apresentam-se os conceitos básicos de redes neurais artificiais, o modelo de neurônio artificial, o modelo e os processos de aprendizagem de uma rede neural e como é realizada a aprendizagem. Além disso, o perceptron e a arquitetura de rede do Multi Layer Perceptron, que é usada no trabalho, bem como os algoritmos de retropropagação, de treinamento, a função de ativação, validação cruzada e como ocorre a generalização. No capítulo 4 relatam-se os experimentos e os resultados, a base de dados utilizada, os exploits e quais foram usados na base de dados, como foi feita a taxonomia dos exploits, o tratamento da base, os dados para treinamento da rede e, finalmente, os resultados obtidos com a utilização das redes neurais na detecção de intrusão. O último capítulo apresenta a conclusão do trabalho, baseado nos resultados e na proposta apresentados e possíveis futuros trabalhos.
16 4 2 IDS SISTEMA DE DETECÇÃO DE INTRUSÃO 2.1 Sistemas de Detecção de Intrusos Uma intrusão é um acesso ou uso não autorizado de um recurso em um sistema computacional. IDS são softwares que tem como função detectar, identificar e responder a atividades anormais e não autorizadas em um sistema. O objetivo do IDS é prover um mecanismo para detecção de violações de segurança tanto em tempo real, como em batch-mode. As violações podem ser iniciadas tanto por pessoas de fora da rede, tentando entrar no sistema, quanto por pessoas internas, tentando fazer mau uso de seus privilégios. IDS coleta informações de uma variedade de sistemas e fontes de rede, e então analisa as informações, procurando sinais de intrusão e mau uso. As principais funções de um IDS são: Monitorar e analisar atividades do usuário e do sistema; Avaliar a integridade de sistemas críticos e dados de arquivos; Reconhecer padrões de atividades que refletem ataques conhecidos; Responder automaticamente à atividade detectada; e Reportar o resultado do processo de detecção.
17 5 Detecção de intrusos pode ser dividida em duas amplas categorias, baseadas no método de detecção: misuse detection e anomaly detection. Misuse detection funciona com a procura de traços ou padrões de ataques conhecidos. Claramente, apenas ataques conhecidos, que deixam traços característicos podem ser detectados neste modo. Anomaly detection, por outro lado, utiliza um modelo de comportamento normal do usuário ou do sistema, e acusa desvios significativos deste modelo como potencialmente malicioso. Este modelo de comportamento normal do usuário ou sistema é comumente chamado de perfil de usuário ou sistema. A maior vantagem do anomaly detection é a habilidade de detectar ataques previamente desconhecido. IDS são categorizados de acordo com a localização da fonte de auditoria que eles analisam. A maioria dos IDS são classificados como detecção de intrusão baseado em host (host-based) ou detecção de intrusão baseado em rede (networkbased) para reconhecimento e tratamento de ataques [7]. Um IDS é um sistema de monitoramento que pode estar sendo executado tanto na máquina alvo para análise de seus padrões de tráfego, ou em uma máquina independente, para análise e monitoração de padrões de tráfego de rede. Devido a falhas de softwares, sistemas mal configurados, ferramentas de quebra de senhas e outras falhas de projeto, alguns intrusos podem invadir computadores facilmente. Assim, o desenvolvimento de um sistema de detecção de intrusão confiável para garantir a segurança de uma rede de computadores é crítico. Isto é difícil para os tradicionais IDS s, como os baseados em regras ou em estatísticas, que exigem alta precisão e adaptabilidade automática ao mesmo tempo. Um IDS baseado em regras pode detectar alguns ataques conhecidos com uma alta taxa de detecção, mas é difícil detectar novos ataques, e a sua base de dados de assinaturas precisa ser atualizada freqüentemente. Um IDS baseado em estatística deve coletar dados suficientes para compor um complicado modelo matemático, que é difícil e algumas vezes impraticável no caso de tráfego de redes complexo. As Redes Neurais Artificiais provêem um novo método de projeto para o IDS. As RNA s são especialmente úteis quando o conhecimento explícito necessário para construir um IDS não está disponível. IDS baseados em redes neurais podem ser usados tanto para detecção em misuse quanto em anomaly. Usualmente, o misuse detection possui uma taxa maior de detecção que o anomaly detection, porém ele
18 6 não é capaz de detectar ataques novos antes que sua estrutura seja atualizada. Por outro lado, o anomaly detection pode classificar a maioria dos registros anormais, contudo, ele não pode identificar qual o tipo específico de intrusão é o registro.[8]. 2.2 O que é uma intrusão? Para entender o que é detecção de intrusão, faz-se necessário, primeiramente, entender o que é uma intrusão. O dicionário Houasis define uma intrusão como o ato de empurrar, ou entrar em um lugar ou estado sem ser convidado, sem ter direito ou ser bem vindo. Para nossos propósitos, é simplesmente uma atividade não autorizada no sistema ou na rede por um de seus computadores ou redes de computadores. Isto pode incluir um usuário legítimo do sistema, tentando escalonar seus privilégios e ganhar maior acesso do que foi permitido a um usuário remoto e não autenticado, comprometendo um serviço em execução, a fim de criar uma conta no sistema. Uma intrusão também pode ser um vírus proliferando através do seu sistema de e outros cenários similares. As intrusões podem vir de qualquer invasor deliberadamente malicioso, ou de um usuário final qualquer. Por exemplo, ao se abrir anexos de s enviados também, apesar de repetidas advertências para não fazerem. As intrusões também podem vir de alguém totalmente desconhecido, em outro continente, de um exempregado, ou do próprio pessoal de confiança [9]. 2.3 Scanning versus Compromise Quando se observa uma rede de computadores, uma das primeiras atividades que sobressai é a de scanning, que consiste em vascular uma rede ou um computador à procura de vulnerabilidades. O scanning por vulnerabilidades, particulares ou apenas por portas abertas, é atividade comum na Internet sem filtro e em muitas redes privadas. Muitos IDS são configurados para indicar atividade de scanning, e não é incomum receber alarmes causados por alguma forma de scanning. Apesar do scanning não ser necessariamente uma atividade maliciosa, pois pode ter causas legítimas (um administrador local checando sua própria rede
19 7 por vulnerabilidades para aplicação de correção; por exemplo, uma empresa terceirizada contratada para executar uma auditoria de segurança no sistema), é uma técnica freqüentemente utilizada como prelúdio de uma tentativa de ataque. Sendo assim, muitos administradores desejam ser alertados quando o sistema estiver sendo vasculhado. Rastrear atividade de scanning também pode ser útil para correlação em futuros ataques. Entretanto, é importante destacar que o scanning não é uma tentativa comprometedora por si só, e não deve ser tratada com o mesmo nível de resposta que uma tentativa real de ataque. É importante notar também que a atividade de scanning esta se tornando constante, e atualmente encontram-se programas automatizados para vasculhar grandes faixas de endereços. Ferramentas de monitoramento de redes, worms e vírus, aplicações de otimização automática, script kiddies, e muito mais estão constantemente verificando máquinas na rede [9]. Nesse contexto, faz-se necessário um esforço conjugado na filtragem e análise do tipo tráfego na Internet Virus e Worms SQL Slammer Outro tipo muito comum de tráfego que será visto ativando o IDS é o worm. Worms e vírus são freqüentemente bons candidatos para o IDS, pois eles possuem comportamento repetitivo e identificável. Mesmo os vermes polimorfos e os vírus que utilizam muitos vetores de ataque terão algum comportamento de rede em comum, algum modelo de tráfego que pode ser combinado e descoberto pelo seu IDS. Como um exemplo, tem-se o worm SQL Slammer. No dia 25 de Janeiro de 2003, o SQL slammer foi lançado na Internet, também conhecido como Sapphire [ref](safira), o verme explora uma fraqueza no servidor Microsoft Structured Query Language (SQL). Ele envia um pacote User Datagram Protocol (UDP) de 376 bytes para a porta 1434, inunda um buffer no servidor SQL, e ganha privilégios de Sistema, o nível mais alto possível do usuário em um sistema operacional Windows. Uma vez que ele comprometeu com sucesso um host, ele começa a vasculhar outros endereços IP para estender-se além disso. A partir do momento do seu lançamento, o SQL Slammer alcançou toda a rede mundial em aproximadamente 10 minutos. Nesse intervalo de tempo,
20 8 montantes maciços de largura de banda da rede foram consumidos pelas tentativas de exploração e propagação do verme. Muitos sistemas foram comprometidos. Cinco dos 13 principais servidores de Nome de Domínio, que fornecem o serviço à Internet, foram derrubados. Dentro desse contexto, tem-se o desafio de identificar o padrão de ataque para este tipo de comportamento. Obviamente, isto é o tipo de atividade que desejase descobrir na rede. Uma característica comum entre cada host infectado pelo Slammer é o payload com exploit que ele distribui. E de fato, é exatamente esta assinatura que a regra do IDS Snort quer pegar. A seguir, figura 2-4 está a assinatura do Snort que combina com esta atividade: alert udp $EXTERNAL_NET any -> $HOME_NET 1434 (msg:"ms-sql Worm propagation attempt"; content:" 04 "; depth:1; content:" 81 F B 81 F1 01 ";content:"sock"; content:"send"; reference:bugtraq,5310; classtype:miscattack; reference:bugtraq,5311; reference :url,vil. /vil/content nai.com /v_99992.htm; sid:2003; rev:2;) Figura 2-1 Regra do Snort para o SQL Slammer Usando esta assinatura, pode-se descobrir e enumerar quantas tentativas de ataque são detectadas, e quais hosts eles tentavam alcançar. Os ataques maciços automatizados como este, normalmente engendra uma resposta coordenada da comunidade de segurança - programadores de IDS que escrevem novas assinaturas, vendedores de antivírus escrevendo atualizações e correções, provedores de backbone que seguem a pista do tráfego e mitigam o seu efeito, filtrando quando solicitado e quanto necessário. Esta assinatura pode ajudar a seguir a pista de tentativas de infecção pelo verme na rede, e assegurar que os sistemas sob ataque permaneçam seguros. A coordenação de respostas entre companhias e defensores é um dos poucos modos que se podem acompanhar os atacantes. Um grande número de organizações se dedicam a ajudar os respondentes a lidar com ataques e compartilhar informação [9].
21 Live Attacks Sendmail Buffer Overflow Na seção anterior, viu-se como detectar um ataque através da utilização de regras para detectar o exploit dentro do payload. Entretanto existem outras formas de ataques como, por exemplo, uma tentativa no transbordamento de um serviço do Wingate POP3. A vulnerabilidade explorável desse aplicativo é a possibilidade de ultrapassar os limites de buffer remotamente na implementação do daemon Wingate POP3. Depois que um comando USER é enviado, uma quantidade suficientemente grande de dados irá sobrepor o buffer, podendo levar à execução independentemente de um código exploit que foi inserido. O uso normal do daemon POP3 forneceria somente um username depois da ordem de USER, e um username normal, improvavelmente, seria muito longo. Na figura 2.2 pode-se ver a regra do Snort que descobre esta tentativa de exploit: alert tcp $EXTERNAL_NET any -> $HOME_NET 110 (msg:"pop3 USER overflow attempt"; flow:to_server,established; content:"user"; nocase; isdataat:50,relative; pcre:"/^user\s[^\n]{50,}/smi"; reference:bugtraq,789; reference:cve,cve ; reference:nessus,10311; classtype:attemptedadmin; sid:1866; rev:7;) Figura 2-2 Regra do Snort para Wingate POP3 buffer overfow Esta regra procura dados contendo USER seguido por mais de 50 bytes de dados, onde aqueles 50 bytes de dados depois de USER não contêm um caractere de nova linha. Isto deve combinar com o modelo de dados que se vê em uma tentativa verdadeira de estouro do buffer, e não deve combinar com senhas de entrada de usuários legítimos. 2.4 Como funciona um IDS Como já foi visto algumas das capacidades de um IDS, de alertar sobre tráfego malicioso, nesta seção será mostrado qual fonte de dados um IDS deve usar para monitorar e separar tráfego normal de ataque, e algumas possíveis respostas quando é percebido tráfego malicioso.
22 10 O IDS depende enormemente de seu tipo do local em que ele é colocado na rede. IDS s são classificados pelas suas funcionalidades e são agrupados em 3 categorias: Sistema de Detecção de Intrusão Baseado em Rede (NIDS) Sistema de Detecção de Intrusão Baseado em Host (HIDS) Sistema de Detecção de Intrusão Distribuído (DIDS) IDS de Rede (NIDS) O nome NIDS vem do fato do monitoramento de um segmento inteiro de uma rede ou uma sub-rede. Isto é feito alterando o modo da placa de rede(nic) do NIDS. Normalmente um NIC opera em modo não promíscuo, escutando apenas os pacotes destinados para o seu próprio endereço de controle de acesso ao meio ou MAC address. Os outros pacotes não são encaminhados para as camadas superiores da pilha para análise, eles são ignorados. Para monitoramento de todo o tráfego da sub-rede, não apenas aqueles pacotes endereçados à máquina do NIDS, ele deve aceitar todos os pacotes e encaminhá-los às camadas superiores da pilha - isto é conhecido como modo promíscuo. No modo promíscuo, o NIDS pode escutar, sem ser percebido, toda comunicação do segmento de rede. Entretanto, isto não é tudo que é necessário para garantir que o NIDS seja capaz de escutar todo o tráfego da subrede. O equipamento de rede imediatamente acima do NIDS também deve ser configurado para enviar todos os pacotes da subrede para o NIDS. Se o equipamento é um hub, todos os pacotes são automaticamente enviados, pois todas as portas do hub recebem todo tráfego por broadcast. Entretanto, se o equipamento é uma switch, deve-se colocar a porta que está ligada à switch no modo de monitoramento, tornando-a uma porta de span. Após configurar o NIDS, é aconselhável executar uma ferramenta sniffer na interface, para garantir que se possa ver todo o tráfego da subrede. A vantagem de um NIDS é que ele não impacta o sistema ou a rede pelo monitoramento. Ele não adiciona nenhuma carga aos host, e um atacante que comprometa um dos sistemas observados não pode tocar no NIDS, e até não sabe
23 11 de sua presença. Um lado negativo do monitoramento é usar o máximo da porta de span que está designada a uma rede, e utilizar o máximo da largura de banda na porta do NIDS. Quando se tem 20(vinte) portas de 100MB jogando para uma única porta, o backplane ficará saturado e se estiver além de seu limite haverá perda pacotes. Devido a regulamentos de privacidade emergentes, o monitoramento de comunicações de rede é uma responsabilidade que deve ser ponderada cuidadosamente. Deve-se ter certeza de que o administrador está familiarizado com as exigências legais e locais para tal atividade. Na figura 2-3, é apresentada uma rede usando três NIDS. As unidades foram colocadas em segmentos de rede estratégicos e podem monitorar o tráfego de rede de todos os equipamentos no segmento. Esta configuração representa uma topologia de rede padrão de perímetro de segurança, onde as sub-redes filtradas dos servidores públicos são protegidas pelos NIDS. Quando um servidor público é comprometido numa sub-rede filtrada, o servidor pode se tornar uma plataforma de lançamentos para adicionais exploits. É necessário um monitoramento cuidadoso para prevenir danos futuros.
24 12 Figura 2-3 Rede com o NIDS IDS baseado em Host (Host-Based) Host based IDSs, ou HIDSs, diferenciam-se de NIDSs de dois modos: primeiro, um HIDS instalado protege só o sistema no qual ele reside, não a subrede inteira; segundo, o NIC de um sistema com um HIDS instalado, funciona normalmente no modo não-promíscuo. Isto pode ser uma vantagem em alguns casos, pois nem todos os NICs podem operar no modo promíscuo, embora NICs mais modernos possam. Além do mais, o modo promíscuo pode fazer uso direto da CPU e tornar a máquina lenta. Outra vantagem do HIDS é a capacidade de refinar o conjunto de regras (ruleset) e ser bem específica para um determinado sistema do host. Por exemplo, não há nenhuma necessidade em configurar múltiplas regras projetadas para descobrir os exploit do Sistema de Arquivo de Rede (NFS) em um host que não esteja usando o NFS. Ser capaz de efetuar o controle detalhado do ruleset, aumenta o desempenho e reduz os falsos positivos (ou positivos verdadeiros que simplesmente não preocupa). A principal vantagem de um HIDS, contudo, reside na sua capacidade de descobrir modificações específicas nos arquivos e no sistema
25 13 operacional do host. Ele pode controlar tamanhos de arquivos e checksums para assegurar que os arquivos de sistemas cruciais não sejam maliciosamente modificados sem ninguém notar. Pode também interceptar chamadas do sistema, que podem ser uma tentativa na exploração de uma vulnerabilidade local. Além disso, ele pode monitorar o tráfego dentro de um sistema que nunca cruza a rede, e por isso, nunca seria visto pelo NIDS. Há alguns aspectos negativos em se usar um HIDS. Deve-se escolher aquele que é configurado ao sistema operacional em uso. Um HIDS acrescentará uma carga adicional ao host no qual é configurado, isto normalmente não é um problema no desktop de um indivíduo, mas pode se tornar em um servidor de rede. Deve-se assegurar certa familiaridade aos detalhes de um HIDS, com a escolha e como funciona alguns HIDS verificarão os acessos a arquivos, tempos de uso, cargas de processos, e/ou chamadas do sistema; enquanto outros também podem verificar a atividade de rede a partir daquele host. Garantir quais características desejadas no HIDS, e assegurar que o HIDS selecionado suportará tais características em todas as plataformas em que se necessite. Além disso, a manutenção de uma grande rede com muitos HIDS instalados pode ser um desafio. A solução HIDS sozinha nem sempre funciona bem, e sem uma gerência centralizada pode tornar o administrador de sistema ocupado demais na tentativa de acompanhar os alertas.
26 14 Figura 2-4 Rede com HIDS Como citado anteriormente, o ruleset do HIDS no servidor de correio é construído para protegê-lo de exploits do servidor de correio, enquanto as regras de servidor da Web são destinadas para exploits da Web. Durante a instalação, as máquinas individuais podem ser configuradas com um conjunto comum de regras, e as novas regras podem ser carregadas periodicamente para prestar contas de novas vulnerabilidades Distributed IDS Um Sistema de Detecção de Intrusão Distribuído, ou DIDS, é uma combinação de sensores NIDS, sensores de HIDS, ou ambos, distribuídos através de uma empresa e reportada a um sistema de correlação central. Os logs de ataques são gerados nos sensores e transferidos (periodicamente ou continuamente) à estação de servidor central, onde eles podem ser armazenados em um banco de dados central. As novas assinaturas de ataques são criadas ou carregadas na estação de gerência, assim que elas ficam disponíveis e, então, podem ser novamente carregados nos sensores de acordo com as necessidades. As espécies diferentes de sensores podem ou não ser gerenciadas pelo mesmo servidor, e os servidores de gerência são freqüentemente separados dos servidores
27 15 que reúnem os logs. As regras de cada sensor podem ser destinadas para encontrar as suas necessidades individuais, ajustando-se à rede ou ao host que cada sensor controla. Os alertas podem ser encaminhados a um sistema de mensagem localizado na estação do sistema de correlação e usados para notificar o administrador do IDS. Na Figura 2.5, vê-se um sistema DIDS contendo quatro sensores e uma estação de gerência centralizada. Sensores NIDS 1 e NIDS 2 estão funcionando no modo promíscuo e estão protegendo os servidores públicos. Os Sensores NIDS 3 e NIDS 4 estão protegendo os sistemas da base computacional confinada. As transações de rede entre sensor e gerente podem estar em uma rede privada, como representado, ou o tráfego de rede pode usar a infra-estrutura existente. Usando a rede existente para dados de gerência, o uso de segurança adicional através de criptografia, ou tecnologia VPN, é altamente recomendada. Enviar toda a informação sobre segurança da sua rede, através dela em texto ASCII ou cleartext, é sugerir ao invasor para interceptar tais comunicações. Na melhor das hipóteses, elas podem entregar, onde está colocado o IDS, e fornecer o comportamento para evitar a detecção. Na pior das hipóteses, podem interceptar e modificar o mecanismo de alerta, corrompendo os dados e a possibilidade de confiabilidade de análise e/ou processamento.
28 16 Figura 2-5 Rede com DIDS Outra questão para se ter em mente é fazer com que o DIDS comuniquem-se através da rede comum, pois a rede pode ser inundada ou inutilizada pelo tráfego malicioso (como aconteceu em muitas redes em conseqüência do SQL Slammer). Deste modo os seus sensores IDS não serão capazes de comunicar-se com a correlação central ou com os servidores de gerência, significativamente reduzindo a sua utilidade. Uma das principais vantagens de analisar eventos que usam DIDS é a observância de incidentes em todo o sistema, ou até em toda a Internet. O DIDSs podem ser complexos no projeto, e necessitam de habilidades nos ajustes de correlação e gerenciamento dos dados que são gerados em todos os sensores. O alcance e a funcionalidade do sistema variam muito de implementação para implementação, e os sensores individuais podem ser NIDS, HIDS, ou uma combinação deles dois. O sensor pode funcionar em modo promíscuo ou modo nãopromíscuo.
29 Informação de uma Aplicação Específica Os três tipos de IDSs são capazes de monitorar pelo menos alguma informação específica de uma aplicação. Isto pode variar do tráfego que vai do servidor da Web às estruturas de dados internas da aplicação proprietária. Naturalmente, para uma aplicação personalizada, deve-se ter regras personalizadas no IDS, para combinar com o tráfego. Como o tráfego da aplicação vai pelo cabo através da rede, o NIDS será capaz de descobri-lo. Se houve envio em cleartext como tráfego de Telnet ou HiperText Protocol (HTTP), o NIDS não deve ter nenhum problema na detecção. Por exemplo, na figura 2-6 tem-se uma assinatura na procura de acesso a um PHP vulnerável. alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"web-php Advanced Poll admin_tpl_misc_new.php access"; flow:to_server,established; uricontent:"/admin_tpl_misc_new.php"; nocase; reference:bugtraq,8890; classtype:web-application-activity; sid:2299; rev:2;) Figura 2-6 Assinatura de acesso PHP Mesmo se o tráfego é enviado no formato binário, e se houver um payload conhecido ou uma parte consistente do pacote (que é único para evitar falso positivos), que o NIDS possa detectar a detecção por ruled-based é possível. O tráfego da aplicação criptografado pode estar fora do alcance da maior parte dos NIDSs incapazes de detectar. As tentativas de explorar campos da entrada introduzindo muitos dados, overflows conhecidos ou undeflows, que explorem falta de validação da entrada, e tentativas de injeção SQL são só algumas possibilidades que as aplicações específicas devem se preocupar. Naturalmente, as assinaturas variam muito dependendo da aplicação que está sendo protegida Informação Específica do Host Enquanto a maior parte dos HIDSs não monitoram tudo o que acontece com o host, eles são capazes de avaliar todo o comportamento para um dado host, desde a criação de arquivos e acessos ao sistema à atividade de rede local na interface de
30 18 loopback. É muito comum para HIDSs criarem um banco de dados de estado do sistema (tamanhos de arquivo, permissões, tempos de acesso) quando eles são instalados, e então monitorem os desvios daquela baseline. De fato, para muitos tipos de HIDSs o processo de ajuste necessita da instalação do software HIDS, para então continuarem com a atividade de sistema normal e assim estabelecer uma baseline de modificação e quem o fez Informação Específica da Sub rede A maior parte das redes tem padrões comuns de fluxos de tráfego. Se se souber que uma máquina na rede é um servidor de correio, não causa surpresa ao ver tráfego do Simple Mail Transfer Protocol (SMTP) que chega e sai do servidor. Quando se está acostumado com um dispositivo que monitora a rede executar um ping em cada dispositivo a cada cinco minutos, tal tráfego é aceitável, embora o mesmo comportamento proveniente de outro dispositivo de rede seja problemático. Dentro de algum tempo, um bom NIDS deve ser ajustado para reconhecer o comportamento esperado da subrede na qual ele reside, permitindo tráfego que é conhecido e aceitável, e enviando alertas para tráfego similares de hosts não autorizados. A estação de trabalho de um verificador de vulnerabilidades (penttester) autorizado pode vasculhar a rede, enquanto a estação de trabalho de um novo interno não pode. Outro componente de tráfego que merece destaque é freqüentemente contemplado é o mapeamento da Camada 2. A Maior parte dos IDSs contemplam o tráfego Address Resolution Protocol (ARP), usado para fazer o mapa de endereços MAC na rede local. É possível que invasores imitem (spoof) o tráfego, modificando o endereço MAC ou forjando um endereço IP que não é o seu, e assim tentar interceptar o tráfego. Este tipo da falha pode ser visível em todos os níveis da subrede, dependendo da topologia da rede. Se o NIDS não estiver na mesma sub-rede local, na qual os ataques de Camada 2 estão acontecendo, ele não os descobrirá. Quando o tráfego de rede atravessa um roteador, o endereço MAC se modifica, e quando se verifica as portas e as posições dos endereços MAC, não se pode permitir que eles os modifiquem antes da verificação ou que os dados se tornem inseguros.
31 19 Por isso, quando se deseja capturar dados da Camada 2 com o NIDS, devese assegurar que o NIDS está na mesma sub-rede local com as demais máquinas que serão controladas, antes que qualquer roteador seja envolvido no stream de dados IDS Distribuído (Distributed) Toda informação pode ser reunida e correlacionada com um DIDS, mas a escala é muito maior. Em vez de se usar a visão de rede local e da sub-rede e suas máquinas, utiliza-se uma visão da atividade através da empresa inteira. Pode-se escolher modelos de dados que seriam negligenciáveis ou sem importância em uma escala menor; e o que seria um backup automatizado de um servidor, resulta ser uma réplica coordenada (maliciosa) de dados por toda a rede, ao se analisar o quadro inteiro. Ver o tráfego do nível de DIDS permite observar fluxos de dados amplos e tendências totais mais claramente. O aspecto negativo é que se deve ter instrumentos para compreender efetivamente o montante de dados reunido; de outra maneira, os ataques sutis que se espera descobrir serão perdidos no meio do tráfego comum da empresa. 2.5 Como o IDS Observa Sua Rede Sem um método efetivo de coleta de dados para análise, não existe nenhum propósito para o uso de um IDS. Felizmente, existem vários modos possíveis para o IDS coletar dados para analisar. A seguir serão mostrados os métodos mais comuns para a coleta de dados para o IDS. Cada um tem sua vantagem e desvantagem, e todos são bem apropriados para diferentes tarefas. Existem várias fontes possíveis de dados para um IDS Sniffing de pacotes Qualquer IDS que analisa o tráfego da rede se utiliza de um sniffing de pacotes. Como foi mencionado, o NIDS opera pela configuração de uma interface no modo promíscuo e analisando pacotes nesta interface. Com isso, ele captura cada
32 20 pacote que atravessa a sub-rede local, e não irá notar os pacotes que passam pela pilha TCP/IP interna da máquina, porém potencialmente irá notar tudo no segmento local. Muitos HIDS que executam análises de tráfego de rede também usam técnicas similares sem o uso do modo promíscuo, para coletar o tráfego de um host no mesmo segmento. O sniffing de pacotes é um modo clássico de executar detecção de intrusão, e existem igualmente técnicas clássicas de evasão de IDS, que podem ser usadas contra um IDS fazendo sniffing de pacotes; por exemplo, ataques por fragmentação de pacotes, o qual divide o payload de ataque em vários pacotes. Como resposta tem-se a capacidade de o IDS reconstruir os pacotes, e então comparar os pacotes. O contra-ataque foi mudar o modo em que os pacotes são fragmentados, fazendo com que alguns dados se sobrescrevam, e novas técnicas para o IDS surgiram para essa possibilidade, criando um ciclo sem fim Log Parsing Outra excelente fonte de dados de segurança são os arquivos de log do sistema. Muitos sistemas de IDS podem puxar dados de log de sistemas e alertar se eles detectarem qualquer coisa anômala. De fato, algumas das implementações originais de IDS usaram o monitoramento de log como seu método de coleta de dados. Alguns ataques são muito claros nos footprint que eles deixam no sistema e no log. O Secure Shell CRC32 overflow, por exemplo, pode deixar sshd[3698]: fatal: Local: crc32 compensation attack: network attack detected no seu log Monitoramento de Chamadas do Sistema Os HIDS são capazes de se auto-configurarem como residentes no Kernel dos sistemas operacionais, e analisar (ou em alguns casos interceptar) chamadas potencialmente maliciosas do sistema. Uma chamada do sistema(system call) é uma requisição que um programa faz ao kernel do sistema operacional, se o HIDS acha que a chamada do sistema pode ser maliciosa, como uma requisição para troca de um ID de usuário para o de root, ele pode criar um alerta, ou no caso de alguns HIDS, como o Linux Intrusion Detection System (LIDS), não autorizar a chamada do sistema até que ocorra um cancelamento.
33 Observação do Sistema de Arquivo (Filesystem) Outra tática muito comum para o HIDS é o tamanho e os atributos de arquivos cruciais do filesystem. Se o kernel do sistema operacional muda de tamanho e nenhum administrador do sistema sabe algo a respeito, isto provavelmente é algo para ser checado. Encontrar diretórios world-writrible ou encontrar binários comuns de sistema alterados é possível no caso de Trojan. Observando o filesystem desse modo, permite alertar os administradores contra possíveis atividades maliciosas; se não ao menos o mais breve possível. O Tripwire [10] é, talvez, o mais conhecido exemplo de ferramenta para monitorar mudanças em arquivos, mas existem muitos outros que fazem o mesmo serviço, incluindo a ferramenta open-source Advanced Intrusion Detection Envirioment (AIDE). 2.6 Como o IDS Captura Dado Tentativas de Intrusão Qualquer IDS irá coletar uma vasta quantidade de dados redes estão ocupadas, servidores estão em pleno funcionamento, existe constantemente transferência de dados acontecendo, processos constantemente sendo executados. Para ser eficaz, um IDS deve ter pelo menos um (e possivelmente muitos) algoritmos para determinar qual tráfego merece a atenção do administrador. Existem muitas estratégias, porém existem duas opções táticas Saber o Bom ou Saber o Mau O tráfego de rede pode ser identificado e classificado de muitas formas. Podese ter tráfego de acordo com uma dada política de segurança, ditada por necessidades particulares da empresa ou rede. Alguns administradores permitem apenas o tráfego que eles conhecem como bem, enquanto outros escolhem apenas bloquear o tráfego que eles desconhecem. Freqüentemente, aproximações baseadas em políticas irão centrar em uma aproximação do tráfego conhecido. Para tomar a melhor decisão para uma empresa, devem-se considerar quais os tipos de
34 22 tráfego deseja-se ter, quantas pessoas terão de lidar com o alertas, e o quão crítico pode-se ser. Pode-se optar em identificar o tráfego conhecido como aceitável e marcar todo o restante, ou pode-se identificar os ataques conhecidos e deixar passar todo o tráfego restante. Neste contexto, temos o paradoxo básico da estratégia de um IDS; administradores de firewall estão bem familiarizados com este dilema. A estratégia do bem conhecido ou know-good irá ter ordens de magnitude de mais trabalho, tentando classificar todo o tráfego da rede, determinando o que supostamente aconteceria e o que é desejado. Desse modo, tem-se uma enorme quantidade de falsos positivos gerados por um IDS altamente ocupado, e isso irá selecioná-los lentamente para um nível gerenciável, que identificará o tráfego know-good na rede. Além disso, a menos que nada mude na rede, tem-se que constantemente afinar e refinar o IDS para ajustar às mudanças normais que acontecem com o tempo na maioria dos ambientes. Existem ferramentas automatizadas para definirem normal, onde normal é esperado como uma aproximação aceitável de bom. Entretanto, estas ferramentas sofrem com problemas de falsos positivos em ambientes complexos e altamente dinâmicos. Eles podem ainda ser enganados quando decidem que algo é normal, se a nova atividade ocorre em pequenas quantidades durante um longo período de tempo. Entretanto, seguindo a estratégia de apenas alertar em tráfegos conhecidos ou suspeitos, irá resultar em um baixíssimo volume de alertas. Além do mais, devido às regras serem muito específicas na definição de algo ruim, quando um alerta (assumindo que as regras foram bem escritas), pode-se acreditar que a atividade má está sendo vista. Isto quer dizer que a pessoa que monitora o IDS não precisa ser habilidosa (pois não tem que fazer a verificação dos alertas ou troubleshoot do IDS). Contudo, com a aproximação há forte probabilidade do tráfego de ataque não combinar com as regras ou algoritmos. Com regras mais flexíveis, o número de falsos positivos pode aumentar. Em alguns cenários, não se conhece muito de detecção de intrusão e não se tem tempo de aprender, e isto pode não ser a melhor solução. Porém, se se deseja aumentar a probabilidade de detecção de um dado ataque, recursos disponíveis são necessários para monitorar e manter o IDS. A escolha da estratégia é uma análise de custo/benefício, pesando o tempo e o
35 23 recurso que se deseja dedicar aos IDS s visando detectar o maior número de ataques Tecnologias para implementação da estratégia do IDS. Diferenciar tráfego de ataque de atividades inócuas de rede e sistema em diversas formas. Alguns primeiramente usam uma técnica chamada análise ruledbased (também conhecida como signature-based), que compara um padrão conhecido com uma atividade vista no sistema ou rede. Foram apresentados exemplos de analisador de regras, a partir do conteúdo dos pacotes em uma rede, comparando-os com uma série de regras pré-definidas. A mesma coisa pode ser feita quando se observa as entradas dos arquivos de log ou de chamadas do sistema. Isto é similar ao modo como muitos programas anti-virus verificam as assinaturas de vírus no reconhecimento de blocos de arquivos infectados, programas, ou conteúdo ativo da Web ao entrar no sistema do computador (essa é a razão de se atualizar sempre o anti-virus). Detecção por assinatura é o método mais amplamente usado na tecnologia de IDS comerciais hoje em dia, pois é facilmente demonstrável, efetivo, e muito customizável com treinamento ou experiência limitada. Quando um novo ataque é descoberto, novas assinaturas podem ser escritas para comparar e alertar contra novas formas de ataque. Uma versão mais complexa da análise ruled-based é a análise de protocolo. Em vez de escrever uma simples regra que defina algo sobre um evento específico (bom ou mau), a análise de protocolo tenta definir todos os comportamentos aceitáveis possíveis para um tipo específico de atividades, Por exemplo, quando um computador deseja iniciar uma conexão TCP, ele envia pacotes SYN. As respostas aceitáveis são ambas RST/ACK ou SYN/ACK. Qualquer outra coisa pode ser uma violação de protocolo. Este método permite um pouco mais de flexibilidade na definição do que é mau. Em vez de dizer, ao ver uma string maior que 500 bytes, preenchida com um caracter especifico, este é um ataque deste tipo, pode-se dizer, Neste ponto da conexão, não se deve ter strings maiores que 500 bytes. Se encontrar, isto é um ataque. Se ver mais de 500 bytes em outro ponto da conexão, tudo bem. O problema é que, enquanto os protocolos são justos e bem definidos, nem todos os fabricantes prestam atenção em tudo na definição do protocolo. Como resultado, pode-se achar que IDS baseado em análise ou analysis-based está corretamente de
36 24 acordo com algo que não é permitido na RFC (Request For Comments os documentos para definição da maioria dos protocolos da Internet. [ref rfc]), porém isto é completamente normal para aplicações de um fabricante específico. Além do mais, é tremendamente demorado e complexo escrever modelos de protocolos bons, e implementá-los de uma maneira suficientemente eficiente que possa ser usado na análise de redes de alta velocidade, pois isto leva anos de experiência. Significa que a maioria dos fabricantes tende a não ter muita vontade em compartilhar seus modelos de protocolos abertamente, mesmo para seus consumidores. Conseqüentemente, o troubleshooting de falsos positivos em IDS de análise de protocolo pode ser um longo processo dependente do fabricante. Outra técnica é denominada anomaly detection, que usa conceitos aprendidos ou pré-definidos sobre atividade do sistema: normal ou anormal (chamada heurística), para distinguir anomalias de comportamento normal do sistema; e monitorar, reportar ou bloquear anomalias assim que elas ocorram. Alguns IDS s de anomaly detection vêm com padrões pré-definidos de como o tráfego normal deve parecer; já outros observam o tráfego na rede (ou atividades no sistema) e utilizam um algoritmo de aprendizado para desenvolver um perfil de baseline a partir daquilo. Estes perfis são baselines de atividades normais e podem ser construídos usando amostragem estatística, método rule-based, ou uma rede neural, para apenas citar alguns métodos. Literalmente, centenas de fabricantes oferecem várias formas de implementações de IDS s comercias. Devido à simplicidade de implementação, a maioria das implementações são primeiramente signature based, com poucas soluções de protocol analysis e limitadas às capacidades de detecção anomalybased, presentes em certos produtos ou soluções. 2.7 O que o IDS faz Quando Encontra uma Tentativa de Ataque Os IDSs mais modernos incluem capacidades de respostas automáticas limitadas, mas essas respostas normalmente concentram-se na filtragem de tráfego automatizada, bloqueio ou a desconexão como último recurso. Embora alguns sistemas sejam capazes de lançar contra-ataques, as melhores práticas indicam que a identificação automatizada e as facilidades de backtrace são os aspectos mais
37 25 úteis (e aqueles menos prováveis para processá-lo), que tais facilidades provêem e, por isso, são as mais usadas. Há métodos diferentes e altamente configuráveis para o IDS executar quando descobre uma tentativa de intrusão. Na próxima seção é apresentado resumidamente os méritos de resposta ativa do IDS (às vezes erradamente conhecido como IPS, ou Sistemas de Prevenção de Intrusão) contra a detenção e alerta passivo mais tradicional Resposta Passiva (Passive Response) Tradicionalmente, o IDS analisa a atividade, e pode ser configurado para registrar em um arquivo e/ou enviar alertas ao administrador. Estes alertas podem tomar muitas formas armadilhas(traps), Protocolo Simples de Gerência de Rede (SNMP), s de saída, páginas ou mensagens de texto ao administrador do sistema, até chamadas telefônicas automatizadas. A maior parte dos administradores configuram o IDS para alertá-los de vários modos, dependendo da gravidade do ataque percebido e da freqüência da sua ocorrência. Não se deseja receber alertas por um pager 10 vezes por hora para algo que parece perigoso no início mas resulta em um falso positivo. Contudo, realmente a notificação de um alerta é esperado, especialmente se ele não indicar um falso positivo. IDSs tradicionais limitam-se a essa tarefa. Eles são normalmente configurados com uma interface de gerência inteiramente separada de sua parte de escuta na rede, para não serem traídos por sua presença na parte que envia alerta todo o tempo. Muito freqüentemente, a interface de escuta não tem um endereço IP, e é uma interface invisível, configurada para não responder a qualquer tráfego Resposta Ativa (Active Response) IDSs com capacidades de resposta ativas e IPSs (os dois são diferentes) emulam todo o comportamento de IDSs passivos tradicionais até a parte de detecção. Contudo, quando eles vêem uma tentativa de ataque, podem ser configurados para tomar medidas pró-ativas contra este, em vez de apenas alertar o administrador e esperar para uma tomada de decisão. Eles podem ser ligados em
38 26 série e eliminar o tráfego que vêem como malicioso, ou podem forjar o reset do Protocolo de Controle de Transmissão (TCP) com a fonte, ou com sistemas de destino (ou ambos) terminando abruptamente uma sessão TCP que vêem como tráfego de ataque. Podem ainda enviar mensagens de Protocolo de Mensagem de Controle de Internet (ICMP) do tipo destino inalcançável ao sistema fonte, como um esforço para convencê-lo que o sistema alvo é inalcançável. Alguns reconfiguram firewalls ou roteadores entre os alvos e os atacantes para bloquear o tráfego. Outros sistemas farão buscas de nameserver ou traceroutes no sistema de ataque, em uma tentativa de reunir a informação sobre este. Alguns fazem até portscan no sistema de ataque, e retornam um relatório de seu provável sistema operacional e possíveis vulnerabilidades. A apelação de resposta ativa é por não ter um administrador de sistema monitorando a rede em tempo real. O perigo é a conseqüência da falta de configuração se tornar muito mais grave. O IPS deve ser verificado nas capacidades de whitelisting para se evitar cenários onde as aplicações perderam a conexão com o nameserver. É aconselhável ainda verificar as legalidades da jurisdição, na qual se planeja fazer com que o sistema automaticamente rastreie ou vasculhe os sistemas "atacantes" IDS em linha (Inline) Outro debate comum de configuração é se o IDS deve ficar em uma porta na rede switched, ou ficar ligado em série entre o host e a Internet. Há vantagens e desvantagens em ambas as configurações. Caso se pretenda ter o IDS agindo como um IPS, conectá-lo em série pode ser consideravelmente forte. A prevenção é muito mais eficaz quando o IDS é simplesmente capaz de descartar o tráfego que ele determinou como não permitido. Quando o IDS não é ligado em série, pode-se enviar um ICMP unreachables, ou TCP Reset, tanto à fonte como ao destino, mas se deve esperar que os próprios dispositivos se comportem apropriadamente. Como não se está controlando o segmento de rede entre eles, não há muita coisa que se possa fazer, com um IDS ligado em série, tem-se muito mais controle sobre estas situações.
39 27 Há duas preocupações principais neste tipo de configuração os falsos positivos têm conseqüências mais desastrosas do que o IPS médio; e o desempenho pode ser um assunto significativo. Como todo o tráfego de rede está atravessando a caixa, um único ponto de perda é freqüentemente desastroso do ponto de vista do desempenho.
40 28 3 REDES NEURAIS ARTIFICIAIS(NEURAL NETWORS) 3.1 Introdução As redes neurais artificiais têm sido baseadas em estudos de como o cérebro processa informações. Na sua forma mais geral, uma rede neural é uma máquina projetada para modelar a maneira como o cérebro realiza uma tarefa particular ou atividade de interesse. Uma rede neural é normalmente implementada utilizando-se componentes eletrônicos ou simulada por programação em um computador digital. Segundo Haykim [10], uma rede neural é um processador maciçamente paralelo distribuído, constituído de unidades de processamento simples, que tem a propensão natural para armazenar conhecimentos experimentais e torná-los disponíveis para o uso, e assemelha-se ao cérebro em dois aspectos: 1. o conhecimento é adquirido pela rede por meio de dados do ambiente, num processo de aprendizagem. O Processo de treinamento é chamado de Algoritmo de Aprendizagem, que tem como finalidade ajustar os pesos sinápticos da rede de uma forma ordenada até alcançar um objetivo desejado. 2. as conexões entre os neurônios, conhecidas como pesos sinápticos, são utilizadas para armazenar o conhecimento adquirido.
41 29 Este capítulo apresenta um breve histórico de redes neurais artificiais. Apresenta o neurônio biológico e artificial, sendo este último a base de uma rede neural. Também os tipos de arquiteturas das redes e modelos de aprendizagem. Apresenta também a arquitetura do Perceptron de Múltiplas Camadas (PMC) com retro propagação de erro, o qual é descrito de maneira geral o modo lote de treinamento, onde são apresentadas as derivadas e as fórmulas de ajuste do algoritmo. Também são descritas técnicas aplicadas no treinamento, como: (a) treinamento seqüencial e por lote; (b) taxa de momento; (c) validação cruzada; (d) curva de aprendizagem e heurísticas para melhorar o desempenho como classificador. Finalizando, apresentam-se as vantagens e as desvantagens do uso do Perceptron de Múltiplas Camadas. 3.2 Um Breve Histórico Para alguns, o início das Redes Neurais Artificiais se deu em 1943 com o psiquiatra e neuroanatomista McCulloch e o matemático Pitts [11], que modelou o funcionamento de um neurônio. Em 1949 houve um avanço com a publicação do livro The Organization of Behavior, do neuropsicólogo Hebb [12], em que pela primeira vez foi apresentada uma regra de aprendizado fisiológico para as modificações sinápticas. Esta afirma que a eficiência de uma sinapse variável entre dois neurônios é aumentada pela ativação repetida de um neurônio, causado por outro neurônio, através daquela sinapse. Em 1958, Rosenblatt [13] demonstrou o seu novo modelo: o perceptron, e em 1962 apresentou o Teorema de Convergência do Perceptron. Nesse período, muitos pesquisadores deram ótimas contribuições ao campo das redes neurais. Em 1960, Widrow e Hoff [14], baseados no método do gradiente para minimização do erro na saída de um neurônio com resposta linear, apresentaram uma regra de aprendizado conhecida como Regra de Widrow e Hoff ou Regra Delta. Mas, em 1969, Minsky e Papert [15] usaram uma matemática elegante para demonstrar a existência de limites fundamentais sobre o perceptron. Então veio a década da dormência.
42 30 Durante os anos 70 muitos pesquisadores, exceto os psicólogos e os neurocientistas, desistiram desse campo. Nos anos 80 ressurge o interesse pela Rede Neural Artificial, com a publicação de vários trabalhos como: Hop field (função de energia), Kohonen (selforganizing maps), Barto e Anderson (reinforcement learning). Em 1986, Rumelhart, Hinton e Williams [15] apresentaram a descrição do algoritmo de retro propagação de erro, mostrando que a visão de Minsky e Papert sobre o perceptron era bastante pessimista. Hoje, a Rede Neural Artificial representa uma vigorosa area de pesquisa multidisciplinar. E freqüentemente é identificada como uma subespecialidade da Inteligência Artificial; outras vezes como uma classe de modelos matemáticos para problemas de classificação e reconhecimento de padrões. E finalmente, numa categoria de modelos em ciência da cognição e conexionismo. 3.3 Neurônio Biológico e Artificial O neurônio ou célula nervosa foi descrito por Ramon e Cajal, como sendo um dispositivo computacional elementar do sistema nervoso. O neurônio é formado por três regiões: o corpo celular, os dendritos e o axônio, como na Figura 3.1. Figura 3-1 Neurônio biológico os dendritos, que tem formato de uma árvore, recebem as informações através dos longos axônios dos outros neurônios e as enviam para o corpo celular; o corpo celular, que recebe estímulos vindo dos dendritos, calcula se estes estímulos excedem o limiar de excitação ou threshold (i.e., ponto em que um
43 31 estímulo é suficiente para ser percebido ou produzir uma resposta) e a resposta é enviada para o axônio; o axônio, possui um longo conector cilíndrico que carrega o impulso de resposta do neurônio, que é transmitida para o dentrito neurônio seguinte. O funcionamento do cérebro se dá através das comunicações entre os neurônios. Primeiramente os dendritos recebem os estímulos dos axônios de outros neurônios. Esses estímulos são enviados para o corpo celular que calcula o estímulo de saída do neurônio, que é transmitido pelo axônio para o dendrito de outro neurônio. A interligação entre os neurônios é chamada de sinapse e é feita através de substâncias conhecidas como neurotransmissores, que dependendo do resultado obtido no corpo celular podem ser excitatórias ou inibitórias. A comunicação no interior do neurônio se dá através de sinais elétricos, e entre neurônios por sinais químicos, Braga [16]. O cérebro humano possui aproximadamente 10 bilhões de neurônios no córtex cerebral e 60 trilhões de sinapses, Haykim [10]. Em 1943, o psiquiatra e neuroanatomista McCulloch e o matemático Pitts [11] foram os primeiros a proporem matematicamente uma forma simplificada de funcionamento do neurônio. No modelo de McCulloch, o neurônio possui i entradas (equivalente aos dendritos) x 1, x 2,.., x m e apenas uma saída (equivalente ao axônio), y. Para simular a sinapse, cada entrada do neurônio tem um peso atribuido w 1, w 2,.., w m cujos valores podem ser positivos (excitatórios) ou negativos (inibitórios). Os pesos têm como finalidade armazenar o conhecimento e determinar a intensidade com que cada entrada contribuirá no resultado final apresentado pelo neurônio. No corpo celular simplesmente é somando os valores do produto de suas entradas com seus respectivos pesos, x i w i, e se a soma for maior que o seu limiar a sua saída é ativada com valor 1, ou não ativada, com valor 0. Resumindo, o neurônio será ativo quando: m i= 1 x w i i θ (3.1) onde m é o número de entrada do neurônio, w i é o peso associado à entrada x i, e é o limiar atribuído ao neurônio, conforme ilustrado na Figura 3.2.
44 32 Figura 3-2 Neurônio artificial de McCulloch e Pitts O neurônio de McCulloch e Pitts tem diferenças em relação ao neurônio biológico como: neurônios artificiais trabalham sincronamente, isto é, são ativados ao mesmo tempo; já os neurônios biológicos não possuem este tipo de sincronização. Nos sistemas biológicos, a saída do neurônio depende das ativações anteriores, devido aos neurotransmissores liberados anteriormente e que levam algum tempo para se recombinarem; nos neurônios artificiais são usados pesos negativos para representar essa inibição. As principais limitações do neurônio de McCulloch e Pitts são: ele foi proposto com pesos fixos, isto é, não ajustáveis; e só conseguem implementar funções linearmente separáveis. 3.4 Arquitetura de Rede A arquitetura de uma rede neural artificial depende diretamente do problema que será tratado pela rede. Como parte da definição da arquitetura da rede tem-se: quantidades de camadas, números de neurônios em cada camada e tipo de conexão entre os neurônios[16]. Quanto ao número de camadas, pode-se ter: 1. redes de camada única. A forma mais simples de uma rede em camadas surge quando se tem uma camada de entrada que se projeta para a camada de saída, mas não vice-versa, como mostrado na Figura 3.3(a) e (d); 2. redes com múltiplas camadas. Redes com múltiplas camadas, Figura 3.3 (b) e (c), se distinguem de redes com camada única pela presença de uma ou
45 33 mais camadas ocultas. A função das camadas ocultas é extrair informações das amostras. Quanto aos tipos de conexões entre os neurônios, têm-se: 1. feedforward ou acíclica. A saída do neurônio na iésima camada não pode ter entradas com neurônios em camadas de índice menor ou igual a i, como mostrado na Figura 3.3(a), (b) e (c); 2. feedback ou cíclica. A saída do neurônio na iésima camada tem entradas com neurônios em camadas de índice menor ou igual a i, como mostrado na Figura 3.3 (d). Figura 3-3 Exemplos de arquiteturas de RNAs Finalmente, quanto a sua conectividade, tem se: 1. rede fracamente (ou parcialmente) conectada, como na Figura 3.3 (c); 2. rede completamente conectada, como mostrado na Figura 3.3 (a),(b) e (d).
46 Processo de Aprendizagem De importância primordial para as redes neurais é a habilidade de aprender a partir de seus ambientes e de melhorar o desempenho através do treinamento. Uma rede neural aprende acerca de seu ambiente através de um processo interativo de ajustes aplicados a seus pesos sinápticos e níveis de bias. Uma definição de aprendizagem, adaptada de Haykim [10] é: Aprendizagem é um processo pelo qual os parâmetros livres de uma rede neural são adaptados através de um processo de estimulação pelo ambiente no qual a rede esta inserida. O tipo de aprendizagem é determinado pela maneira com qual a modificação dos parâmetros ocorre. Esta definição do processo de aprendizagem implica na seguinte seqüência de eventos: 1. a rede neural é estimulada por um ambiente; 2. a rede neural sofre modificações nos seus parâmetros livres (i.e. pesos sinápticos e bias) como resultado desta estimulação; 3. a rede neural responde de uma maneira nova ao ambiente, devido às modificações ocorridas na sua estrutura interna. Como se pode esperar, não há um algoritmo de aprendizagem único para o projeto de redes neurais. Em vez disso, tem-se um conjunto de ferramentas representado por uma variedade de algoritmos de aprendizagem, cada qual oferecendo vantagens específicas. Basicamente, os algoritmos diferem entre si pela forma como são formulados os ajustes dos pesos sinápticos do neurônio. Outro fator a ser considerado é a maneira pela qual uma rede neural se relaciona com seu ambiente, que pode ser supervisionado ou não supervisionado, que será visto na seção Modelos de Aprendizagem em Relação ao Ajuste de Peso Em 1949, Hebb propôs o princípio em que o aprendizado em sistemas nervosos complexos poderia ser reduzido a um processo local, com a intensidade
47 35 das conexões sinápticas alteradas apenas em função dos erros detectáveis localmente; isto significa que ao apresentar o n-ésimo exemplo, o ajuste em w i depende unicamente do produto da iésima entrada pelo erro na saída. O padrão de treinamento é apresentado à rede, como na equação abaixo: ω novo i = ω + η( d d ) x velho i i k i Essa é uma regra local, na medida detalhar os elementos que não depende dos valores das demais variáveis espalhadas pelo sistema. Nas subseções que se seguem, apresentam-se modelos de aprendizagem Aprendizagem por Correção do Erro Na Aprendizagem por Correção do Erro, a rede é estimulada por um vetor de entrada e por uma saída desejada. A regra de ajuste consiste em achar o erro subtraindo a resposta desejada da resposta da rede e calculando o gradiente descendente da função erro. O algoritmo implementado neste trabalho utiliza a Aprendizagem por Correção de Erro Aprendizagem Baseada em Memória Na Aprendizagem Baseada em Memória faz-se uso da arquitetura de redes alimentadas com camada única e de modo supervisionado. A maioria das amostras de treinamento é armazenada em uma grande memória de padrões de entradasaída. Um exemplo simples de aprendizagem baseada em memória é a regra do vizinho mais próximo, onde a rede classifica de acordo com a distância euclidiana entre os vetores de treino Aprendizagem competitiva Na Aprendizagem Competitiva, após receber as características dos objetos da camada de entrada, os neurônios da camada de saída competem entre si, e o neurônio que tiver o maior valor discriminado se torna o vencedor. Enquanto em uma rede baseada na Aprendizagem Hebbiana vários neurônios na saída podem
48 36 estar ativos simultaneamente; na aprendizagem competitiva apenas um único neurônio na saída é ativado em um determinado instante. Essa característica torna a aprendizagem competitiva muito adequada para se descobrir características utilizadas para classificar um conjunto de objetos em determinadas classes. 3.7 Métodos de Aprendizagem A escolha de um algoritmo de aprendizagem particular é influenciada pelo método de aprendizagem que uma rede neural deve executar [10]. Nesse contexto, identificam-se seis métodos de aprendizagem que se aplicam em redes neurais Associação de Padrões Memória associativa é uma memória distribuída, inspirada no cérebro humano, que aprende por associação. A rede neural deve armazenar um conjunto de padrões que é apresentado repetidamente. Subseqüentemente, apresenta-se à rede uma descrição parcial ou distorcida de um padrão original armazenado, e a tarefa é recuperar aquele padrão particular. Um modelo de aprendizagem que pode ser usado neste método é a aprendizagem baseada em memória Reconhecimento de Padrões O reconhecimento de padrões é o processo que, por meio das características do objeto, reconhece-se a qual classe o objeto pertence em um número prédeterminado de classes. Uma rede neural realiza o reconhecimento de padrões passando inicialmente por uma sessão de treinamento, durante o qual se apresenta repetidamente à rede um conjunto de características do objeto. Mais tarde, apresenta-se à rede um novo objeto que não foi visto antes, e a rede será então capaz de identificar a classe daquele objeto particular; por causa das informações que ela extraiu dos dados de treinamento. Nesse método, pode-se usar a aprendizagem por correção de erro.
49 Aproximação de Funções Considere um mapeamento de entrada/saída não linear, descrito pela relação funcional: d = f (x) (3.2) onde o vetor x é a entrada e d é a saída. Supõe que a função F(.) seja desconhecida. Para compensar a falta de conhecimento sobre a função f( ) é fornecido um conjunto de exemplos rotulados: n (3.3) T = {( x i, d i )} i= 1 O objetivo é projetar uma rede neural que aproxime a função desconhecida f( ) de forma que a função F( ) que descreve o mapeamento de entrada/saída realizado pela rede esteja suficientemente próxima à f ( ), para todas as entradas, como: F ( x) f ( x) < para todo x (3.4) onde E é a tolerância atribuída ao erro, é um número positivo pequeno. Contanto que o tamanho n do conjunto de treinamento seja suficientemente grande e que a rede esteja equipada com um número adequado de parâmetros livres, então o erro pode ser suficientemente pequeno. Nesse método pode-se usar a aprendizagem por correção de erro. 3.8 Perceptron Utilizando o modelo de neurônio de McCulloch e Pitts [11], Frank Rosenblatt [13] escreveu em 1958 o primeiro conceito de aprendizado em RNAs, e demonstrou o Teorema de Convergência do Perceptron; em que o algoritmo de aprendizado do perceptron sempre converge, caso o problema em questão seja linearmente separável.
50 38 O aprendizado ou adaptação tem como finalidade calcular o valor de ω a ser aplicado nos pesos ω, que tende a encontrar o melhor ω que resolve o problema em questão. Considerando um neurônio arbitrário da camada de saída de um perceptron, com vetores de entrada x 0 e pesos ω 0, com ativação igual ao produto interno de ω e x, ωi xi, isto é, o angulo entre ω e x. w i x i = = 0, ω x > 0, g < 90 0, g > 90 A condição de ativação do neurônio ocorre quando ω x = θ, onde θ é o valor de limiar do neurônio; fazendo ω x θ = 0, para simplificar, basta adicionar no vetor de entrada, x(0) = 1, e no vetor peso, ω(0) = θ. Utilizando {x, d} como par de treinamento, sendo x o vetor de entrada, d a resposta desejada de x e y a resposta produzida pela rede. O erro do neurônio será e=d y para o vetor x. Os valores de y e d no caso do perceptron podem ser y Є {0, 1} e d Є {0, 1}, portanto têm-se duas situação para e 0: 1. a primeira é quando d = 1 e y = 0, neste caso e = 1 e ω x < 0, que implica o ângulo entre ω e x ser g > 90. De acordo com a Figura 3.4 (a), uma boa opção para a alteração do vetor peso é somar o vetor ηx. Assim, w = ηx e ω(t + 1) = ω(t) + ηx, como e = 1, pode-se ter w = ηex e w(t + 1) = w(t) + ηex, onde η é a taxa de aprendizado do algoritmo, isto é, o quanto o vetor peso irá ser modificado; 2. a segunda é quando d = 0 e y = 1, neste caso e = 1 e ω x 0, que implica o ângulo entre ω e x ser < 90. De acordo com a Figura 3.4 (b), uma boa opção para a alteração do vetor peso é subtrair o vetor ηx. Assim ω = ηx e ω(t + 1) = ω(t) ηx, como e = 1 pode-se ter ω = ηex e ω(t + 1) = ω(t) + ηex.
51 39 Figura 3-4 Unidade de saída Assim, finalmente tem-se a equação 3.5: ω = ω + ηex ( t+ 1) ( t ) (3.5) 3.9 Perceptron de Múltiplas Camadas Em 1986, Rumelhart, Hinton e Williams [15] apresentaram a descrição do Algoritmo Retropropagação de erro ou Backpropagation para arquitetura do perceptron de Múltiplas camadas, mostrando que a visão de Minsky e Papert sobre o perceptron era bastante pessimista. Os perceptrons de Múltiplas camadas com retropropagação de erro têm sido aplicados com sucesso para resolver diversos problemas. Como exemplo: reconhecimento de caracteres, previsão do comportamento de ações na bolsa, verificação de assinaturas, segurança em transações com cartões de crédito, diagnóstico médico e outros [16] Arquitetura do Perceptron de Múltiplas Camadas Utilizando como estrutura o neurônio artificial como o da Figura 3.5, tem-se a base para projetos de redes neurais artificiais, onde se pode observar três elementos básicos: 1. entrada, representado pelo produto interno de x m e w km. Assim, um sinal x j na entrada da sinapse j conectado ao neurônio k e multiplicado pelo peso
52 40 sináptico w kj. O primeiro índice se refere ao neurônio em questão e o segundo se refere ao terminal de entrada à qual o peso se refere; 2. um somador, o produto interno dos sinais de entrada com os respectivos pesos do neurônio; 3. uma função de ativação, ou de restrição, que restringe a amplitude da saída y k do neurônio. O modelo neural da Figura 3.5, possui também bias, aplicado externamente, representado por bk. O bias bk tem o efeito de aumentar ou diminuir a entrada líquida da função de ativação, dependendo se ele é positivo ou negativo, respectivamente. Figura 3-5 Neurônio artificial Utilizando como estrutura básica da rede o Neurônio da Figura 3.5, tipicamente uma MLP ou PMC possui uma camada de entrada, uma ou mais camadas ocultas e uma camada de saída. A Figura 3.6 mostra a arquitetura de uma rede Perceptron de Múltiplas Camadas, com uma camada de entrada, uma oculta e uma de saída. Note que um neurônio em qualquer camada da rede esta conectado a todos os neurônios da camada anterior.
53 41 Figura 3-6 Arquitetura do Perceptron de Múltiplas Camadas com uma camada oculta O Algoritmo de Retropropagação O algoritmo de retropropagação de erro possui duas fases distintas: 1. para frente ou propagação (em inglês forward ). As características de uma amostra são introduzidas na camada de entrada, propaga-se para frente (neurônio por neurônio) através da rede e emerge na camada de saída da rede; 2. para traz ou retropropagação (em inglês backward ). O erros que se originam nos neurônios da camada de saída, se propagam para trás (camada por camada) por meio da rede, atualizando os seus pesos. A Figura 3.7, representa os dois tipos de fluxos identificados nesta rede. Figura 3-7 Ilustração das direções de dois fluxos básicos em um Perceptron de Múltiplas Camadas: propagação para frente e a retropropagação.
54 Modo de Treinamento Seqüencial e por Lote Como mencionado anteriormente, uma apresentação completa do conjunto de treinamento inteiro é denominado uma época. Para um dado conjunto de treinamento, a aprendizagem por retropropagação pode então proceder de formas básicas: 1. modo seqüencial. O modo seqüencial de aprendizagem por retropropagação é também chamado de modo online, modo padrão ou modo estocástico. Neste modo de operação, a atualização dos pesos é realizada após a apresentação de cada padrão de treinamento; este é o modo de apresentação onde se aplica o algoritmo de retropropagação apresentado. Para ser específico é preciso considerar uma época constituindo de N padrões (vetores) de treinamento arranjados na ordem (x 1, d 1 ),.., (x N, d N ). O primeiro par de padrão (x 1, d 1 ) da época é apresentado à rede; e a seqüência de computações, para frente e para trás, descrita anteriormente, é realizada resultando em certos ajustes dos pesos sinápticos e níveis de bias da rede. Então, o segundo par de padrões (x 2, d 2 ) da época é apresentado, e a seqüência de computações para frente e para trás é repetida, resultando em novos ajustes dos pesos sinápticos e níveis de bias. Esse processo continua até que o ultimo par de padrões (x N, d N ) da época seja considerado; 2. modo por lote: No modo por lote a aprendizagem por retropropagação o ajuste dos pesos é realizado após a apresentação de todos os padrões de treinamento que constituem uma época. Do ponto de vista operacional online, o modo seqüencial de treinamento é preferível em relação ao modo por lote, porque requer menos armazenamento local para cada conexão sináptica. Além disso, dado que os parâmetros são apresentados à rede de uma forma aleatória, o uso de ajuste de pesos de padrão em padrão torna a busca no espaço de pesos puramente aleatória. Isso torna menos provável que o algoritmo de retropropagação fique preso em um mínimo local [10]. O modo de treinamento por lote fornece uma estimativa precisa do vetor gradiente. A convergência para um mínimo local é assim garantida sob condições
55 43 simples. A composição do modo por lote também o torna mais fácil de ser paralelizado do que o modo seqüencial. Quando os dados de treinamento são redundantes (i.e., o conjunto de dados contém várias cópias de padrões), constata-se que, diferentemente do modo por lote, o modo seqüencial é capaz de tirar vantagens de sua redundância, porque os padrões são apresentados um de cada vez. Isso ocorre particularmente quando o conjunto de dados é grande e altamente redundante [10] Vetor Gradiente Admitindo que uma função f : D R 2 R, diferençável em P 0 D, define-se o vetor gradiente da função f no ponto P 0 por f (P 0 ) ou gradf(p 0 ) ao vetor cujas componentes são as derivadas parciais de f no ponto P 0. Uma importante propriedade do gradiente é que ele aponta na direção de maior crescimento de f em (x, y). O vetor oposto ao gradiente (gradiente f f descendente) é dado por f ( x, y) = ( x, y), ( x, y), e aponta na direção em x y que a função decresce mais rapidamente. f f ( P0 ) f ( P ) P0 ) =, x y ( 0 (3.6) Como exemplo de cálculo do vetor gradiente da função f (x, y) = x 2 + y 2, com z = f (x, y), e (x, y) 2 R, tem-se: Fazendo x 0 = 1 e y 0 = 1, obtém: f f f ( x, y) = ( x, y), ( x, y) = (2x,2y) x y f ( 1,1) = (2,2) A Figura 3.8 ilustra o vetor gradiente no ponto (x 0, y 0 ).
56 44 Figura 3-8 Vetor gradiente do ponto f (x0, y0 ) Fazendo η = 0.1, o ponto (x 1, y 1 ) pode ser obtido utilizando o gradiente: ( x1, y1) = ( x0, y0) + η f ( x0, y0) ( 1 x 1, y ) = (1,1) + 0.1(2,2) = (1.2,1.2) O gradiente para o ponto (x 1, y 1 ) é: f (x 1, y 1 ) = (2x 1, 2y 1 ) = (2.4, 2.4) Do mesmo modo, o ponto x 2 e y 2 : ( 2 ( x2, y2) = ( x1, y1) + η f ( x1, y1) x 2, y ) = (1.2,1.2) + 0.1(2.4,2.4) = (1.44,1.44) Finalizando, os pontos: z 0 = f (x 0, y 0 ) = 2, z 1 = f (x 1, y 1 ) = 2.88 e z 2 =f (x 2, y 2 ) = 4.14 A Figura 3.9 ilustra a caminhada do gradiente para a maximização da função f. Esse procedimento deve ser repetido até que seja alcançado um valor máximo para z. A função EQM que se quer minimizar depende dos pesos ws. Para uma rede com 2 entradas, 3 neurônios na camada intermediária e 2 neurônios na camada de saída, a EQM estaria definida em R 17, o que torna impossível a representação geométrica.
57 45 Figura 3-9 Gráfico da função f (x, y) = x2 + y Momento O algoritmo de retropropagação fornece uma aproximação para a trajetória no espaço de pesos calculada pelo método da descida mais íngreme. Quanto menor for o parâmetro da taxa de aprendizagem η, menor será a variação dos pesos sinápticos da rede de uma iteração para a outra, e mais suave será a trajetória no espaço de pesos. Essa melhoria, entretanto, é obtida à custa de uma taxa de aprendizagem lenta. Por outro lado, se o parâmetro da taxa de aprendizagem η for muito grande, grandes modificações nos pesos sinápticos resultantes podem tornar a rede instável (i.e., oscilatória). Um método simples de aumentar a taxa de aprendizagem, evitando, no entanto, o perigo de instabilidade, é modificar a regra delta, incluindo um termo de momento, como: Δ 1 (3.7) onde α é usualmente um número positivo chamado de constante de momento. A incorporação do momento no algoritmo de retropopagação representa uma modificação pequena na atualização dos pesos; contudo, pode haver alguns efeitos benéficos sobre o comportamento de aprendizagem do algoritmo.
58 46 O termo de momento também pode ter o efeito de evitar que o processo de aprendizagem termine em um mínimo local Validação Cruzada A validação cruzada ou cross validation tem como princípio ajudar na parada do treinamento. Primeiramente, divide-se o conjunto de dados aleatoriamente em um conjunto de treinamento e um conjunto de teste. O conjunto de treinamento é dividido adicionalmente em dois subconjuntos disjuntos: a) Um subconjunto de estimação, usado para o ajuste dos parâmetros da rede; b) Um subconjunto de validação, usado para testar ou validar o modelo. O subconjunto de estimação é usado para treinar a rede na maneira usual, exceto por uma pequena modificação: a sessão de treinamento é interrompida periodicamente (i.e., após um número determinado de épocas), e a rede é testada com o subconjunto de validação: isto é, após um período de estimação (treinamento), os pesos sinápticos e os níveis de bias da rede são todos fixados e a rede atua em seu modo direto. O erro de validação é então medido para cada exemplo do subconjunto de validação. Quando a fase de validação é completada, a estimação (treinamento) é reiniciada em um novo período, e o processo é repetido. A Figura 3.12 mostra as formas conceituais de duas curvas de aprendizagem: uma relativa às medidas sobre o subconjunto de estimação, e a outra relativa ao subconjunto de validação. A curva de aprendizagem de estimação decresce para um número crescente de épocas. Diferentemente, a curva de aprendizagem de validação decresce para um mínimo e então começa a crescer conforme o treinamento continua. Quando se olha para a curva de aprendizagem da estimação pode parecer que pode se melhorar o desempenho, indo além do ponto mínimo da curva de aprendizagem de validação. Entretanto, na realidade, o que a rede aprende após esse ponto é essencialmente o ruídos contidos nos dados de treinamento. Essa heurística sugere que o ponto mínimo na curva de aprendizagem de validação seja usado como critério sensato para encerrar a sessão de treinamento. Esse procedimento é referido como método de treinamento com parada antecipada.
59 47 Figura 3-10 Ilustração da regra de parada antecipada baseada na validação cruzada 3.11 Generalização A rede neural utiliza o conjunto de treinamento para adaptar os pesos e bias da rede, de forma que a rede neural seja capaz de generalizar. Uma rede generaliza bem quando o mapeamento de entrada e saída computado pela rede for correto para dados de teste que não foram utilizados para o treinamento da rede. Assumese que os dados de teste são retirados da mesma amostra usada para gerar os dados de treinamento. Uma rede neural pode ter uma generalização pobre, quando há neurônios ocultos mais do que o necessário, resultando em memorização. De outro modo, com pequeno número pode ocorrer underfitting, onde a rede não consegue convergir durante o treinamento. Considerando a rede neural como um mapeamento não linear de entrada e saída, ilustrada na Figura 3.13a, onde os pontos rotulados como dados de treinamento foram utilizados na aprendizagem e o ponto marcado como generalização tem-se o resultado da interpolação realizada pela rede. A rede pode ter generalização pobre devido à memorização, como ilustrada na Figura 3.13b para os mesmos dados utilizados na Figura 3.13a. A memorização implica que o mapeamento de entrada e saída da rede não é suave [10].
60 48 Figura 3-11 (a) Dados ajustados adequadamente; (b) Dados ajustados em excesso 3.12 Heurística para Melhorar o Desempenho Freqüentemente é dito que o projeto de uma rede neural utilizando o algoritmo de retropropagação é mais uma arte do que uma ciência, significando que muitos dos numerosos fatores envolvidos no projeto são resultados da experiência particular de cada um. Há alguma verdade nessa afirmação, entretanto, existem métodos que melhoram significativamente o desempenho do algoritmo de retropropagação, como descrito a seguir: 1. Aleatorizar o conjunto de treinamento. Nas tarefas de classificação de padrões usando a aprendizagem por retropropagação seqüencial, uma técnica simples e bastante utilizada é tornar aleatória a ordem em que os exemplos são apresentados ao perceptron de Múltiplas camadas entre épocas. Idealmente, a aleatoriedade garante que os exemplos apresentados à rede em uma época raramente pertençam à mesma classe; 2. Valores-alvo. É importante que os valores alvo (resposta desejada) sejam escolhidos dentro do intervalo da função de ativação sigmóide. Mais especificamente, a resposta desejada d j para o neurônio j na camada de saída do perceptron de Múltiplas camadas deve ser deslocada por uma quantidade ε do valor limite da função de ativação sigmóide, dependendo se o valor limite é positivo ou negativo. Caso contrário, o algoritmo de retropropagação tende a levar os parâmetros livres da rede para o infinito e
61 49 dessa forma reduzir a velocidade do processo de treinamento, levando os neurônios ocultos à saturação; 3. Normalizar as entradas. Cada variável de entrada deve ser pré processada, de modo que o seu valor médio, calculado sobre todo o conjunto de treinamento, seja próximo de zero, ou seja, pequeno quando comparado com o desvio padrão. Para avaliar o significado prático dessa regra, deve-se considerar o caso extremo, onde as variáveis de entrada são positivas de modo consistente. Nessa situação, os pesos sinápticos de um neurônio, na primeira camada oculta, podem apenas crescer juntos ou decrescer juntos. Conseqüentemente, se o vetor peso daquele neurônio deve mudar de direção, ele só pode fazer isso ziguezagueando em seu caminho por meio da superfıcie de erro, o que é tipicamente lento e deve ser evitado. Para acelerar o processo de aprendizagem por retropropagação, a normalização das entradas deve incluir também duas medidas: (a) as variáveis de entrada contidas no conjunto de treinamento não devem ser correlacionadas. Isso pode ser feito utilizando-se da analise dos componentes principais; (b) as variáveis de entrada não correlacionadas devem ser escalonadas para que suas covariâncias sejam aproximadamente iguais, assegurando-se com isso que os diferentes pesos sinápticos da rede aprendam velocidades próximas; 4. Variar o número de neurônios na camada oculta; 5. Escolher uma taxa de aprendizado pequena para não ocorrer overshooting da solução (ou seja, ir além e perder a solução); 6. A taxa de aprendizado é escolhida experimentalmente para cada problema; 7. A inicialização afeta muito o resultado final. Reinicializações podem resolver este problema.
62 Vantagens e Desvantagens De acordo com Haykim [10], há vantagens e desvantagens no algoritmo retropropagação de erro: a) Vantagens: O cálculo localizado das unidades neuronais permite manter o desempenho na presença de erros, portanto, fornece uma base de projeto tolerante a falhas. A rede neural por ter natureza paralela pode ser distribuída implementada utilizando a tecnologia VLSI (Very Large Scale Integration). A complexidade computacional do Algoritmo Backpropagarion é polinomial em relação ao ajuste dos parâmetros (pesos) que devem ser alterados de uma iteração para a iteração seguinte. Nesse sentido, o Algoritmo Backpropagarion é computacionalmente eficiente. b) Desvantagens: O algoritmo de retropropagação de erro é basicamente uma técnica de escalada de encosta. A existência de mínimos locais (vales) pode gerar uma falsa solução ótima, ou aumentar o tempo de treinamento até sair do vale. Os problemas de treinamentos em grande escala de redes neurais em são considerados difíceis, e não existe uma estratégia única de aprendizagem, sendo necessárias outras abordagens, como por exemplo, o uso de préprocessamento, o uso de eficiente, algoritmos genéticos, e outras abordagens de IA.
63 51 4 MODELO E METODOLOGIA Para se efetuar os teste, optou-se por uma base de dados(datasets) que fosse capaz de simular vários tipos de ataques, bem como tráfego normal de uma rede. A composição do dataset deveria possuir padrões de ataques bem como padrões de tráfego normal, para que a rede neural possa diferenciar um do outro e não apenas identificar algum ataque. Ao procurar métodos de avaliação do modelo proposto, encontramos outros estudos com resultados satisfatórios e que utilizaram a base de dados do DARPA 98 [17], que foi criada no MIT, o que nos deu uma direção para o desenvolvimento do método. Prosseguindo na busca, encontrou-se um outro dataset que também foi utilizado pelo DARPA, porém em 99[18], incorporando novos tipos de ataques, procurando deixa-lo mais completo. Neste mesmo ano, em uma competição de Data Minning, foi criado um dataset baseado no DARPA 98 e 99, com o intuito de testar algorítimos de extração de dados em um dataset. Essa base de dado, em vez de ter um tamanho enorme como a do DARPA, tinha um resumo das conexões contidas no DARPA e as conexões estavam descritas em 41 campos que serão descritos mais adiante neste capítulo. Tinha-se então que escolher entre 3 (três) bases de dados para aplicarmos ao modelo de Sistema de Detecção de Intrusão, as oriundas do DARPA possuíam todas as conexões criadas durante as 4 semanas de simulação de tráfego, bem
64 52 como todos os pacotes. Isso tinha gerado um arquivo de ordem de Giga Bytes de informação, que deveriam ser processadas. Processar toda essa informação não seria o primeiro obstáculo, pois antes de processar a informação deveria-se colocá-la em um formato conhecido, pois como a base da dados foi gerada a partir de um sniffer, tinha-se que abrir os arquivos novamente com o sniffer, para que ele pudesse gerar os pacotes novamente e envia-los pela rede e assim processar os pacotes diretamente da rede. Ao analisar o dataset gerado pelo KDD Cup em 1999[19], o trabalho de desempacotar os arquivos gerados pelo sniffer e o primeiro processamento dos pacotes gerados pelos arquivos, já estava feito, faltava apenas aplicar o modelo. Optou-se então pela utilização do dataset gerado pelo KDD, o que aceleraria o processo de avaliação do modelo e teria mais tempo para a modelagem do conhecimento e o treinamento da rede neural, procurando obter o melhor resultado possível do treinamento. O dataset é composto por padrões de invasões(ataques Remote-to-local e User-to-Root), também conhecidos como exploits, padrões de reconhecimento de vulnerabilidades (Probes) e ataques de negação de Serviço (DoS). Juntamente com padrões de tráfego normais. Todos os padrões estão com etiquetas (label) informando qual é o tipo de tráfego que ele pertence, facilitando o treinamento e também a análise de resultados do modelo. A seguir veremos em detalhes o que são os exploits que compõem a base de dados DARPA 98, que é a origem do dataset KDD CUP que estaremos utilizando para avaliação de desempenho do modelo de Sistema de Detecção de Intrusão. Veremos também como foi separado em classes os tipos de ataques e quais critérios foram usados para essa separação.
65 53 Figura 4-1 Diagrama em Blocos das Atividades Realizadas 4.1 Exploits Uma grande amostra de ataques reais de computador é necessária para testar um sistema de detecção de intrusão. Esses ataques devem cobrir as diferentes classes de tipos de ataque e conter exploits tanto para vulnerabilidades recentemente descobertas, como para as mais antigas. Um exemplo de ataque deve consistir de várias fases. Por exemplo, um atacante poderia copiar um programa para a um sistema, executar este programa que explora uma vulnerabilidade do sistema para ganhar privilégios de root e, então, usar este privilégio de root para instalar um backdoor no sistema para um acesso posterior [20].
66 Fontes Muitos dos exlpoits desenvolvidos para a avaliação, DARPA 1998, foram feitas de idéias ou implementações disponíveis de fontes públicas na Internet. O Rootshell [21] é um site web dedicado à reunião de exploits de computador e tem um arquivo relativamente grande de ataques para muitos sistemas operacionais populares. O "Bugtraq" também freqüentemente armazena exploit code - ostensivamente lançado com o objetivo de testar as vulnerabilidades do próprio sistema de alguém - quando uma nova vulnerabilidade é discutida. Um arquivo de pesquisa do Bugtraq pode ser encontrado na Internet em Outros exploits foram criados da informação lançada por grupos de segurança como CERT [22] e X-force ISS [23] que freqüentemente lança informação sobre novas vulnerabilidades. Fontes de informações adicionais sobre vulnerabilidades de sistemas e os possíveis exploits são boletins dos fabricantes como a Sun Microsystems e a Software Redhat. Esses boletins são lançados para os clientes a fim de estimulá-los a carregar os pacthes que eliminam essa nova vulnerabilidade. Os novos exploits foram criados especificamente para o objetivo de avaliação do IDS. Esses novos exploits são úteis para se determinar quão bem um sistema de detecção de intrusão trabalha contra novos ataques, que não eram publicamente conhecidos no tempo em que o sistema de detenção de intrusão foi desenvolvido Idade do Exploit Cada novo exploit tem um período de tempo durante o qual é mais perigoso, como pode-se ver na figura 4-3. Com o passar do tempo, mais pessoas tomam conhecimento da vulnerabilidade e aplicam os patches (remendos) aos seus sistemas para fazê-los resistente ao exploit. Mesmo depois das notícias de uma vulnerabilidade tornar-se comum, alguns sistemas podem não estar preparados. Alguns administradores de sistemas com menos experiência passam anos sem ter falhas de segurança populares detectados e consertados. Alguns desses ataques mais velhos foram incluídos no sistema de ataques usados para a avaliação DARPA 1998.
67 55 Figura Vulnerabilidade do Ataque Taxonomia de Ataques de Computadores Uma taxonomia para classificar ataques de computador foi usada para escolher os exploits. Uma boa taxonomia permite classificar ataques em grupos, com propriedades em comum. Uma vez que esses grupos foram identificados, o trabalho de testar apropriadamente um sistema de detenção de intrusão torna-se mais fácil, porque em vez de desenvolver cada possibilidade ataque, pode-se escolher um subconjunto representativo em cada grupo. A taxonomia apresentado aqui foi originalmente apresentada em [24]. As características desta taxonomia são: Cada ataque pode ser confiadamente colocado em uma categoria; Todas as intrusões possíveis têm um lugar na taxonomia; A taxonomia pode ser estendida no futuro; Esta taxonomia foi criada com o objetivo de provar e avaliar sistemas de detecção de intrusão, e cada ataque pode ser categorizado como um dos seguintes: Um usuário executa alguma ação em um nível de privilégio; Um usuário faz uma transição não autorizada de um nível de privilégio mais baixo para um nível mais alto nível de privilégio.