O presente documento visa auxiliar administradores a compreender os problemas relacionados com sniffing e as possíveis soluções. A ação de Sniffers é, atualmente, um dos principais problemas de segurança. Este FAQ consiste nos seguintes tópicos: O que é sniffer e como ele funciona Como detectar um ataque de um sniffer Como bloquear ataques de sniffer. Criptografia Tecnologias de one-time password Interfaces não promiscuas
O que é sniffer e como ele funciona?
Computadores em rede compartilham canais de comunicação. Isso é, obviamente, muito mais barato que passar um cabo para cada par de computadores e usar um switch (hub) pra comutar as conexões. Neste canais compartilhados, computadores podem receber informações enviadas a outros computadores. A ação de capturar informações destinadas a uma outra máquina é chamada sniffing.
O padrão Ethernet envia um pacote para todas as máquinas em um mesmo segmento. O cabecalho do pacote contem o endereço da máquina destino. Supoe-se que somente a máquina que tenha o endereço contido no pacote receba-o. Diz-se que um computador está em modo promístuo quando o mesmo captura todos os pacotes, independentemente de serem ou não destinados a ele.
Em um ambiente de rede normal,
os nomes e as senhas dos usuários sao passadas atraves da rede em claro, ou
seja, texto não criptografado. Não é dificil, portanto, um intruso utilizando
uma máquina com interface de rede em modo promístuo, obter qualquer senha,
inclusive a do root, usando um sniffer.
NotaTD: O padrão Token Ring também permite modo promístuo.
Como detectar um ataque de um sniffer
Para detectar um dispositivo sniffer que somente coleta dados e não responde a nenhuma solicitacao, é necessario o exame fisico de todas as conexões ethernet e a verificação individual das interfaces.
Um sniffer, rodando em uma máquina, coloca a interface de rede em modo promístuo com o intuito de capturar todos os pacotes de um determindado segmento. Na maioria dos sistemas Unix é possivel detectar uma interface promiscua.
Note que é possivel usar um sniffer em modo não promístuo, porem somente poderao ser capturados os pacotes enderecados para a máquina onde ele está rodando.
Para SunOs, NetBSD, e diversos derivados de BSD Unix systems, o comando
# ifconfig -a mostrará informações relativas a todas as interfaces. lo Link encap:Local Loopback
inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0 UP BROADCAST LOOPBACK RUNNING MTU:2000 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 TX packets:16930 errors:0 dropped:0 overruns:0 eth0 Link encap:10Mbps Ethernet HWaddr 00:80:A8:C3:45:ED inet addr:200.239.53.1 Bcast:200.239.53.255 Mask:255.255.255.0 UP BROADCAST RUNNING PROMISC MTU:1500 Metric:1 ^^^^^^^ RX packets:227622 errors:0 dropped:0 overruns:0 TX packets:282918 errors:0 dropped:0 overruns:0 Interrupt:10 Base address:0x300 A utilização do comando "ifconfig" no DEC OSF/1, IRIX e em alguns outros Unix, requer que o dispositivo seja especificado. Uma maneira de saber o nome deste dispositivo é utilizar o comando # netstat -r que mostrará a seguinte saída: Routing tables Internet: Destination Gateway Flags Refs Use Interface default iss.net UG 1 24949 le0 localhost localhost UH 2 83 lo0 Assim, para testar a interface utiliza-se o comando: # ifconfig le0 le0: flags=8863 inet 127.0.0.1 netmask 0xffffff00 broadcast 255.0.0.1
No Ultrix é possivel detectar o uso de sniffer com os comandos pfstat e pfconfig.
pfconfig mostra quem está rodando o sniffer e o pfstat mostra se a interface está ou não em modo promístuo.
Em sistemas como Solaris, SCO e algumas versoes do Irix, não existe indicação de modo promístuo, não havendo, portanto, maneiras de detectar o uso do sniffer.
Como o volume de informações que trafegam em uma rede tente a ser grande, grande também sera o tamanho do log gerado pelo programa sniffer. Pacotes como o tigger tentam encontrar arquivos de log, com esta característica.
É altamente recomendado o uso da ferramenta lsof (disponível em ftp://coast.cs.purdue.edu/pub/Purdue/lsof) para procurar arquivos de log e programas acessando dispositivos como o /dev/nit (no caso do SunOS).
Não são conhecidos comandos para detectar um IBM PC compativel em modo promístuo.
Bloqueando ataques de sniffer
Hubs ativos e switches enviam um pacote somente para a máquina destino, tornando a ação no sniffer sem efeito. Note que isto somente funciona em circuitos 10 base T.
Criptografia
Fazendo uso de criptografia entre as conexões, os pacotes podem ser capturados, porem não podendo serem decifrados, são inuteis.
NotaTD: Existem nos EUA, atualmente, leis que proibem a exportação de algorítimos de criptografia e restingem a 40 bits o tamanho das chaves para softwares exportados.
ecnologias de one-time password
S/key e outras tecnologias de one-time password tornam sem efeito a ação do sniffer, já que a cada conexão uma nova senha deve ser informada. O uso desta tecnologia permite usar um canal inseguro, por que não existe reutilização de uma mesma senha.
Esta tecnologia é baseada em desafio/resposta e funciona da seguinte maneira: A cada pedido de conexão o usuário recebe um desafio que deve ser informado ao dispositivo de one-time password (normalmente um maquininha semelhante a uma calculadora), que por sua vez devolve a uma resposta, que deverá ser usada como senha, para aquela, e somente para aquela conexão. SecureID, SNK e CryptoCard, por exemplo, usam cartões como máquina de resposta.
S/key está disponível em ftp//:thumper.bellcore.com:/pub/nmh/skey
Outras tecnologias de one-time password usam um cartão que gera, a cada determindado intervalo de tempo (1 minuto, 30 segundos, etc.), uma senha que permite a aquele usuário se conectar naquele instante.
Interfaces não-promiscuas
As interfaces abaixo foram testadas para modo promístuo usando o Gobbler. Caso você encontre alguma destas que funcione em modo promístuo, por favor envie uma mensagem para cklaus@iss.net e ela será removida.
NotaTD: Em determinadas circustâncias,
uma placa em modo promístuo, e um sniffer podem (e muito) auxiliar um
adminstrador a capturar pacotes para resolver problemas da instalação.
IBM Token-Ring Network PC Adapter
IBM Token-Ring Network PC Adapter II (short card)
IBM Token-Ring Network PC Adapter II (long card)
IBM Token-Ring Network 16/4 Adapter
IBM Token-Ring Network PC Adapter/A
IBM Token-Ring Network 16/4 Adapter/A
IBM Token-Ring Network 16/4 Busmaster Server Adapter/A
Em relação as seguintes
placas, existem rumores que elas permitem o modo promístuo, mas a veracidade
destes rumores é duvidosa.
Microdyne (Excelan) EXOS 205
Microdyne (Excelan) EXOS 205T
Microdyne (Excelan) EXOS 205T/16
Hewlett-Packard 27250A EtherTwist PC LAN Adapter Card/8
Hewlett-Packard 27245A EtherTwist PC LAN Adapter Card/8
Hewlett-Packard 27247A EtherTwist PC LAN Adapter Card/16
Hewlett-Packard 27248A EtherTwist EISA PC LAN Adapter Card/32
HP 27247B EtherTwist Adapter Card/16 TP Plus
HP 27252A EtherTwist Adapter Card/16 TP Plus
HP J2405A EtherTwist PC LAN Adapter NC/16 TP
Adaptadores baseados no chipset TROPIC geralmente não suportam modo promístuo. Este chipset é usado na placa Token Ring da IBM. Outros vendedores (notamente 3Com) também usam este chipset. Note que placas com chipset TROPIC com EPROMs especiais, todavia, podem aceitar modo promístuo. Neste caso a placa envia um o aviso "Trace Tool Present"
Em sistemas Unix onde existe a
indicação de modo promístuo, use o seguinte comando para retirar a interface
deste modo:
# ifconfig XXX -promisc
onde XXX é a identificação da interface.
Retirado da Guns Hot Home Page