Introdução
Basicamente um packet sniffer é um programa que
captura os pacotes que estão trafegando na rede e os
exibe na tela ou armazena em disco para uma análise
posterior. Apesar desta aparente mal intencionada
função, as primeiras ferramentas de sniffing foram
criadas com o objetivo de ajudar na administração
de redes.
O que é um sniffer?
Assim como outras ferramentas que acabaram virando um
interessante brinquedo para qualquer candidato a invasor, o
sniffer já era transparente aos dispositivos da rede (um
port scanner por exemplo pode ser registrado nos roteadores),
quase impossível de se detectar e acabou se tornando uma
das mais utilizadas ferramentas com propósitos não
éticos.
Mas como um programa destes funciona e consegue ter este
tipo de acesso privilegiado à rede? Para entender é
necessário lembrar como as redes Ethernet funcionam.
Quem já fez algum curso/disciplina de redes locais
conhece a forma como os adaptadores Ethernet acessam o meio
físico, através do CSMA/CD (Carrier Sense Multiple
Access/Collision Detect), ou seja, todos os adaptadores
competem entre si para transmitir dados e quando dois ou mais
tentam fazê-lo ao mesmo tempo há uma colisão,
todos ficam calados por um tempo para depois
transmitirem.
E por todos usarem o mesmo meio físico para
transmitir, por consequência, o mesmo é usado
também para receber. Assim cada adaptador fica
"escutando" o meio físico (no nosso caso o cabo),
carregando cada frame que aparece por lá, comparando o
endereço de destino deles, estampado no início de
cada pacote, com o endereço gravado na sua ROM e
tratando-o. Estes sendo iguais passa adiante (para a camada
acima, seja ela IP, IPX, etc...), senão o frame é
descartado e começa-se tudo de novo. Este endereço
é o MAC (Media Access Control), também conhecido
como endereço de hardware, um número único que
identifica cada adaptador gravado diretamente pelo fabricante
(as operações se baseiam nessa unicidade).
Quando se utiliza um programa de sniffing o adaptador tem
seu funcionamento alterado passando a funcionar no chamado
"modo promíscuo", ou seja, independente do endereço
de destino do frame ser igual ou não ao da placa, ele
é lido como se fosse dele. É o equivalente ao
grampo telefônico, só que em escala muito maior
pois, dependendo da forma como a rede foi montada, todos que
estão ligados nela vão estar vulneráveis.