Você está na página 1de 18

ESTUDO DE UM ALGORITMO PARA EXTRAO DE SUBSTRINGS MAIS FREQENTES

Bruno Cuencas Donath (Bolsista UEMS), Fabrcio Srgio de Paula Universidade Estadual de Mato Grosso do Sul Cidade Universitria de Dourados, Caixa postal 351, CEP: 79804-970 bruno.internet@gmail.com, fabricio@uems.br Resumo. H vrios desafios que rodeiam a segurana computacional, um deles a identificao de aplicaes de rede pelo seu contedo, e no atravs da porta de acesso utilizada, como de costume. Este trabalho estuda o caso e prope uma maneira de abordar o problema, implementado um algoritmo para busca de substrings mais freqentes sobre os pacotes de rede, e apresentando os resultados obtidos. Palavras-chave: rvore de sufixo. Segurana computacional. Extrao de assinaturas. Protocolos de aplicao. Abstract. There are several challenges which surround computer security, one of them is the identification of network applications by its content, and not by the used access port, as usual. This work studies the case and proposes a way of approach the problem, implementing a search algorithm of the most frequent substrings over network packages, and displaying reached results. Keywords: Suffix tree. Computer security. Signature extraction. Application protocols. 1. Introduo

A interconexo de computadores ou redes de computadores em uma instituio resulta em benefcios salientes, tais como a facilidade de comunicao, o compartilhamento de recursos, o aumento na confiabilidade computacional e a reduo de custos. A Internet , sem dvida, o maior exemplo da interconexo de recursos computacionais, ultrapassando fronteiras geogrficas, culturais e sociais. Entretanto, a diversidade verificada nesses ambientes interconectados contempla tambm indivduos dispostos a promover perturbaes. Tais indivduos so movidos por razes ideolgicas, psicolgicas, financeiras, desejo de vingana e at mesmo por pura diverso.[7] Por outro lado, assuntos relacionados segurana computacional raramente recebem uma alta prioridade por parte de desenvolvedores de software, revendedores, administradores ou consumidores. Como resultado dessa distrao, um nmero considervel de

vulnerabilidades surge constantemente.

Uma vez exploradas por atacantes, essas

vulnerabilidades colocam instituies e usurios individuais sob risco.[12][9] Diversas tecnologias tm sido empregadas visando garantir os quesitos de segurana computacional. Firewalls so aparatos muito utilizados h mais de uma dcada e consistem na anlise de protocolos at o nvel de transporte, decidindo que tipo de trfego permitido ou no em uma rede. O nvel de transporte protocolos TCP ou UDP, na arquitetura TCP/IP contm a identificao das portas envolvidas na comunicao. Dessa forma, os firewalls utilizam essa informao para bloquear certos tipos de aplicao indesejveis em uma organizao ( chat, ftp, p2p, etc.). Para contornar essa barreira, pelo menos dois mecanismos tm sido aplicados: 1) aplicaes desenvolvidas para usar portas distintas das usuais; e 2) utilizao de tunelamento dentro de outras aplicaes. Dessa forma, um firewall comum no consegue identificar a aplicao real e acaba no funcionando de maneira adequada. Uma soluo para esse problema ter um mecanismo que identifique a aplicao envolvida em uma comunicao atravs do contedo do trfego na rede. Isso implica em encontrar assinaturas para protocolos de aplicao, que possam identificar as aplicaes envolvidas sem o auxlio de nmeros de portas. Nesse sentido, as rvores de sufixos podem ser utilizadas para encontrar padres comuns (substrings) no trfego de aplicaes. Deseja-se utilizar essas rvores como base para o estudo de um algoritmo que permita a busca por substrings mais freqentes. Essas substrings mais freqentes, embora possam no ser comuns a todas as strings de entrada, podem ser mais eficientes para identificar o trfego. O objetivo deste trabalho estudar rvores de sufixos e verificar como elas podem ser adequadas para suportar um algoritmo para busca de substrings mais freqentes. Esse algoritmo ser utilizado posteriormente para extrao de assinaturas de protocolos de aplicao. Para tanto, necessrio conhecer sobre a especificao e funcionamento de alguns dentre os principais protocolos de aplicao utilizados. Aps isso, devem ser estudadas em profundidade as rvores de sufixos e o funcionamento de algoritmos sobre essas rvores. Ao final, pretende-se adequar rvores de sufixos que possam suportar um algoritmo para busca de substrings mais freqentes. Este documento descrito como segue. A sesso 2 apresenta os mtodos utilizado para o trabalho. A sesso 3 apresenta todos os resultados obtidos, implementao e testes. Por fim, a sesso 4 apresenta as discusses e consideraes finais.

2. Metodologia

Como parte das atividades propostas neste projeto, foram realizados estudos e reflexes sobre a deteco de protocolos por contedo, especificamente na etapa de extrao de assinaturas na forma de strings. As fontes de referncias bibliogrficas incluem artigos disponveis na Internet, e o acesso s bibliotecas da UEMS, UFGD e UFMS. O projeto contou com o acesso aos recursos computacionais da Universidade Estadual de Mato Grosso do Sul (UEMS), que incluem 02 computadores dedicados especificamente para os projetos relacionados ao orientador. Foram utilizadas ferramentas/bibliotecas de software livre, que so distribudas gratuitamente na Internet e podem ser adaptadas de acordo com os requisitos da pesquisa. Foram realizadas reunies peridicas, visando apresentar e discutir os estudos realizados e o progresso alcanado. Periodicamente foram efetuadas etapas de documentao do progresso da pesquisa, compondo este trabalho.

3. Resultados

Os resultados obtidos esto organizados da seguinte forma. A sesso 3.1 apresenta a arquitetura TCP/IP, bem como toda sua camada e suas respectivas funes. A sesso 3.2 apresenta informaes sobe os protocolos FTP, TELNET e SSH. A sesso 3.3 levanta informaes sobre os protocolos HTTP, SMTP e IMAP. A sesso 3.4 apresenta o estudo da rvore de sufixo. A sesso 3.5 apresenta o estudo do algortimo para encontrar substrings mais freqentes. A sesso 3.6 apresenta todos os testes do algoritmo.

3.1

Arquitetura TCP/IP

As aplicaes de redes rodam em sistemas terminais, como por exemplo pginas da Web, correio eletrnico ou transferncia de arquivos. Os sistemas terminais, assim como na vida real, precisam de uma linguagem comum para se comunicar, chamada de protocolos. Os protocolos so responsveis pelo envio e recebimento de informaes dentro da rede. O TCP e o IP (Transmission Control Protocol e Internet Protocol respectivamente) so os protocolos mais importantes na Internet [1].

O TCP/ IP no na verdade um protocolo, e sim uma pilha de pro tocolos. Existem muitos outros protocolos que compem o TCP/IP alm dos prprios, como o SMTP, FTP, UDP, e outros mais. A arquitetura TCP / IP possui quatro camadas: Interface com a Rede Internet Transporte Aplicao

3.1.1 Camada Interface com a Rede

A camada Internet roteia um datagrama por meio de uma srie de roteadores at o seu destino. Para levar um pacote de n em n, a camada Internet depende dos servios da camada Interface com a Rede. Em cada n, a camada Internet passa os datagramas para a camada Interface com a Rede, que os entrega ao n seguinte. Os servios prestados pela camada interface com a rede dependem do protocolo especfico envolvido no enlace. Alguns provm entrega segura de um ponto a outro. Os protocolos Ethernet e PPP (point-to-point protocol) so exemplo de protocolos envolvidos na camada Interface com a Rede. Como o datagrama passa por vrios ns at chegar ao seu destino, ao longo de seu caminho o datagrama pode ser manuseado por diferentes tipos de protocolos respeitando as regras de cada um deles [5].

3.1.2 Camada Internet

Na internet, as mensagens so agrupadas em pacotes e viajam de roteador em roteador at acharem o computador de destino. A todos os computadores so atribudos um ende reo, chamado de IP. A principal tarefa da camada internet definir a rota que os pacotes iro seguir, adicionando a todos eles um cabealho. A camada internet formada por dois componentes, o protocolo IP e os algoritmos de roteamento.[1] Roteamento o caminho que os dados devem seguir at encontrarem seu destino. Todas as redes possuem um dispositivo chamado roteador. Na Internet, por exemplo,

comum que os dados naveguem por vrios roteadores, por este motivo, importante se ter um controle do fluxo de dados. O transporte de dados feito pelo protocolo IP. O protocolo IP pega, da camada de transporte, e divide os dados em datagramas. Os datagramas so pacotes que no possuem sistema de confirmao, fazendo ento, o IP ser um protocolo no confivel. Apesar de o protocolo IP ser no confivel, o TCP trabalha acima da camada Internet. Se o transporte feito pelo protocolo TCP, este far a confirmao dos pacotes, fazendo assim o transporte ser confivel [14].

3.1.3 Camada de Transporte

A camada de transporte a camada responsvel por pegar as informaes passadas da camada de aplicao e transport- las pela rede. O TCP o protocolo mais usado para esta finalidade. Algumas vezes os usurios precisam ter a certeza que todos os seus dados cheguem corretamente. Para isso uma funo no protocolo TCP definida. O protocolo TCP envia uma confirmao de recebimento para o remetente confirmando o recebimento, se este a viso no for enviado, pode ser que os pacotes enviados no tenham sido entregues ou estejam corrompidos. O TCP deve recuperar os dados perdidos, duplicados, danificados, ou entregues fora de ordem e reenvi- los at que seja obtida uma confirmao de recebimento[2]. Este processo no finaliza at que esteja concludo desde que ocorra o bom funcionamento de todas as partes. Por este motivo o protocolo TCP considerado confivel para sua funo. O protocolo UDP tambm usado na camada de transporte, porm ele no tem as caractersticas confiveis do TCP, no reordena pacotes e no tem sistema de confirmao. O UDP usado quando no h informao relevante para ser transportada, porm mais rpido que o TCP, sendo assim mais vivel em algumas aplicaes como streaming de vdeo [14].

3.1.4 Camada de Aplicao

Os programas se comunicam pela camada Aplicao. Os protocolos da camada de aplicao definem as regras e o formato que as mensagens iro circular na rede, como a aplicao WWW que somente segue as regras do protocolo de aplicao HTTP (Hypertext

Tranfer Protocol), o correio eletrnico envia as mensagens usando o protocolo SMTP (Simple Mail Transfer Protocol). Cada tipo de aplicao usa um protocolo diferente, dependendo da finalidade do programa.[1] A camada de aplicao se comunica com a camada de transporte atravs de uma porta. As aplicaes mais comuns usam portas com o mesmo nmero definido por um padro inicial. O protocolo HTTP sempre usa a porta 80, assim como a SMTP sempre usa a porta 25. Alguns protocolos no possuem portas fixas, tendo a vantagem de sempre direcionar o pacote para a finalidade especfica corretamente.

3.2

Protocolos FTP, TELNET e SSH

3.2.1 Protocolo FTP

O protocolo FTP permite que um usurio transfira, crie, renomeie, modifique ou remova arquivos remotos. O FTP permite somente a transferncia de arquivos completos. O Servidor verifica se o usurio vlido, ou seja, cadastrado e libera a conexo, conforme solicitado. Uma operao FTP se baseia em duas conexes entre o cliente e o servidor. A conexo de controle, usada para transferncia de comandos, e a conexo de transferncia de dados, que auto-explicativa. A conexo de controle permanece aberta enquanto durar a sesso. Vrios arquivos podem ser transferidos em uma sesso sem q ue outra conexo seja efetuada [11]. O protocolo FTP permite que o cliente especifique o tipo de dado que ser armazenado. Por exemplo, texto ou binrio, se texto, qual formato utilizado, ASCII ou EBCDIC.

3.2.2 Protocolo Telnet

O Telnet um protocolo popular utilizado para login remoto. Roda sobre o TCP e projetado para trabalhar em qualquer par de hospedeiros. O Telnet no criptografa seus dados, fazendo ser um protocolo pouco confivel, porm existem protocolos mais seguros, como o SSH.

Por exemplo, uma maquina A inicia uma conexo Telnet com a mquina B. Qualquer caracter que for pressionado pela mquina A ser encaminhado como comando para a B, e a mquina B retorna o mesmo caracter em forma de confirmao para a mquina A, e s ento o caracter aparecido na tela. [5].

3.2.3 Protocolo SSH

O SSH (Secure Shell) um protocolo de login remoto e outros servios em redes abertas, mas diferente do Telnet, o SSH seguro. O protocolo SSH divido em 3 partes. . Protocolo de transporte . Protocolo de autenticao . Protocolo de Conexo

O protocolo de transporte define o formato das mensagens que sero trocadas em uma ligao SSH. Define tambm, como gerar pacotes, trocar chaves e criptografias. Todos os algoritmos gerados pelo SSH de criptografia so negociados. O protocolo de autenticao define como se deve autenticar o utilizador, defini uma estrutura de protocolos para este fim. O protocolo enviar mensagens de pedidos de autenticao e o servidor de informar se o pedido de autenticao foi aceito ou recusado, algumas vezes necessrio realizar mais de uma forma de autenticao para utilizar dos servios dispostos. O protocolo de conexo define como iniciar, manter ou encerrar uma conexo SSH.[10]

3.3

Protocolos HTTP, SMTP e IMAP

3.3.1 Protocolo HTTP

O protocolo HTTP (Hypertext Transfer Protocol) usado para transferncia de informaes no WWW, estes podem ser imagens, texto e qualquer outro tipo. O HTTP pode acessar um conjunto ilimitado de formatos. Para isso o cliente deve informar os dados q ue pode manipular, e o servidor responde convertendo os dados somente em formatos conhecido pelo cliente. O HTTP um protocolo semelhante ao FTP, porm mais hbil. A conexo feita atravs do protocolo TCP, e somente mantida durante a transferncia de arquivo. [11].

3.3.2 Protocolo SMTP

O protocolo SMTP um protocolo simples de transferncia de e- mails. As mensagens so entregue quando a mquina de origem estabelece uma conexo TCP com a porta 25 na mquina de origem, o servidor SMTP recolhes as mensagem e as disponibiliza na caixa de entrada. Se uma mensagem no puder ser entregue, ela retorna ao remetente com os devidos parmetros do erro. Note que o SMTP no possui servidor intermedirio para a troca das mensagens, isso tambm se deve ao fato do SMTP ser um protocolo quase que pr histrico para a Internet. Se uma mensagem encaminhada entre dois pontos, mesmo que seja do outro lado do planeta, a conexo feita diretamente. Sendo assim, muito suscetvel a erro, pois o ponto de destino pode no estar disponvel no momento. O SMTP pode apresentar outros inconvenientes, como a restrio de todas as mensagens de correio ao formato ASCII. Algumas implementaes SMTP ainda no permitem mensagens maiores que 64kb. [11]

3.3.3 Protocolo IMAP

O protocolo IMAP (Interactive Mail Access Protocol) um protocolo complexo de emails. O protocolo POP3, por exemplo, permite carregar suas mensagens no computador e ento organiz-las em pastas, porm com um detalhe, nenhuma alterao ficar guardada em servidor, o que invivel se o acesso ao e- mail feito em lugares diferentes. Com o IMAP

isso j no acontece, possvel criar pastas, direcionar e- mails, em cliente off- line, on- line ou em ambos em sincronia. [5] Outra caracterstica importante a possibilidade de visualizar parte das mensagens. O IMAP permite, por exemplo, que somente o cabealho seja baixado, ou somente as mensagem sem anexo. til quando h acesso somente a Internet com velocidade reduzida. O IMAP totalmente configurvel, os servidores no precisam possuir todas as funcionalidades do protocolo.

3.4

rvore de Sufixo

Como mencionado, so pelos protocolos que a comunicao feita entre dois terminais pela rede. Por padro, os protocolos se comunicam com porta de nmero fixo. Mesmo que isso no seja inteiramente verdade, a maioria das aplicaes so facilmente visveis pelo firewall. Porm, existem meios de burlar o sistema, fazendo, por exemplo, uma aplicao rodar dentro de outra. Uma correo para esse problema seria identificar uma assinatura que faa identificar a aplicao sem que seja necessrio verificar a porta usada. Para isso preciso recolher vrios pacotes de uma mesma aplicao e analisar um substring freqente entre elas. Utilizando desse mtodo possvel bloquear ou liberar a aplicao, de acordo com a poltica preferida. As rvores de sufixos so as estruturas de dados adequadas para organizar a estrutura combinatria de palavras, permitindo assim resolver problemas como busca de repeties e reconhecimento de padres de maneira tima. [3] Qualquer string de comprimento m pode ser partida em m sufixos, e estes sufixos podem ser armazenados em uma rvore de sufixos. Criar essa rvore requer tempo O(m) e a busca por um padro em tempo O(n), onde n o comprimento do padro. Essas duas propriedades fazem da rvore de sufixos uma estrutura de dados utilizada por uma diversidade de aplicaes da bioinformtica incluindo: alinhamento mltiplo de genomas; seleo de assinaturas oligonucleotides para cadeias de DNA [8]. Desenvolvida por Weiner, a rvore de sufixos uma estrutura de dados que forma um ndice de todos os sufixos de uma palavra, permitindo consultas rpidas s suas sub-palavras e as informaes da sua estrutura.

3.4.1 Algoritmo da rvore de sufixo


Uma rvore de sufixos para a palavra T = T1 : : : Tn, sobre um alfabeto , possui as seguintes propriedades: possui exatamente n folhas, numeradas de 1 a n; Cada n interno de , exceto possivelmente pela raiz, possui pelo menos dois ns filhos; Cada aresta rotulada por uma subpalavra de T, tal que para um n v os rtulos das arestas que ligam v a seus filhos se diferenciam pelo menos por seus caracteres iniciais; Para uma folha i de , a concatenao dos rtulos das arestas no caminho da raiz de at i, na ordem em que so visitadas, o sufixo Ti de T. Um caractere denominado sentinela que no pertence a concatenado a T pelo fato de ser impossvel representar todos os sufixos de uma seqncia que tenha dois ou mais sufixos que compartilham um mesmo prefixo. Denotamos os caracteres sentinelas como $. As rvores de sufixos so dependentes do alfabeto. O tamanho do alfabeto afeta nos tempos de criao e na busca nas rvores de sufixos. Seja o alfabeto como sendo o conjunto finito de caracteres, e || o comprimento do alfabeto. Considere ainda m o comprimento da string, e P o comprimento do padro. Temos que o espao requerido pode ser denotado por (m||), ou o tempo de criao pode ser denotado por min{O(m log m), O(mlog ||)} e o tempo de busca por min{O(P logm), O(P log ||)}[3]. Quando mais de uma cadeia procurada, uma generalizao da rvore de sufixo por ser criada. Para que seja realizada com xito a procura das assinaturas em nossa string, necessrio procurar pela maior substring em duas strings, e ento, fazer a generalizao deste mtodo para que seja possvel encontrar a maior substring em vrias strings. A rvore de sufixo oferece suporte a esses dois algoritmos.

3.4.2 Encontrando a maior substring em duas Strings

Um problema clssico encontrar a maior substring comum de duas strings S1 e S2. Uma maneira simples, eficiente e conceituada para encontrar a maior substring comum construir uma rvore de sufixo generalizada para S1 e S2. Cada folha da rvore representa tanto um sufixo de uma das duas strings ou um sufixo que ocorre em ambas as strings.

Marcando cada n interno v com um 1 ou 2, se este uma folha na subrvore de v representando um sufixo de S1 ou S2 respectivamente. O rotulo do caminho de qualquer n interno marcado tanto como 1 e 2 uma substring comum tanto para S1 quanto S2, e a string mais longa a maior substring comum. Assim o algoritmo deve encontrar o n com a maior profundidade (nmero de caracteres no caminho at o n) da string, que marcado tanto com os nmeros 1 ou 2. A construo da rvore de sufixos pode levar um tempo linear (proporcional ao tamanho de S1 e S2), os ns sinalizados e o clculo da profundidade da string podem ser resolvidos por tempo linear com mtodos para percorrer a rvore. [3]

3.4.3 Algoritmo de generalizao para encontrar maior substring em vrias Strings


Construa a rvore de sufixos para K strings; Numere as folhas de na ordem em que so encontradas na primeira varredura em profundidade de ; Para cada string i identificada, extraia e armazene em Li a lista ordenada de folhas com o identificador i; Para cada n w em inicialize a altura com 0; Para cada identificador i, compute o LCA (Lowest Common Ancestor) de cada par consecutivo das folhas em Li, e incremente h(w) para cada vez que o LCA em w computado; Percorra e para cada n v, S(v) e U(v) = i:ni>0[ni(v) - 1] = [h(w) : w uma subarvore de v]; O Conjunto C(v) = S(v) - U(v) para cada n v; Acumule na tabela os valores de l(k) detalhados anteriormente.

3.5

Estudo para encontrar substrings mais Freqentes

O objetivo principal do trabalho estudar e construir um algoritmo que seja capaz de identificar substring que sejam freqentes, isto , no precisam ocorrer em todas as strings verificadas, mas o esperado encontrar substrings que apaream em uma quantidade significativa, para que futuramente a aplicao possa ser identificada. Uma soluo para esse

problema seria usar a rvore de sufixo para identificar substrings que mais se repetem nas strings recolhidas. A rvore de sufixo capaz de ser construda armazenando n strings e flexvel suficiente para que seja implementado o algoritmo para extrao das maiores substrings repetidas.

3.5.1 Proble ma da Substring Mais Repetida

Dentro do contexto, a substring repetida aquela que aparece no texto por pelo menos duas vezes em posies distintas dentro da string, com a possibilidade que tais ocorrncias possam se sobreporem. Uma substring repetida pode ser chamada de maior quando as ocorrncias no puderem ser estendidas para nenhuma direo. O problema de achar a maior substring repetida pode ser ento exposta como segue:
Dada uma string y, com |y| = n, onde n>0, identificar e localizar a maior substring, x, ocorrendo em dois ou mais distintos, com possibilidade de sobreporem, posies em y[13].

Usando essa lgica, podemos usar o algoritmo da maior substring repetida (LRS longest repeated substring), que toma como base a maior substring que se repete pelo menos duas vezes. Com uma pequena modificao, possvel limitar o tamanho da substring encontrada para 16 bytes, que um tamanho ideal para uma assinatura. Fazendo isso o algoritmo passa a ter um comportamento diferente, pois ele procurar por uma string de tamanho limitado e comear a listar, preferencialmente, as strings mais repetidas para o tamanho escolhido.

3.5.2 O Problema da Maior Substring Repetida

O problema da maior substring repetida envolve a construo de uma rvore de sufixo da string. A maneira no qual ela possa ser utilizada deve ser agora examinado. aparente que a maior string representada por um n interno na rvore de sufixo Y a maior string repetida da entrada verificada at o instante. E assim basta continuar rastreando

pela substring de maior tamanho pelos prximos ns internos como a rvore est sendo construda, e, como visto anteriormente, pode ser concludo em um tempo linear.

Figura 1: rvore de sufixo parcial para a string PABCQRABCSABTU#

Como mostra na Figura 1, os ns folhas foram marcados com o valor relevante de i para seus respectivos sufixos y (i, 15). E tambm por convenincia, todas as folhas tendo a raiz como pai foram omitidas do diagrama. Na visualizao da rvore, a ateno deve ser restrita para os ns internos que so pais de ns folhas que: qualquer n interno tendo como filho outro n interno representa uma string menor do que a ltima, e ento deve ser descartada como uma possvel candidata. [13]. Na Figura 1 ABC a substring mais repetida representada por um n interno, e desta forma a maior substring da string y.

3.6

Implementao e Testes do Algoritmo

Nesta seo os resultados obtidos com os testes feitos pelos algoritmos descritos na seo anterior so apresentados. Os testes foram realizados em um microcomputador com processador de freqncia 2,2GHz, 768 Mbytes de memria RAM (Random Access Memory) e utilizando a distribuio Fedora Linux verso 10.0 e kernel verso 2.6.27. Os dados utilizados para este fim foram o conjunto de dados 1999 DARPA Intrusion Detection Evaluation. Este conjunto composto por informaes incluindo trfego de rede e

log de eventos[6]. Existem diversas amostras de trfego coletadas no decorrer de quatro semanas. A primeira e terceira semana contm dados livres de ataques, sendo ento estas utilizadas para propsitos de teste. O conjunto de dados coletados no DARPA apresenta pacotes de vrias aplicaes, tais como HTTP, FTP, SMTP, e TELNET. Os dados esto no formato de arquivo do tcpdump1 . Tambm foi utilizada a ferramenta tcpflow2 para ler os arquivos no formato do tcpdump e gerar vrios arquivos contendo os dados das conexes existentes. O formato dos nomes dos arquivos gerados pelo tcpflow : ip_de_origem:porta_de_origem

ip_de_destino:porta_de_destino. A implementao foi realizada em C utilizando o compilador GNU/GCC verso 4.3.27. Tambm foi utilizada a biblioteca libstree, que uma implementao genrica da rvore de sufixos escrita na linguagem C [4]. A libstree pode trabalhar com mltiplas strings e prov vrios mtodos para insero, remoo e busca de substrings comuns e repetidas entre duas ou mais strings inseridas na rvore [4]. Foi utilizado o comando time 3 do Linux com a finalidade de medir o tempo de execuo durante a extrao das assinaturas e a deteco dos protocolos de aplicao. Na Tabela 1 so apresentadas as assinaturas obtidas usando o algoritmo LRS, considerando apenas os 100 primeiros bytes de cada conexo. As Tabela 2 e Tabela 3 apresentam as assinaturas obtidas considerando os primeiros 50 e 25 bytes de cada conexo, respectivamente. O trfego utilizado aqui foi retirado da primeira semana de captura dos dataset do DARPA.

Protocolo Conexes Assinatura Acerto Tempo HTTP 26.712 HTTP/1.1 200 OK 6614 5m31.273s SMTP 3.974 EHLO pluto.plum. 102 0m19.273s FTP 534 USER anonymous 257 0m2.078s TELNET 828 ........... ..!. 441 0m3.210s Tabela 1: Extrao de assinaturas usando o algoritmo LRS e 100 bytes de cada conexo

As Tabelas de extrao esto organizadas da seguinte forma: a primeira coluna representa a aplicao envolvida; a segunda coluna representa quantos so os pacotes verificados; a terceira coluna representa a assinatura extrada; a quarta coluna representa o

1 2

tcpdump u ma ferramenta utilizada para monitorar os pacotes trafegados numa rede de co mputadores. tcpflow uma ferramenta que captura os dados transmit idos como parte de conexes TCP (flu xos), e armazena os dados de uma maneira que for mais conveniente para anlise ou depurao. 3 time u m co mando que inicia u m outro programa e registrar o tempo decorrido e utilizado por esse programa.

nmero de pacotes que contm a assinatura extrada; e a quinta coluna representa o tempo real decorrido para extrao. Nota-se que ao diminuir o tamanho dos bytes de cada conexo, o nmero de assinaturas extradas para um mesmo protocolo aumenta.

Protocolo Conexes Assinatura Acerto Tempo HTTP 26.712 HTTP/1.1 200 OK 6614 8m34.388s SMTP 3.974 EHLO pluto.plum. 102 0m14.378s SMTP 3.974 EHLO pigeon.eyri 67 0m14.378s SMTP 3.974 EHLO mars.avocad 152 0m14.378s SMTP 3.974 EHLO marx.eyrie. 19 0m14.378s SMTP 3.974 EHLO saturn.kiwi 132 0m14.378s FTP 534 USER anonymous 257 0m2.754s TELNET 828 ........... .384 307 0m1.508s TELNET 828 ........... ..!. 441 0m1.508s Tabela 2: Extrao de assinaturas usando o algoritmo LRS e 50 bytes de cada conexo

Protocolo Conexes Assinatura Acerto Tempo HTTP 26.712 HTTP/1.1 200 OK 6614 17m7.163s HTTP 26.712 HTTP/1.1 301 Mov 33 17m7.163s HTTP 26.712 HTTP/1.1 302 Mov 67 17m7.163s SMTP 3.974 EHLO pluto.plum. 102 0m7.034s SMTP 3.974 EHLO pigeon.eyri 67 0m7.034s SMTP 3.974 EHLO mars.avocad 152 0m7.034s SMTP 3.974 EHLO marx.eyrie. 19 0m7.034s SMTP 3.974 EHLO saturn.kiwi 132 0m7.034s FTP 534 USER anonymous 257 0m0.713s TELNET 828 ........... ..!. 441 0m3.319s TELNET 828 ................ 5 0m3.319s TELNET 828 ........#..'..$. 74 0m3.319s Tabela 3: Extrao de assinaturas usando o algoritmo LRS e 25 bytes de cada conexo

A segunda etapa foi identificar as aplicaes com assinaturas obtidas. Desta forma, buscou-se reconhecer os pacotes que pertencem a uma determinada aplicao usando apenas as assinaturas. Os dados utilizados foram retirados do dataset DARPA em sua terceira semana, portanto diferente dos utilizados para a extrao da assinatura. As tabelas a seguir representam os resultados obtidos. A Tabela 4 mostra a deteco das assinaturas geradas na Tabela 1. Nesta etapa, as tabelas ento organizadas da seguinte forma: a primeira coluna representa a aplicao

envolvida; a segunda coluna representa a quantidade de conexes utilizadas; a terceira coluna representa quantas conexes foram identificadas corretamente; a quarta coluna representa as conexes corretas em porcentagem; a quinta coluna representa o tempo real decorrido. Protocolo Conexes Corretas HTTP 25.965 7479 SMTP 4.614 115 FTP 800 358 TELNET 1.974 287 Tabela 4: Deteco usando pacotes de 100 bytes Acerto(%) 28,80 2,49 44,75 14,53 Tempo 8m31.705s 0m57.921s 0m2.777s 0m11.829s

A Tabela 5 mostra a deteco usando as assinaturas geradas na Tabela 2. A Tabela 6 mostra a deteco usando as assinaturas geradas na Tabela 3.

Protocolo Conexes Corretas HTTP 25.965 7480 SMTP 4.614 527 FTP 800 358 TELNET 1.974 481 Tabela 5: Deteco usando pacotes de 50 bytes

Acerto(%) 28,80 11,42 44,75 24,36

Tempo 5m21.930s 0m50.841s 0m1.710s 0m0.530s

Protocolo Conexes Corretas HTTP 25.965 7547 SMTP 4.614 527 FTP 800 358 TELNET 1.974 1029 Tabela 6: Deteco usando pacotes de 25 bytes

Acerto(%) 29,06 11,42 44,75 52,12

Tempo 7m58.806s 0m55.601s 0m2.135s 0m8.523s

Os resultados nos mostram que os padres gerados com apenas 25 bytes ( Tabela

3)

so os melhores para identificas as aplicaes. Conforme a Tabela 6, as assinaturas extradas da rvore de sufixo obtiveram um acerto de, em mdia, 34%. E mesmo identificando as aplicaes com mais preciso, o tempo de execuo no se alterou.

4. Discusses

Este trabalho fez uma introduo ao problema da identificao de aplicaes por contedo e apresentou uma soluo parcial para o problema, que a utilizao da implementao do algoritmo LRS sobre a rvore de sufixo.

Atravs dos testes realizados anteriormente pode se constatar que, apesar de no ser talvez a melhor estrutura para a identificao das assinaturas, o algoritmo LRS uma tima ferramenta complementar. O LRS encontra assinaturas trabalhando com os pacotes de uma forma quase que individual, encontrando sub-padres dentro das aplicaes. O algoritmo identificou 1/3 das conexes e, apesar deste nmero parecer pequeno, teoricamente significa que uma em cada trs conexes identificada, e considerando que as conexes dificilmente vm sozinhas ou em pequenos conjuntos, possvel identificar uma boa parte das aplicaes como um todo. Futuramente este trabalho poder ser continuado seguindo com a mesma idia, que o estudo de algoritmos timos para a identificao de protocolos na rede.

5. Agradecimentos Os autores agradecem pelo apoio financeiro concedido pela Universidade Estadual de Mato Grosso do Sul e tambm por todos os acadmicos, coordenadores, professores e tcnicos que, diretamente ou indiretamente, contriburam para a realizao desse trabalho.

6. Referncias

[1]

Cant, E. 2003. Redes de Computadores e Inte rnet. CEFET, So Jos, SC, p.16-17, 33-52. DARPA Internet Program. 1981. Transmission Control Protocol, RCF 793. Disponvel em: http://www.rfc-editor.org/rfc/rfc793.txt (ltimo acesso em 18/08/2009) Gusfield. D. 1997. Algorithms on String, Trees and Sequences Computer Science and Computational Biology. Cambridge University Press, 530p. Kreibich. C. 2007. Libstree - a generic suffix tree library. Disponvel em: http://www.icir.org/christian/libstree/index.html (ltimo acesso em 18/08/2009) Kurose, J. F. 2006. Redes de Computadores e a Internet: uma abordagem top-down. So Paulo, SP, Ed. Addison-Wesley, 656p. Laboratory, M. L. 1999. DARPA intrusion detection evaluation data set. Disponvel em: http://www.ll.mit.edu/IST/ideval/data/1999/1999dataindex.html (ltimo acesso em 18/08/2009)

[2]

[3]

[4]

[5]

[6]

[7]

de Paula, F. S. 2004. Uma Arquitetura de segurana computacional inspirada no sistema imunolgico. Tese de doutorado, Instituto de Computao, Universidade Estadual de Campinas. 155p. de Paula, F. S., Izidre, S. L. 2008. Identificao de Protocolos de Aplicao atravs de contedo. Artigo no publicado. Pethia, R. 2000. Computer security. CERT Coordination Center. Disponvel em: http://www.cert.org/congressional_testimony/Pethia_testimony_Mar9.html (ltimo acesso em 09/2005) Silva, R. J. B. da, Golalves, R. M. S. 2006. Estudo Sobre o Protocolo SSH. Pg. 2-5. Soares, L. F. G., Lemos, G., Colcher, S. 1995. Redes de Computadores: das LANs, MANs e WANs s redes ATM. Rio de Janeiro, RJ, Ed. Campus,705p. Spafford, G., Garfinkel, S. 1996. Practical Unix & Internet Security. O Reilly and Associates. Sebastopol, 2 edio, 1000p. Stephen, G. A. 1994. String Searching Algorithms. Ed. World Scientific, 256p. Torres, G., Lima, C. 2007. Como o Protocolo TCP/IP Funciona Parte 1. Disponvel em: http://www.clubedohardware.com.br/artigos/1351/ (ltimo acesso em 18/08/2009)

[8]

[9]

[10]

[11]

[12]

[13] [14]