Pesquisa de site

Capturando pacotes com Tcpdump e analisando-os com Wireshark no Ubuntu


Neste guia, mostrarei como analisar pacotes de rede no Linux. Utilizarei as Ferramentas Tcpdump e Wireshark. Este tutorial usa o Ubuntu como sistema operacional, mas também é aplicável a outras distribuições do Linux.

Por que você precisa do Tcpdump?

Uma pergunta óbvia que pode surgir é por que se preocupar com o Tcpdump quando você pode fazer quase tudo com o Wireshark. Bem, aqui está a resposta para isso: às vezes é mais conveniente usar o Tcpdump para captura de pacotes em comparação com o Wireshark. Por exemplo, se a máquina de destino na qual você está capturando o pacote for remota sem o Wireshark instalado ou for apenas uma máquina sem controle remoto, em ambos os casos, o Tcpdump é muito útil. Para ver várias opções que podem ser usadas com o Tcpdump, procure as páginas do manual.

O que é Tcpdump?

Tcpdump é uma alternativa de linha de comando ao Wireshark. Ele serve ao mesmo propósito que o Wireshark, que é capturar e analisar o tráfego. Tcpdump é um aplicativo separado e não deve ser pensado como uma interface de linha de comando do Wireshark. Como é baseado na interface de linha de comando, não é tão simples de manusear quanto o Wireshark. Novos usuários podem achar assustador no início quando começam a usá-lo e podem encontrar muitos comandos e sintaxe difíceis de lembrar.

Resumo deste tutorial

Passemos agora ao objetivo principal deste guia. Neste guia, veremos como podemos interagir o Tcpdump com o Wireshark. Aqui estamos apontando o trabalho que vamos fazer neste guia:

  1. Conectando-se com a máquina remota (Host 2) com SSH.
  2. Capturando tráfego com Tcpdump e salvando o Capture.
  3. Enviando o arquivo Capture para a máquina local (Host 1) na qual o Wireshark está instalado.
  4. Usando o Wireshark para analisar a sessão Tcpdump capturada.

Verificação pré-voo

Para este tutorial, estamos usando duas máquinas com Ubuntu 20.04 . Você precisa configurá-los por conta própria. Nossa configuração de IP é a seguinte:

Host 1 (máquina no local): 192.168.186.150

Host 2 (máquina remota): 192.168.186.201

As etapas mencionadas neste guia devem funcionar em qualquer sistema Linux com os seguintes requisitos atendidos:

  1. Host no local (Host 1) com Wireshark instalado e SSH configurado.
  2. Acesso SSH do host local (Host 1) ao host remoto (Host 2).
  3. Tcpdump e SSH configurados no host remoto (Host 2).
  4. Conta de usuário ‘sudo’ no Host 2 para executar o Tcpdump e também no Host 1 (depende de como o Wireshark está configurado).

Vamos começar…

Para prosseguir, conecte-se de sua máquina local (Host 1) à máquina remota (Host 2) com o protocolo de acesso SSH. Já configuramos a conexão SSH entre as duas máquinas. Portanto, usaremos o comando abaixo do terminal Host 1 para conectar ao Host 2:

$ ssh ‘user_name’@’IP_of_Host2’

Substitua aqui 'user_name' pelo nome de usuário do Host 2 ao qual estamos nos conectando e 'IP_of_Host2' é o endereço IP do Host 2. Veja a imagem abaixo para referência:

$ tcpdump --list-interfaces

Saída de amostra:

1.enp0s3 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-dispositivo que captura em todas as interfaces) [Up, Running]
4.eno1 [Up ]
5.bluetooth-monitor (Bluetooth Linux Monitor) [nenhum]
6.nflog (Linux netfilter log (NFLOG) interface) [nenhum]
7.nfqueue (Linux netfilter queue (NFQUEUE) interface) [nenhum]
8.bluetooth0 (adaptador Bluetooth número 0) [nenhum]

$ sudo tcpdump -s 65535 -i enp0s3 -w my_remote_capture.pcap

  1. -s: Versões mais antigas dos pacotes de corte Tcpdump para 68 ou 96 bytes. A opção ‘-s’ é usada para capturar pacotes com comprimento total.
  2. -i: Seleciona a interface a ser escutada.
  3. -w: Salva os pacotes brutos capturados em um arquivo ao invés de exibi-los no terminal.

O tráfego capturado é armazenado no arquivo chamado my_remote_capture.pcap. Agora vamos transferir este arquivo para o Host 1 para análise com o Wireshark. Para transferir o arquivo, estamos usando o comando scp. Novamente, já configuramos o scp para funcionar entre as duas máquinas. A sintaxe do comando é a mostrada abaixo:

$ scp my_remote_capture.pcap 'username'@'IP_of_remote_machine':

Aqui username é o nome do usuário no Host 1 e IP_of_remote_machine também é o IP do Host 1.

Analisando o arquivo de captura

Vamos aplicar um filtro de exibição no arquivo acima. Como estávamos conectados ao Host 2 usando SSH, deve haver alguns vestígios do protocolo SSH. No campo de texto correspondente ao filtro de exibição, digite ‘ssh’:

Empacotando…

Parabéns, finalmente demonstramos como podemos fazer uma Captura remota em uma máquina. Vimos como podemos combinar Tcpdump com Wireshark.

Artigos relacionados: