Como Usar tcpdump para Captura de Pacotes

Capturar pacotes é uma maneira muito útil de analisar o funcionamento interno de uma rede. Existem uma variedade de ferramentas disponíveis que foram desenvolvidas para esse propósito. Uma delas é o tcpdump. Aqui mostramos como fazer o melhor uso dessa grande ferramenta para engenheiros de rede e testadores de penetração.
Índice
- O que é tcpdump?
- Instalação
- O Básico
- Especificando uma Interface de Rede
- Especificando uma Porta/Intervalo de Portas
- Especificando um Host ou Sub-rede
- Especificando Verbosidade
- Salvando a Captura em um Arquivo
- Perguntas Frequentes
Leia também: Tor vs. VPN: Um é Melhor que o Outro?
O que é tcpdump?
tcpdump é uma ferramenta de análise de pacotes de rede que foi desenvolvida e lançada em 1988 por uma equipe de cientistas da computação que trabalhava no Lawrence Berkeley Laboratory e no seu Grupo de Pesquisa em Rede. É utilizado para exibir o conteúdo dos pacotes que um computador envia e recebe. A utilidade vem com uma variedade de opções para tornar a captura de pacotes mais específica e focada. Algumas dessas opções incluem diferentes protocolos de rede e interfaces de rede.
Instalação
Muitas distribuições Linux vêm com a utilidade instalada diretamente de fábrica. No entanto, se sua distribuição de escolha não tiver, a instalação é rapidamente simples.
Se você estiver usando Ubuntu ou Debian, por exemplo, pode ser instalado usando apt:
sudo apt install tcpdumpNo CentOS, o mesmo é feito usando yum:
sudo yum install tcpdumpE no Arch Linux usando pacman:
sudo pacman -S tcpdumpLeia também: O que é Onion Routing e Como Você Pode Recuperar sua Privacidade
O Básico
Com o tcpdump instalado, você pode dar uma olhada no manual usando a flag -h:
tcpdump -hIsso mostra uma lista das flags que você pode utilizar ao usar a ferramenta.

Se você quiser ver um manual mais abrangente e detalhado, pode visualizar a página do manual usando o comando man:
man tcpdump
Você pode executar uma captura básica de pacotes digitando:
tcpdumpUsando o comando por conta própria e não especificando uma interface de rede, a ferramenta escolherá uma das interfaces disponíveis em seu sistema.
Se você não quiser que o tcpdump resolva os nomes de host e preferir que ele exiba apenas endereços IP, pode usar a flag -n:
tcpdump -nSe você quiser especificar o número de pacotes que deseja capturar, use a flag -c:
tcpdump -c[número de pacotes]Especificando uma Interface de Rede
Você pode especificar sua interface de rede escolhida usando a flag -i:
tcpdump -i[interface]Dois dos nomes de interface de rede mais comuns na maioria dos sistemas são eth0 e wlan0:
tcpdump -i eth0
tcpdump -i wlan0Se você quiser capturar dados em todas as interfaces, pode usar a opção any:
tcpdump -i anyLeia também: Comutador Ethernet vs. Hub vs. Splitter: Qual é a Diferença?
Especificando uma Porta/Intervalo de Portas
Se você deseja capturar dados que utilizam um número de porta específico, use o comando:
tcpdump -i[interface] port [número da porta]Digamos que você queira capturar tráfego na interface eth0 e para a porta 443 (HTTPS). Digite o seguinte:
tcpdump -i eth0 port 443Além disso, o tcpdump permite que você especifique um intervalo de portas:
tcpdump -i[interface] portrange [intervalo de portas]Especificando um Host ou Sub-rede
Haverá momentos em que você desejará limitar os pacotes capturados apenas àqueles enviados/recebidos de um host ou sub-rede específica. Felizmente, o tcpdump permite que você faça isso.
Você pode especificar um host usando o seguinte formato:
tcpdump -i[interface] host [host]Como exemplo, capture o tráfego na interface eth0 e especifique o host como 127.0.0.1 (seu próprio endereço IP de loopback):
tcpdump -i eth0 host 127.0.0.1Se você quiser especificar uma sub-rede de rede usando a notação CIDR, pode usar o seguinte formato:
tcpdump -i[interface] net [sub-rede]Por exemplo:
tcpdump -i eth0 net 10.0.0.0/8Você também pode especificar diretamente um host de origem:
tcpdump -i[interface] src [host]E um host de destino:
tcpdump -i[interface] dst [host]Leia também: Como Executar Nmap sem Root ou Sudo
Especificando Verbosidade
tcpdump permite que você especifique a verbosidade da captura de pacotes. Isso é muito útil quando você não quer ser sobrecarregado pela quantidade de informações durante uma captura.
Existem três opções incrementais para a verbosidade, as flags -v, -vv e -vvv:
tcpdump -i[interface] -v
tcpdump -i[interface] -vv
tcpdump -i[interface] -vvvA primeira opção especifica a menor verbosidade, enquanto a terceira opção especifica a maior.
Salvando a Captura em um Arquivo
É frequentemente útil salvar os dados capturados em um arquivo, para que possam ser analisados e interpretados posteriormente.
Isso é feito usando a flag -w:
tcpdump -i[interface] -w[nome do arquivo]Como exemplo, você pode salvar os dados capturados em um arquivo chamado “capture.txt”:
tcpdump -i eth0 -w capture.txtLeia também: Como Abrir Portas e Configurar Encaminhamento de Portas no Seu Roteador
Perguntas Frequentes
1. Recebi um erro “Operação não permitida”. Como resolvo isso?
O seguinte é um erro comum que os usuários podem receber ao tentar usar o tcpdump:

O tcpdump lhe dá esse erro quando você não tem as permissões necessárias para realizar a captura de pacotes. Na maioria dos cenários, você pode resolver isso usando sudo. Por exemplo:
sudo tcpdump -i eth02. Como sei quais interfaces de rede estão disponíveis?
O tcpdump tem uma funcionalidade embutida que permite verificar as interfaces de rede disponíveis em seu sistema.
Para verificar as interfaces, use a flag -D:
tcpdump -D