Você está na página 1de 62

CENTRO UNIVERSITRIO VILA VELHA CURSO DE CINCIA DA COMPUTAO

Maycon Maia Vitali Halysson Freitas Alves da Silva

Sistema Inteligente de Deteco de Intruso

VILA VELHA

Maycon Maia Vitali Halysson Freitas Alves da Silva

Sistema Inteligente de Deteco de Intruso


Trabalho de Concluso de Curso apresentado ao Centro Universitrio Vila Velha como requisito parcial para a obteno do grau de Bacharel em Cincia da Computao. Orientador: Erlon Pinheiro

VILA VELHA

Maycon Maia Vitali Halysson Freitas Alves da Silva

Sistema Inteligente de Deteco de Intruso

BANCA EXAMINADORA

Prof. Msc. Erlon Pinheiro Centro Universitrio Vila Velha Orientador

Prof. Msc. Otaclio Pereira Centro Universitrio Vila Velha Banca Examinadora

Prof. Msc. Leonardo Muniz de Lima Centro Universitrio Vila Velha Banca Examinadora

Trabalho de Concluso de Curso aprovado em 03/11/2008.

A Deus e a nossas famlias ...

AGRADECIMENTOS
Agradecemos primeiramente a Deus por ter nos concedido a vida, at aqui. Agradecemos tambm por Ele nos proporcionar sade e felicidade em todos os aspectos de nossas vidas. Agradecemos a nosso orientador Erlon Pinheiro por ter nos guiado durante nossa jornada para o cumprimento deste trabalho e por ter dado total apoio e compreenso na reta nal de concluso. Agradecemos ao nosso grande amigo Rudson Alves pelo apoio e incentivo nos dado em momentos que achava-mos que no amos conseguir concluir este projeto. Agradecemos a ele tambm pelo forte exemplo de vida no que diz respeito ao crescimento e formao intelectual e pela dose diria de injeo de responsabilidade. Agradecemos aos professores Leonardo Muniz e Otaclio Pereira por aceitarem argir e avaliar nosso trabalho, tendo sempre opinies construtivas para nosso crescimento acadmico e prossional. Agradecemos aos coordenadores do curso Cristiano Biancard e Vinicius Rosalm pelo apoio e ajuda fornecidos durante a fase nal de concluso deste trabalho. Agradecemos ao corpo docente do curso pela excelente contribuio em prol do nosso crescimento acadmico e prossional. Agradecemos a nossas famlias pela nossa educao, todo apoio emocional e compreenso quando tivemos que estar ausentes para a concluso deste trabalho. Por nal, agradecemos a todos aqueles que, de certa forma, nos ajudaram sejam por meios tcnicos, meio intelectual ou simplesmente por compreenso e incentivo. Todos esses possuem um lugar reservado em nossos coraes e esperamos que a amizade e contato se prolongue durante diversos dias de nossas vidas.

Adoraria mudar o mundo, mas no me deram o cdigo-fonte...


Autor Desconhecido

LISTA DE FIGURAS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Exemplo de cdigo vulnervel a XSS . . . . . . . . . . . . . . . . . . . . Exemplo de cdigo vulnervel . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de cdigo malco utilizado em ataques . . . . . . . . . . . . Exemplo de cdigo vulnervel a ataques de SQL Injection . . . . . . . . Ataque de SQL Injection (formulrio) . . . . . . . . . . . . . . . . . . . . Ataque de SQL Injection (url) . . . . . . . . . . . . . . . . . . . . . . . . Mtodo HTTP-GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Mtodo HTTP-POST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de tipos de tcnicas de evaso . . . . . . . . . . . . . . . . . Arquitetura de um HIDS . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura de uma rede com NIDS . . . . . . . . . . . . . . . . . . . . . Funo Booleana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grco Booleano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funo Fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Representao grca de um conjunto fuzzy . . . . . . . . . . . . . . . Diagrama de Hassi-Euler do conjunto fuzzy B no universo real [-5,5] . . Funes de Pertinncia . . . . . . . . . . . . . . . . . . . . . . . . . . . Grco representativo das funes de pertinncia . . . . . . . . . . . . Funo de pertinncia da negao . . . . . . . . . . . . . . . . . . . . . Representao da funo de pertinncia de negao de S . . . . . . . Funo de pertinncia da unio . . . . . . . . . . . . . . . . . . . . . . . Representao da funo de pertinncia de unio ente L e T . . . . . . 15 16 16 17 18 18 18 19 19 21 22 29 29 30 30 30 31 31 31 32 32 32

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

Funo de pertinncia da interceo . . . . . . . . . . . . . . . . . . . . Representao da funo de pertinncia de interseo entre S e T . . . Denio da varivel lingstica temperatura . . . . . . . . . . . . . . . Modelo de Mandani . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Arquitetura do SIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplo de Base de Conhecimento . . . . . . . . . . . . . . . . . . . . Exemplo de Funes de Inferncia . . . . . . . . . . . . . . . . . . . . . Grco do SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grco do UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Grco do SHELL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funes BAIXO, MDIO e ALTO . . . . . . . . . . . . . . . . . . . . . . Regras fuzzy para o exemplo . . . . . . . . . . . . . . . . . . . . . . . . Bibliotecas do Snort para o SIDI . . . . . . . . . . . . . . . . . . . . . . Biblioteca principal do SIDI . . . . . . . . . . . . . . . . . . . . . . . . . Bibliotecas de SPP em plugbase . . . . . . . . . . . . . . . . . . . . . . Chamadas de SPP em plugbase . . . . . . . . . . . . . . . . . . . . . . Primeira modicao do Makele . . . . . . . . . . . . . . . . . . . . . . Segunda modicao do Makele . . . . . . . . . . . . . . . . . . . . . Makele SIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Base de Conhecimento para Testes . . . . . . . . . . . . . . . . . . . . Funes de Pertinncia para Testes . . . . . . . . . . . . . . . . . . . . Regras Fuzzy para Testes . . . . . . . . . . . . . . . . . . . . . . . . . . Resultado de Requisio Normal . . . . . . . . . . . . . . . . . . . . . . Resultado de Ataque com SELECT . . . . . . . . . . . . . . . . . . . .

33 33 34 35 37 39 40 41 42 42 42 42 45 46 46 47 47 47 48 50 51 52 53 54 55 56

Resultado de Ataque com Execuo de Comandos . . . . . . . . . . . . Resultado de Ataque com tentativa de Evaso 1 (Detectado) . . . . . .

49 50 51

Resultado de Ataque com tentativa de Evaso 2 (No Detectado) . . . Base de Conhecimento modicada para detectar Evaso 2 . . . . . . . Resultado de Ataque com tentativa de Evaso 2 (Detectado) . . . . . .

56 57 57

SUMRIO

RESUMO 1 Introduo 2 Ataques na Web 2.1 Vulnerabilidades na Web . . . . . . . . . . . . . . . . . . . . . . . . . . 12 14 14 14 15 17 19 20 20 20 21 23 24 24 26 26 27 27

2.1.1 Cross-Site-Script . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 File Include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 SQL Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Tcnicas de Evaso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Sistemas de Deteco de Intruso 3.1 Tipos de IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1 IDSs Baseado em Servidor . . . . . . . . . . . . . . . . . . . . . 3.1.2 IDSs Baseado em Rede . . . . . . . . . . . . . . . . . . . . . . . 3.1.3 IDSs Baseado em Kernel . . . . . . . . . . . . . . . . . . . . . . 3.2 Exemplo de IDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Snort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Sistema Especialista 4.1 Arquitetura de um SE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Base de Conhecimento . . . . . . . . . . . . . . . . . . . . . . . 4.1.2 Motor de Inferncia . . . . . . . . . . . . . . . . . . . . . . . . .

5 Lgica Fuzzy 5.1 Teoria de Conjuntos Fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Operaes Fuzzy Bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Complemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.2 Unio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.3 Interceo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Representao Fuzzy do Conhecimento . . . . . . . . . . . . . . . . . . 5.3.1 Variveis Lingsticas . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Regras de Produo Fuzzy . . . . . . . . . . . . . . . . . . . . . 5.4 Modelos de Inferncia Fuzzy . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Modelo de Mandani . . . . . . . . . . . . . . . . . . . . . . . . . 6 Sistema Inteligente de Deteco Intruso 6.1 Motivao e Justicativas . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Arquitetura do SIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Mdulo Especialista . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.2 Mdulo Fuzzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Construo de um Pr-Processador . . . . . . . . . . . . . . . . . . . . 6.4 Testes e Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Trabalhos Futuros 8 Concluso REFERNCIAS

29 30 30 31 31 32 33 34 34 35 35 36 36 37 37 39 45 49 58 59 61

RESUMO
Com a expanso da Internet, diversas empresas tm migrado suas aplicaes de ambiente Desktop para Web. Com essas mudanas, a informao, o bem mais precioso de uma empresa, ca exposta e mais sujeita a violaes. Este tipo de incidente geralmente causado por ex-funcionrios, funcionrios insatisfeitos ou mesmo por espionagem industrial. De outro lado, especialistas em segurana vm criando mecanismos e regras para diminuir esses ataques ou simplesmente detect-los para, posteriormente, analisar e fazer previses seguindo suas tendncias evolutivas. Porm, com o crescimento da Internet e, conseqentemente, a facilidade de acesso informao, o nvel de planejamento de ataques vem aumentando gradativamente, o que diculta o trabalho dos analistas de segurana. Este trabalho visa a construo de um sistema inteligente hbrido que, atravs da utilizao de lgica fuzzy e sistemas especialistas, objetivar diminuir as ocorrncias de falsos-positivos e falsos-negativos comumente encontrados em Sistemas de Deteco de Intruso baseado em regras. Palavras-chave: Inteligncia Articial, Lgica Fuzzy, Sistema de Deteco de Intruso, Sistema Especialista.

12

Introduo

Diariamente so constatadas diversas novas vulnerabilidades em portais e aplicaes Web, o que conrma a necessidade de uma camada especca para segurana. Porm, existem diversas tcnicas de se evadir um ataque, para que o mesmo passe despercebido por esta segurana, tornando a utilizao de Sistemas de Deteco de Intruso (IDS1 ) baseado em regras inecazes. A grande maioria dos IDSs so baseados em regras. Uma regra consiste em uma assinatura seguida de algumas caractersticas como portas e endereos de origem e de destino. As assinaturas normalmente so utilizadas para fazer comparaes, ou seja, se uma determinada informao coincidir com o que est estipulado na regra, ser gerado um alerta ou alguma outra ao especicada pela mesma. O problema est no fato de ataques planejados utilizarem tcnicas de evaso, que podem ser trabalhadas pelo atacante ou mesmo gerada pela aplicao. Um exemplo de uma tcnica de evaso no criada pelo atacante est no ataque a aplicaes WEB que trafegam sob HTTPS (HyperText Transference Protocol Secure), que trabalha com criptograa de dados entre as pontas. Neste caso, uma soluo seria o sistema de deteco estar junto da aplicao, j que em qualquer outro ponto intermedirio da comunicao impediria a anlise da informao por estar criptografada. Outra alternativa seria o compartilhamento das chaves de criptograa, de maneira que o IDS possa descriptografar e analisar o trafego. Dentre os vrios IDSs disponveis nos mercado, foi escolhido o Snort2 para a implementao deste projeto. O Snort um sistema livre e de cdigo aberto bastante famoso e mais utilizado [1]; sua arquitetura modular permite que se adicione funcionalidades de maneira a expandir seus mtodos de deteco. Durante as sesses seqentes, sero descritas diversas tcnicas de ataques utili1 Do 2 Sistema

ingls Intrusion Detection System de Deteco de Intruso mantido pela Sourcere

13

zadas atualmente na Internet, alm do funcionamento e das categorias de IDSs. Com relao as tcnicas de ataques utilizados, o prottipo implementado visa apenas detectar ataques de SQL Injection, o que no o limita a esse tipo somente, visto que para as demais tcnicas bastaria modelar a base de conhecimento e as regras fuzzy de acordo com as necessidades. Ser explicado como funcionam as tcnicas de evaso e como, atravs delas, possvel burlar IDSs baseados em regras. Existe uma sesso exclusiva para explicar como trabalhar com a lgica Fuzzy e ser descrito o modelo de Mandani (selecionado para este trabalho). Outra sesso descreve como funcionam os Sistemas Especialista e como esta classe de ferramenta pode auxiliar na identicao de padres de ataques. Com toda a base terica formada, as ultimas sesses descrevem o prottipo de um Sistema Inteligente de Deteco de Intruso, ou seja, uma ferramenta que auxilie na tomada de deciso frente a um ataque real. O trabalho consiste em estudar contedos de Inteligncia Articial como Lgica Fuzzy e Sistemas Especialista, a m de criar um prottipo de um sistema hbrido que auxilie na deteco de intruses. Esse prottipo foi construdo como um prprocessador para o Snort, pela sua arquitetura de fcil expanso. Com essa implementao, foi possvel realizar alguns testes e concluir situaes em que o mdulo trabalharia melhor que o motor de regras padro do Snort ou qualquer IDS baseado em regras.

14

Ataques na Web

Nesta sesso sero descritas algumas das principais ameaas de ataques ocorridos na web. Ela tem por objetivo determinar o motivo pelo qual foi escolhido a classe de vulnerabilidade de SQL Injection para nosso objetivo, e quais so as outras ameaas s quais a ferramenta poderia ser adaptada. Por nal, sera descrito em que consistem as tcnicas de evaso e como elas auxiliam os atacantes a burlar a segurana de IDSs baseados em regras.

2.1 Vulnerabilidades na Web


Todas as falhas descritas nesta sesso se caracterizam pela m ltragem das informaes fornecidas pelo usurio. Estas informaes podem vir de quaisquer dados manipulveis pelo usurio como cookies, campos de formulrios, variveis da URL, entre outras. Por no passarem por um ltro de caracteres especiais, os dados enviados durante um ataque so interpretados de maneira errnea pela aplicao, alterando a lgica e induzindo na gerao de condies no previstas pelas regras de negcio da corporao.

2.1.1

Cross-Site-Script

A vulnerabilidade de Cross-Site-Script (XSS1 ) se classica como uma falha de ataque em clientes, ou seja, tem como alvo os navegadores web, ou seja, independete de Sistema Operacional e sem comprometer o servidor em questo. A explorao de XSS ocorre quando um atacante insere cdigos (geralmente javascript) de maneira a execut-los (no caso da vtima). O cdigo pode ser planejado
1A

abreviao no CSS pois esta utilizada para denir a linguagem de estilizao de pginas

15

de modo a alterar informaes na pgina visitada pela vtima, redirecionar a pgina para outro endereo falso ou fazer o chamado sequestro de sesso2 , fornecendo ao atacante as informaes que indicam que a vtima est autenticada e, se as mesmas forem copiadas e no houver nenhum outro mecanismo de segurana, possvel obter os privilgios da vtima no sistema em questo.

Figura 1: Exemplo de cdigo vulnervel a XSS Como na Figura 1 no existe nenhum ltro de caracteres especiais antes de enviar o valor da varivel nome de volta ao navegador, um atacante poderia forjar uma URL que contenha algum cdigo javascript malco. Poderia ser passado na varivel nome algo como <script>alert(document.cookie)</script>. Dessa maneira, ao acessar o endereo, a vtima visualizaria seu cookie em uma mensagem do navegador. Um ataque planejado consiste em, usando alguns artifcios de programao para Internet, capturar o valor dessa varivel (document.cookie) e envi-la ao atacante. Em posse desta, o atacante simula uma requisio ao servidor passando esta varivel, de maneira execut-la com os privilgios da vtima.

2.1.2

File Include

A classe de vulnerabilidades, denominada File Include3 , se caracteriza por, na maioria dos casos, comprometer o servidor que hospeda a aplicao. Desta maneira, o atacante pode interferir facilmente em todas as vertentes da segurana da informao4 . Encontrada em diversas linguagens de programao, a vulnerabilidade de File Include consiste em utilizar de caractersticas de diviso de cdigo em diversos arquivos (como modularizao) onde, atravs da manipulao de variveis que auxiliam na escolha do mdulo a ser adicionado no cdigo, um atacante modica o resultado dessa gerao, fazendo com que a aplicao execute um cdigo malco arbitrrio.
2 Session 3 Do

Hijacking em ingls ingls incluso de arquivo 4 Essas vertentes so disponibilidade, integridade e condencialidade

16

Figura 2: Exemplo de cdigo vulnervel Como pde ser analisado no cdigo PHP da Figura 2, a varivel pagina, passada como parmetro pelo mtodo HTTP-GET, pode ser facilmente manipulada por um atacante diretamente pela URL. De acordo com a documentao5 , a funo include() pode buscar o arquivo solicitado de uma mquina remota e, se o arquivo remoto possuir algum cdigo PHP, o mesmo ser executado no servidor local. Como a varivel no passa por ltros, um atacante poderia induzir o programa a buscar um cdigo malco em um servidor, de maneira a fazer esse cdigo ser executado no servidor local. Um cdigo malco que poderia ser utilizado em um ataque pode ser visto na Figura 3.

Figura 3: Exemplo de cdigo malco utilizado em ataques Com isto, um atacante poderia invadir o servidor vulnervel simplesmente acessando o arquivo /index.php?pagina=http://www.hack.com/b4d_c0de.txt?&cmd=id. Desta maneira, o cdigo no servidor ir incluir o cdigo malco em seu ambiente e executlo. Nota-se que na URL existe tambm uma varivel cmd que no existe para o programa do servidor, porm interpretada pelo cdigo injetado pelo atacante que, atravs da funo passthru(), executa um parmetro passado como comando interno do servidor, e retorna o resultado para o navegador web.
5 http://br2.php.net/include/

17

2.1.3

SQL Injection

O ataque de SQL Injection consiste em injetar cdigo de SQL (Structure Query Language) em informaes que podem ser manipuladas pelo usurio. Estas informaes podem ser campos de formulrios, variveis de URL ou at mesmo valores de controle de sesso dos navegadores. O objetivo alterar a lgica do comando SQL para executar comandos arbitrrios. Tem-se visto diversas empresas[2] e orgo do governo[3] sendo vtimas dessa vulnerabilidade. Um exemplo de cdigo vulnervel a SQL Injection est em uma no ltragem dos parmetros passados no formulrio HTML para um cdigo da linguagem de programao PHP .

Figura 4: Exemplo de cdigo vulnervel a ataques de SQL Injection Observa-se na Figura 4 que as variveis usuario e senha so passadas para o comando SQL com nenhuma ltragem de caracteres especias. Assim, um atacante poderia burlar facilmente esse mtodo de validao simplesmente injetando cdigo SQL no formulrio de autenticao (onde o campo Senha possui o mesmo valor do campo Usurio) como visto na Figura 5. Como visto na Figura 5, a lgica do comando SQL foi alterada, fazendo com que ele retorne os registros cujo usurio esteja vazio ou vazio seja igual a vazio, e cujo campo senha esteja vazia ou vazio seja igual a vazio. O comando SQL nal retornar

18

Figura 5: Ataque de SQL Injection (formulrio) todos os registros da tabela de usurios. O ataque tambm pode ser efetuado acessando diretamente a URL do cdigo vulnervel preenchendo os parmetros necessrios como na Figura 6. Isto ocorre porque os parmetros so passados e vericados atravs do mtodo HTTP-GET, onde as variveis e seus valores cam acessveis pela URL.

Figura 6: Ataque de SQL Injection (url) Ao acessar este endereo da Figura 6, o navegador envia basicamente a requisio HTTP indicada na Figura 7 para o servidor, onde os parmetros so codicados convertendo seus caracteres especiais em seus respectivos valores ASCII em hexadecimal precedido de um sinal de percentil (%). O cabealho HTTP termina com duas quebras de linha.

Figura 7: Mtodo HTTP-GET Porm, por conveno, no recomendado passar informaes sigilosas como senhas pelo mtodo GET, visto que a mesma seria facilmente visualizada na URL por outros usurios. Para evitar isto, pode-se utilizar o mtodo HTTP POST, que envia as informaes no nal do cabealho HTTP e no na URL. Para isto, ser necessrio modicar o formulrio inicial, alterando a propriedade method do formulrio de get para post, e modicar a forma com que as variveis so obtidas no cdigo PHP, trocando $_GET por $_POST. Com isto, ao submeter o formulrio, o cabealho enviado ser semelhante ao apresentado na Figura 8. Neste caso, o mtodo HTTP enviado foi o POST seguido do caminho no servidor do arquivo que processar a requisio e no nal do cabealho so enviados os dados fornecidos pelo usurio.

19

Figura 8: Mtodo HTTP-POST

2.2 Tcnicas de Evaso


Como visto anteriormente, existem diversas classes de vulnerabilidades em ambientes Web. Para essas vulnerabilidades, existe uma vasta base de assinaturas (regras) para IDSs que dicultam seu sucesso em ataques padronizados ou por ferramentas automatizadas. Porm, em ataques planejados e bem denidos utilizam-se tcnicas de evaso, onde o atacante modica-o de maneira que no se coincida com nenhuma das regras previstas. De acordo com [4], isto pode ser feito com a manipulao de espaos, inserindo comentrio (sintaxe C), encoding (hexadecimal, base64, decimal, etc), aplicando-se variaes das tcnicas, entre outros. Uma comparao entre os modos de ataques de SQL Injection comum e a utilizao de tcnicas evasivas pode ser visto na Figura 9.

Figura 9: Exemplos de tipos de tcnicas de evaso Quando o atacante obtm sucesso, ocorre o chamado falso-negativo, pois o IDS marca a entrada como negativa (no consiste em um ataque) quando, na verdade, consistia em um ataque. Por outro lado, tem-se o chamado falso-positivo, que ocorre quando o IDS marca uma entrada como tentativa de ataque, quando na verdade no .

20

Sistemas de Deteco de Intruso

Dene-se IDS de acordo com o [5] como o processo de monitoramento de eventos e anlise dos sinais/anomalias, de intruses que ocorrem em um ambiente computacional, cuja funo detectar estas atividades maliciosas ou anmalas e alertar ao administrador do sistema que estes eventos esto ocorrendo. Estas anomalias/intruses so os resultados de ataques provenientes de diversas fontes como acesso no autorizado, acesso a arquivos no permitido e, ainda, os diversos softwares malcos comumente encontrados como: vrus, cavalos de tria e vermes1 .

3.1 Tipos de IDS


Apresentam-se nas prximas subsees os principais tipos de IDS: Sistemas de Deteco de Intruso Baseados em Servidor Sistemas de Deteco de Intruso Baseados em Rede IDS Passivo IDS Ativo Sistemas de Deteco de Intruso Baseados em Kernel 2

3.1.1

IDSs Baseado em Servidor

Os Sistemas de Deteco de Intruso Baseados em Servidor (HIDS3 ) tm como objetivo principal alertar e identicar ataques e tentativas de acesso indevido pringls worms termo tcnico Kernel representa o ncleo de um Sistema Operacional 3 Do ingls Host Intrusion Detection System
2O 1 Do

21

pria mquina, sendo geralmente empregados quando a segurana est focada nas informaes contidas no servidor e os usurios no precisam ser monitorados.

Figura 10: Arquitetura de um HIDS Os HIDS podem monitorar diversas variveis no ambiente do servidor como, por exemplo, alteraes de registros, adio de usurios, instalao e ocultao de rootkits4 , acesso a arquivos e vericao de integridade como binrios falsos includos no sistema por usurios mal intencionados. Na Figura 10 pode-se notar uma rede sem nenhum mecanismo extra de segurano exeto um rewall. No h necessidade de outro equipamento para que o ambiente tenha um HIDS em funcionamento, o mesmo pode ser instalado no prprio servidor. O funcionamento do HIDS consiste em um modo de monitoramento para que ele possa avaliar diversas variveis do ambiente e, assim, gerar um padro de funcionamento normal do servidor. Se, de alguma forma, o servidor gerar uma situao diferente do previsto em seu funcionamento normal, o HIDS identicar como uma ameaa. Um exemplo seria um trafego de rede excessivo fora do horrio de funcionamento da empresa. Como no um funcionamento normal do sistema como um todo, o HIDS ir alerta e contatar o responsvel (se assim estipulado).

3.1.2

IDSs Baseado em Rede

Os Sistemas de Deteco de Intruso Baseados em Rede (NIDS5 ) utilizam-se de um modo especial de funcionamento da interface de rede denominado de modo
rootkit uma classe de software que busca se esconder do sistema de segurana e do usurio utilizando diversas tcnicas avanadas de programao 5 Do ingls Network Intrusion Detection System
4 Um

22

promscuo, onde a interface passa a capturar o trfego em tempo real e com isso permite analisar os pacotes que esto trafegando no segmento de rede em questo. Ao ser detectada alguma anomalia, o NIDS envia alertas para o administrador do sistema ou para o especialista em segurana. O diferencial entre estes dois primeiros tipos de IDS que o HIDS possui um problema quanto aos registros, pois, como ele est instalado no prprio servidor o atacante ao conseguir acesso poder apagar, ou ainda pior, modicar as evidncias de sua entrada no sistema podendo fazer do alvo um zumbi para uma prxima ao criminosa.

Figura 11: Arquitetura de uma rede com NIDS Um NIDS pode detectar desde um nmero excessivo de mensagem, ataques de negao de servio (DoS6 ) e ataques que usam pacotes fragmentados. A Figura 11 demonstra a necessidade de outro equipamento(no caso uma mquina dedicada) para a instalao do NIDS, este encontra-se em modo promscuo escutando o trfego da rede e fazendo anlise dos pacotes capturados. A forma com que estes IDSs trabalham podem variar, porm geralmente so encontrados em duas categorias: IDS Baseados em Assinatura: detectam ataques conhecidos que esto em sua base de assinaturas; IDS Baseados em Anomalias: registram a atividade normal da rede em um momento chamado de aprendizagem e, em seguida, alertam quando ocorre um desvio no trfego da rede do que considerado como atividade normal. Os Sistemas de Deteco de Intruso Baseados em Rede podem ser divididos em duas categorias diferentes: NIDS Ativo e NIDS Passivo.
6 Do

ingls Denial of Service

23

NIDS Ativo NIDSs Ativos so aqueles que, ao detectarem anomalias ou ataques a um determinado segmento de rede, tomam aes como nalizar a conexo e/ou trabalhar em conjunto com o rewall 7 para bloquear o trfego proveniente de uma fonte suspeita. NIDSs Ativos tm por caracterstica sua localizao lgica na rede, cando entre o acesso externo e o servidor interno. Sua principal vantagem est no fato de todos os pacotes que chegarem rede precisarem passar pela anlise e, por outro lado, sua principal desvantagem est no problema do gargalo gerado na rede, perdendo em desempenho.

NIDS Passivo NIDSs Passivos so aqueles que, ao detectarem uma possvel violao da segurana, registram o feito em logs8 e enviam alertas para o administrador do sistema ou o responsvel pela segurana da rede. NIDSs Passivos cam localizados em paralelo ao trfego da rede, evitando perda de desempenho. Por outro lado, existe a possibilidade de ataques em massa terem sucesso, visto que os NIDSs Passivos no conseguiriam analisar todos os pacotes enviados ao servidor interno.

3.1.3

IDSs Baseado em Kernel

IDSs baseados em Kernel(KIDS9 ) so relativamente novos, onde aos mesmos cabe a prevenir buffer overows10 , abuso de funes com permisses administrativas, alm de aumentar a proteo no sistema de arquivos, melhorar o modelo de controle de acesso, dentre outros. O funcionamento dos KIDS consistem em aplicar ganchos11 nas chamadas dos sistemas e nas interrupes, de maneira a monitorar todo o funcionamento do Sistema Operacional. Se alguma aplicao tentar tirar proveito do sistema ou enviar alguma requisio mal-intencionada para o Sistema Operacional, o KIDS detectar a tentativa de ataque e tomar as atitudes necessrias.
de gerenciamento de rede atravs polticas de seguran comumente utilizado para representar registros 9 Do ingls Kernel Intrusion Detection System 10 Classe de vulnerabilidade provinda do mal gerenciamento de memoria de aplicativos 11 O termo tcnico comumente utilizado hook
8 Termo 7 Ferramenta

24

3.2 Exemplo de IDS


3.2.1 Snort

Snort um sistema de NIDS de cdigo-aberto, multiplataforma e multi-arquitetura. Desenvolvido, a princpio, por Martin Roesch e agora sendo mantido pela comunidade, trabalha em rede e pode ser executado em modo passivo ou ativo. Capaz de realizar anlise de trfego em tempo real e registro de pacotes em redes IP, o Snort executa anlise de protocolos, busca e associa padres de contedo e pode ser usado para detectar inmeros ataques como, por exemplo, buffer overows12 . O Snort pode ser obtido gratuitamente em [6] e possui uma vasta documentao no idioma portugus em [7]. O Snort pode ser usado como um sniffer 13 de pacotes, assim como Wireshark14 ou tcpdump15 , por exemplo, como um registrador de pacotes, onde o Snort passa a registrar os pacotes capturados guardando os registros em disco, ou como um NIDS. Espelhamento de portas compreende em uma interface do switch16 que recebe todo o trfego da rede em forma de espelho, ou seja, mesmo que determinados pacotes no sejam para aquela mquina em questo. Esta funo s recomendvel para anlise dos pacotes que esto trafegando pela rede, pois o equipamento que receber o trfego espelhado dever ter uma alta taxa de transferncia. A principal caracterstica do Snort a inspeo do contedo do pacote na camada 7 do modelo OSI17 (ou camada de aplicao na arquitetura TCP/IP18 ), onde para a realizao da deteco de anomalias a mensagem decodica e, atravs das regras, pode-se detectar uma tentativa de ataque. A sada decodicada do Snort compreensvel aos usurios, porm determinadas informaes como portas e nomes de hosts no esto inclusas nestas informaes, para o no comprometimento do processamento realizado pelo motor do Snort. A arquitetura padro do Snort baseia-se em uma arquitetura modular, por plugins, e de quatro componentes bsicos:
12 Classe 13 Classe

de vulnerabilidade que ocorre pela m implementao de controle de alocao de memria de ferramenta responsvel por analisar os pacotes que trafegam pela rede 14 Exemplo de sniffer 15 Exemplo de sniffer 16 Hardware responsvel pela comutao de pacotes na rede 17 Do ingls OpenSource Interconection 18 Padro da Internet

25

Sniffer Pr-processador Motor de Deteco Sada O sniffer o farejador de pacotes, ou seja, captura os pacotes da rede por intermdio de uma interface de rede em modo promscuo. Os pr-processadores so responsveis por determinadas tarefas onde a arquitetura de regras atual no consiga manipular, como por exemplo scanning de portas. O Motor de Deteco responsvel pela vericao dos pacotes junto s regras. Caso a resposta seja armativa, enviado um alerta para a sada do IDS, e esta sada pode ir para um arquivo de log ou para um Banco de Dados.

26

Sistema Especialista

Os Sistemas Especialistas(SE) consistem em uma subclasse dos chamados Sistemas Baseados em Conhecimento (SBC), com o objetivo de solucionar problemas de um domnio especco. Seu funcionamento bsico consiste na emulao do raciocnio de um especialista onde, atravs de uma seqncia de condies, pode-se obter uma concluso para um dado problema. Uma das reas que mais demonstra interesse pela implantao de Sistemas Especialistas a rea mdica, haja vista que em uma consulta mdica, atravs de um conjunto de perguntas feitas pelo mdico, possvel obter um pr-diagnstico do paciente. Com isto, o SE seria o responsvel por transmitir as perguntas e, a partir das respostas dadas pelo paciente, determinar um conjunto de possveis diagnsticos. Um exemplo de Sistema Especialista para diagnstico mdico pode ser visto em [8]. Sempre que um problema no puder ser modelado em forma de algoritmo ou, se possvel, for invivel por ter uma grande quantidade de regras especcas, os SEs podem ser utilizados como mecanismo de soluo pois, alm de trabalharem com uma base de conhecimento, possuem seu mecanismo baseado em processos heursticos.

4.1 Arquitetura de um SE
Segundo [9], os SEs so responsveis por, atravs de um conjunto de dados de entrada, determinar um possvel conjuntos de solues. Desta maneira, necessita-se de transformar o conhecimento tcito de um especialista em um conhecimento explcito. O conhecimento tcito aquele que se forma pela experincia pessoal, de maneira que no consiga ser estruturada facilmente pela linguagem, enquanto o conhecimento explcito facilmente representado, em forma de imagem ou texto, de forma que se seja possvel armazen-lo e ret-lo. Desta forma, para uma boa modelagem de um SE, necessrio representar o conhecimento de um especialista de

27

tal forma que uma mquina possa armazen-lo. Com isto, a arquitetura de um SE geralmente dividida em uma parte especca para armazenar o conhecimento e um motor de inferncia que responsvel pela busca e avaliao dessas informaes.

4.1.1

Base de Conhecimento

A Base de Conhecimento de um SE tem por objetivo armazenar a informao do especialista de maneira explcita. Este processo geralmente feito pelo especialista em conjunto com o chamado Engenheiro de Conhecimento que tem como nalidade analisar e representar o conhecimento. A Base de Conhecimento consiste no elemento dinmico de um SE, ou seja, ele pode ser variado de acordo com sua utilizao de maneira que, quanto maior a Base de Conhecimento, melhor sero os resultados propostos pelo sistema. O preenchimento da base de conhecimento pode ser feito tanto manualmente pelo engenheiro de conhecimento quanto automaticamente atravs de um mdulo de aprendizagem que, atravs das decises tomadas, se algumas delas no forem compatveis com o real, ser informado um parmetro de diferenciao fazendo com que, na ocorrncia do mesmo caso, o SE retorne um resultado mais satisfatrio. Geralmente, uma base de conhecimento formada por um conjunto de regras que, de acordo com suas execues, preenche diversos parmetros que inuenciam na tomada de deciso do SE.

4.1.2

Motor de Inferncia

O Motor de Inferncia (ou Mecanismo de Inferncia) consiste em um elemento permanente do sistema, ou seja, no precisa ser modicado constantemente e, alm disto, pode ser reutilizado em outros SEs. Este elemento da arquitetura dos SEs responsvel pela leitura dos conjuntos de entradas, anlise das entradas com a Base de Conhecimento e do fornecimento da concluso. Basicamente, o Motor de Inferncia dividido em tarefas simples que so: selecionar, buscar e avaliar. Um exemplo de inferncia seria para determinar o grau de parentesco entre duas pessoas. Seja uma Base de Conhecimento com a seguinte informao: SE (me(pessoa1) = me(pessoa2) E pai(pessoa1) = pai(pessoa2)) ENTO irmos(pessoa1,
pessoa2)

28

Supondo que o sistema tenha como entrada o seguinte: O pai de Pedro Joo
A me de Pedro Maria O pai de Carlos Joo A me de Carlos Maria

Como se tem o conhecimento da regra de parentes dada, as informaes fornecidas pelo sistema inferem diretamente com a regra, logo pode-se concluir que Pedro e Carlos so irmos.

29

Lgica Fuzzy

A computao convencional baseia-se em operaes lgicas, comumente lgica booleana, onde atribuem-se os estados verdadeiros ou falsos para as condies existentes. A lgica /emphfuzzy (tambm pode ser nebulosa ou difusa) usada para tratar estados parciais de verdade, onde o complemento desta um estado parcial de falsidade. De acordo com [10], a teoria clssica de conjuntos tolera o tratamento de classes de objetos e suas relaes internas em um universo delimitado. Este universo de discurso pode ser discreto ou contnuo, dependendo da natureza dos objetos que o constituem. Por exemplo, pode-se denir um universo U discreto que armazena nmeros entre -5 e 5 do conjunto Z e assim denir um conjunto A:1,2,3,4,5, onde sua funo caracterstica denida por XA : U {0, 1} onde cada elemento de U recebe um valor binrio para determinar o conjunto A. Esta funo representada na Figura 12 e seu grco na Figura 13. XA (x) = 0 se 1 se xA xA Figura 12: Funo Booleana

Figura 13: Grco Booleano J em conjuntos /emphfuzzy podemos ter um conjunto B = A, mas sua funo caracterstica denida por B : U [0, 1] onde cada elemento de U recebe um valor

30

no intervalo fechado [0,1]. Esta funo est representada na Figura 14 e seu grco na Figura 15.

B (x) =

0
x 5

se X 0 se 0 < x 5 Figura 14: Funo Fuzzy

Figura 15: Representao grca de um conjunto fuzzy

5.1 Teoria de Conjuntos Fuzzy


O conjunto B pertence a um universo discreto U e sua funo caracterstica chamada tambm de funo de pertinncia. O suporte de B um subconjunto de U que possui B maior do que zero. Para representar um conjunto contnuo usa-se um grco de pertinncia, chamado de diagrama de Hassi-Euler (H-E). Veja a Figura ??.

Figura 16: Diagrama de Hassi-Euler do conjunto fuzzy B no universo real [-5,5]

5.2 Operaes Fuzzy Bsicas


Na lgica /emphfuzzy se trabalha com variveis, que armazenam valores representantes de uma verdade ou uma falsidade, total ou parcial, de uma armao. Por isso se dado mais de uma armao em determinado contexto, se faz necessrio descobrir a real situao, para isso existem as operaes bsicas /emphfuzzy, assim

31

como existem as operaes booleanas, que so complemento, unio e interseo, e que sero explanadas nos prximos tpicos. Para melhor entender as operaes considere trs conjuntos /emphfuzzy chamados slido, transio e lquido, que sero representados respectivamente por (S , T e L ), cujas funes de pertinncia so denidas na Figura 17, e na Figura 18 est a representao em forma de grco. se x 2 1 x se 2 < x < 0 S : U = 2 0 se x 0

T : U =

2|x| 2

se 0 se

|x| 2 |x| > 2

L : U =

1
x 2

se x 2 se 0 < x < 2 0 se x 0

Figura 17: Funes de Pertinncia

Figura 18: Grco representativo das funes de pertinncia

5.2.1

Complemento

Pode-se denotar por A, a operao de complemento de um conjunto /emphfuzzy A do universo de discurso U, denida com uma funo de pertinncia na Figura 19, como no grco da Figura 20.

A (xi ) = 1 A (xi )
Figura 19: Funo de pertinncia da negao

5.2.2

Unio

A representao pode ser A U B ou A + B e sua funo de pertinncia pode ser vista na Figura 21.

32

Figura 20: Representao da funo de pertinncia de negao de S

AB (xi ) = max[A (xi ), B (xi )]


Figura 21: Funo de pertinncia da unio Esta uma denio particular da operao de unio proposta por [11] na dcada de 60. Na verdade, uma forma mais geral de denir a operao de unio entre conjuntos /emphfuzzy por meio das normas S, ou seja, de uma famlia de funes com as seguintes propriedades: Comutatividade: S(a,b) = S(b,a); Associatividade: S(a,S(b,c)) = S(S(a,b),c); Monotonicidade: se a <= b e c <= d, ento S(a,c) <= S(b,d); Coerncia nos contornos: S(a,1) = 1 e S(a,0) = a Veja um exemplo na Figura 22, onde se mostra o conjunto da unio ente LT , veja que o grco foi formado em cada ponto do eixo das abscissas pelo maior valor entre

L e T no eixo das ordenadas.

Figura 22: Representao da funo de pertinncia de unio ente L e T

5.2.3

Interceo

A representao pode ser A B ou A.B e sua funo de pertinncia pode ser vista na Figura 23.

33

AB (xi ) = min[A (xi ), B (xi )]


Figura 23: Funo de pertinncia da interceo Similarmente ao caso da unio, a operao de interseo entre conjuntos /emphfuzzy pode ser generalizada por meio de famlias especcas de funes, chamadas de normas T, com as seguintes propriedades: Comutatividade: T(a,b) = T(b,a); Associatividade: T(a,T(b,c)) = T(T(a,b),c); Monotonicidade: se a <= b e c <= d, ento T(a,c) <= T(b,d); Coerncia nos contornos: S(a,1) = a e S(a,0) = 0. Veja um exemplo na Figura 24, onde se mostra o conjunto da intercesso ente

ST , veja que o grco foi formado em cada ponto do eixo das abscissas pelo menor
valor entre S e T no eixo das ordenadas.

Figura 24: Representao da funo de pertinncia de interseo entre S e T

5.3 Representao Fuzzy do Conhecimento


Como nos processos de engenharia de software, a representao /emphfuzzy de um determinado problema feito de forma top-down, ou seja, primeiro faz-se um levantamento geral e supercial do que se deseja resolver, para depois determinar um algoritmo e modelos matemticos. Desta maneira, podemos classicar nossos problemas com valores qualitativos em vez dos quantitativos, sendo que esta maneira imprecisa de pensar nos leva ao conceito de variveis lingsticas. O processo de representao /emphFuzzy de conhecimento depende deste conceito.

34

5.3.1

Variveis Lingsticas

O conceito de variveis lingsticas est relacionado diretamente a um modelo em sua forma bruta, ou seja, ao natural da viso humana, e seus valores possveis so qualitativos, gerando assim uma impreciso. Uma forma muito usada a varivel lingstica temperatura onde podemos ter valores qualitativos como muito baixa, baixa, agradvel, alta e muito alta. Dene-se temperatura no universo de discurso determinado pelo intervalo [0,50] e seus valores qualitativos so subconjuntos dentro deste, e cada um dos nmeros reais neste intervalo tem um grau de pertinncia dentro de cada subconjunto, como mostra a Figura 25.

Figura 25: Denio da varivel lingstica temperatura Nota-se, por exemplo, que na temperatura igual a 20 no universo de discurso de temperatura, existe um grau de pertinncia para cada valor qualitativo, onde Muito Baixa = 0, Baixa = 0.5, Agradvel = 0.5, Alta = 0 e Muito Alta = 0.

5.3.2

Regras de Produo Fuzzy

Segundo [10], as regras de produo /emphfuzzy so formadas por duas partes, um antecedente e um conseqente, no seguinte formato: se <antecedente> ento <conseqente> Um exemplo de regra seguindo as variveis descritas anteriormente poderia ser: se (temperatura = muito alta) ento (beba_liquido muito)

35

5.4 Modelos de Inferncia Fuzzy


Os modelos de inferncia /emphfuzzy caracterizam-se sobre a semntica do mecanismo, modelando como ser a avaliao dos antecedentes e como se aplicar os conseqentes. Para se fazer isso so utilizados modelos de inferncia /emphfuzzy especcos, com propriedades sintticas denidas, ou seja, o modelo de processamento denido para o sistema de conhecimento vai depender basicamente da forma de armazenamento de informaes escolhidas.

5.4.1

Modelo de Mandani

De acordo com [10], o mtodo de inferncia de Mamdani tem como caracterstica possuir relaes /emphfuzzy nos antecedentes e tambm nos conseqentes. Normalmente o conjunto de dados so variveis quantitativas, para isso, o modelo de Msamdani utiliza duas interfaces, uma de entrada e outra de sada. Elas so responsveis pela comunicao do sistema, fazendo uma converso de quantitativo (varivel numrica) para qualitativo (varivel lingstica). Os processos de converso so chamados de fuzicao e defuzicao respectivamente para entrada e sada de dados. A Figura 26 exemplica um modelo de processamento /emphfuzzy de inferncia de Mamdani.

Figura 26: Modelo de Mandani

36

Sistema Inteligente de Deteco Intruso

Este captulo tem por objetivo apresenta a arquitetura detalhada do projeto, explanando como foi modelado e projeta os mdulos fuzzy e especialista, que modelo foi utilizado para representar a base de conhecimento, o conjunto de regras fuzzy e as funes de pertinncias. Ser explicando como funciona o processo de contruo de um pr-processador para o Snort, visto que foi necessrio um estudo a parte para este propsito. No nal ser descrito e explicados alguns testes realizados com o prottipo implementado e como com uma boa modelagem do conhecimento e das regras fuzzy ele propes resultados signicativamente bons.

6.1 Motivao e Justicativas


Vrias so as maneiras de evadir um ataque de maneira que os IDSs baseados em regras no os detectem. Visando ao aumento da segurana e diminuio dos falsospositivos e falsos-negativos, planejou-se a construo de um Sistema Inteligente de Deteco de Intruso (SIDI). Para vulnerabilidade, foi escolhido a deteco de ataques de SQL Injection, pois comparado com as demais falhas vistas, possui a maior proporo de ocorrncia por impacto na aplicao. As vulnerabilidades de XSS so encontradas vastamente pela Internet, porm sem um bom planejamento e utilizao de mecanismos avanados de ataque, ca praticamente invivel a explorao. As vulnerabilidades de File Include possuem um impacto extremamente forte em sua explorao, porm dicilmente se encontra esse tipo de falha, pois essa classe de vulnerabilidade j bastante difundida e existe mecanismos e conguraes adicionais para inibi-las. J as vulnerabilidades de SQL Injection possuem impacto signicante (no tanto quanto File Include) e tm um alto grau de

37

ocorrncia nas diversas aplicaes web (no tanto quanto XSS). Como ferramenta de apoio foi escolhido o NIDS Snort, por possuir cdigo-fonte aberto, suporte expanso atravs de pr-processadores e plugins, possuir mais de 3 milhes de downloads e mais de 100.000 usurios ativos(Referncia em [12]).

6.2 Arquitetura do SIDI


Para uma melhor manipulao das informaes, foi desenvolvida uma arquitetura hbrida para o SIDI utilizando um mdulo especialista para o reconhecimento de caractersticas de ataque e um mdulo fuzzy para a tomada de deciso. Uma breve explanao da arquitetura projetada pode ser vista na Figura 27.

Figura 27: Arquitetura do SIDI Uma explicao mais detalhada de cada mdulo da arquitetura proposta ser vista nas sesses subseqentes.

6.2.1

Mdulo Especialista

De uma maneira geral, inicialmente, o pacote de rede ser transmitido para o SIDI. Com isto, atravs de um mdulo especialista, ser feito o processo de taxonomia, ou seja, a transformao das informaes de entrada em variveis quantitativas. Cada uma dessas variveis representar um grau de ocorrncia de um determinado termo comumente utilizado em ataques tais como comentrios, palavras reservadas, diviso de comandos entre outros. Esta transformao feita pelo motor de inferncia do mdulo especialista que, atravs da base de conhecimento, reconhece tais padres.

38

Linguagem de Representao do Conhecimento Com o objetivo de organizar as informaes de maneira aberta e de fcil manipulao, foi planejado representar a base de conhecimento atravs de arquivos do tipo XML. Para isto, utilizou-se a biblioteca libxml 1 que est presente em quase todas as distribuies Linux. A representao XML permite que se construa outras ferramentas que auxiliem na organizao e manipulao de dados. A base de conhecimento inicializa com um n nico base_conhecimento. A partir dela, existem diversos ns lhos onde cada lho representa uma varivel de conhecimento especca. Cada n de varivel possui duas propriedades: nome e tipo. O nome representa o nome da varivel. O tipo representa se o objetivo da varivel a minimizao(MIN) ou a maximizao(MAX). Esta caracterstica foi implantada visando melhorar a performance do sistema, j que se uma varivel for do tipo maximizao e, no decorrer da anlise de um pacote, ela atingir o valor mximo, no ser mais necessrio vericar os demais casos. O mesmo vale para varivel do tipo minimizao. No exemplo da Figura 28, ao processar a varivel SELECT, se o caso com identicao 1 coincidir com o pacote, o peso de ocorrncia da varivel ir para o valor 5, o que inviabiliza a necessidade de vericar os demais casos, visto que 5 o valor mximo permitido para as variveis do mdulo especialista. Cada varivel possui um conjunto de lhos que representam os casos em que pode ocorrer a varivel seguido de um peso de ocorrncia. Cada um dos casos possui os atributos id, valor e expresso. O campo id representa um identicador nico de cada caso da varivel. Ele utilizado em conjunto com a anlise de registros de maneira a identicar o que levou o mdulo especialista a tomar determinada deciso. O atributo expresso contm uma expresso regular que ser a representao do padro de reconhecimento da varivel, a mesma utiliza o formato PCRE2 , amplamente utilizada e conhecida. O atributo valor representa qual valor deve ser associado respectiva varivel, caso o padro especicado no atributo expressao coincida com o valor passado para o mdulo especialista. A base de conhecimento vista na Figura 28 consiste em um exemplo simples com trs variveis. Entretanto, em um sistema de produo, so necessrias dezenas de variveis com diversos casos cada uma, de maneira a representar uma amplitude maior do conhecimento.
1 2 Do


ingls Perl Compatible Regular Expression

39

Figura 28: Exemplo de Base de Conhecimento No prottipo, o contedo da base de conhecimento foi preenchido manualmente, porm, como a mesma representada atravs de cdigo XML, e como existem diversas bibliotecas para trabalhar com esse tipo de estrutura, seria fcil construir uma ferramenta que fornecesse uma interface amigvel entre o usurio e a base de conhecimento.

6.2.2

Mdulo Fuzzy

O mdulo fuzzy o responsvel pela tomada de deciso, ou seja, ele o mdulo que sabe distinguir se as informaes retiradas de um determinado pacote, pelo mdulo Especialista, consistem em um ataque ou se era apenas um pacote inofensivo rede. A arquitetura deste mdulo baseada no modelo da Mquina de Inferncia de Mandani, mas tem somente uma alterao, no lugar de um defuzzicador (dados qualitativos para quantitativos) tem-se um Gerador de Registro (dados qualitativos para logs).

Processo de Fuzicao O fuzzicador tem por principal e nica nalidade transformar dados de variveis quantitativas para os correspondentes dados em forma qualitativa, dentro do conjunto de valores lingsticos com o grau de pertinncia de cada varivel de tipos iguais.

40

Para melhor entender, dena uma varivel quantitativa do tipo union, cujo valor 4.5. Quando essa chegar no fuzzicador, ele dever identic-la e relaciona-la com uma varivel qualitativa do mesmo tipo union; essa ter o seu conjunto de valores lingsticos, que ser baixo, medio, alto. Cada um desses valores lingsticos tem uma funo relacionada, que recebe como parmetro o valor quantitativo e retorna um grau de pertinncia do mesmo termo dentro da varivel. Como exemplicao, a funo e o retorno do grau de pertinncia para baixo(4.5)=0, medio(4.5)=0.1 e alto(4.5)=0.7. Para que o conjunto de variveis provindas do SE seja identicado e transformado em um novo conjunto, preciso uma base de informaes que determinem como esse processo deve ser executado, esta deve conter uma varivel qualitativa de tipo correspondente, seus valores lingsticos e as funes para cada um. Como padro do projeto, toda base de dados necessria deve estar contida em arquivos XML, como o visto na Figura 29.

Figura 29: Exemplo de Funes de Inferncia O arquivo XML denido na Figura 29 permite expressar qualquer funo de primeiro grau, podendo formar grcos triangular, trapezoidal e qualquer outro tipo de

41

grco quadriltero. No so permitidos grcos que sejam modelados com funes diferentes das de primeiro grau, entretanto, existem mdulos Fuzzy que trabalham com outros tipos de funes, mas no caso deste projeto, a inspirao veio do artigo [13] e do livro [10] que s utilizam funes do primeiro grau. Passadas pelo fuzzicador, agora as informaes so entregues a mquina de inferncia fuzzy. Esta, por sua vez, recebe as variveis qualitativas de entrada com seu conjunto de valores lingsticos e os respectivos graus de pertinncia. Aplicandoas na base de regras, sero gerados os graus de pertinncia para cada elemento do conjunto dos valores lingsticos da varivel de sada. Para se calcular a pertinncia, dada uma regra, aplicada uma funo MIN nos valores lingsticos usados pelo conjunto de variveis da prpria regra. Depois de gerada as pertinncias dos valores lingsticos da varivel de sada, aplicada a funo de MAX nelas, para com isso, descobrir qual valor lingstico possui uma maior pertinncia no conjunto de valores da varivel de sada. Em alguns casos, existem dois termos lingsticos que tm o mesmo grau de pertinncia e so os maiores, ento ser escolhido o termo lingstico mais relevante, para no perder informaes que tenham uma inuncia maior em questo da deteco de um ataque. Para melhor entendimento, veja a anlise de dois exemplos, a partir das entradas quantitativas vindas do Sistema Especialista at o nal do processo na mquina de inferncia. As funes so denidas pelo arquivo de base de funes do tipo XML.

Figura 30: Grco do SELECT Nas Figuras 30 e 31 (com suas funes na Figura 33) e as regras da Figura 34, temos duas situaes de exemplo. Apesar dos grcos da Figura 30 e Figura 31 terem as mesmas funes, isso no signica que um padro, pois cada valor lingstico de uma dada varivel tem sua funo determinada por quem a escreveu na base de funes. Um exemplo a Figura 32, em que a funo para o termo lingstico alto recebe um valor mesmo

42

Figura 31: Grco do UNION que a ocorrncia seja pequena, pois qualquer suspeita deste tipo de ataque muito relevante, pois a sua assinatura acontece com pouca freqncia. Outra questo que para todo X, fora do intervalo determinado, a funo retornar 0.

Figura 32: Grco do SHELL baixo medio alto


1 2x + 1

se 0 x 2 se 1 x 5 2 5 se 2 < x 4 3x5

2 2 3x 3 2 3x 3 2 3 1 2 x 2 se

Figura 33: Funes BAIXO, MDIO e ALTO

Figura 34: Regras fuzzy para o exemplo

43

Situao 1: Dados qualitativos: SELECT = 1,2 UNION = 2,5 Aplicam-se os dados qualitativos nas funes de pertinncia: SELECT: baixo(1,2) = 0,4 medio(1,2) = 0,2 (1,2) = 0 UNION: baixo(2,5) = 0 medio(2,5) = 1 alto (2,5) = 0 Aplicando os valores lingstico e os graus de pertinncia nas regras nenhum min (0.4,0) = 0 baixo min (0.4,1) = 0.4 medio min (0.4,0) = 0 baixo min (0.2,0) = 0 medio min (0.2,1) = 0.2 alto min (0.2,0) = 0 medio min (0,0) = 0 alto min (0,1) = 0 certeza min (0,0) = 0

44

Obs.: quando um termo for gerado seu grau de pertinncia mais de uma vez, escolhido o maior grau. Termo relevante da varivel de sada: MAX (nenhum, baixo, medio, alto, certeza) MAX (0,0.4,0,0,0.2,0,0,0,0) MAX = 0.4 Termo mais relevante baixo com grau de pertinncia 0.4. Situao 2: Dados qualitativos: SELECT = 5 UNION = 3,5 Aplicando os dados qualitativos nas funes de pertinncia: SELECT: baixo(5,0) = 0 medio(5,0) = 0 alto (5,0) = 1 UNION: baixo(3,5) = 0 medio(3,5) = 0.33 alto (3,5) = 0.25 Aplicando-se os valores lingstico e os graus de pertinncia nas regras nenhum min (0,0) = 0 baixo min (0,0.33) = 0

45

medio min (0,0.25) = 0 baixo min (0,0) = 0 medio min (0,0.33) = 0 alto min (0,0.25) = 0 medio min (1,0) = 0 alto min (1,0.33) = 0.33 certeza min (1,0.25) = 0.25 Termo relevante da varivel de sada: MAX (nenhum, baixo, medio, alto, certeza) MAX (0,0,0,0,0,0,0,0.33,0.25) MAX = 0.33 Termo mais relevante alto com grau de pertinncia 0.33.

6.3 Construo de um Pr-Processador


Basicamente, para a integrao inicial com o sistema, o SPP3 precisar congurar um ambiente com uma funo exportada em uma biblioteca. Esta, por sua vez, ser includa no sistema base de plugins do Snort e a funo adicionada na rotina de inicializao dos SPPs. Para isto, necessrio fazer a incluso das bibliotecas fornecedidas pelo Snort, vistas na Figura 35.

Figura 35: Bibliotecas do Snort para o SIDI Cada uma das bibliotecas possui suas funcionalidades. As bibliotecas generators.h e event_wrapper.h so responsveis pela gerao de alertas para o Snort, as
3 Do

ingls Snort Pre-Processor

46

bibliotecas util.h e plugbase.h possuem as principais rotinas que todo SPP deve possuir e a biblioteca debug.h fornece rotinas de controle, para que se possa fazer anlises do SPP. Aps a insero das bibliotecas-padro, necessrio criar a prpria biblioteca do SPP. Esta biblioteca necessita ter basicamente uma nica funo que ser chamada na inicializao do Snort. O exemplo de biblioteca inicial pode ser visto na Figura 36.

Figura 36: Biblioteca principal do SIDI Nota-se que na Figura 36 existe apenas uma funo chamada SetupSIDI(). Esta funo a responsvel pelo carregamento do SPP do SIDI e, para seu funcionamento, necessrio efetuar duas pequenas modicaes no Snort, ambas no arquivo plugbase.c encontrado no diretrio src do cdigo-fonte do Snort. A primeira modicao deve ser a insero da biblioteca do novo SPP como biblioteca do arquivo plugbase.h(veja a Figura 37) e a segunda modicao consiste na insero da chamada funo de carregamento do SPP. Isso feito simplesmente chamando a funo criada(no caso SetupSIDI()) dentro da funo InitPreprocessors() como pode-se ver na Figura 38.

Figura 37: Bibliotecas de SPP em plugbase

47

Figura 38: Chamadas de SPP em plugbase Feito isto, o SPP estar pronto para ser carregado com o Snort. Para isto necessrio compil-lo juntamente com o Snort e isto possvel atravs de duas modicaes no arquivo de denio de compilao(Makele) do diretrio /src/preprocessors/ do Snort.

Figura 39: Primeira modicao do Makele

Figura 40: Segunda modicao do Makele A primeira modicao da Figura 39 indica ao Snort que o novo SPP est em um diretrio parte e que durante a recompilao do sistema deve-se executar um Makele existente neste diretrio. A segunda modicao da Figura 40 indica o arquivo objeto gerado pelo novo pr-processador compilado, de maneira a lig-lo ao Snort durante a compilao nal. Para nalizar, a Figura 41 contm o Makele necessrio para se compilar o SIDI. A Figura 41 representa um arquivo bsico para compilao do sistema, entretanto,

48

Figura 41: Makele SIDI com o crescimento do mesmo e a necessidade de diviso em diversos arquivos e mdulos distintos, foi necessrio modicar este arquivo de maneira a adequar-se ao sistema em questo. A funo SetupSIDI() unicamente responsvel pelo registro do SPP na estrutura interna do Snort. Desta forma, ele simplesmente faz uma chamada funo RegisterPreprocessor() que possui dois parmetros. O primeiro consiste em uma palavrachave de identicao do SPP e o segundo consiste em um ponteiro para uma funo de inicializao. importante ressaltar que todos os SPPs so registrados, porm a funo de inicializao s executada para aqueles que esto ativos segundo o arquivo de congurao do Snort. No caso do SIDI, a funo de inicializao a responsvel pelo carregamento da base de conhecimento, carregamento das funes de inferncias e pelo carregamento da base de regras fuzzy, todos armazenados em arquivos XMLs. Feito isto, a funo de inicializao se encarrega de denir para o Snort quais so as funes de controle do SPP. Estas funes so a de recebimento de pacote (para anlise), a de nalizao (para liberao de memria) e de reinicializao (para se necessrio recarregar os arquivos de inicializao).

49

O Snort reconhece qualquer SPP pela palavra-chave denida em seu registro, portanto, para se inicializar o SIDI (denir com palavra-chave sidi) foi necessrio adicionar a seguinte linha no arquivos de congurao: preprocessor sidi: /etc/sidi A primeira palavra indica que a congurao a seguir de um SPP. Em seguida tem-se a palavra-chave de identicao do SPP e, aps o dois-pontos, um texto que passado como parmetros para o SIDI na sua funo de inicializao. Para este projeto deniu-se que este parmetro nico seria o diretrio onde encontram-se os arquivos XMLs do SIDI.

6.4 Testes e Resultados


Aps a implementao foram feitos diversos testes para se adequar uma boa base de conhecimento, conjuntos de funes de inferncia e base de regras Fuzzy. Para os testes foram utilizados a Base de Conhecimento descrita na Figura 42, as funes de pertinncias descritas na Figura 43 e a Base de Regras Fuzzy descrita na Figura 44. Na Figura 45, possvel observar pelo cabealho de chegada que o mesmo no representa um ataque. Ao passar pelo mdulo especialista, somente em algumas variveis foi denido um peso e, mesmo assim, estes esto presentes apenas nos conjuntos baixos com pertinncias de 0.33 para ambos, SELECT e UNION. Como resultado, as variveis (com seus graus de pertinncia) no inferiram em nenhumas das regras, resultado em possibilidade 0.00% para todas os valores lingsticos de sada. importante ressaltar que at mesmo o valor lingstico NENHUM est com pertinncia 0 (zero). Isto porque nenhuma das regras fuzzy inferira sobre esse valor. Ele deve ser muito utilizado quando, em alguma condio, muitas regras preencherem os demais valores lingstico, portanto sem ser um ataque. Desta maneira, deve-se criar regras que inferem no valor lingstico NENHUM, de maneira que ele tenha maior grau de pertinncia sobre os demais valores. Na Figura 46, possvel observar uma tentativa de ataque atravs dos comandos SQL SELECT e UNION. Com isto, o mdulo especialista deniu as variveis SELECT e UNION com os valores lingsticos ALTO com pertinncia de 0.50, ou seja, certeza absoluta de ocorrncia no pacote de chegada. Com estas informaes, esses valores

50

Figura 42: Base de Conhecimento para Testes coincidem com a ltima das regras que verica se ambos os valores de UNION e SELECT so altos, o que faz o valor lingstico CERTO ter probabilidade de 50%. Na Figura ??, possvel observar no pacote uma tentativa de ataque atravs de execuo de comandos. Com isto, o mdulo especialista identicou as palavras-chave para tal ataque e deniu o grau de ocorrncia para as variveis SHELL e CMD_DOS gerando, atravs das funes de pertinncia, grau mximo para o valor lingstico ALTO. Com isto, atravs da primeira regra fuzzy, deniu-se o valor lingstico CERTO de posibilidade de ataque como 100%. Na Figura 48, possvel observar no pacote uma tetativa de evaso atravs da utilizap de comentrios. Porm, independete dos comentrios, o Mdulo Especialista conseguil identicar as palavras-chave select e union no pacote, o que resultou da inferncia da possibilidade de ataque CERTO com 50%. Na Figura 49, possvel observar no cabealho HTTP uma tentativa de evaso de ataque alternando as letras das palavras-chave entre maiscula e minscula. Desta forma, como a Base de Conhecimento no previu esse tipo de evaso, no foi possvel identicar o ataque. Portanto, com pequenas modicaes na Base de Conhecimento,

51

Figura 43: Funes de Pertinncia para Testes

52

Figura 44: Regras Fuzzy para Testes

53

Figura 45: Resultado de Requisio Normal

54

Figura 46: Resultado de Ataque com SELECT

55

Figura 47: Resultado de Ataque com Execuo de Comandos

56

Figura 48: Resultado de Ataque com tentativa de Evaso 1 (Detectado)

Figura 49: Resultado de Ataque com tentativa de Evaso 2 (No Detectado)

57

possvel detectar o ataque com este tipo de evaso. Ao modicar a Base de Conhecimento, como visto na Figura 50, possvel ter o resultado visto na Figura 51.

Figura 50: Base de Conhecimento modicada para detectar Evaso 2

Figura 51: Resultado de Ataque com tentativa de Evaso 2 (Detectado)

58

Trabalhos Futuros

Para trabalhos futuros, prope-se a criao de um mtodo de aprendizagem onde, atravs de outros conceitos de I.A. no descritos neste documento, a ferramenta ser capaz de entrar em um modo de aprendizagem, gerando seus prprios padres e preenchendo as bases de dados com informaes obtidas, de maneira a inibir a atualizao constante da base de conhecimento para uma melhor adequao do sistema a um ambiente de produo. Juntamente com isto, pode-se implementar um melhor identicador dos parmetros do protocolo HTTP, fazendo com que a ferramenta trate as variveis HTTP de maneira distinta. Um caso em que a aplicao no vivel seria como mecanismo de proteo de um servidor web que tem como aplicao um frum de SQL pois praticamente todos os pacotes coincidiro com as regras fuzzy, o que resultaria em uma diversidade de falsos-negativos. Outra modicao interessante seria planejar um mtodo que consiga denir as regras tambm seguindo a ordem de precedncia das variveis, de maneira a denir e tratar diferentemente quanto sequncia em que as mesmas aparecem no cabealho. Isto possibilitaria difernciar a ocorrncia entre SELECT sequido de UNION e de UNION seguido de SELECT, visto que a primeira delas possi maior probabilidade de inferir em um ataque. Como o sistema consiste em um prottipo, inmeras modicaes e melhorias podem ser feitas. Uma dessas melhorias seria o trabalho com estrutura de dados em tabela hash para organizao das variveis, visto que como trabalhamos com busca sequencial das variveis perdemos em desempenho.

59

Concluso

Esta monograa foi desenvolvida com o objetivo de criar um prottipo de um prprocessador inteligente para o IDS Snort. Este pr-processador tem por nalidade aumentar a inteligncia deste sistema de segurana que muito utilizado mundialmente para proteger informaes, servidores e todos os outros componentes que possam estar ligados ao sistema de uma rede de computadores. O projeto tem como proposta uma abordagem de anlise dentro do cabealho HTTP dos pacotes capturadas, vericando possveis ataques do tipo SQL Injection. Com esta melhor anlise, podemos diminuir a incidncia de falsos-positivos - que acarretam a excluso de pacotes que no representavam perigo - e falsos-negativos - pacotes que passam como inofensivos, mas que consistem em um ataque. Ataques de SQL Injection, so muito comuns quando se fala de pginas Web. Esse problema acarreta na perda, inconsistncia e roubo de informaes de uma determinada organizao, gerando desde problemas administrativos internos at grandes prejuzos nanceiros. Para desenvolvimento desta estrutura inteligente de anlise, foi necessria a utilizao de duas vertentes da Inteligncia Articial, consistindo ento em um sistema hbrido. A primeira o Sistema Especialista e a segunda a Lgica Fuzzy. O Sistema Especialista cou responsvel por um mdulo de anlise, ou seja, um perito em segurana que faz um levantamento do que potencializa um ataque, e se h ocorrncias explcitas ou implcitas desses pontecializadores, fazendo um relatrio geral. Em segundo passo ca a Lgica Fuzzy. Nesta etapa onde o sistema toma a deciso, ou seja, decide em declarar se um pacote inofensivo ou um ataque e qual o grau de periculosidade. Essa deciso se d atravs de sua base de regras. Com este Pr-Processador, tem-se uma nova ferramenta para auxiliar o Snort na identicao de SQL Injection, melhorando assim a conabilidade da informao e a garantia de que os dados tenham um maior grau de segurana.

60

Com este trabalho, obtivemos a capacidade de modelar e implementar sistemas inteligentes hbridos. Alm disto, tivemos a oportunidade de experimentar na prtica como Engenheiros de Conhecimento atuam de maneira a fazer o processo de converso de conhecimento tcito(provindo de um especialista) em conhecimento explcito para que seja possvel armazen-lo e consult-lo, quando necessrio, para auxlio na tomada de deciso.

61

REFERNCIAS
[1] Snort Zine 1.0. Snort Zine 1.0. 2008. URL: http://snort.org.br/index.php?option=com_content&task=view&id=38&Itemid=43. Last Visited: 22/06/2008. [2] Marcelo Almeida. Microsoft Invadida por SQL Injection. 2008. URL: http://br.zoneh.org/content/view/489/11/. Last Visited: 04/06/2008. [3] Marcelo Almeida. Grupo Fatal Error invade site da FAB e do EB. 2008. URL: http://www.zone-h.com.br/content/view/573/9/. Last Visited: 02/12/2008. [4] FireWalls.com.br. Tcnicas de Evaso. 2008. http://www.rewalls.com.br/les/Evasao_ITA.pdf. Last Visited: 20/05/2008. URL:

[5] NIST. National Institute of Standards and Technology Wikipdia, a enciclopdia livre. 2008. URL: http://pt.wikipedia.org/wiki/National_Institute_of_Standards_and_Technology. Last Visited: 24/06/2008. [6] Snort. Snort Ocial Page. 2008. URL: http://www.snort.org/. Last Visited: 26/05/2008. [7] Equipe Snort-BR. Comunidade Snort Brasil. 2008. URL: http://snort.org.br/index.php?option=com_content&task=view&id=38&Itemid=43. Last Visited: 26/05/2008. [8] SISTEMA Especialista Nebuloso Para Diagnstico Mdico. 1997. Santa Catarina. [9] Universidade Estadual de Maring. Sistemas Especialistas. 2008. URL: http://www.din.uem.br/ia/especialistas/. Last Visited: 26/11/2008. [10] SISTEMAS Inteligentes - Fundamentos e Aplicaes. [S.l.: s.n.], 2005. Manole. [11] FUZZY Sets. [S.l.: s.n.], 1966. [12] Snort Community. Snort Ocial PAge - Community. http://www.snort.org/community/. Last Visited: 20/11/2008. [13] F. Bica R. Verdin e R. M. Vicari. Tutores inteligentes. 2006. 2008. URL:

Você também pode gostar