Introdução ao Tshark

WiresharkBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará o tshark, o poderoso equivalente de linha de comando do Wireshark. Enquanto o Wireshark fornece uma interface gráfica para análise de rede, o tshark permite realizar exatamente a mesma captura e análise de pacotes diretamente pelo terminal.

Isso é importante porque a análise de pacotes geralmente ocorre em dois níveis diferentes. Ferramentas como o tcpdump são excelentes para exibir resumos de pacotes brutos e aplicar filtros de captura de baixo nível antes que os pacotes sejam armazenados. O tshark vai um passo além ao decodificar a estrutura do protocolo após a captura. Isso significa que ele entende campos como métodos HTTP, nomes de consultas DNS e muitos outros detalhes específicos de cada protocolo. Na prática, analistas costumam usar ambos os estilos: captura de baixo nível para coletar evidências de forma eficiente e análise consciente de protocolos para realizar investigações mais detalhadas posteriormente.

Você aprenderá a capturar tráfego de rede em tempo real, salvá-lo em um arquivo e aplicar filtros de exibição que compreendem nativamente estruturas de protocolos (como HTTP e DNS). Esses filtros de exibição são muito mais capazes do que os filtros Berkeley Packet Filters (BPF) padrão, pois podem dissecar o conteúdo dos pacotes. Por fim, você aprenderá a gerar estatísticas de hierarquia de protocolos para obter uma visão geral de alto nível do seu tráfego de rede.

Realizar uma Captura Básica

Nesta etapa, você aprenderá a capturar tráfego de rede em tempo real usando o tshark e salvá-lo em um arquivo para análise posterior.

Antes de começarmos a captura, precisamos garantir que haja algum tráfego de rede ocorrendo em seu sistema. Um script em segundo plano já está sendo executado em seu ambiente, gerando continuamente tráfego DNS e HTTP.

Nesta fase, é útil separar a captura da análise. A captura é o ato de preservar os pacotes exatamente como eles cruzam uma interface. A análise é o que acontece depois, quando você decodifica e interpreta esses pacotes. Investigações de segurança geralmente começam com uma captura ampla, pois você pode ainda não saber o que é relevante. Uma vez que os pacotes estejam preservados em um arquivo PCAP, você pode lê-los várias vezes e fazer perguntas diferentes sem precisar que o tráfego original ocorra novamente.

Agora, vamos capturar o tráfego de rede. Usaremos o tshark para escutar em todas as interfaces de rede disponíveis (any) e salvar os pacotes capturados em um arquivo chamado traffic.pcap. Também instruiremos o tshark a parar a captura automaticamente após 5 segundos.

Execute os seguintes comandos para iniciar a captura e salvar o arquivo corretamente:

sudo tshark -i any -w /tmp/traffic.pcap -a duration:5
sudo mv /tmp/traffic.pcap ~/project/traffic.pcap
sudo chown labex:labex ~/project/traffic.pcap

Vamos detalhar as opções usadas no comando tshark:

  • sudo: Executa o comando com privilégios administrativos, o que é necessário para capturar tráfego de rede.
  • -i any: Especifica que o tshark deve capturar tráfego em todas as interfaces de rede disponíveis.
  • -w /tmp/traffic.pcap: Instrui o tshark a gravar temporariamente os dados brutos dos pacotes capturados em um arquivo no diretório /tmp. Esta é uma prática recomendada para evitar problemas de permissão ao executar o tshark como root.
  • -a duration:5: Define uma condição de parada automática (-a) para encerrar a captura após uma duração de 5 segundos.

Você verá uma saída semelhante a esta, indicando que os pacotes estão sendo capturados:

Capturing on 'eth0'
24

Assim que os 5 segundos passarem, o tshark será encerrado automaticamente e seu arquivo traffic.pcap estará pronto para análise.

Aplicar Filtros de Exibição

Nesta etapa, você aprenderá a ler o arquivo de captura de pacotes que acabou de criar e aplicar filtros de exibição para isolar tipos específicos de tráfego.

Os filtros de exibição no tshark (e no Wireshark) são incrivelmente poderosos porque entendem a estrutura dos protocolos de rede. Em vez de apenas olhar para endereços IP ou números de porta, você pode filtrar o tráfego com base em nomes de protocolos como http ou dns.

Essa distinção merece ênfase. Um filtro de captura clássico faz perguntas de baixo nível, como "este pacote usa a porta 53?". Um filtro de exibição pode fazer perguntas de nível superior, como "este pacote é uma resposta DNS?" ou "esta requisição HTTP possui um campo específico?". Em outras palavras, os filtros de exibição funcionam após a dissecação do protocolo, e é por isso que eles parecem mais expressivos e fáceis de ler.

Para ler um arquivo de captura em vez de capturar tráfego em tempo real, você usa a opção -r. Para aplicar um filtro de exibição, você usa a opção -Y seguida pela string do filtro.

Primeiro, vamos filtrar o arquivo de captura para mostrar apenas o tráfego HTTP. Execute o seguinte comando:

tshark -r ~/project/traffic.pcap -Y "http"

Você deverá ver uma saída semelhante a esta, mostrando apenas a requisição HTTP GET e a resposta HTTP OK correspondente:

    4 0.012345678 10.0.2.15 → 93.184.216.34 HTTP 143 GET / HTTP/1.1
    8 0.045678901 93.184.216.34 → 10.0.2.15 HTTP 403 HTTP/1.1 200 OK  (text/html)

Em seguida, vamos filtrar o arquivo de captura para mostrar apenas o tráfego DNS. DNS (Domain Name System) é o protocolo usado para traduzir nomes de domínio como example.com em endereços IP.

Execute o seguinte comando para aplicar o filtro de exibição DNS:

tshark -r ~/project/traffic.pcap -Y "dns"

A saída exibirá as consultas e respostas DNS que ocorreram durante o seu período de captura:

    1 0.000000000 10.0.2.15 → 10.0.2.3 DNS 73 Standard query 0x1a2b A example.com
    2 0.001234567 10.0.2.3 → 10.0.2.15 DNS 89 Standard query response 0x1a2b A example.com A 93.184.216.34

Ao usar a opção -Y, você pode facilmente filtrar milhares de pacotes para encontrar exatamente o que está procurando.

Visualizar Estatísticas de Hierarquia de Protocolos

Nesta etapa, você aprenderá a gerar um resumo estatístico dos protocolos presentes em seu arquivo de captura.

Ao analisar um arquivo de captura grande, é frequentemente útil obter um resumo de alto nível sobre que tipo de tráfego está contido nele antes de mergulhar em pacotes individuais. O tshark fornece um recurso chamado "Protocol Hierarchy Statistics" (Estatísticas de Hierarquia de Protocolos), que calcula a porcentagem e o número de pacotes para cada protocolo.

Essa visão de cima para baixo é uma técnica de investigação comum. Antes de gastar tempo com pacotes individuais, os analistas costumam fazer perguntas amplas primeiro: Quais protocolos dominam esta captura? O tráfego é majoritariamente web, resolução de nomes ou algo incomum? As proporções correspondem ao papel esperado do sistema? Esse contexto de alto nível ajuda você a decidir onde uma inspeção mais profunda vale o esforço.

Para gerar estatísticas, você usa a opção -z seguida pela estatística específica que deseja calcular. Para as Estatísticas de Hierarquia de Protocolos, a palavra-chave é io,phs.

Além disso, como queremos ver apenas o relatório de estatísticas e não os detalhes individuais dos pacotes, usaremos a opção -q (quiet).

Execute o seguinte comando para visualizar a hierarquia de protocolos do seu arquivo de captura:

tshark -r ~/project/traffic.pcap -q -z io,phs

Você verá uma saída em formato de árvore resumindo o tráfego:

===================================================================
Protocol Hierarchy Statistics
Filter:

eth                                      frames:24 bytes:2340
  ipv4                                   frames:24 bytes:2340
    udp                                  frames:2 bytes:162
      dns                                frames:2 bytes:162
    tcp                                  frames:12 bytes:1338
      http                               frames:2 bytes:546
    icmp                                 frames:10 bytes:840
===================================================================

Essa saída informa exatamente quantos quadros (pacotes) e bytes pertencem a cada protocolo. Por exemplo, você pode ver que a camada Ethernet (eth) contém tráfego IPv4, que é subdividido em UDP (contendo DNS), TCP (contendo HTTP) e ICMP (o tráfego de ping que geramos).

Essa visão estatística é um excelente ponto de partida para qualquer tarefa de solução de problemas de rede ou análise de segurança.

Resumo

Parabéns! Você concluiu com sucesso o laboratório de Introdução ao Tshark.

Neste laboratório, você aprendeu a:

  • Capturar tráfego de rede em tempo real e salvá-lo em um arquivo .pcap usando o tshark.
  • Ler um arquivo de captura e aplicar filtros de exibição conscientes de protocolos para isolar tráfego HTTP e DNS.
  • Gerar e analisar Estatísticas de Hierarquia de Protocolos para obter uma visão geral de alto nível da atividade de rede.

Essas habilidades fundamentais formam a base da análise de rede via linha de comando e da solução de problemas em ambientes Linux.