Selecione uma disciplina
Redes de Computadores
Máquinas virtuais
Aula 3 – Captura de pacotes
Terminal remoto
C aptura de pacotes
Protocolo ARP: Mapeando
Autores:
endereços de Rede para
Marcos Cesar Madruga Alves Pinheiro (Professor)
endereços de Enlace.
Carlos Markennede Crescêncio deLima (Assistente)
Protocolos TC P e UDP Renato Gondim Sarmento (Assistente)
Tradução de endereços de rede - João Paulo Confessor (Assistente)
NAT
Protocolo DHC P: distribuindo
automaticamente configurações IP Contato:
para as estações em uma LAN
Sistema de Nomes de Domínio [email protected]
(DNS) [email protected]
Autenticação e compartilhamento [email protected]
de arquivos – Parte I [email protected]
Autenticação e compartilhamento
de arquivos: parte II
Autenticação e compartilhamento
de arquivos: parte III
Web: protocolo HTTP e servidor
Apache
Proxy e servidor Squid
C orreio eletrônico
Gerenciamento de redes – SNMP,
RMON e C AC TI
Voltar Imprimir Topo
Esta aula é a última das três aulas desta disciplina que são
dedicadas a lhe ensinar a trabalhar com ferramentas que além
de serem muito utilizadas pelas pessoas que administram redes
de computadores, são utilizadas nesta disciplina como forma de
lhe proporcionar a prática dos conteúdos ministrados.
Nesta aula estudaremos um tipo de ferramenta que consegue
capturar pacotes transmitidos em uma rede. Esse tipo de
programa é muito útil para análise da rede e detecção de
problemas. Veremos um programa que trabalha em modo texto,
o Tcpdump,e outro que utiliza uma interface gráfica, o Wireshark.
Ao final desta aula você será capaz de:
Utilizar a ferramenta Wireshark para capturar pacotes na rede.
Utilizar a ferramenta Tcpdump para capturar pacotes na rede.
Entender a forma como os pacotes são exibidos, de modo que
possa interpretar as informações mostradas nos pacotes
capturados.
Identificar em que máquina da rede executar a ferramenta de
captura de pacotes.
Captura de pacotes
Como você estudou na disciplina de Sistemas de Conectividade, quando se deseja transmitir uma mensagem pela
rede, cada camada TCP/IP na máquina de origem acrescenta um cabeçalho a essa informação. Na máquina de
destino as camadas equivalentes retiram esses cabeçalhos.
Você viu também que o conjunto cabeçalho + mensagem de cada camada recebe um nome. Na camada de enlace o
chamamos de quadro, na camada de rede de pacote, na camada de transporte de segmento e na camada de
aplicação de mensagem.
Nesta aula você estudará uma ferramenta que permite a captura dos quadros transmitidos e recebidos por uma
placa de rede.
Como um quadro contém um pacote, que por sua vez pode conter um segmento, que por sua vez pode conter
uma mensagem, esse tipo de ferramenta é genericamente chamada de ferram enta de captura de pacotes,e
não captura de quadros.
Desse modo, as ferramentas de captura de pacotes nos mostram informações de todas as camadas do modelo
TCP/IP que estão presentes no pacote capturado.
Suponha, por exemplo, que você capturou um pacote gerado pela aplicação ping em uma máquina com uma placa de
rede Ethernet. Como a informação enviada pelo ping é uma mensagem do protocolo ICMP, que é transmitida dentro
de um pacote IP, que por sua vez é transmitido dentro de um quadro Ethernet, a ferramenta de captura irá lhe
mostrar informações sobre os cabeçalhos Ethernet, IP e ICMP.
Como outro exemplo, suponha que você capturou informações transmitidas entre um browser e um servidor Web.
Como a Web utiliza o protocolo HTTP (um protocolo de aplicação), que é transmitido dentro de segmentos TCP
(protocolo de transporte), e cada segmento TCP é transmitido dentro de um pacote IP, que é transmitido dentro de
um quadro Ethernet, a ferramenta de captura irá lhe mostrar informações sobre os cabeçalhos Ethernet, IP, TCP e
HTTP.
Ressaltamos que a ferramenta de captura de pacotes mostra as informações dos cabeçalhos, mas
naturalmente ela mostra todos os dados contidos no pacote.
Lembre-se também que embora o comportamento padrão de uma placa de rede seja descartar todos os quadros
que não são destinados a ela, nem ao endereço de broadcast, pode-se configurar a placa para receber todos os
quadros, o que caracteriza o modo promíscuo.
Como já visto em Sistemas de Conectividade, isso se chama modo promíscuo, ou modo espião. Quando executamos
uma ferramenta de captura de pacotes normalmente ela trabalha utilizando o modo espião. Evidentemente, para
poder usar esse modo, é necessário que o usuário seja administrador da máquina.
Você deve estar perguntando: “em que máquina eu devo executar a ferramenta de captura de pacotes?”. Pois bem,
isso vai depender da finalidade para a qual você está executando a ferramenta. Mas lembre-se de que os dados
devem passar por essa máquina para poderem ser capturados. Supondo que você pretende analisar uma
comunicação entre as máquinas A e B, as alternativas são:
i. Em um roteador no caminho entre A e B;
ii. na máquina A;
iii. na máquina B;
iv. caso a rede onde A (ou B) se encontra use um hub, em uma outra máquina ligada no mesmo hub;
v. caso A (ou B) esteja em uma rede sem fio, nessa mesma rede sem fio (desde que a rede não esteja
usando criptografia).
Wireshark
O Wireshark é um dos programas de captura de pacotes mais utilizados. Ele mostra os dados e as informações dos
cabeçalhos dos protocolos contidos nos pacotes capturados.
Por ser um software Open source, o usuário pode modificar o código para melhor se adaptar às suas necessidades,
assim como a documentação que está sob os termos da GNU (General Public License)
<http://www.wireshark.org/docs/>, ou seja, permite sua cópia, modificação e distribuição. Mas não se assuste!
Dificilmente alguém precisa fazer isso, e você vai usar o programa sem precisar fazer modificação alguma nele!
Existem versões do Wireshark para as plataformas Windows, Linux, MacOs, Solaris, FreeBSD, entre outros. Isso é
muito bom, porque evita que você tenha que aprender a utilizar vários programas diferentes para realizar a mesma
tarefa.
O programa wireshark é muito usado por profissionais de redes, como:
Adm inistradores, com o objetivo de solucionar problemas na rede;
Engenheiros de segurança, com o objetivo de verificar possíveis problemas na segurança;
Desenv olv edores, para encontrar possíveis bugs na implementação do protocolo;
Estudantes, como o objetivo de melhorar o entendimento acerca dos protocolos utilizados em redes de
computadores.
Vale salientar que o Wireshark também é muito usado pelos hackers para fins ilícitos, ou seja, para fins que
contrariam a lei, pois com ele é possível encontrar falhas nas implementações dos protocolos, capturar senhas e
obter outras informações.
Instalação do Wireshark
Nesta seção mostraremos como realizar a instalação do Wireshark, como usar o menu e alguns elementos básicos
da sua interface gráfica.
Utilizamos para esta aula a distribuição do GNU/Linux Ubuntu 9.10 e 10.04LTS, mas os passos são os mesmos para
qualquer distribuição Linux baseada no Debian. Ilustraremos parte das imagens com letras do alfabeto latino (A-Z)
para que você se situe melhor em relação à explicação.
Várias distribuições Linux, como é o caso do Ubuntu, mantêm todos os seus programas disponíveis em diversos
servidores na Internet, e possuem um sistema de instalação de programas (chamado Gerenciador de Pacotes) que
faz o download dos arquivos a serem instalados diretamente destes servidores. Ou seja, não é necessário que você
faça o download dos arquivos e depois execute o programa de instalação. Você pode utilizar o gerenciador de
pacotes, que se chama “apt”, para procurar os programas disponíveis e mandar instalar o programa desejado. Ele
será então baixado da Internet e instalado. O gerenciador pode ser executado através do modo texto com o
comando apt-get install, ou através do modo gráfico usando o menu Aplicativ os->Central de Program as Ubuntu.
Veremos os dois modos a seguir.
Temos duas observações importantes sobre o Gerenciador de Pacotes do Linux. A primeira é que você já o
utilizou nas duas aulas anteriores para instalar os programas Virtualbox e Opensh-server. A segunda
observação é que nesse contexto que estamos falando no momento (Gerenciador de Pacotes), o termo Pacote
se refere a Program as (e não a um quadro de rede).
Para a instalação em modo texto inicialmente você deve abrir um terminal. Isso pode ser feito usando o menu
mostrado na Figura 1. Para a melhor visualização do processo, você pode assistir este vídeo:
<http://www.youtube.com/watch?v=nfMVR8S9zC8>, que mostra os passos da instalação do Wireshark no Ubuntu.
Figura 1 – Imagem de abertura do Terminal (gnome-terminal).
Para a instalação e execução do Wireshark o usuário deverá ter permissão máxima, ou seja, ser super usuário
(root). O comando Linux que transforma o usuário em superusuário é o sudo su, conforme mostrado na Figura 2.
Lembramos que as operações usadas nesta aula são aceitas em qualquer distribuição baseada no debian.
Figura 2 – Acesso como superusuário.
Na Figura 3 é apresentado o comando usado (apt-get install) para instalar um aplicativo existente nos repositórios
Linux através do gerenciador de pacotes (programas) apt. Caso deseje mais informações sobre o apt, você pode
consultar a página <http://www.debian.org/doc/manuals/apt-howto/index.pt-br.html>.
Figura 3 – Instalação a partir do apt-get
Como dissemos, também é possível instalar o Wireshark a partir do modo gráfico, conforme mostrado nas Figuras 4,
5 e 6. Inicialmente abra a Central de Programas do Ubuntu, clicando em Aplicativ os->Central de Program as
Ubuntu,conforme mostrado em a na Figura 4.
Figura 4 – Instalação por meio da C entral de Programas do Ubuntu
Depois, digite a palavra wireshark no campo indicado com a letra b na Figura 5, para mostrar os programas com esse
Depois, digite a palavra wireshark no campo indicado com a letra b na Figura 5, para mostrar os programas com esse
nome que estão disponíveis no repositório Linux.
Figura 5 – Localização do programa Wireshark para ser instalado
Clique então sobre o programa Wireshark que será mostrado, e depois clique em instalar, como mostrado em c na
Figura 6.
Figura 6 – Inicializando a instalação do Wireshark
Utilizando o Wireshark
Após a instalação do wireshark, vamos agora executá-lo e aprender a utilizá-lo. Lembramos que a execução do
Wireshark deverá ser como superusuário (root), de modo que você deve digitar o comando sudo su antes de
executar o wireshark. Para iniciar o programa usamos o comando wireshark.
Porém, desta forma o programa ficará atrelado ao Terminal, ou seja, se o terminal for encerrado o programa também
o será. Outra forma de executar o programa é acrescentar o caractere & após seu nome, fazendo com que o
programa execute em background (segundo plano), liberando, assim, o terminal para que você possa utilizá-lo. O
comando ficaria assim: wireshark & , como mostrado na Figura 7.
Figura 7 – Execução do Wireshark
Ao executar o comando mostrado na Figura 7, o wireshark irá iniciar e teremos a tela mostrada na Figura 8.
A chave apontada pela letra a nessa Figura mostra as interfaces presentes no computador que podem ser usadas
para capturar os pacotes. Basta clicar sobre o nome da interface para que a captura de pacotes seja iniciada. Saiba
que os nomes das interfaces podem mudar de computador para computador, pois elas dependem do hardware
presente em sua máquina e como o sistema operacional o chama. A interface deve ser a usada para ter acesso à
rede.
No Linux o nome das placas de rede Ethernet são eth0, eth1, e assim sucessivamente, e as placas de rede sem fio
(wireless) são chamadas de wlan0, wlan1, e assim sucessivamente.
Vale lembrar que você pode escolher capturar os pacotes em modo promíscuo (promiscuous mode) ou não promíscuo.
No modo promíscuo, a interface aceitará todos os pacotes da rede que chegarem nela, mesmo os que não são
destinados à mesma. O modo desejado é informado no filtro, que será explicado posteriormente.
Figura 8 – Tela inicial do Wireshark
1. Para que serve colocar o caractere & após o nome
do programa Wireshark quando vamos executar
esse programa através do terminal?
2. O que significa modo promíscuo?
Menus
Agora que você já sabe instalar, executar e escolher a interface de rede de onde capturar os pacotes, vamos
mostrar em detalhes as opções disponíveis no menu principal do Wireshark, que é mostrado na Figura 9. Clicar em
qualquer uma das palavras desse menu irá levar a um outro menu mais específico, que é descrito a seguir.
Figura 9 – Menu do Wireshark
File (Arquivo): É possível salvar as informações capturadas em um arquivo para que possam ser analisadas
posteriormente. Este menu contém itens que possibilitam salvar as informações em um arquivo, abrir um arquivo
salvo anteriormente, imprimir, exportar (salvar em um formato padrão, como txt). Além disso, existe a opção sair, que
fecha o programa.
Edit (Editar): Este menu contém itens que possibilitam encontrar um pacote específico dentre todos os pacotes
capturados. Para isso aplicamos um filtro, que consiste em especificar alguma informação sobre o pacote desejado.
Após aplicar o filtro apenas os pacotes que “casam” com ele são exibidos. Outra opção muito importante deste menu
é Preferências, que permite configurar várias coisas sobre a aparência e o modo de funcionamento do programa.
View (Visualizar): Este menu contém itens que controlam a exibição dos dados capturados, como por exemplo a
coloração de pacotes, ampliação da fonte, exibição do pacote em uma janela separada, entre outros.
Go (Ir): Este menu contém itens que permitem ir para um pacote específico.
Capture (Captura): Este menu contém itens que lhe permitem iniciar e parar a captura de pacotes, além de definir
filtros a serem aplicados na captura. Enquanto os filtros utilizados no menu Edit (Submenu Find Packet – Localizar
pacotes)controlam os pacotes que são exibidos na tela, os filtros especificados no submenu Options deste menu
controlam os pacotes que serão capturados. O submenu “Capture Filters” (Filtros de captura) deste menu permite
que você crie novos filtros. Na sessão “Filtros” desta aula daremos mais detalhes sobre eles.
Analyze (Analisar): Este menu contém itens que permitem manipular filtros de tela, ativar ou desativar a dissecção de
protocolos. Você não precisa se preocupar muito com esse menu porque normalmente ele não é muito utilizado.
Statistic (Estatística): Este menu contém itens que exibem janelas com estatísticas diversas, incluindo um resumo
dos pacotes que foram capturados, hierarquia de protocolos e muito mais.
Telephony (Telefonia): Este menu contém itens que exibem várias estatísticas relacionadas com janelas de telefonia,
incluindo uma análise de mídia, diagramas de fluxo e muito mais. Você não precisa se preocupar muito com esse
menu porque normalmente ele não é muito utilizado.
Tools (Ferramentas): Este menu contém várias ferramentas disponíveis no Wireshark, como a criação de Regras de
ACL do Firewall.
Help (Ajuda): Este menu contém itens para ajudar o usuário, por exemplo, no acesso a uma lista dos protocolos
suportados, páginas de manual ou o acesso online às páginas relacionadas.
Talvez depois de olhar tantas opções de menu você esteja achando que utilizar o Wireshark é muito complicado. Não
se preocupe, com o tempo você verá que na prática a maioria dessas opções não é usada frequentemente. Muitas
se preocupe, com o tempo você verá que na prática a maioria dessas opções não é usada frequentemente. Muitas
vezes você apenas clica no nome da interface para iniciar a captura e clica nos pacotes que deseje ver mais
detalhes. Realmente a utilização do Wireshark é bem simples! Olhe a descrição dos botões apresentada a seguir que
você já verá um número bem menor de opções, mas que fornecem a maioria das operações que você vai precisar.
1. Abra o Wireshark como administrador ou
superusuário.
2. Escolha a interface de rede que está utilizando
para comunicar. Ex.: Eth0.
3. Tente identificar os pacotes que são capturados.
Ex: ICMP causado pelo ping.
Botões de atalho
Algumas das operações discutidas acima, na Figura 9, podem ser executadas a partir de um atalho, como
mostraremos agora.
Figura 10 – Aba de botões de atalho
: Captura de interfaces.
: Mostra a opção de captura.
: Inicia a captura.
: Para a captura.
: Reinicia a captura.
Listagem dos pacotes capturados
A parte mais importante que você precisa saber é analisar os pacotes.
Portanto, vamos agora começar a ver como o Wireshark mostra os pacotes para você. Nessa seção você verá como o
Wireshark lhe apresenta a lista dos pacotes capturados, e na próxima seção aprenderá a ver os detalhes de cada
pacote.
A listagem dos pacotes capturados é mostrada na Figura 11. Essa tela irá aparecer após você iniciar a captura dos
pacotes, que pode ser feita, como já dissemos, clicando no nome da interface, selecionando uma opção do menu ou
clicando em um botão.
Figura 11 – Painel Lista de Pacotes
A seguir discutiremos o que significam os campos identificados com as letras de “a” até “f” na Figura 11.
a No. : Número do pacote na lista dos pacotes capturados. Como você pode perceber, esse número é sequencial, e é
incrementado cada vez que um pacote é capturado.
b Time: Tempo de timestamp do pacote. Informa o instante decorrido desde o início da captura até o momento em
que o referido pacote foi capturado. É útil, por exemplo, para você analisar o tempo decorrido entre dois pacotes
quaisquer, como o tempo decorrido entre o envio de um pacote que solicitou uma página web a um servidor e o
pacote de resposta, contendo a página, enviado pelo servidor.
c Source: Endereço IP de origem, ou seja, qual máquina transmitiu o pacote.
d Destination: Endereço de destino, ou seja, para qual máquina o pacote deve ser entregue.
e Protocol: Protocolo usado na transferência do pacote.
f Info: Informações adicionais sobre o conteúdo do pacote. As informações que são mostradas dependem do tipo de
protocolo sendo utilizado (informado no item anterior).
1. O que significa o campo “Source” na Figura 11?
2. O que significa o campo “Destination” na Figura 11?
Analisando um pacote detalhadamente
A listagem mostrada na Figura 11 é importante para lhe dar uma visão mais geral da comunicação, pois ela permite
identificar quais pacotes foram transmitidos e em que ordem. Mas muitas vezes é necessário analisar detalhes de
alguns pacotes. Na Figura 11, mostramos apenas uma parte da tela do Wireshark que aparece após a captura dos
pacotes. Para mostrarmos a tela completa, onde podemos ver detalhes de cada pacote, vamos realizar um ping
entre duas máquinas e capturar os pacotes. Assuma uma rede composta pelas três máquinas mostradas na Figura
12.
Figura 12 – Três máquinas em uma rede
Imagine que a máquina B realizou um ping para a máquina A, conforme mostrado na Figura 13. O ping usa as
mensagens “Echo Request” e “Echo Response” do protocolo ICMP. Desse modo, a máquina que realiza ping envia para
a outra a mensagem “Echo Request”, e a máquina que recebe esta mensagem envia de volta a mensagem “Echo
Response”.
Figura 13 – Máquina B realizou um ping para a máquina A
O ping é útil para verificarmos se conseguimos nos comunicar com uma determinada máquina e para termos uma
ideia do tempo em que a comunicação demora.
Por isso, em uma saída típica do comando ping, como a que pode ser vista na Figura 13, ele informa se recebeu o
“Echo Reply” para cada pacote transmitido (icmp_seq=), e quanto tempo depois do envio do “Echo Request” essa
resposta foi recebida (time=).
Desse modo, vemos que para os quatro primeiros pacotes transmitidos, as respostas foram recebidas. Veja que o
tempo em que cada resposta (Echo Reply) chegou é diferente, pois ele depende do tráfego presente na rede durante
aquela comunicação.
Por padrão, o ping envia pacotes contendo 64 bytes, mas esse valor pode ser alterado. Quando estiver
apenas interessado em verificar se consegue se comunicar com outra máquina, 64 bytes está bom. Mas
quando estiver interessado em analisar o tempo em que os pacotes demoram para serem transmitidos, é bom
aumentar o tamanho dos pacotes para que eles estejam mais próximos do tamanho real utilizado pela maioria
das aplicações. Um bom valor para utilizar seria, por exemplo, 1400 bytes. Basta acrescentar “-s tam” ao
ping, onde “Tam” é o tamanho do pacote em bytes. Ex. ping –s 1400 10.1.1.1
Após essa pequena “pausa” para falarmos do ping, vamos agora voltar ao Wireshark e a questão de como podemos
ver os detalhes de cada pacote. Lembrando que cada pacote ICMP é enviado dentro de um pacote IP, veja na Figura
14 a tela completa do Wireshark após a captura dos pacotes de ping realizada de B para A.
Figura 14 – Pacotes capturados de um ping de B para A com o Wireshark
Na Figura 14 você pode ver que a tela onde os pacotes capturados são exibidos é formada por três partes, a, b e c.
Em a vemos a mesma parte da tela do Wireshark que foi mostrada na Figura 11, sendo que agora reduzimos seu
tamanho para vermos também as informações mostradas em b e c.
Em a podemos ver que o primeiro pacote capturado foi um pacote ICMP (campo Protocol) do tipo Echo Request (campo
Info) enviado pela máquina com IP 10.1.1.2 (campo source) para a máquina 10.1.1.1 (campo destination). A segunda
linha em a mostra que 10.1.1.1 enviou a resposta quando haviam passado 0.000067 segundos (campo Time) desde
que a captura de pacotes tinha sido iniciada.
A parte identificada por b mostra informações individuais do pacote, separando essas informações de acordo com os
cabeçalhos de cada protocolo existente no pacote. Cada linha mostra informações sobre um protocolo. Desse modo,
a segunda linha de b mostra informações sob re o quadro Ethernet, a terceira linha sobre a o protocolo IP e a quarta
linha sobre o protocolo ICMP. A primeira linha mostra informações relacionadas principalmente ao tempo em que o
pacote foi capturado.
Em c o conteúdo do pacote é mostrado exatamente como ele é recebido, ou seja, como uma sequência de bytes.
Essas informações são utilizadas para realizar análises mais profundas nos protocolos. Normalmente você vai
analisar apenas as informações mostradas em a e b.
As informações mostradas em b e c são referentes ao pacote que estiver selecionado em a. Para selecionar
um pacote em a basta clicar nele uma vez. Na Figura 14 o pacote selecionado em a é o de número 2. Se você
clicar duas vezes sobre um pacote em a as informações contidas em b e c também serão mostradas, só que
em uma outra janela.
Podemos expandir as informações mostradas em b para cada protocolo, ou seja, ver as informações de cada
protocolo em detalhes. Nas próximas quatro figuras expandimos um item de b por vez. Todas as informações
mostradas são referentes ao pacote de número 2, que é um pacote ICMP de Echo Reply enviado de 10.1.1.1 para
10.1.1.2.
Na Figura 15 expandimos a primeira linha em b, de modo que você pode ver que os detalhes mostrados são
referentes principalmente à hora em que o pacote foi capturado, seu tamanho e quais protocolos estão contidos no
pacote.
Figura 15 – Informações básicas sobre o pacote capturado
Na Figura 16 expandimos a segunda linha em b, que mostra informações sobre a camada de enlace utilizada para
transmitir o quadro. Você pode ver que se tratava de um quadro Ethernet.
Desse modo, são mostrados os valores contidos nos campos endereço de destino (Destination) e endereço de
origem (Source) do quadro, além do valor do campo de tipo (Type). Pelos valores mostrados você vê que o quadro foi
enviado da máquina cujo endereço Ethernet da placa de rede é AA:AA:AA:00:00:01 para a máquina com endereço
Ethernet AA:AA:AA:00:00:02.
Se você olhar a Figura 12, verá que esses são os endereços das máquinas A e B, respectivamente. Ou seja, da
máquina que recebeu o ping para a que o enviou. O valor 0x0800 contido no campo de tipo (Type) mostra que o
conteúdo do quadro Ethernet é um pacote IP. 0x0800 é o valor em hexadecimal do código do protocolo IP.
Figura 16 – Informações da camada de enlace
Ao expandimos a terceira linha em b, vemos as informações referentes ao cabeçalho IP, conforme mostrado na
Figura 17. Não vamos descrever todos os campos, mas você pode observar que o pacote foi enviado a partir do
endereço IP (Source) 10.1.1.1 para a máquina com o endereço 10.1.1.2.
Além disso, você pode observar que o campo Protocol contém o código do protocolo ICMP, que é o número 0x01 (em
hexadecimal). Lembre-se que este campo indica qual é o protocolo contido na parte de dados do pacote IP!
Figura 17 – Informações do protocolo IP
Finalmente, ao expandirmos a quarta linha de b vemos as informações referentes ao cabeçalho do protocolo ICMP,
conforme mostrado na Figura 18. Os campos Type e Code, ambos com o valor zero, significam que se trata de uma
pacote “Echo Reply”. O valor 1 no campo “Sequence number” (Número de sequência) mostra que se trata de uma
resposta relativa ao primeiro pacote enviado pela máquina 10.1.1.2.
Figura 18 – Informações do protocolo IC MP
Utilizando filtros
Como explicamos anteriormente, o Wireshark permite que você utilize filtros para selecionar quais pacotes serão
capturados, ou para selecionar entre os pacotes já capturados quais serão exibidos na tela. Para o primeiro caso
utilize o menu “Edit- >Find Packet”, e depois clique no botão “Filter”. Para o segundo caso clique no menu
“Capture->Options” e depois clique no botão “Filter”.
O Wireshark já vem com uma série de filtros, e você ainda pode criar seus próprios filtros através do menu “Capture-
> Capture Filters”.
Um filtro nada mais é do que uma regra contendo nomes de campos dos protocolos contidos nos pacotes e os
valores que cada campo deve conter. Se um pacote contém o valor especificado no filtro para o referido campo ele
“casa” com o filtro.
Um exemplo de filtro simples pode ser que o endereço IP do pacote seja X.X.X.X (substituindo X.X.X.X pelo endereço
desejado). Outro filtro simples pode ser que o protocolo seja TCP e a porta seja 80.
A tela onde se escolhe um filtro para aplicar ou se permite a criação de um novo filtro é a mesma, e está mostrada na
Figura 19.
Figura 19 – Filtros no Wireshark
Veja ainda na Figura 19 que, ao clicarmos sobre um filtro na parte inferior da tela, aparece o texto (string) que
equivale a este filtro.
Com o tempo você pode começar a aprender esta “linguagem” e preferir escrever as regras do filtro ao invés
de selecioná-las na tela mostrada na Figura 19. Conforme mostrado na Figura 20, existe um campo na interface do
Wireshark que lhe permite escrever os filtros usados para selecionar os pacotes exibidos. No exemplo, o filtro faz
com que sejam exibidos apenas os pacotes do protocolo ARP. Você estudará esse protocolo na próxima aula.
Figura 20 – Especificando um filtro através de texto
Recursos disponíveis por plataforma
Saiba que nem todas as interfaces (Bluetooth, Ethernet, USB, WLAN, Loopback etc.) são suportadas nas versões do
Wireshark para todos os sistemas operacionais. Verifique se a interface que pretende utilizar é suportada no seu
sistema operacional no link <http://wiki.wireshark.org/CaptureSetup/NetworkMedia>. Adiantamos que Ethernet e
WLAN são suportadas no Windows, Linux e Mac.
Tcpdump
Uma das ferramentas de captura de pacotes mais tradicionais no Linux é o tcpdump [4]. Apesar de não possuir uma
interface gráfica, ele ainda é até hoje muito utilizado.
Lembra-se da linguagem de filtros do Wireshark? Pois é, digamos que no tcpdump essa é a única forma de definir os
filtros.
Caso esteja pensando por que você iria deixar de usar uma ferramenta que possui uma ótima interface gráfica para
usar uma em modo texto, temos duas respostas.
A primeira é agilidade. É bem mais rápido digitar um comando do que abrir um programa gráfico e utilizar seus
menus.
A segunda é que muitas vezes você precisa capturar pacotes em servidores que não têm uma interface gráfica
instalada. Mas não se preocupe. Normalmente nesses casos os filtros que você vai precisar usar são bem simples.
Você normalmente vai estar mais interessado em verificar se determinados pacotes chegaram até a máquina onde
você está executando a ferramenta do que propriamente em analisar detalhadamente os campos do pacote. Nesses
casos, a interface gráfica realmente não faz tanta diferença.
Vamos capturar os mesmos pacotes do exemplo mostrado na Figura 13, onde a máquina B, que possui o endereço IP
10.1.1.2, enviou um ping para a máquina A, que possui o endereço IP 10.1.1.1. A Figura 21 mostra o comando e a
saída do tcpdump.
Figura 21 – Pacotes capturados com tcpdump
Veja que a sintaxe é bem simples. O “-i eth0” é para indicar de qual placa de rede os pacotes devem ser capturados.
Caso não fosse informado, o padrão é capturar da eth0. Portanto, nesse caso bastava termos digitado “tcpdump”.
Além disso, você pode observar que as informações exibidas são praticamente as mesmas do Wireshark (só que
mais resumidas), com a diferença que não aparecem os nomes dos campos. A Tabela 1 mostra outros exemplos do
uso do tcpdump.
Comando Significado
tcpdump src 10.1.1.1 and icmp Pacotes ICMP cujo IP de origem seja 10.1.1.1.
Tcpdump dst 10.1.1.2 and tcp Pacotes cujo endereço IP de destino seja 10.1.1.2, o protocolo de transporte seja
and dst port 80 TCP e a porta de destino seja 80.
Tcpdump host 10.1.1.1 Pacotes cujo endereço IP de origem ou o de destino seja 10.1.1.1.
Tabela 1 – Exemplos do uso do tcpdump
Resumo
Nesta aula você aprendeu um novo tipo de ferramenta, que são as ferramentas de captura de pacotes. Estudou qual
a finalidade delas e aprendeu a utilizar dois programas diferentes: o Wireshark e o tcpdump. Aprendeu que essas
ferramentas mostram as informações dos cabeçalhos de cada protocolo existente no pacote e possuem uma
linguagem de filtro para se especificar quais pacotes devem ser capturados. Também analisou em detalhes como o
programa ping, que utiliza o protocolo ICMP, funciona.
1. Através de qual menu é possível especificar um filtro para
selecionar entre todos os pacotes capturados quais
devem ser mostrados na tela?
2. Qual a expressão de texto para um filtro que deve
capturar apenas pacotes IP transmitidos ou recebidos do
IP 192.168.1.2 (Dica: olhe os filtros que já existem)?
3. O que significa o campo “Time” na lista de pacotes
capturados?
4. É possível utilizar o Wireshark para capturar pacotes
transmitidos entre quaisquer duas máquinas da sua rede
sem executá-lo como root (administrador)?
5. Acesse o Laboratório1 desta aula (Aula 3) no Virtualbox.
Sabendo que essa rede utiliza um hub, realize um ping da
máquina A para a máquina B, e tente capturar os pacotes
ICMP transmitidos na máquina C. Isso será possível?
Referencias
KUROSE, James. Redes de computadores e a internet: uma abordagem Top-down. 4. ed. São Paulo: Perason
Education, 2010. p.572-573.
TCPDUMP. Disponível em: <http://www.tcpdump.org/#documentation>. Acesso em: 23 jul. 2010.
WIKIPÉDIA. Promiscuous mode. Disponível em: <http://en.wikipedia.org/wiki/Promiscuous_mode>. Acesso em: 22
jul. 2010.
WIRESHARK. Disponível em: <http://www.wireshark.org/docs/>. Acesso em: 21 jul. 2010.
Voltar Imprimir Topo