Projeto Sniffdet - Detector Remoto de Sniffers

O texto desta página é parte do artigo "Um Sistema para a Detecção Remota de Sniffers em Redes TCP/IP", apresentado como trabalho de graduação do curso de Bacharelado em Ciência da Computação da Universidade Federal do Paraná. Versões em PDF e PS estão disponíveis no link acima.

A implementação do projeto está disponível em http://sniffdet.sourceforge.net/.

Copyright (C) 2002-2003 Ademar de Souza Reis Jr.
Copyright (C) 2002-2003 Milton Soares Filho


Subsections



Sniffers

Sniffers[*] são ferramentas utilizadas para capturar e opcionalmente analizar tráfego de rede. Estes são tão antigos quanto as redes de computadores e sua função originalmente foi a de ajudar desenvolvedores de protocolos e administradores de rede a solucionarem problemas, diagnosticar falhas e levantar dados estatísticos.

Um sniffer pode ser utilizado de diversas maneiras e com diversos propósitos, mas seu princípio de funcionamento continua sendo o mesmo: capturar e análizar tráfego de rede sem interferir no funcionamento desta. A arquitetura de um sniffer pode ser vista na figura 2.1. As mais variadas ferramentas se encaixam no conceito de sniffers. Entre elas, existem as benéficas, como analisadores de tráfego, utilizados para estudo e depuração de protocolos (como por exemplo o Ethereal [16] e o tcpdump [38]), detectores de intrusão, que procuram por assinaturas de ataques no tráfego da rede (como o Snort [37]) e as que geralmente são utilizados por atacantes ou usuários mal intencionados com o objetivo de capturar senhas e informações relevantes a partir do tráfego da rede.

A topologia da rede, a interface de comunicação e sua operação, os protocolos utilizados e o comportamento dos usuários são fatores importantes ao analisar-se o potencial de uso de um sniffer, principalmente quando o objetivo é a captura de informações alheias. Esses fatores são discutidos no decorrer deste capítulo.

Redes de Difusão (Meio Compartilhado)

Redes de difusão são caracterizadas pelo compartilhamento do meio de transmissão de dados, que é a camada enlace da rede. Seu uso é comum em configurações de pequeno porte, como redes domésticas e de pequenos laboratórios e escritórios, já que seu custo de implementação é baixo. Um caso particular de rede de difusão é o das redes sem fio, comumente chamadas de ``wireless''. Nestas, o compartilhamento do meio - espaço físico - é aberto e de difícil limitação.

Topologias como ``estrela'' e ``barramento'' são exemplos típicos de redes de difusão. Em redes que seguem o padrão Ethernet, extremamente popular e presente em grande parte das instalações de redes locais, são utilizados hubs ou cabos coaxiais para a implementação de redes de difusão.

Redes Comutadas

Redes comutadas por sua vez fazem uso de um enlace dedicado para cada máquina ligada à rede. O tráfego é distribuído com base no endereço de destino dos pacotes através de um comutador (um ``switch'' no caso de redes Ethernet). Seu desempenho é superior quando comparado às redes de difusão mas seu custo de implementação é mais alto, dada a necessidade de hardware especializado.

Modos de Operação da Interface de Rede

No modo de operação normal, uma interface de rede deve descartar o tráfego de rede que não é a ela direcionado. É possível alterar o modo como uma interface de rede trabalha e fazer com que todo o tráfego que passe pelo meio de transmissão seja capturado, não importando a quem ele é destinado. Tal modo é chamado de ``modo promíscuo''. Nas interfaces de comunicação que seguem o padrão Ethernet, sua implementação faz parte da especificação e geralmente pode ser habilitado através de comandos de software.

Uma máquina deve capturar apenas o tráfego a ela endereçado, descartando os pacotes alheios. Essa seleção de pacotes geralmente é feita em nível de hardware ou firmware, evitando assim que as camadas superiores da pilha de rede, implementadas em software, tenham que se preocupar com tal seleção.

Um sniffer pode ser utilizado com a interface de rede em qualquer modo de operação. Sua eficiência em recolher dados porém é maior quando a interface está em modo promíscuo. Uma máquina com a interface de rede em modo promíscuo conectada a uma rede de difusão consiste no cenário ótimo para um sniffer, na qual todo o tráfego na rede pode ser capturado e analisado.

Utilização em Ataques

Como ferramenta poderosa que é, não demorou para que usuários mal intencionados começassem a utilizar sniffers para a coleta de dados privilegiados, transformando-os numa das principais ferramentas utilizadas em ataques a redes de computadores. Um sniffer tem o potencial de revelar dados críticos de uma organização tais como senhas, números de cartões de crédito, correspondências, documentos, enfim, toda e qualquer informação que trafegue de forma desprotegida pela rede.

Ataque Inicial

Normalmente, o processo de invasão de uma rede alheia começa quando o atacante obtém algum tipo de privilégio de administrador em uma máquina dessa rede. Isso pode ser conseguido de diversas maneiras, como com a exploração de vulnerabilidades remotas em software da rede, uso de vírus, acesso físico irrestrito à máquinas da rede ou ao meio transmissor de dados e, muito comumente, através da utilização de técnicas de ``engenharia social'' [32,43], nas quais o atacante obtém acesso ou informações relevantes sobre o sistema através de contato pessoal, muitas vezes fazendo-se passar por outra pessoa.

Têm sido relatados os mais inesperados casos de ataques de engenharia social, como por exemplo atacantes que se passam por funcionários da empresa (mesmo que um inocente faxineiro), analistas de suporte, fiscais de segurança, professores, etc. Truques telefônicos e conversas através de meios eletrônicos em geral são fontes comuns de ataques de engenharia social [7].

Estatísticas mostram que agentes já familiarizados com o ambiente da rede, como os próprios funcionários de uma empresa ou pessoas com acesso físico irrestrito são as principais portas de entrada no ataque a uma rede. Em pesquisa feita entre empresas brasileiras no primeiro semestre de 2001, 53% dos entrevistados apontaram funcionários insatisfeitos como a maior ameaça à segurança da informação, enquanto que, dos ataques registrados, cerca de 34% se originam de funcionários, fornecedores ou prestadores de serviço [33].

Uma vez que um atacante tenha privilégios de administrador em uma máquina conectada à rede, a instalação de um sniffer e outras ferramentas de ataque (como os chamados rootkits[*]) é muito simples e o comprometimento das informações passa a ser uma mera questão de tempo.

Anatomia de Ataques com o Uso de Sniffers

Existem diversos cenários e topologias nas quais sniffers podem ser utilizados para a captura de informações alheias. Técnicas de proteção e evasão desses ataques são discutidas na próxima seção.

Ataques a Redes de Difusão

Redes de difusão apresentam o cenário ótimo para um sniffer cujo objetivo seja a captura de tráfego alheio. Uma vez que este tráfego é difundido por todo o barramento, um sniffer localizado em qualquer ponto da rede é capaz de capturá-lo por completo simplesmente utilizando-se de uma interface de rede em modo promíscuo. Tal cenário é exemplificado na figura 2.2.


Ataques a Redes Comutadas

Uma vez que em redes comutadas o meio não é compartilhado entre todas as máquinas, a localização do sniffer torna-se um fator muito importante. A instalação de um sniffer em um servidor ou roteador consite no cenário ideal, pois este pode capturar o tráfego ali canalizado, como exemplificado na figura 2.3, onde o sniffer está no mesmo enlace que uma máquina importante.

Nessas redes, através da utilização de técnicas que visam ``enganar'' diversos protocolos, é possível a um atacante capturar até todo o tráfego da rede mesmo tendo acesso apenas a uma máquina. Neste cenário, o atacante tenta enganar as máquinas da rede de forma que o tráfego seja redirecionado para um local onde possa ser capturado. Agindo como um proxy, o atacante mantém o fluxo normal da rede, evitando que os usuários percebam sua presença. Uma análise e exemplos deste tipo de ataque podem ser vistos em [40].

A figura 2.4 exemplifica o caso em que uma máquina é enganada, tendo seu tráfego roteado através da máquina de um atacante.

Casos Particulares

Evitando o uso Efetivo de Sniffers

Existem várias maneiras de se evitar o uso efetivo de um sniffer por parte de um atacante. Embora não exista uma ``fórmula mágica'' ou método totalmente eficaz, existem várias técnicas que podem ser utilizadas na luta contra os atacantes.

O uso de canais de comunicação criptografados, embora não evite o uso de sniffers, é a técnica mais eficaz para a proteção de informações na rede, pois torna o tráfego incompreensível a quem não conheça a chave para descriptografia. O uso de hardware especializado, técnicas de detecção (remota e local) e intenso trabalho de administração mostram-se efetivos para vários casos, mas nem sempre são confiáveis.

Abaixo fazemos uma análise de várias dessas técnicas, apontando seus prós e contras.

Limitação da Visibilidade do Tráfego

Limitar a visibilidade do tráfego evitando que dados não pertinentes a determinada máquina estejam visíveis a outras é uma maneira simples e eficaz para diminuir a eficiência de um sniffer. O modo mais comum de implementar tal técnica é através da utilização de hardware especializado (como switches), configurações de redes onde haja separação entre as partes não relacionadas e utilização de rotas bem implementadas.

A tarefa de limitar a visibilidade do tráfego exige planejamento, hardware especializado e intenso trabalho de administração.

Utilização de Interfaces que Não Suportem Modo Promíscuo

Como já foi visto, a utilização de interfaces em modo promíscuo aumenta em muito o potencial de captação de um sniffer. Frente a isso, a utilização de interfaces que não operem nesse modo consiste numa boa maneira de limitar a utilidade de potenciais sniffers na rede, a não ser que sejam utilizados em roteadores, por exemplo, onde a utilização do modo promíscuo não é necessária.

Embora pareçam de grande utilidade, interfaces com essa característica não alcançaram sucesso quando colocadas no mercado. A principal razão para tal insucesso é o fato de que, além de fugir da especificação dos padrões do mercado há uma consequente perda de funcionalidade[*].

Existem contudo interfaces cujo driver é problemático e não funciona em modo promíscuo. Esse fator é de pouca relevância uma vez que nada impede que um atacante crie e utilize seu próprio driver após conseguir privilégios de administrador em uma máquina, mas pode ser levado em conta em casos muito particulares, como a implementação de kernels monolíticos ou com camadas extras de segurança[*].

Utilização de Criptografia

A solução mais eficiente para o problema de acesso indevido a dados é torná-los ilegíveis ou inválidos para o atacante que os consiga capturar. Tal objetivo pode ser alcançado através da utilização de protocolos e canais criptografados - como túneis e VPNs [19] - e outras técnicas de criptografia, como extensamente discutido em [35]. É importante lembrar que embora seja um meio eficiente de garantir o sigilo das informações trafegadas, mesmo protocolos considerados seguros, se não bem implementados, podem ser quebrados com pouco ou nenhum esforço [1,24].

Protocolos como SSL (Secure Socket Layer) [8,12] e SSH (Secure SHell) [3] permitem o tunelamento de canais de comunicações de modo que todo o tráfego seja criptografado, e consistem em boas soluções para a implementação de redes seguras.

A utilização de protocolos não criptografados ainda é prática comum. Embora existam alternativas e soluções já há muito tempo disponíveis, o custo de implementação e manutenção adicional que estes acarretam os tornam proibitivos para aplicações em redes simples ou que tenham grande demanda de tráfego. Como mostrado em [2], implementar a utilização de canais criptografados utilizando SSL, pode exigir até o dobro de capacidade de processamento de um servidor ou cliente.

Uma breve lista de protocolos e suas principais características relacionadas à segurança do tráfego de informações, assim como as alternativas existentes é mostrada abaixo. Os detalhes sobre o funcionamento e arquitetura de cada protocolo não estão no escopo deste trabalho. Para isso recomendamos a consulta da documentação dos projetos que implementem tais protocolos ou seus respectivos RFCs [*].

O uso de canais de comunicação criptografados definitivamente se mostra como a melhor solução para o problema da visibilidade dos dados, já que os torna incompreensíveis a terceiros. Com o uso de criptografia, consegue-se anular boa parte da utilidade de um sniffer que esteja à procura de tráfego relevante. Porém a substituição de sistemas funcionais, a necessidade de maior capacidade de processamento e, de um modo geral, a configuração adicional associada à utilização de técnicas de criptografia - como a geração de certificados e chaves por parte do administrador - têm impedido sua ampla utilização.

Detecção

Mesmo em redes nas quais protocolos criptografados sejam utilizados e o tráfego seja bem delimitado, ainda é grande a quantidade de informações que um atacante munido de um sniffer consegue capturar. A topologia da rede, a versão dos softwares em execução, a carga e o número de usuários, além de diversos outros dados têm um valor substancial na formulação de ataques sofisticados.

A simples existência de um sniffer não autorizado em qualquer ponto da rede é um forte indício de que esta está sob a mira de atacantes ou usuários mal intencionados, independentemente da qualidade e quantidade dos dados que estes possam capturar.

Sendo assim, vê-se a necessidade da utilização de métodos que detectem a presença de sniffers e a ocorrência de incidentes em geral que sejam suspeitos. Tais métodos são discutidos no próximo capítulo.

Ademar de Souza Reis Jr. 2003-03-11