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
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 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 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.
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.
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.
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.
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.
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.
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.
A utilização de dispositivos não convencionais vem se tornando
popular entre os atacantes. Pela aparência inofensiva que têm, consoles
de videogames (que ultimamente saem de fábrica equipados com suporte à
rede) vêm sendo utilizados em ataques a redes corporativas
. Além disso, nada
impede que um atacante crie seu próprio dispositivo eletrônico capaz de
capturar tráfego da rede, precisando então apenas ter acesso direto ao
meio físico para sua instalação.
Em redes sem fio, utilizar um sniffer é
muito simples, pois basta ao atacante conseguir uma certa proximidade
de seu alvo e utilizar-se de um equipamento que opere na mesma
frequência da rede em questão. Tem sido comum encontrar atacantes
utilizando-se de potentes antenas caseiras (que podem feitas com latas
de batata frita) para capturar tráfego de redes sem fio em grandes
centros comerciais
.
Como se não bastasse a captura do tráfego através do meio de transmissão, um recente estudo mostra que é possível a captura do tráfego de uma rede através da análise de luzes de switchs e hubs a distâncias de até 30 metros [22].
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.
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.
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
.
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
.
Protocolo para tráfego de correio eletrônico. É amplamente utilizado
e tanto autenticação como dados são transmitidos em claro.
Alternativas: Tunelamento sob SSL e utilização de mensagens
criptografadas.
Protocolo de envio de correio eletrônico. Todo o tráfego é
transmitdo em claro.
Alternativa: Tunelamento sob SSL.
Um dos primeiros protocolos a ser criado para logins remotos, o
telnet ainda hoje é utilizado e apresenta um grande risco uma vez que
todo o tráfego (o que inclui nome de usuários e senhas) trafega em
claro.
Alternativa: SSH.
Provê um conjunto de informações para o gerenciamento de usuários,
máquinas e serviços de uma rede. Permite o livre acesso a nomes de
usuários, senhas criptografadas e serviços disponíveis. É uma grande
fonte de informação para atacantes e é passível de ataques de
dicionário (força bruta).
Alternativas: Kerberos, LDAP.
Dada sua popularidade, é amplamente utilizado, servindo como camada
intermediária na implementação de inúmeros serviços a usuários. Nenhum
tipo de criptografia é fornecido pelo protocolo, o que expõe todo o
tráfego.
Alternativa: HTTPS (HTTP + SSL)
Protocolo para transferência de arquivos. Inclui autenticação que,
assim como todo o tráfego, é transmitida em claro.
Alternativa: SSH
Protocolo de autenticação que permite a reutilização de credenciais de login ("Single Sign On"). A autenticação e a troca de chaves é feita de forma criptografada. Se não cuidadosamente implementado, é passível de ataques de sincronia e de dicionário (força bruta), como mostrado em [4].
Sistema de controle de versões amplamente utilizado para o
gerenciamento de código fonte e documentação de projetos. Seu protocolo
de comunicação nativo (pserver) não é
criptografado, e o método de autenticação é extremamente simples.
Alternativa: Tunelamento sob SSH
Protocolo para conversas via rede. Implementado sem grandes preocupações com segurança, transmite todo o tráfego em claro, e é utilizado como grande fonte de senhas e informações relevantes para atacantes, como alertado em [7]. Este protocolo deve ter sua utilização evitada quando houver a necessidade de transmissão de dados sensitivos.
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.
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