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:
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.
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.
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.
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:
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.
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.
À 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.
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.
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.
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.
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:
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".
Digite tcp na caixa de filtro e pressione Enter ou clique no botão de seta para aplicar o filtro.
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.
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.
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:
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.
Clique em um desses pacotes para selecioná-lo.
Clique com o botão direito do mouse no pacote selecionado e escolha Follow > TCP Stream no menu de contexto.
Uma nova janela será aberta, mostrando toda a conversa TCP entre sua máquina e o servidor labex.io.
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
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.
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
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/.
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:
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.
Na parte inferior da janela do Fluxo TCP, localize o botão Save As.
Clique no botão Save As, que abrirá uma caixa de diálogo de salvamento.
Navegue até o diretório /home/labex/project/ e insira o nome do arquivo tcp_stream_data.txt.
Clique no botão Save. Isso salva todo o fluxo TCP labex.io em um arquivo de texto com o nome especificado.
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:
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
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
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:
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.
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.
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.
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.
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:
Retorne à janela principal do Wireshark. Se a janela do Fluxo TCP de nossa análise labex.io ainda estiver aberta, feche-a.
Para visualizar todas as conversas TCP em sua captura, vá para Statistics > Conversations no menu superior.
Na janela Conversas, clique na aba TCP para filtrar a visualização e mostrar apenas as conversas TCP.
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
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.
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:
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.
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
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.
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.
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.