Tcpdump – Capturar e analisar tráfego de rede no Linux
Como usar o Tcpdump
O tcpdump é uma excelente ferramenta para realizar captura e análise de pacotes de rede, recomendada para profissionais que precisem realizar monitoramento e manutenção em uma rede de computadores, além de estudantes que queiram entender a fundo o funcionamento da pilha de protocolos TCP/IP. O site oficial do tcpdump, e também da biblioteca libpcap (sobre o qual ele é baseado), é o www.tcpdump.org.
O tcpdump, que é software livre, roda na linha de comandos, estando disponível em diversos sistemas operacionais, como Linux, BSD, OS X, AIX e outros. Ele faz uso da biblioteca libpcap para realizar a captura de pacotes, e existe uma versão da ferramenta para Windows, chamada de WinDump, que usa a biblioteca WinPcap. Neste artigo vamos nos focar no tcpdump em si, usando para isso um sistema Linux (Ubuntu; qualquer outro sistema Linux irá servir para testar os exemplos mostrados).
Para executar o tcpdump precisaremos de privilégios de administrador no sistema.
Instalação
Para instalar o tcpdump no Ubuntu Linux, ou em sistemas baseados em Debian, use o comando a seguir no terminal:
sudo apt-get install tcpdump
Sintaxe:
tcpdump [opções]
Opções principais:
Exemplos de uso:
1. Capturar somente o tráfego a partir da interface eth0:
sudo tcpdump -i eth0
2. Gravar os pacotes capturados em um arquivo de nome captura.cap:
sudo tcpdump -w captura.cap
3. Ler os pacotes capturados a partir do arquivo captura.cap:
sudo tcpdump -r captura.cap
4. Capturar somente o tráfego associado ao protocolo ICMP, na interface eth0:
sudo tcpdump -i eth0 icmp
5. Capturar somente o tráfego associado ao protocolo ARP, na interface eth0:
sudo tcpdump -i eth0 arp
6. Capturar somente 50 pacotes a partir da interface eth0:
sudo tcpdump -c 50 -i eth0
7. Mostrar os pacotes capturados tanto em ASCII quanto em HEX, incluindo cabeçalho Ethernet:
sudo tcpdump -XX -i eth0
8. Capturar pacotes mostrando IPs em vez de nomes:
sudo tcpdump -n -i eth0
9. Capturar somente pacotes maiores que 100 bytes:
sudo tcpdump -i eth0 greater 100
Neste exemplo, se emitirmos um comando ping a partir de outra janela de terminal, os pacotes não serão capturados, pois são menores que 100 bytes.
10. Capturar somente pacotes destinados à porta 53:
sudo tcpdump -i eth0 port 53
Para testar, abrimos um navegador e acessamos uma página qualquer da Web, como www.bosontreinamentos.com.br
11. Usando filtros de condições: Capturar pacotes que usam o protocolo e cujo endereço de destino seja 64.233.186.121
sudo tcpdump -i eth0 dst 64.233.186.121 and icmp
Para testar, abrimos outra janela de terminal e emitimos o comando ping para vários endereços; somente serão capturados pacotes ao ser usado o endereço discriminado no comando. Se abrirmos um navegador e tentarmos acessar esse mesmo endereço (ou o site, www.planetaunix.com.br), os pacotes não serão capturados, por conta do protocolo utilizado (http em vez de icmp), mostrando que ambas as condições (AND) precisam ser satisfeitas para que essa captura tenha efeito.
12. Capturar somente os pacotes ICMP Echo Request enviados pelo programa ping da máquina local, cujo IP é 192.169.1.105, para um endereço remoto, como 8.8.8.8
sudo tcpdump -i eth0 icmp and src 192.168.1.105 and dst 8.8.8.8
Existem diversas outras opções e funcionalidades disponíveis no utilitário, e recomendamos uma leitura minuciosa das páginas de manual do tcpdump para aprofundar seus conhecimentos a respeito.
Outras ferramentas muito utilizadas para captura e análise de pacotes são o Wireshark, tshark, WinDump, Ettercap e ngrep, entre outras. Vamos estudar diversas delas em artigos específicos aqui no site, ou em vídeos em nosso Canal do YouTube.
Obrigado por compartilhar tantos exemplos práticos.
Abs,
Boa tarde, tem algum tutorial para WinDump?
Mais uma vez agregou muito conhecimento