Analisar Tráfego TCP com o Recurso Follow TCP Stream do Wireshark

WiresharkBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como utilizar o recurso "Follow TCP Stream" no Wireshark para análise de tráfego TCP. Este recurso permite extrair e visualizar a carga útil de dados de uma conversa TCP específica. É extremamente útil em múltiplos cenários de segurança cibernética, como a investigação de tráfego de rede suspeito e a análise de protocolos de aplicação.

Ao final deste laboratório, você compreenderá como usar esta ferramenta poderosa para obter insights sobre as comunicações de rede. Isso aprimorará significativamente suas capacidades de análise de rede.

Entendendo TCP e Capturando Tráfego de Rede

Nesta etapa, começaremos conhecendo o TCP (Transmission Control Protocol), uma parte fundamental da comunicação de rede. Em seguida, usaremos uma ferramenta poderosa chamada Wireshark para capturar o tráfego de rede. Compreender o TCP e ser capaz de capturar o tráfego de rede são habilidades essenciais no campo da segurança cibernética, pois permitem que você veja o que está acontecendo em uma rede e analise-o em busca de possíveis problemas.

O que é TCP?

TCP, ou Protocolo de Controle de Transmissão, é um dos protocolos mais importantes da suíte de protocolos da Internet. A suíte de protocolos da Internet é um conjunto de regras que regem como os dados são transmitidos pela internet. O TCP fornece uma maneira confiável de enviar dados entre aplicativos em execução em diferentes hosts que estão se comunicando por meio de uma rede IP.

Confiabilidade significa que o TCP garante que todos os pacotes de dados enviados de um aplicativo para outro cheguem corretamente e na ordem correta. Isso é diferente do UDP (User Datagram Protocol), que é um protocolo sem conexão. O UDP não estabelece uma conexão antes de enviar dados e não garante que todos os pacotes chegarão ou que chegarão na ordem correta. O TCP, por outro lado, é orientado à conexão. Ele primeiro estabelece uma conexão entre o remetente e o receptor e, em seguida, envia os dados. Esse processo ajuda a manter a integridade dos dados que estão sendo transferidos.

Iniciando o Wireshark

Para começar a capturar o tráfego de rede, precisamos iniciar o Wireshark. Veja como você pode fazer isso:

  1. Primeiro, abra uma janela de terminal. Você pode fazer isso clicando no ícone do terminal na dock ou pressionando Ctrl+Alt+T. O terminal é uma interface baseada em texto que permite interagir com o sistema operacional do seu computador digitando comandos.

  2. Depois que o terminal estiver aberto, você precisará digitar um comando para iniciar o Wireshark. Digite o seguinte comando e pressione Enter:

wireshark

Este comando diz ao sistema operacional para iniciar o aplicativo Wireshark.

  1. Quando o Wireshark abrir, você será apresentado à interface principal. Nesta interface, você verá uma lista de interfaces de rede disponíveis. As interfaces de rede são os pontos de conexão entre seu computador e a rede. Cada interface pode ser usada para enviar e receber tráfego de rede.
Wireshark main interface

Capturando Tráfego de Rede

Agora que o Wireshark está aberto, estamos prontos para começar a capturar o tráfego de rede. Aqui estão as etapas:

  1. Na lista de interfaces de rede, clique na interface eth1. Esta é geralmente a interface de rede primária para sua máquina virtual. Uma máquina virtual é como um computador dentro do seu computador, e a interface eth1 é como ela se conecta à rede.

  2. Depois de selecionar a interface eth1, clique no botão Start capturing packets, que é representado por um ícone de barbatana de tubarão azul na barra de ferramentas. Essa ação diz ao Wireshark para começar a monitorar a interface de rede selecionada e capturar todos os pacotes de rede que passam por ela.

Start capturing packets
  1. À medida que o Wireshark começa a capturar, você verá pacotes aparecendo na janela principal do Wireshark. Esses pacotes são os blocos de construção do tráfego de rede. Cada pacote contém uma pequena quantidade de dados e algumas informações sobre de onde ele está vindo e para onde está indo.

  2. Para gerar algum tráfego TCP que possamos analisar, usaremos o comando curl. Abra uma nova janela de terminal e digite o seguinte comando:

curl https://labex.io

O comando curl é usado para transferir dados de ou para um servidor. Neste caso, ele está buscando o conteúdo da página da web de https://labex.io. Essa ação gerará tráfego TCP porque a solicitação HTTP para a página da web usa o protocolo TCP.

  1. Depois de executar o comando curl, você verá o conteúdo da página da web exibido no terminal. Ao mesmo tempo, o Wireshark capturará todos os pacotes TCP relacionados a esta solicitação HTTP. Esses pacotes contêm informações sobre a solicitação e a resposta entre seu computador e o servidor web.

  2. Depois de capturar por cerca de 10 a 15 segundos, o que geralmente é suficiente para obter uma boa amostra do tráfego, volte para o Wireshark e clique no botão Stop capturing packets, representado por um ícone de quadrado vermelho na barra de ferramentas. Isso impede que o Wireshark capture mais pacotes.

Stop capturing packets
  1. Para salvar o tráfego capturado para análise futura, vá para o menu File e selecione Save, ou você pode pressionar Ctrl+S. Navegue até o diretório /home/labex/project/, dê ao seu arquivo o nome capture.pcapng e clique em Save. O formato de arquivo .pcapng é um formato padrão para armazenar capturas de pacotes de rede e permite que você abra e analise o tráfego capturado mais tarde.

Agora você capturou com sucesso algum tráfego de rede que contém conversas TCP. Nas próximas etapas, analisaremos esse tráfego capturado para aprender mais sobre TCP.

Filtrando e Seguindo Fluxos TCP

Nesta etapa, analisaremos o tráfego labex.io que capturamos na etapa anterior. Aprenderemos como filtrar o tráfego de rede para isolar conversas TCP específicas e explorar o poderoso recurso "Follow TCP Stream" do Wireshark. Este recurso age como uma lupa para as comunicações de rede, permitindo que você veja a conversa completa entre dois endpoints.

Filtrando o Tráfego TCP

Primeiro, vamos filtrar o tráfego para focar especificamente em nossa comunicação labex.io:

  1. Na janela principal do Wireshark, olhe para a parte superior da lista de pacotes. Você verá uma caixa de texto de filtro de exibição com texto de espaço reservado que diz "Apply a display filter".
  2. Digite tcp na caixa de filtro e pressione Enter ou clique no botão de seta para aplicar o filtro.
  3. A lista de pacotes agora mostra apenas pacotes TCP, mas podemos restringi-la ainda mais. Como estamos interessados no tráfego labex.io que geramos com nosso comando curl, vamos refinar nosso filtro.
  4. Digite tcp contains "labex" na caixa de filtro e aplique-o. Isso mostrará apenas os pacotes TCP que contêm "labex" em seu conteúdo, ajudando-nos a encontrar o tráfego relevante.
Apply TCP filter

Compreendendo as Conversas TCP

Antes de começarmos a seguir os fluxos TCP, é importante entender o que é uma conversa TCP. Uma conversa TCP consiste em todos os pacotes trocados entre dois endpoints (combinações de endereço IP e porta) durante uma sessão TCP. Cada conversa TCP tem vários componentes-chave:

  • Um endereço IP de origem e destino: Em nosso caso, o IP da sua máquina e o IP do servidor labex.io
  • Uma porta de origem e destino: Para nossa conexão HTTPS com labex.io, a porta de destino provavelmente é 443
  • Números de sequência e reconhecimento: Estes rastreiam dados e garantem a entrega correta
  • Várias flags (SYN, ACK, FIN, etc.): Estas controlam o estado da conexão

Em nossa captura, devemos ver uma conversa TCP entre sua máquina e o servidor labex.io.

Seguindo um Fluxo TCP

Agora, vamos analisar o fluxo TCP para nossa solicitação labex.io:

  1. Na lista de pacotes filtrados, procure pacotes com um IP de destino que provavelmente pertence a labex.io. Você deve ver pacotes com a porta de destino 443 (HTTPS), que é usada para tráfego web seguro.
  2. Clique em um desses pacotes para selecioná-lo.
  3. Clique com o botão direito do mouse no pacote selecionado e escolha Follow > TCP Stream no menu de contexto.
Follow TCP Stream menu
  1. Uma nova janela será aberta, mostrando toda a conversa TCP entre sua máquina e o servidor labex.io.
TCP Stream content window
  1. Nesta janela:

    • O texto em vermelho representa os dados enviados de sua máquina (cliente) para o servidor labex.io
    • O texto em azul representa os dados enviados do servidor labex.io de volta para sua máquina
    • Toda a conversa é reconstruída na ordem em que ocorreu
  2. Como acessamos labex.io via HTTPS, você verá principalmente dados criptografados no fluxo. Isso é normal e esperado porque o HTTPS criptografa os dados para protegê-los durante a transmissão. Você pode ser capaz de identificar o handshake TLS no início da comunicação, mas a solicitação e a resposta HTTP reais serão criptografadas.

  3. Explore as diferentes opções de visualização usando o menu suspenso "Show and save data as":

    • ASCII: Mostra os dados como texto (útil para ler quaisquer partes não criptografadas)
    • Hex Dump: Mostra representações hexadecimais e ASCII (bom para examinar os dados criptografados)
    • C Arrays: Formata os dados como arrays da linguagem de programação C
    • Raw: Mostra apenas os dados binários brutos
  4. Para manter um registro desta análise, clique no botão Print. Salve a saída da impressão como um PDF chamado print.pdf no diretório /home/labex/project/.

Print button

Ao seguir o fluxo TCP, você pode ver a comunicação completa entre sua máquina e o servidor labex.io sem ter que juntar manualmente os dados de pacotes individuais. Na próxima etapa, aprenderemos como salvar e analisar esses dados com mais detalhes.

Salvando e Analisando Dados de Fluxo TCP

Nesta etapa, salvaremos os dados do fluxo TCP labex.io que examinamos na etapa anterior para análise offline. Também aprenderemos como interpretar essas informações salvas para extrair insights valiosos da comunicação HTTPS criptografada.

Salvando Dados do Fluxo TCP

Vamos salvar os dados do fluxo TCP de nossa conexão labex.io:

  1. Você ainda deve ter a janela do Fluxo TCP aberta da etapa anterior, mostrando a comunicação entre sua máquina e labex.io. Se você a fechou acidentalmente, basta repetir as etapas para seguir o fluxo TCP de um dos pacotes labex.io.

  2. Na parte inferior da janela do Fluxo TCP, localize o botão Save As.

Save As button location
  1. Clique no botão Save As, que abrirá uma caixa de diálogo de salvamento.

  2. Navegue até o diretório /home/labex/project/ e insira o nome do arquivo tcp_stream_data.txt.

  3. Clique no botão Save. Isso salva todo o fluxo TCP labex.io em um arquivo de texto com o nome especificado.

  4. O conteúdo será salvo no formato que foi selecionado no menu suspenso "Show and save data as". Se você deseja salvá-lo em um formato diferente (como Hex Dump em vez de ASCII), pode alterar o formato no menu suspenso antes de salvar.

Compreendendo os Dados Salvos

Agora que salvamos o fluxo TCP de nossa conexão labex.io, vamos examinar seu conteúdo:

  1. Abra um terminal para visualizar o arquivo salvo:
head /home/labex/project/tcp_stream_data.txt

Ou você pode usar cat para visualizar todo o arquivo:

cat /home/labex/project/tcp_stream_data.txt
  1. Examine o conteúdo do arquivo. Como nosso tráfego para labex.io foi via HTTPS, grande parte dos dados será criptografada e aparecerá como caracteres ilegíveis. No entanto, você ainda pode observar vários elementos importantes:

    • O handshake TLS no início da comunicação, onde seu cliente e o servidor labex.io negociam os parâmetros de criptografia
    • Mensagens de client hello e server hello, que fazem parte do handshake TLS
    • Os dados do aplicativo criptografados que contêm sua solicitação HTTP real e a resposta do servidor
  2. Observe como os dados são organizados da mesma forma que apareceram na janela do Fluxo TCP, com dados do cliente (de sua máquina para labex.io) separados dos dados do servidor (de labex.io para sua máquina).

Aplicações Práticas da Análise do Fluxo TCP

As habilidades de análise de fluxo TCP que você está desenvolvendo são valiosas em muitos cenários de segurança cibernética. Vamos relacioná-las ao que observamos com nosso tráfego labex.io:

  1. Inspeção TLS/SSL: Ao analisar o handshake TLS no fluxo labex.io, os profissionais de segurança podem verificar se as conexões seguras estão usando algoritmos de criptografia fortes.
  2. Monitoramento de Segurança: Mesmo com tráfego HTTPS criptografado como nossa conexão labex.io, os analistas podem identificar padrões de comunicação sem necessariamente descriptografar o conteúdo.
  3. Solução de Problemas de Rede: Se nossa conexão com labex.io tivesse falhado, a análise do fluxo TCP poderia ajudar a identificar se o problema ocorreu durante o estabelecimento da conexão TCP, o handshake TLS ou a troca HTTP.
  4. Análise Forense de Rede: Em um cenário de investigação, fluxos TCP como nossa conexão labex.io ajudariam a reconstruir uma linha do tempo das atividades de rede.
  5. Análise de Desempenho: Ao examinar o tempo e a sequência dos pacotes no fluxo TCP labex.io, você pode identificar possíveis gargalos de desempenho na rede.

Ao salvar fluxos TCP, como fizemos com nossa conexão labex.io, você cria um registro permanente que pode ser:

  • Compartilhado com membros da equipe para análise colaborativa
  • Usado como evidência em investigações de segurança
  • Comparado com outros fluxos capturados para identificar padrões
  • Analisado com ferramentas adicionais além do Wireshark

Essa capacidade de extrair, salvar e analisar dados reais de comunicação de rede é o que torna a análise de fluxo TCP uma técnica tão poderosa para profissionais de segurança de rede.

Técnicas Avançadas de Análise de Fluxos TCP

Nesta etapa final, exploraremos algumas técnicas avançadas para analisar fluxos TCP em nossa captura, focando em nosso tráfego labex.io e quaisquer outras conversas TCP que possam estar presentes. Essas habilidades avançadas ajudarão você a se tornar mais eficiente ao trabalhar com capturas de tráfego de rede complexas.

Filtrando Múltiplos Fluxos TCP

Vamos aprender como explorar e filtrar todas as conversas TCP em nossa captura, não apenas o tráfego labex.io:

  1. Retorne à janela principal do Wireshark. Se a janela do Fluxo TCP de nossa análise labex.io ainda estiver aberta, feche-a.
  2. Para visualizar todas as conversas TCP em sua captura, vá para Statistics > Conversations no menu superior.
  3. Na janela Conversas, clique na aba TCP para filtrar a visualização e mostrar apenas as conversas TCP.
Conversations window
  1. Esta visualização mostra detalhes sobre todas as conversas TCP em sua captura, incluindo:

    • Endereços e portas de origem e destino
    • Bytes transferidos em cada direção
    • Duração de cada conversa
    • Pacotes em cada direção
  2. Procure a conversa que corresponde à nossa conexão labex.io. Ela deve envolver os mesmos endereços IP que você observou na Etapa 2. Você também pode ver outras conversas TCP que estavam acontecendo durante o período de sua captura.

  3. Selecione a conversa labex.io e clique no botão Follow Stream na parte inferior. Isso fornece outra maneira de acessar o mesmo fluxo TCP que analisamos anteriormente.

Usando Números de Fluxo TCP

Cada fluxo TCP em sua captura tem um identificador exclusivo chamado número "tcp.stream". Isso fornece uma maneira precisa de filtrar e analisar fluxos específicos:

  1. Com a janela principal do Wireshark aberta, observe os detalhes do pacote de um dos pacotes labex.io que você identificou anteriormente. Expanda a seção "Transmission Control Protocol" no painel do meio e procure um campo chamado "Stream index" ou similar. Este número é o identificador exclusivo para o fluxo TCP labex.io.

  2. Para filtrar pacotes pertencentes a este fluxo específico, use um filtro de exibição como este:

tcp.stream eq N

Substitua N pelo número do índice do fluxo que você encontrou. Por exemplo, se o fluxo labex.io tiver o índice 0, você usaria:

tcp.stream eq 2
  1. Aplique este filtro na caixa de filtro de exibição. O Wireshark agora mostrará apenas os pacotes que pertencem ao fluxo TCP labex.io, fornecendo uma visualização mais limpa apenas desta conversa.

  2. Este filtro é especialmente útil quando você tem muitas conversas TCP em sua captura e deseja se concentrar em uma específica sem ter que encontrar e clicar com o botão direito em um pacote toda vez.

Filtered packets

Ao dominar essas técnicas avançadas de análise de fluxo TCP, você aprimorou significativamente suas capacidades de análise de tráfego de rede. Agora você pode isolar, examinar e documentar com eficiência as conversas TCP em capturas de rede complexas, uma habilidade inestimável para profissionais de segurança cibernética.

Resumo

Neste laboratório, você aprendeu a usar o recurso "Follow TCP Stream" do Wireshark para análise aprofundada do tráfego de rede. Você adquiriu experiência prática na captura de tráfego de rede, filtragem de conversas TCP, interpretação de dados em vários formatos, salvamento de dados de fluxo para uso offline e aplicação de técnicas avançadas de análise.

Essas habilidades são essenciais para administradores de rede, analistas de segurança e profissionais de TI. Elas permitem que você solucione problemas de rede, investigue incidentes de segurança e entenda o comportamento de aplicativos. À medida que você progride, lembre-se de que o Wireshark possui muitos mais recursos, e a análise de fluxo TCP é apenas uma ferramenta valiosa em seu arsenal de segurança cibernética.