Categories: Tecnologia

Como usar filtros Wireshark no Linux

Inara Prusakova / Shutterstock

O Wireshark é um analisador de pacotes de classe mundial disponível no Linux, Windows e macOS. Seus filtros são flexíveis e sofisticados, mas às vezes, contra-intuitivos. Explicaremos as “pegadinhas” que você precisa procurar.

Análise de Pacotes com Real Bite

O Wireshark é uma das joias do mundo do código aberto. É uma ferramenta de software de classe mundial, usada por profissionais e amadores para investigar e diagnosticar problemas de rede. Os desenvolvedores de software usam-no para localizar e caracterizar bugs nas rotinas de comunicação. Os pesquisadores de segurança o usam para capturar e remover atividades maliciosas em uma rede.

Um fluxo de trabalho típico é executar o Wireshark no modo Capture, para que ele registre o tráfego de rede por meio de uma das interfaces de rede no computador. Os pacotes de rede são exibidos em tempo real, conforme são capturados. No entanto, é na análise pós-captura que os detalhes granulares do que está acontecendo na rede são revelados.

Os pacotes capturados são chamados de rastreamento. Quando a captura é concluída, o rastreamento pode ser percorrido, pacote por pacote. Você é capaz de inspecionar qualquer pacote nos mínimos detalhes, mapear “conversas” de rede entre dispositivos e usar filtros para incluir (ou excluir) pacotes de sua análise.

Os recursos de filtragem do Wireshark são incomparáveis, com grande flexibilidade e poder de resolução. Existem sutilezas em sua sintaxe que tornam mais fácil escrever um filtro e obter um resultado que não atende às suas expectativas.

Se você não entende como os filtros funcionam no Wireshark, você nunca sairá da primeira marcha e acelerará os recursos do software.

Instalando o Wireshark

Quando você instala o Wireshark, é perguntado se alguém usando uma conta não root deve ser capaz de capturar rastros de rede. Dizer não a isso pode ser uma ideia atraente. Você pode não querer que todos possam ver o que está acontecendo na rede. No entanto, instalar o Wireshark de forma que apenas aqueles com privilégios de root possam usá-lo significa que todos os seus componentes serão executados com permissões elevadas.

O Wireshark contém mais de 2 milhões de linhas de código complicado e interage com o seu computador no nível mais baixo. As melhores práticas de segurança aconselham que o mínimo de código possível seja executado com privilégios elevados – especialmente quando estiver operando em um nível tão baixo.

É muito mais seguro executar o Wireshark com uma conta de usuário normal. Ainda podemos restringir quem pode executar o Wireshark. Isso requer algumas etapas extras de configuração, mas é a maneira mais segura de prosseguir. Os elementos de captura de dados do Wireshark ainda serão executados com privilégios elevados, mas o resto Wiresharké executado como um processo normal.

Para iniciar a instalação no Ubuntu, digite:

sudo apt-get install fioshark

No Fedora, digite:

sudo dnf instalar arameshark

No Manjaro, use este comando:

sudo pacman -Syu Wirehark-qt

Durante a instalação, você verá a tela abaixo, recomendando que você não execute Wiresharkcomo root. Pressione Tab para mover o realce vermelho para “<OK>” e pressione a barra de espaço.

Na próxima tela, pressione Tab para mover o realce vermelho para “<SIM>” e pressione a barra de espaço.

Para rodar Wireshark, você deve ser membro do grupo “wirehark”, que é criado durante a instalação. Isso permite que você controle quem pode correr Wireshark. Qualquer pessoa que não esteja no grupo “Fioshark” não pode correr Wireshark.

Para se adicionar ao grupo “Wireshark”, use este comando:

sudo usermod -a -G Wirehark $ USER

Para que sua nova associação ao grupo entre em vigor, você pode fazer logout e login novamente ou usar este comando:

newgrp wirehark

Para ver se você está no novo grupo, use o groupscomando:

grupos

Você deve ver “WireShark” na lista de grupos.

Iniciando o Wireshark

Você pode iniciar o Wireshark com o comando abaixo. O e comercial ( &) é iniciado Wiresharkcomo uma tarefa em segundo plano, o que significa que você pode continuar usando a janela do terminal. Você pode até fechar a janela do terminal e o Wireshark continuará em execução.

Digite o seguinte:

Wireshark e

A interface do Wireshark é exibida. Os dispositivos de interface de rede presentes em seu computador são listados, junto com alguns pseudo-dispositivos embutidos.

Uma linha ondulada próxima a uma interface significa que ela está ativa e que o tráfego da rede está passando por ela. Uma linha plana significa que não há atividade na interface. O primeiro item desta lista é “enp0s3,” a conexão com fio para este computador e, como esperado, mostra atividade.

Para iniciar a captura de pacotes, clicamos com o botão direito em “enp0s3” e, em seguida, selecionamos “Iniciar captura” no menu de contexto.

Você pode definir filtros para reduzir a quantidade de tráfego que o Wireshark captura. Preferimos capturar tudo e filtrar tudo o que não queremos ver ao fazer uma análise. Assim, sabemos que tudo o que aconteceu está no rastro. Você não quer perder inadvertidamente um evento de rede que explica a situação que você está investigando devido ao seu filtro de captura.

Obviamente, para redes de alto tráfego, os rastreamentos podem rapidamente se tornar muito grandes, portanto, a filtragem na captura faz sentido neste cenário. Ou talvez você apenas prefira assim.

Observe que a sintaxe para filtros de captura é um pouco diferente daquela para telas.

Os ícones destacados na imagem acima indicam o seguinte, da esquerda para a direita:

  • Barbatana de tubarão : se estiver azul, clique nele para iniciar uma captura de pacote. Se o Wireshark estiver capturando pacotes, este ícone ficará cinza.
  • Quadrado : se estiver vermelho, clicar nele irá interromper a captura de pacotes em execução. Se o Wireshark não estiver capturando pacotes, este ícone ficará cinza.
  • Barbatana de tubarão com seta circular : se estiver verde, clique para interromper o traçado em execução. Isso lhe dá a oportunidade de salvar ou descartar os pacotes capturados e reiniciar o rastreamento. Se o Wireshark não estiver capturando pacotes, este ícone ficará cinza.

Analisando o Traço

Clicar no ícone de quadrado vermelho interromperá a captura de dados para que você possa analisar os pacotes capturados no rastreamento. Os pacotes são apresentados em ordem de tempo e codificados por cores de acordo com o protocolo do pacote. Os detalhes do pacote destacado são exibidos nos dois painéis inferiores na interface do Wireshark.

Uma maneira simples de tornar a leitura do rastreamento mais fácil é fazer com que o Wireshark forneça nomes significativos para os endereços IP de origem e destino dos pacotes. Para fazer isso, clique em Exibir> Resolução de nome e selecione “Resolver endereços de rede”.

O Wireshark tentará resolver o nome dos dispositivos que enviaram e receberam cada pacote. Não será capaz de identificar todos os dispositivos, mas aqueles que puder irão ajudá-lo a ler o rastreamento.

Rolar a tela para a esquerda revelará mais colunas à direita. A coluna de informações mostra todas as informações que o Wireshark pode detectar do pacote. No exemplo abaixo, vemos algumas pingsolicitações e respostas.

Por padrão, o Wireshark exibe todos os pacotes na ordem em que foram rastreados. Muitos dispositivos enviam pacotes para frente e para trás simultaneamente. Isso significa que uma única conversa entre dois dispositivos provavelmente terá pacotes de outros dispositivos entrelaçados entre eles.

Para examinar uma única conversa, você pode isolá-la por protocolo. O protocolo para cada pacote é mostrado na coluna do protocolo. A maioria dos protocolos que você verá pertencem à família TCP / IP. Você pode especificar o protocolo exato ou usar Ethernet como uma espécie de catchall.

Clique com o botão direito em qualquer um dos pacotes na sequência que deseja examinar e clique em Filtro de conversa> Ethernet. No exemplo abaixo, selecionamos um pingpacote de solicitação.

A sequência de pacotes é mostrada sem outros entre eles, pois o Wireshark gerou automaticamente um filtro para fazer isso. É exibido na barra de filtro e destacado em verde, o que indica que a sintaxe do filtro está correta.

Para limpar o filtro, clique no “X” na barra do filtro.

Criando Seus Próprios Filtros

Vamos colocar um filtro simples na barra de filtros:

ip.addr == 192.168.4.20

Isso seleciona todos os pacotes que foram enviados ou recebidos pelo dispositivo com endereço IP 192.168.4.20. Observe os sinais de igual duplo ( ==) sem espaço entre eles.

Para ver os pacotes enviados por um dispositivo (a fonte), você pode usar  ip.src; para ver os pacotes que chegaram a um dispositivo (o destino), você pode usar  ip.dst, conforme mostrado abaixo:

ip.dst == 192.168.4.20 && ip.src == 192.168.4.28

Observe o uso de um &&“e” comercial duplo ( ) para indicar o “e” lógico. Este filtro procura pacotes que chegaram a 192.168.4.20 de 192.168.4.28.

Pessoas novas em filtros Wireshark geralmente pensam que um filtro como este irá capturar todos os pacotes entre dois endereços IP, mas não é o caso.

O que ele realmente faz é filtrar todos os pacotes de ou para o endereço IP 192.168.4.20, independentemente de onde eles vieram ou para onde foram enviados. Ele faz o mesmo com todos os pacotes do endereço IP 192.168.4.28. Para simplificar, ele filtra todo o tráfego de ou para qualquer um dos endereços IP.

Você também pode procurar atividade em outros protocolos. Por exemplo, você pode digitar este filtro para procurar solicitações HTTP:

http.request

Para excluir pacotes que vieram de ou foram enviados para um dispositivo, use um ponto de exclamação ( !) e coloque o filtro entre parênteses [ ()]:

! (ip.addr == 192.168.4.14)

Este filtro exclui todos os pacotes enviados de ou para 192.168.4.14.

É contra-intuitivo porque o filtro contém o operador de igualdade ( ==). Você poderia esperar que digitaria este filtro assim:

ip.addr! = 192.168.4.14

No entanto, isso não funcionará.

Você também pode pesquisar strings dentro de pacotes, por protocolo. Este filtro procura pacotes de protocolo de controle de transmissão (TCP) que contenham a string “youtube”:

tcp contém youtube

Um filtro que busca a retransmissão é útil como forma de verificar se há um problema de conectividade. Retransmissões são pacotes que são reenviados porque foram danificados ou perdidos durante a transmissão inicial. Muitas retransmissões indicam uma conexão lenta ou um dispositivo que demora para responder.

Digite o seguinte:

tcp.analysis.retransmission

Nascimento, Vida, Morte e Criptografia

Uma conexão de rede entre dois dispositivos é iniciada sempre que um entra em contato com o outro e envia um SYNpacote (de sincronização). O dispositivo receptor então envia um ACKpacote (de confirmação). Indica se aceitará a conexão enviando um SYNpacote.

SYNe ACKsão, na verdade, dois sinalizadores no mesmo pacote. O dispositivo original reconhece o SYNenviando um ACKe, em seguida, os dispositivos estabelecem uma conexão de rede.

Isso é chamado de handshake de três vias:

A -> SYN -> B

A <- SYN, ACK <- B

A -> ACK -> B

Na captura de tela abaixo, alguém no computador “nostromo.local” faz uma conexão Secure Shell (SSH) com o computador “ubuntu20-04.local”. O handshake de três vias é a primeira parte da comunicação entre os dois computadores. Observe que as duas linhas que contêm os  SYNpacotes são codificadas por cores em cinza escuro.

Rolar a tela para mostrar as colunas à direita revela os SYN, SYN/ACKe ACKpacotes de handshake.

Você notará que o intercâmbio de pacotes entre os dois computadores alterna entre os protocolos TCP e SSH. Os pacotes de dados são passados ​​pela conexão SSH criptografada, mas os pacotes de mensagens (como ACK) são enviados via TCP. Filtraremos os pacotes TCP em breve.

Quando a conexão de rede não é mais necessária, ela é descartada. A seqüência de pacotes para interromper uma conexão de rede é um handshake de quatro vias.

Um lado envia um FINpacote (final). A outra extremidade envia um ACKpara reconhecer o FINe, em seguida, também envia um FINpara indicar que concorda que a conexão deve ser encerrada. O primeiro lado envia um ACKpara o FINque acabou de receber e a conexão de rede é então desmontada.

Esta é a aparência do handshake de quatro vias:

A -> FIN -> B

A <- FIN, ACK <- B

A -> ACK -> B

Às vezes, o original FIN pega carona em um ACKpacote que seria enviado de qualquer maneira, conforme mostrado abaixo:

A -> FIN, ACK -> B

A <- FIN, ACK <- B

A -> ACK -> B

Isso é o que acontece neste exemplo.

Se quisermos ver apenas o tráfego SSH para esta conversa, podemos usar um filtro que especifica esse protocolo. Digite o seguinte para ver todo o tráfego usando o protocolo SSH de e para o computador remoto:

ip.addr == 192.168.4.25 && ssh

Isso filtra tudo, exceto o tráfego SSH de e para 192.168.4.25.

Outros modelos de filtro úteis

Quando você está digitando um filtro na barra de filtro, ele permanecerá vermelho até que o filtro esteja sintaticamente correto. Ele ficará verde quando o filtro estiver correto e completo.

Se você digitar um protocolo, como tcp, ip, udp, ou shh, seguido por um ponto ( .), um menu aparece. Ele listará os filtros recentes que continham esse protocolo e todos os campos que podem ser usados ​​em filtros para esse nome de protocolo.

Por exemplo, com ip, você pode usar  ip.addr, ip.checksum, ip.src, ip.dst, ip.id, ip.host, e dezenas de outros.

Use os seguintes modelos de filtro como base para seus filtros:

  • Para mostrar apenas pacotes de protocolo HTTP: http
  • Para mostrar apenas pacotes de protocolo DNS: dns
  • Para mostrar apenas pacotes TCP com 4000 como porta de origem ou destino: tcp.port==4000
  • Para exibir todos os pacotes de redefinição TCP: http.request
  • Para filtrar pacotes ARP, ICMP e DNS: !(arp or icmp or dns)
  • Para exibir todas as retransmissões em um rastreamento: tcp.analysis.retransmission
  • Para filtrar sinalizadores (como SYNou FIN): Você deve definir um valor de comparação para estes: 1significa que o sinalizador está definido e 0 não está. Então, um exemplo seria: tcp.flags.syn == 1.

Abordamos alguns dos princípios orientadores e usos fundamentais dos filtros de exibição aqui, mas, é claro, há muito mais.

Para apreciar todo o escopo e poder dos Wiresharkfiltros, certifique-se de verificar sua referência online .

maisroot

Recent Posts

O novo aplicativo “PC Manager” da Microsoft se parece muito com o CCleaner

Muitos aplicativos de limpeza estão disponíveis para Windows ao longo dos anos, mas hoje em…

7 meses ago

Como reiniciar um PS4

Seu PlayStation 4 está congelado? Seus jogos favoritos continuam travando? Reiniciar seu PS4 pode resolver…

7 meses ago

Veja por que as reticências são tão assustadoras ao enviar mensagens de texto…

A popularidade das mensagens de texto significou aprender uma forma totalmente nova de comunicação. Você…

7 meses ago

O telescópio James Webb acaba de capturar os “Pilares da Criação”

A foto dos "Pilares da Criação" tirada pelo Telescópio Espacial Hubble é uma das fotos…

7 meses ago

Você poderá baixar o Proton Drive mais cedo do que pensa

O Proton Drive saiu de seu estágio beta há algumas semanas, mas o aplicativo real…

7 meses ago

Como aumentar o zoom no Photoshop

Para ver suas fotos mais de perto ou para uma edição precisa , você pode…

7 meses ago