Tipos de IDSs

Por convenção da literatura, para os tópicos abaixo, não há diferenciação entre IDS e IPS. Utiliza-se apenas a nomenclatura IDS. Todavia, todos os sistemas abaixo podem ser tanto ativos quanto passivos. O passivo funciona sobre a base do IDS ao passo que o ativo funciona sobre a base do IPS.
O IDS pode ser classificado de acordo com o local onde a detecção é realizada e o método de detecção que é utilizado. A seguir são apresentados os principais tipos de IDS.


Network IDS (NIDS) vs Host IDS (HIDS)

O Sistema Hospedeiro de Detecção de Intrusão (em inglês, Host Intrusion Detection System - HIDS) é uma classe de IDS cujo foco encontra-se em examinar ações específicas com base nos hospedeiros, como por exemplo os arquivos que são acessados, aplicativos utilizados, ou informações de logs.

Já o Sistema de Rede de Detecção de Intrusão (em inglês, Network Intrusion Detection System - NIDS) é uma classe de IDS que foca em analisar o fluxo de informações que transitam pela rede, buscando encontrar padrões comportamentais suspeitos. Um sistema NIDS geralmente é implementado em locais estratégicos da rede, como antes ou logo após o firewall, em sub-redes importantes dentro de uma mesma rede, em áreas DMZ para evitar que usuários dentro dessa área tentem acessar a rede corporativa.

Exemplo de uma topologia de rede com um IDS colocado logo depois de um firewall externo.

Figura 3.1: Exemplo de uma topologia de rede com um IDS colocado logo depois de um firewall externo.
Fonte: http://itm455.itmbsu.net/Notes/L8_NetworkSec.htm

Existem vantagens e desvantagens quanto ao uso de ambos. A principal vantagem do HIDS correlaciona-se à restrição e controle local. O HIDS monitora o comportamento do sistema, tráfego de rede, estado do sistema operacional, informações armazenadas, e controle do hardware. Através dessas informações, o HIDS consegue identificar casos em que um software esteja realizando uma atividade que foge ao seu funcionamento, como alterar um arquivo. Uma vez detectado essa ação maliciosa, o sistema HIDS pode alterar as permissões, mover o arquivo para um local seguro ou pô-lo em quarentena. Essas alterações só serão feitas de forma automática se for um HIDS ativo. Outra vantagem do HIDS é sua capacidade de inspecionar o tráfego criptografado do computador, já que, uma vez que o pacote chegue ao computador, ele é descriptografado e então, analisado pelo sistema.

Sua principal desvantagem é não poder ser centralizado, ou seja, cada computador precisa de um sistema HIDS, consumindo recursos e adicionando latência ao tráfego de rede. Sistemas HIDS também são mais suscetíveis a ataques que NIDS por estarem dentro do host e geralmente possuírem privilégios de administrador.

A forma de implementar um IDS centralizado é usando um NIDS. As vantagens do NIDS encontram-se em analisar todo o fluxo de informações de uma rede de computadores, monitorando pacotes, serviços, portas, e requisições, bem como prover maior segurança, já que normalmente roda em uma máquina (física ou virtual) específica e configurada para aquela aplicação. A principal desvantagem de um sistema NIDS é que ele é incapaz de analisar o tráfego criptografado, como é o caso de VPNs, e pode ter limitações para analisar redes com grande fluxo de dados. Além disso, o NIDS também não consegue analisar algumas atividades de host, como programas e processos, tornando mais fácil enganar o IDS e fazer parecer que o tráfego naquela máquina é legítimo.

É importante ressaltar que ambos os sistemas se complementam e não são intercambiáveis, o ideal é a utilização dos dois, especialmente em redes corporativas com grande fluxo de dados.


Tipos de detecção


Anomalia

Um sistema baseado em anomalia é um sistema que monitora as ações que ocorrem numa rede e, através de técnicas de inteligência computacional (como, por exemplo, redes neurais e classificadores estatísticos), aprende o comportamento padrão do sistema. Com treinos específicos e a definição dos padrões obtida pode-se monitorar a rede e, dependendo do tráfego dos pacotes e uso, é possível identificar as atividades da rede e classificá-las como normais ou anômalas. O maior problema com esta metodologia é que deve-se primeiro definir o que é normal. Se durante a fase de aprendizagem a rede for vítima de um ataque não identificado, os sistemas IDS baseados em anomalias irão interpretar esse tráfego malicioso como normal e nenhum alarme será acionado na próxima vez que ocorrer um ataque similar.

Dentro dos IDS baseados em anomalia, podemos dividir os sistemas ainda em duas categorias diferentes. Alguns sistemas têm definições codificadas de padrões normais de tráfego e, neste caso, podem ser considerados sistemas baseados em heurística. Outros sistemas são construídos para aprender o comportamento normal do tráfego; entretanto, o desafio com estes sistemas é eliminar a possibilidade de classificar incorretamente o comportamento anormal como normal, ou seja, reduzir o número de falsos negativos. Além disso, se o padrão de tráfego que está sendo aprendido for assumido como normal, o sistema deve lidar com a forma de diferenciação entre desvios permitidos e os desvios não permitidos, ou que representam tráfego baseado em ataque.

A técnica utilizada por sistemas baseados em anomalias também é referida como análise de comportamento de rede ou análise heurística. Um exemplo: NADA. NADA, do inglês Network Anomaly Detection Algorithm, é um algoritmo de detecção de anomalia em rede capaz de lidar com um grande fluxo de IPs, escalável, e com critérios variados. O algoritmo funciona primeiro detectando e classificando a anomalia em questão, e depois identificando todos os fluxos anômalos.

O algoritmo trata as anomalias avaliando qualquer tipo de variação em algum dos seus critérios baseado, baseado numa escala de tempo e na sub-máscara agregada do IP (por exemplo, máscara /32). Uma vez identificado uma variação significativa, ela pode ser então associada à uma anomalia. Esse algoritmo é então executado recursivamente, e a cada nova iteração, ele utiliza um nível diferente do fluxo do tráfego, além de considerar os campos do cabeçalho IPs diferentes. Em cada nova iteração, os pacotes já identificados em fluxos anteriores são então re-analisados comparando-os às assinaturas utilizando um método comportamental.


Assinatura

Um IDS baseado em assinaturas utiliza um banco de dados com os ataques já conhecidos e compara-os com as ações, utilizando algoritmos estatísticos para reconhecer algum desses ataques. Nesse caso, é de extrema importância que o banco de dados com as assinaturas esteja sempre atualizado para garantir a segurança do ambiente. Uma assinatura é um padrão do que buscar no fluxo de dados. Alguns exemplos de assinatura são:

  • Tentativa de conexão a um endereço de IP reservado. Facilmente identificado verificando o campo de endereço de origem em um cabeçalho IP.
  • Pacote com uma combinação de flags TCP ilegal. Pode ser encontrado comparando flags definidos em um cabeçalho TCP com boas e más combinações conhecidas de flags.
  • E-mail contendo um vírus em particular.
  • Ataque de negação de serviço em um servidor que ofereça um serviço específico, causado pelo mesmo comando sendo repetido milhares de vezes. Um tipo de assinatura para esse ataque seria guardar quantas vezes um comando foi repetido e alertar quando esse número passa de um certo limite.
  • Ataque de acesso de arquivos em um servidor FTP, emitindo comandos de acesso a arquivos e de listagem de diretório sem fazer login. Uma assinatura de rastreamento de estado poderia ser desenvolvida, monitorando o tráfego para um login FTP bem-sucedido e alertando se determinados comandos fossem emitidos antes da autenticação do usuário.

Enumerando essas possibilidades é possível perceber que as assinaturas são variadas, podendo ir das extremamente simples, como checar o valor de um campo de cabeçalho de um pacote, às mais complexas, que necessitam que o estado de uma conexão seja acompanhado ou que uma análise extensiva de protocolo seja realizada.

Na maioria dos casos, o padrão é comparado apenas se o pacote suspeito estiver associado a um determinado serviço ou, mais precisamente, destinado a uma determinada porta. Esta técnica de correspondência ajuda a diminuir a quantidade de inspeção feita em cada pacote. No entanto, torna mais difícil para o sistema lidar com protocolos que não residem em portas bem definidas, como cavalos de Tróia (Trojan) e seu tráfego associado, que podem ter suas características alteradas com facilidade, como por exemplo a porta de saída usada. Na fase inicial de incorporação de IDS ou IPS baseados em assinatura, antes que as assinaturas estejam sintonizadas, pode haver muitos falsos positivos (gerando alertas que não representam ameaças para a rede). Depois que o sistema é ajustado a parâmetros de rede específicos, haverá menos falsos positivos do que com a abordagem baseada em políticas.

Em um IDS, o banco de dados de assinatura diz ao sistema que tipo de padrões de tráfego de rede normalmente correspondem a um ataque. Existem diferentes banco de dados de assinaturas disponíveis com diferentes propósitos, abordando diferentes tipos de ataque, e voltados especificamente para diferentes tipos de IDS. Embora o IDS baseado em assinatura seja muito eficiente em detectar ataques conhecidos, ele, como o software antivírus, depende de receber atualizações regulares de assinaturas para manter contato com as variações nas técnicas de intrusão utilizadas. Desta forma, um IDS baseado em assinatura é somente tão bom quanto o banco de dados de assinaturas empregado. Em certos casos, como no SNORT, a Sourcefire, empresa por trás da solução, disponibiliza um conjunto de regras oficial aos usuários do Snort em tempo real (para assinantes pagos) ou com um atraso de 30 dias (sem custo).

Alguns exemplos de bancos de dados mais conhecidos são o dataset de detecção de intrusão da ADFA, para HIDSs, e os arquivos públicos PCAP da NetReSec, para NIDSs. Os datasets do Cyber Research Center também são conhecidos por terem um log de ataques mais sofisticados.