Padronização na Detecção de Intrusos

Autor: Marco Aurélio Bonato

 

Resumo

O presente trabalho tem por finalidade mostrar quais são os protocolos abertos existentes para troca de informações entre componentes de uma arquitetura IDS1 e como eles funcionam. Estes protocolos são considerados abertos por não estarem vinculados a fabricantes de hardware e software e sim a grupos autônomos que procuram uma padronização onde seja possível a cooperação entre diversos produtos, independentemente de fabricante.

1IDS: "Técnicas de detecção de intrusos em um computador ou redes de computadores"[10]

1. Introdução

Quanto mais crescem os ataques aos computadores mais se justifica a utilização da tecnologia IDS (Intrusion Detection System) [09], uma vez que a proteção das redes baseadas em Firewall2 não consegue detectar ataques embutidos nos protocolos de aplicação ou ataques de rede, como os DoS3. No caso de grandes redes corporativas, com várias redes locais geograficamente distribuídas, a proteção baseada em Firewall não detecta os ataques oriundos da própria rede interna [01].

2 Firewall: "Um sistema ou a combinação de sistemas que reforçam a segurança entre uma ou mais redes."[12]

3 DoS: "Ações que impedem que um sistema de computador execute suas tarefas".[10]

Além disto, existe um problema associado à implementação e ao uso de detecção de intrusos e vulnerabilidades em grandes redes de computadores, que é a integração entre os analisadores, uma vez que analisadores de fabricantes diferentes não conseguem trocar informações. Quando as redes remotas são independentes, a administração centralizada se torna difícil, pois nem sempre os produtos de IDS que estão sendo utilizados são os mesmos.

Para proporcionar esta portabilidade entre os componentes de uma arquitetura IDS, surgiu um grupo de pesquisadores do IETF (Internet Engineering Task Force) que juntamente com os pesquisadores do DARPA-IE criaram um conjunto de protocolos chamado de IDP(Intrusion Detection Protocol) para a troca de informações entre componentes IDS. Este grupo de trabalho foi denominado IDWG (Intrusion Detection Working Group).

2. Características do IDWG

No desejo de definir tal protocolo, este grupo de trabalho criou um conjunto de especificações que são detalhadas nos próximos capítulos e cujas principais características estão descritas a seguir.

* Transmissões confiáveis: o protocolo que possibilita o envio de mensagens entre componentes de IDS deve ser confiável, especialmente se a rede está instalada em um ambiente hostil. Transmissões desta natureza são desejáveis para evitar a duplicação de mensagens. Tendo isto como objetivo, o grupo IDWG especifica que a plataforma IDP está baseada no protocolo TCP (Transmission Control Protocol), pois o mesmo já é amplamente utilizado, conhecido e confiável;

* Autenticação mútua: cada uma das partes envolvidas na troca de informações entre componentes IDS deve estar devidamente autenticada, possibilitando, com isto, que a qualquer momento a identidade dos componentes envolvidos na troca de informações possa ser verificada. Isto se faz necessário para evitar que alguém possa se fazer passar por um analisador IDS;

* Integridade e confidencialidade: a integridade é necessária para que nenhum outro processo possa modificar o conteúdo das informações que estão sendo transportadas pela rede. A confidencialidade serve para impedir que alguém possa analisar o conteúdo que está sendo transmitido;

* Resistir a Ataques DoS: todo mecanismo de IDS é um alvo para as pessoas que tentam atacar os recursos de uma rede. Os protocolos especificados pelo IDWG estão sendo projetados para rejeitar o mais rápido possível qualquer conexão não conhecida, tendo a possibilidade de mudar seu comportamento quando atacado;

* Aumento na segurança: a intenção dos protocolos IDP é aumentar a segurança, portanto eles foram projetados para operar através de Firewalls sem comprometer a segurança da rede. Isto se dá através de uma conexão extremamente segura entre os componentes.

3. Especificações IDWG

3.1. Formato para Troca de Mensagens em Detecção de Intrusos

O modelo de dados IDMEF (Intrusion Detection Message Exchange Format)[03] é uma representação de alertas orientada a objetos. Com ele consegue-se um padrão na especificação de alertas, permitindo o relacionamento entre ambientes de pouca ou grande complexidade.

O modelo IDMEF tem as seguintes características:

* Heterogeneidade: as informações associadas aos vários tipos de alertas são bastante heterogêneas. Alguns desses alertas são representados através de um pequeno conjunto de informações, tais como: endereço IP de origem, endereço IP de destino, nome do evento e data da ocorrência. Outros provêem muitas informações adicionais, tais como: portas de serviços, aplicações e processos envolvidos, informações sobre usuários, etc. Por ser orientado a objetos o modelo IDMEF consegue representar estas características através das funcionalidades de agregação e subclasses;

*Ambientes Distintos: alguns analisadores detectam ataques verificando o tráfego de informações nas redes enquanto outros usam os logs gerados pelos sistemas operacionais. Alertas de um mesmo ataque cuja fonte de informação é diferente, fornecem dados diferentes. O modelo IDMEF define classes que suportam diferentes dados de um mesmo ataque. Em particular as noções de origem e destino de um alerta são representadas por uma combinação de Nó, Processo, Serviço e classe de Usuário;

* Compatibilidade entre Analisadores: analisadores podem ser instalados para prover um conjunto pequeno de informações ou, quando instalados na sua versão completa, fornecem várias informações adicionais. Para isto é disponibilizado um conjunto de conversores de formatos que serão utilizados pelos analisadores para fornecer aos gerentes informações padronizadas. Para definir estas extensões ao esquema básico, o IDMEF define alertas de dois tipos: simples e complexos. Para prover tais características, são usadas as técnicas de associação e subclasses;

* Análise Diferente: Dependendo do ambiente no qual o analisador está inserido, ataques podem ser observados e reportados de maneiras diferentes. O modelo especificado flexibiliza estas diferenças através de subclasses que são definidas com atributos adicionais que podem compatibilizar os dados enviados para a plataforma de gerenciamento de rede.

3.2. Protocolo BEEP 

O protocolo genérico BEEP (Blocks Extensible Exchange Protocol)[11] é formado por um conjunto de frameworks que foram desenvolvidos para servir de base para que as aplicações possam trocar informações. Ele possibilita a troca de informações através de conexões permanentes, assíncronas e confiáveis. Suas principais características são detalhadas a seguir. 

3.2.1. Delimitação de Mensagens

O protocolo BEEP usa uma variação do método octet-counting para delimitar o final de uma mensagem. Além de contar o número de bytes, ele usa um trailler de nome END. O início de uma mensagem BEEP está delimitado por um conjunto de identificadores que fornecem as seguintes informações:

* o tipo da mensagem;

* uma identificação se a mensagem tem continuação;

* um número único de identificação para cada mensagem, para que se possa distingui-las quando elas estão sendo enviadas;

* a aplicação para qual a mensagem é endereçada.

Com todas estas características o protocolo BEEP consegue simplificar a verificação de erros.

Este protocolo também usa o mecanismo de controle de fluxo para permitir a multiplexação de canais sobre uma única camada de transporte. Este mesmo mecanismo é utilizado pelo protocolo TCP.

3.2.2 Codificação das Mensagens

Existem vários mecanismos de codificação de mensagens em uso na Internet. O protocolo SMTP usa o mecanismo descrito na RFC0822 enquanto o SNMP usa o ASN.1/BER. O protocolo BEEP utiliza para a codificação das mensagens o protocolo MIME[05].

3.2.3. Informações sobre as conexões

Protocolos de aplicações devem proporcionar um mecanismo de identificação de erros, possibilitando, assim, que as partes envolvidas na transmissão e as pessoas que manipulam tais protocolos possam saber se uma requisição ou recebimento de informações teve sucesso. O SMTP foi o primeiro protocolo de aplicação a usar tal mecanismo, que consiste em informar o erro através de um código de 3 dígitos. Após o SMTP vários outros protocolos, tais como FTP e HTTP, implementaram também tal mecanismo. 

O protocolo BEEP utiliza um campo textual de 3 dígitos para informar os erros. Além dos 3 dígitos existe uma informação adicional (positivo e negativo) que permite identificar de maneira mais objetiva se a transferência teve bom êxito.

3.2.4. Trocas assíncronas

A troca de mensagens entre componentes que utilizam o protocolo BEEP é realizada através de canais. Cada canal está associado a um perfil que define a sintaxe e a semântica das mensagens que estão sendo enviadas e recebidas. O conceito de canal provê a base do assincronismo do protocolo BEEP. Através de apenas uma sessão, vários canais podem ser abertos simultaneamente. Assim sendo, todas as mensagens são processadas de maneira síncrona em cada canal, não existindo limitações para o processamento de mensagens em canais diferentes. Um exemplo de uma sessão BEEP está demonstrado na figura 1, na qual através de uma única sessão dois canais diferentes, especificados por perfis diferentes, estão trocando mensagens.

Figura 1: Sessão BEEP com múltiplos canais

3.2.5. Autenticação

Tradicionalmente os protocolos de aplicação têm ignorado o problema da autenticação, assim sendo, nem os componentes nem a troca de mensagens são autenticados. Um dos poucos protocolos que implementa autenticação é o FTP que possui um mecanismo de chave/senha para garantir o sucesso da conexão e também para que ambas as partes saibam quem é a origem e quem é o destino.

Para este função o IETF utiliza o protocolo SASL [08]. Com o SASL é possível também utilizar as credenciais de algum outro protocolo de segurança já existente. Por exemplo, as credenciais utilizadas pelo protocolo IPSec1 podem também ser utilizada pelo SASL. Além da autenticação ele também garante a integridade e privacidade das mensagens que estão sendo transmitidas.

1 IPSec: Protocolo para autenticar e garantir a segurança dos dados que estão sendo transportados através do protocolo IP[13].

Quando um canal é autenticado, uma identificação simples de usuário é feita para cada componente da sessão, onde cada sessão corresponde a somente um usuário, sendo que todos os canais atribuídos a um único usuário utilizam a mesma autenticação.

3.2.6. Privacidade

Para prover a privacidade das conexões o protocolo BEEP suporta além do SASL, o TLS (Transport Layer Security)[04], que é o padrão sugerido pelo IETF para a privacidade das conexões.

Quando a negociação para um canal seguro é iniciada por dois componentes, todas as conexões sem segurança que estão estabelecidas são finalizadas e reiniciadas depois de completado o modo de transmissão privativo.

3.2.7. Perfis BEEP

Todo canal criado para a transferência de dados está associado a um perfil, sendo ele responsável por especificar a sintaxe e a semântica das mensagens que estão sendo trocadas. Um protocolo de aplicação (IDP, por exemplo) que usa o protocolo BEEP é definido através de um ou mais perfis. Existe um em particular, denominado URI[02], que é usado por todos os demais no início de uma sessão e que tem a função de informar para os componentes qual é o perfil que será utilizado.

Existem dois tipos básicos de perfis, que determinam as operações que podem ser executadas sobre um canal de dados.

* Perfil de inicialização: é utilizado na inicialização de uma sessão, na autenticação e no transporte seguro de informações;

* Perfil Normal: serve para trocar dados. Normalmente é utilizado após a inicialização de uma sessão. Sua principal característica é estabelecer o padrão de troca de mensagens sobre um canal.

3.3. Protocolo IDXP

O protocolo IDXP(Intrusion Detection Exchange Protocol) [11] é implementado como um perfil do protocolo BEEP, descrevendo a maneira com que as informações são trocadas entre componentes IDS. Enquanto o modelo BEEP fornece o protocolo, o perfil IDXP especifica as características necessárias para o estabelecimento de um canal e a troca de informações entre os componentes envolvidos. A especificação IDXP pode ser dividida em 4 partes que serão detalhadas a seguir.

3.3.1 Conexões

Conexões entre componentes IDS podem ser estabelecidas dentro de uma mesma rede ou em redes que são separadas por "gateways"2. Quando um ou mais "gateways" existem entre os componentes IDS que trocam informações, é necessário que seja criado um túnel3 entre eles para que o canal de comunicação também possa ser criado.

2 Gateway: Equipamento que possibilita que uma sub-rede envie informações para outras sub-redes.
3 Túnel: Capacidade que os protocolos possuem de poder enviar um protocolo dentro do outro.

Para esta tarefa o perfil IDXP requer a utilização de um outro perfil do protocolo BEEP denominado inicialização. 

3.3.2. Segurança

Após o estabelecimento da conexão entre os dois componentes IDS é necessário que a segurança na troca das informações também seja estabelecida. Como o perfil de inicialização também provê a característica de segurança, nenhum outro perfil é necessário para esta funcionalidade. Com isto todas as condições de segurança estão preservadas no momento em que as informações são transmitidas. 

3.3.3. Canal BEEP

Depois que uma sessão BEEP já está estabelecida e que todos os processos de segurança já foram inicializados, a próxima fase do uso do perfil IDXP é abrir um canal aonde os dados podem ser trocados. A primeira mensagem contém a URI, que determina como as informações serão trocadas juntamente com um nome da máquina ou endereço IP da origem. Através destas informações o servidor tem capacidade de decidir se a solicitação oriunda do cliente é aceitável, retornando para o mesmo um "positivo" ou um "negativo". 

Através de uma única sessão BEEP vários canais IDXP podem ser criados, economizando, assim, o estabelecimento de novas sessões.

3.3.4. Transferência de Dados

Dados sobre detecção de intrusos são enviados dos clientes para os servidores em um dos três tipos de dados MIME: text/xml, text/plain ou application/octet-stream. Dados em XML estão em conformidade com as mensagens IDMEF, sendo que os outros dois tipos foram criados para não restringir o uso de novas implementações. 

3.4. Protocolo IAP

O protocolo IAP (Intrusion Alert Protocol) [06] foi especificamente construído para transportar alertas entre componentes de IDS. Como todo protocolo, ele é baseado em um modelo de comunicação e troca de mensagens. Ele é caracterizado pela simplicidade, não tendo a mesma robustez do protocolo BEEP/IDXP.

3.4.1. Modelo de Comunicação

O protocolo IAP utiliza um modelo de comunicação similar ao HTTP 1.0. Um dos componentes faz requisições e o outro responde, mas algumas adaptações foram necessárias para que ele pudesse funcionar de maneira mais eficiente. A primeira é que o componente que estabelece a conexão pode responder e solicitar, isto é, não está caracterizado quem é o servidor e quem é o cliente. A segunda é que o protocolo HTTP suporta vários níveis de servidores proxy com a utilização do armazenamento de informações (cache). Já o protocolo IAP suporta somente um tipo de proxy que é similar a um túnel do protocolo HTTP, através do qual as informações são trocadas, mas não entendidas.

3.4.2. Sintaxe das Mensagens

As mensagens que são trocadas através do protocolo IAP são baseadas em textos. Na figura 2 é mostrada uma requisição IAP que inclui o início de uma mensagem IDMEF. Toda requisição começa com uma linha contendo o tipo da operação e a versão do protocolo IAP que está sendo utilizada. Os cabeçalhos "Content-Length:" e "Content-Type:" são utilizados para indicar o tamanho e o tipo de informação que está sendo transferida. Todo cabeçalho é seguido por uma linha em branco e a mensagem, que pode estar vazia.

Toda requisição é respondida por uma mensagem que tem um formato similar. Na primeira linha tem a versão do protocolo IAP e 3 dígitos de código de retorno que indicam se a solicitação foi bem sucedida ou não. Esta linha é seguida por cabeçalhos, uma linha em branco e a mensagem, como na requisição. Um exemplo de mensagem IAP está demonstrado na figura 2.

Figura 2: Exemplo de Mensagem IAP

3.4.3. Iniciando uma conexão 

Vários detalhes importantes devem ser trabalhados antes que as informações possam ser transportadas através do protocolo IAP. Os dois componentes que irão trocar informações devem estar autenticados, deve-se iniciar a encriptação dos dados e decidir quem irá fazer a requisição dos dados. Somente depois desta fase inicial de reconhecimento de ambos os componentes é que informações com alertas podem ser transferidas. 

Depois que a conexão está estabelecida, uma requisição de conexão IAP é enviada levando a versão do protocolo em uso e o endereço IP da máquina de destino. Se a conexão é feita através de um servidor proxy, ele terá um cabeçalho adicional de nome "Via:". Estes cabeçalhos são examinados pelos proxys para constatar se a conexão não está em loop, sendo nesta fase o único momento em que um servidor proxy analisa as informações que estão sendo transferidas através do protocolo IAP. A partir deste momento o servidor proxy irá transmitir as mensagens de maneira transparente até que a conexão seja encerrada.

Se a requisição de conexão é bem sucedida, o componente que a iniciou irá solicitar para que ela se transforme em TLS, que é a maneira segura de transportar os dados.

Depois que a conexão foi transformada, existe uma verificação TLS. Isto significa que o componente que iniciou a conexão assume a característica de cliente. Cada um dos componentes que faz parte da conexão deverá enviar um certificado assinado digitalmente e verificar a autenticidade do certificado recebido. É conveniente notar que os servidores proxy envolvidos no envio das mensagens não participam da conexão TLS, eles simplesmente transferem informações de um componente para o outro. O uso de certificados assinados digitalmente entre os dois componentes é vital para garantir que toda esta estrutura não seja atacada por alguém que insira pacotes não desejados no meio da transferência dos dados.

Depois que a conexão TLS foi estabelecida, uma requisição de verificação de versão do protocolo IAP é enviada para a máquina que iniciou a conexão. Isto é necessário para que em ambos os lados da conexão a versão do protocolo IAP seja a mesma. Isto é feito somente após a verificação TLS porque qualquer informação transmitida antes do estabelecimento da segurança é passível de ser modificada. Depois de todas estas verificações qualquer um dos componentes pode se denominar Servidor, independentemente se ele foi o iniciador da conexão.

3.4.4. Enviando Alertas

Depois que todas as regras foram estabelecidas, o servidor pode iniciar o envio dos alertas fazendo as requisições IAP. Embora o formato definido para o protocolo IAP seja flexível, a versão 0.4 deste protocolo permite que somente o servidor possa enviar mensagens. Novas versões permitirão que outros tipos de dados possam ser enviados, tais como: informações sobre configurações, informações específicas de um determinado analisador, etc. 

4. Conclusão

Está cada vez mais complicado administrar segurança em grandes redes corporativas, por se tratar de ambientes extremamente complexos e com uma variedade muito grande de hardware e software.

Em linhas gerais este trabalho tenta mostrar o que está sendo feito para a padronização na administração de ambientes IDS. Por se tratar de uma tecnologia nova, ainda não é possível determinar se o mercado irá utilizá-la.

5. Referências

1. BACE, R.; MELL, P. NIST Special publication on intrusion detection systems. 2000. Disponível em: http://csrc.nist.gov/publications/nistpubs/
800-31/sp800-31.pdf
>. Acesso em: 26 maio 2003.

2. BERNERS-LEE, T. et al. RFC2396: Uniform Resource Identifiers (URI). 1998. Disponível em: http://www.faqs.org/
rfcs/rfc2396.html
. Acesso em: 26 maio 2003.

3. CURRY,D.; DEBAR, H. Intrusion detection message exchange format data model and extensible markup language (XML) document type definition. Fev. 2002. Trabalho em andamento. Disponível em: http://www.ietf.org/internet-drafts/
draft-ietf-idwg-idmef-xml-10.txt
. Acesso em: 26 maio 2003.

4. DIERKS, T.; ALLEN, C. RFC2246: The TLS protocol version 1. 1999. Disponível em: http://www.faqs.org/rfcs/rfc2246.html. Acesso em: 26 maio 2003.

5. FREED, N.; BORENSTEIN, N. RFC2046: Multipurpose Internet Mail Extension (MIME) part two: media types. 1996. Disponível em: http://www.faqs.org/rfcs/rfc2046.html. Acesso em: 26 maio 2003.

6. GUPTA, D. et al. IAP: intrusion detection protocol. Internet Engineering Task Force. 2001. Disponível em: http://www.ietf.org/proceedings/
00jul/I-D/idwg-iap-01.txt
. Acesso em: 26 maio 2003.

7. MATTNEWS, G. et al. The Intrusion Detection Exchange Protocol (IDXP). Internet Engineering 
Task Force. 2002. Disponível em: http://www.ietf.org/
internet-drafts/draft-ietf- idwg-beep-idxp-07.txt
. Acesso em: 26 maio 2003.

8. MYERS, J. RFC2222: Simple Authentication andSecurity Layer (SASL). 1997. Disponível em: 
http://www.faqs.org/rfcs/rfc2222.html. Acesso em: 26 maio 2003.

9. MUKHERJEE, B.; LEVITT, K. N.; HEBERLEIN, L. T. Network intrusion detection. IEEE Network. June 1994. Disponível em: http://seclab.cs.ucdavis.edu/
papers/mhl94.pdf
. Acesso em: 26 maio 2003.

10. NSA glosary of terms used in security and intrusion detection. 1999. Disponível em: http://www.sans.org/newlook/
resources/glossary.htm
. Acesso em: 16 maio 2003.

11. ROSE, M. RFC 3080: the blocks extensible exchange protocol core. Mar. 2001. Disponível em: http://www.faqs.org/rfcs/rfc3080.html. Acesso em: 26 maio 2003.

12. SIYAN, K.; HARE, R. C. Internet firewalls and network security. Indianapolis: New Riders Publishing, 1995. 410p. 

13. RSA Laboratories. What is IPsec? Disponível em: 
http://www.rsasecurity.com/rsalabs/
faq/5-1-4.html
. Acesso em: 16 maio 2003.