|
|
| |
|
|
| |
|
|
| |
| 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 ferramenta 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: |
| |
- Em um roteador no caminho entre A e B;
- na máquina A;
- na máquina B;
- caso a rede onde A (ou B) se encontra use um hub, em uma outra máquina ligada no mesmo hub;
- 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:
|
| |
- Administradores, com o objetivo de solucionar problemas na rede;
- Engenheiros de segurança, com o objetivo de verificar possíveis problemas na segurança;
- Desenvolvedores, 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 Aplicativos->Central de Programas 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 Pacotese refere a Programas (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 Aplicativos->Central de Programas Ubuntu,conforme mostrado em a na Figura 4. |
| |
|
|
|
Figura 4 – Instalação por meio da Central 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 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
|
| |
 |
 |
 |
 |
- Para que serve colocar o caractere & após o nome do programa Wireshark quando vamos executar esse programa através do terminal?
- 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 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. |
| |
 |
 |
 |
 |
- Abra o Wireshark como administrador ou superusuário.
- Escolha a interface de rede que está utilizando para comunicar. Ex.: Eth0.
- 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).
|
| |
 |
 |
 |
 |
- O que significa o campo “Source” na Figura 11?
- 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 (campoInfo) 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 sobre 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 ICMP
|
| |
| 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 and dst port 80
|
Pacotes cujo endereço IP de destino seja 10.1.1.2, o protocolo de transporte seja 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
|
| |