Вы находитесь на странице: 1из 8

Tutorial WireShark

Além do Nessus (que vimos em tutoriais anteriores), outro aliado importante para
qualquer administrador de redes preocupado com a segurança é o Wireshark, o bom e
velho Ethereal, que mudou de nome em Junho de 2006. Ele é um poderoso sniffer, que
permite capturar o tráfego da rede, fornecendo uma ferramenta poderosa para detectar
problemas e entender melhor o funcionamento de cada protocolo.

Assim como o Nessus, ele pode ser usado tanto para proteger seu sistema quanto para
roubar dados dos vizinhos, uma faca de dois gumes. Devido a isso, ele é às vezes visto
como uma "ferramenta hacker", quando na verdade o objetivo do programa é dar a você
o controle sobre o que entra e sai da sua máquina e a possibilidade de detectar
rapidamente qualquer tipo de trojan, spyware ou acesso não autorizado.

Embora ele geralmente não venha instalado por padrão, a maioria das distribuições
disponibilizam o pacote "wireshark" (ou "ethereal", de acordo com o nível de
atualização). Nas distribuições derivadas do Debian, você pode usar o apt-get, como de
praxe.

Além das versões Linux, estão disponíveis também versões para Windows 2000, XP e
Vista. Você pode baixá-las no http://www.wireshark.org/.

No caso do Linux, é possível instalar também a partir do pacote com o código fonte,
disponível na página de download (opção preferida por quem faz questão de ter acesso à
ultima versão do programa). O pacote é instalado com os conhecidos "./configure",
"make" e "make install". Como ele depende de um número relativamente grande de
compiladores e de bibliotecas, muitas delas pouco comuns, você quase sempre vai
precisar instalar alguns componentes adicionais manualmente.

Uma forma simples de instalar todos os componentes necessários para a compilação


(dica útil não apenas no caso do Wireshark, mas para a instalação de programas a partir
do código fonte de uma forma geral) é usar o "auto-apt", disponível através do apt-get.
Para usá-lo, instale o pacote via apt-get e rode o comando "auto-apt update":

# apt-get install auto-apt


# auto-apt update

A partir daí, você pode rodar os comandos de compilação através dele, como em:

$ tar -zxvf wireshark-0.99.1pre1


$ cd wireshark-0.99.1pre1
$ auto-apt run ./configure
$ auto-apt run make
$ su <senha>
# make install

Durante a instalação, o auto-apt usa o apt-get para instalar os componentes necessários,


como neste screenshot:
Depois de instalado, abra o programa usando o comando "wireshark" (ou "ethereal",
de acordo com a versão instalada). O Wireshark é um daqueles programas com tantas
funções que você só consegue aprender realmente usando. Para começar, nada melhor
do que capturar alguns pacotes. Clique em "Capture > Start":

Aqui estão as opções de captura. A primeira opção importante é a "Capture packets in


promiscuous mode", onde você decide se quer capturar apenas os pacotes endereçados à
sua própria máquina, ou se quer tentar capturar também pacotes de outras máquinas da
rede. Isso é possível pois os hubs burros apenas espelham as transmissões, enviando
todos os pacotes para todas as estações.

O endereço MAC do destinatário é incluído no início de cada frame enviado através da


rede. Normalmente, a placa escuta apenas os pacotes destinados a ela, ignorando os
demais, mas, no promiscuous mode ela passa a receber todos os pacotes,
independentemente de a qual endereço MAC ele se destine. Os switches e hub-switches
são mais discretos, encaminhando o tráfego apenas para o destinatário correto, mas a
maior parte dos modelos mais baratos são vulneráveis a ataques de MAC flooding e
ARP poisoning, como veremos a seguir.

Em seguida, você tem a opção "Update list of packets in real time". Ativando esta
opção, os pacotes vão aparecendo na tela conforme são capturados, em tempo real. Caso
contrário, você precisa capturar um certo número de pacotes para só depois visualizar
todo o bolo.

Mais abaixo estão também algumas opções para interromper a captura depois de um
certo tempo, ou depois de capturar uma certa quantidade de dados. O problema aqui é
que o Wireshark captura todos os dados transmitidos na rede, o que (em uma rede local)
pode rapidamente consumir toda a memória RAM disponível, até que você interrompa a
captura e salve o dump com os pacotes capturados em um arquivo.

Dando o OK, será aberta a tela de captura de pacotes, onde você poderá acompanhar o
número de pacotes capturados:

Na tela principal, temos a lista dos pacotes, com várias informações, como o remetente
e o destinatário de cada pacote, o protocolo utilizado (TCP, FTP, HHTP, AIM,
NetBIOS, etc.) e uma coluna com mais informações, que incluem a porta TCP à qual o
pacote foi destinado.
Os pacotes que aparecem com um micro da rede local como emissor e um domínio ou
IP da Internet como destinatário incluem requisições, upload de arquivos, e-mails
enviados, mensagens de ICQ e MSN e, em muitos casos, também senhas de acesso. Os
pacotes provenientes de micros da Internet são respostas à estas requisições, incluindo
páginas web, e-mails lidos, arquivos baixados e, assim por diante. Através do sniffer, é
possível capturar todo tipo de informação que trafegue de forma não encriptada pela
rede.

Clicando sobre um dos pacotes e, em seguida, no "Follow TCP Stream", o Ethereal


mostrará uma janela com toda a conversão, exibida em modo texto.

A maior parte do que você vai ver serão dados binários, incluindo imagens de páginas
web e arquivos diversos. Mesmo o html das páginas chega muitas vezes de forma
compactada (para economizar banda), novamente em um formato ilegível. Mas,
garimpando, você vai encontrar muitas coisas interessantes, como, por exemplo,
mensagens (MSN e ICQ) e e-mails, que, por padrão, são transmitidos em texto puro.
Usando a opção "Follow TCP Stream", é possível rastrear toda a conversa:

Como disse anteriormente, o Wireshark pode ser usado também pelo lado negro da
força. Se você estiver em uma rede local, com micros ligados através de um hub ou
através de uma rede wireless, outro usuário pode usá-lo para capturar todas as suas
transmissões.

Isto é extremamente perigoso. Qualquer um que tenha a chance de plugar um notebook


na rede ou colocá-lo dentro da área de cobertura de sua rede wireless, poderá capturar
dados e senhas suficientes para comprometer boa parte do sistema de segurança da sua
empresa. Apenas conexões feitas através do SSH e outros programas que utilizam
encriptação forte estariam a salvo.

Naturalmente, além de alguém de fora, existe a possibilidade de um dos seus próprios


funcionários resolver começar a brincar de script kiddie, pregando peças nos outros e
causando danos. Como vimos, isso não requer muita prática. Enfim, a menos que você
esteja em uma simples rede doméstica, onde exista uma certa confiança mútua, utilizar
um hub burro é simplesmente um risco grande demais a correr.

Ao utilizar um hub-switch, o risco é um pouco menor, já que, por default, os pacotes


são enviados apenas às portas corretas. Entretanto, muitos sistemas são vulneráveis a
ataques de ARP poisoning, sem falar dos ataques de MAC flooding, que permitem
burlar a proteção. Vamos então a uma explicação mais detalhada de como eles
funcionam.

No ARP poisoning, o micro do atacante envia pacotes com respostas forjadas para
requisições ARP de outros micros da rede. O protocolo ARP é utilizado para descobrir
os endereços MAC dos demais micros da rede, já que os switches não entendem
endereços IP. Esses pacotes forjados fazem com que os outros micros passem a enviar
seus pacotes para o micro do atacante, que é configurado para capturar as transmissões e
retransmitir os pacotes originais para os destinatários corretos.

A rede continua funcionando normalmente, mas agora o atacante tem chance de logar
todo o tráfego, usando o Wireshark ou outro sniffer. Felizmente, o Wireshark também
pode ser usado para perceber as anormalidades na rede e chegar até o espertinho.

Os ataques de MAC flooding, por sua vez, tem como alvo o switch da rede e trabalham
dentro de um princípio bastante simples. O switch possui uma área limitada de memória
para armazenar a tabela com os endereços MAC dos micros da rede (que permite que
ele encaminhe as transmissões para as portas corretas), de forma que, ao receber um
grande número de pacotes com endereços MAC forjados, a tabela é completamente
preenchida com os endereços falsos, não deixando espaço para os verdadeiros.

Nessa situação, existem apenas duas opções: ou o switch simplesmente trava,


derrubando a rede, ou abandona o uso da tabela de endereços e passa a trabalhar em
modo failopen, onde os frames são simplesmente retransmitidos para todas as portas, da
mesma forma que um hub burro, permitindo que o atacante capture todo o tráfego da
rede (até que o switch seja reiniciado).

Como switches que travam não são uma boa propaganda, os fabricantes normalmente
utilizam a segunda opção, o que faz com que a maioria dos switches baratos e quase
todos os hub-switches sejam vulneráveis a esse tipo de ataque.

Uma das ferramentas mais usadas é o macof, um pequeno utilitário que faz parte da
suíte dsniff (que roda sobre o Linux), cujo código fonte está disponível no:
http://www.monkey.org/~dugsong/dsniff/

O dsniff também pode ser encontrado nos repositórios de muitas distribuições, o que
facilita a instalação. Nas distribuições derivadas do Debian, você pode instalá-lo via apt-
get:

# apt-get install dsniff

Uma vez que o dsniff foi instalado, usar o macof é bastante simples: basta especificar a
interface de saída, usando a opção "-i", e especificar o número de pacotes forjados a
serem enviados, usando a opção "-n", como em:

# macof -i eth0 -n 100000

A maioria dos hub-switchs são capazes de armazenar entre 1000 e 8000 endereços
MAC na memória, de forma que bombardeando o hub-switch com 100000 endereços
MAC diferentes (o que demora cerca de um minuto e meio em uma rede de 100
megabits) você consegue chavear qualquer aparelho vulnerável para modo failopen. A
partir daí, basta lançar o Wireshark e passar a capturar todo o tráfego da rede. Note que,
em alguns casos, rodar o comando vai fazer o switch travar, derrubando toda a rede até
que você o reinicie manualmente, o que nos modelos mais simples é feito
desconectando e reconectando o cabo de energia.

O dsniff inclui também um utilitário para ARP poisoning, o arpspoof. Ao usá-lo, você
deve especificar a interface de rede local e também o endereço IP do host de destino dos
pacotes que você deseja capturar. Especificando o endereço do gateway da rede (o uso
mais comum), você pode capturar todos os pacotes destinados à Internet.

Para usá-lo, o primeiro passo é ativar o encaminhamento de pacotes na configuração do


Kernel, o que é feito usando o comando abaixo:

# echo 1 > /proc/sys/net/ipv4/ip_forward

A partir daí, você pode ativar o arpspoof, especificando o endereço de destino dos
pacotes que deseja capturar, como em:
# arpspoof -i eth0 192.168.1.1

Com isso, o arpspoof passará a enviar pacotes de broadcast para toda a rede, avisando
todos os micros que o novo endereço MAC do "192.168.1.1" é o endereço da sua
máquina. Isso fará com que ela passe a receber o tráfego destinado a ele, permitindo que
você o capture usando o Wireshark.

Naturalmente, o tráfego não poderia simplesmente ser desviado para a sua máquina,
caso contrário, os pacotes deixariam de ir até o gateway da rede e os micros não
conseguiriam mais acessar a Internet. Para evitar isso, o arpspoof reencaminha
automaticamente todos os pacotes recebidos ao endereço correto (justamente por isso
precisamos ativar o ip_forward no Kernel), fazendo com que, apesar do "desvio", o
tráfego continue fluindo, como se nada estivesse acontecendo:

ARP poisoning

Além de permitir escutar o tráfego, o ARP poisoning pode ser usado para alterar os
dados transmitidos e também para impersonar outros hosts, de forma a obter senhas de
acesso e outros dados.

Imagine, por exemplo, que a estação A (cujos pacotes estão sendo capturados e
retransmitidos pela estação B) deseja acessar o servidor A. Em vez de encaminhar a
transmissão, como faria normalmente, a estação B responde como se fosse o servidor,
pedindo o login e senha de acesso. O usuário na estação A, sem desconfiar do ataque,
faz login e recebe de volta uma mensagem de "servidor em manutenção, espere 30
minutos e tente novamente" ou algo similar. De posse da senha, o atacante pode então
se logar no servidor verdadeiro, usando a senha roubada.

Muitos protocolos prevêem este tipo de ataque e incluem proteções contra ele. No SSH,
por exemplo, o cliente verifica a identidade do servidor a cada conexão e aborta a
conexão (exibindo uma mensagem de erro bastante chamativa) antes de pedir login e
senha caso a identificação seja alterada.

É possível detectar ataques de ARP poisoning usando o arpwatch (também disponível


via apt-get). Ele monitora os endereços ARP usados pelas estações e gera um log com
as mudanças (com a opção de enviar relatórios por e-mail), permitindo que você detecte
anomalias.

Em outras situações, pode ser que você mesmo, como administrador da rede, precise
policiar o que os usuários estão fazendo durante o expediente na conexão da empresa.
Nesse caso, sugiro que você mantenha o servidor SSH ativo nas estações de trabalho
Linux e um servidor VNC (ou o recurso de administração remota) nas máquinas
Windows. Assim, você pode se logar em cada uma das máquinas, sempre que
necessário e rodar o Wireshark para acompanhar o tráfego de dados de cada uma, sem
que o usuário tome conhecimento.

Outra possibilidade seria rodar o Wireshark na máquina que compartilha a conexão,


assim você poderá observar os pacotes vindos de todas as máquinas da rede. Alguns
modelos de switches gerenciáveis podem ser programados para direcionar todo o
tráfego da rede para uma determinada porta, onde você poderia plugar um notebook
para ter acesso a todo o tráfego.

No caso das redes wireless, a situação é um pouco mais complicada, pois o meio de
transmissão é sempre compartilhado. Os pacotes trafegam pelo ar, por isso não é
possível impedir que sejam capturados. Apesar disso, você pode dificultar bastante as
coisas ativando o uso do WPA (se possível já utilizando o WPA2) e reduzindo a
potência do transmissor do ponto de acesso, de forma a cobrir apenas a área necessária.

Lembre-se de que apenas informações não encriptadas podem ser capturadas.


Utilizando protocolos seguros, como o SSH, as informações capturadas não terão
utilidade alguma, pois estarão encriptadas.

Monitorando sua conexão durante algum tempo, você vai logo perceber vários tipos de
abusos, como sites que enviam requisições para várias portas da sua máquina ao serem
acessados, banners de propaganda que enviam informações sobre seus hábitos de
navegação para seus sites de origem, gente escaneando suas portas usando o Nessus ou
outros aplicativos similares, spywares que ficam continuamente baixando banners de
propaganda ou enviando informações e assim por diante.

Essas informações são úteis não apenas para decidir quais sites e serviços evitar, mas
também para ajudar na configuração do seu firewall. Pode ser que no início você não
entenda muito bem os dados fornecidos pelo Wireshark, mas, depois de alguns dias
observando, você vai começar a entender muito melhor como as conexões TCP
funcionam.

Вам также может понравиться