Criei esse tutorial para ensinar as diferentes formas de capturar e analisar pacotes.
Capturar quadros (ethernet) e pacotes (IP) é a última fronteira para resolver qualquer problema em rede de computadores.
1 – Capturando com TCPDUMP
O TCPDUMP é a mais antiga das ferramentas para UNIX (Linux, MacOS, FreeBSD) e permite instalar filtros de analise e duplicação de pacotes em uma interface de rede.
O filtro é opcional e a captura deve ser realizada sempre em uma interface de rede. No Linux é possível capturar de várias interfaces ao mesmo tempo (any).
Use CONTROL+C para interromper a captura.
Por padrão a captura coleta apenas os cabeçalhos, o limite é de 64 bytes para IPv4 e 96 bytes para IPv6. Você pode capturar um tamanho maior ou o pacote inteiro com o argumento -s.
A captura por padrão coloca a interface em modo promíscuo (aceita quadros e pacotes que não são destinados à interface mas que de alguma forma bateram na porta). Isso é desejável quando fazemos port-mirror no switch ou colocamos o Linux em bridge entre os nós de analise. Use “-p” para evitar o modo promíscuo.
1.3 – Captura básica
Exemplos de capturas sem filtro (pega tudo):
Bash# Capturando pacotes na eth0:
tcpdump -i eth0;
# Capturando pacotes em todas as interfaces (somente Linux)
tcpdump -i any;
# Não resolver DNS dos IPs (recomendado):
tcpdump -n -i eth0;
# Exibir dados do cabecalho ethernet (MAC):
tcpdump -ne -i eth0;
# Capturar apenas 100 pacotes e encerrar:
tcpdump -ne -c 100 -i eth0;
# Capturar apenas os primeiros 256 bytes de cada pacote
tcpdump -ne -s 256 -i eth0;
# Capturar pacotes inteiros (analise forense completa)
tcpdump -ne -s 0 -i eth0;
# Capturar dados com detalhes
tcpdump -nev -s 0 -i eth0;
# Capturar dados com detalhes e leitura humanizada
tcpdump -neva -s 0 -i eth0;
# Capturar com detalhes completos, humanizados e versao hexadecimal
tcpdump -nevas0 -x -i eth0;
# Sem modo promiscuo
tcpdump -nevas0 -p -i eth0;
# Capturando pacotes na eth0:tcpdump -ieth0;# Capturando pacotes em todas as interfaces (somente Linux)tcpdump -iany;# Não resolver DNS dos IPs (recomendado):tcpdump -n-ieth0;# Exibir dados do cabecalho ethernet (MAC):tcpdump -ne-ieth0;# Capturar apenas 100 pacotes e encerrar:tcpdump -ne-c100-ieth0;# Capturar apenas os primeiros 256 bytes de cada pacotetcpdump -ne-s256-ieth0;# Capturar pacotes inteiros (analise forense completa)tcpdump -ne-s0-ieth0;# Capturar dados com detalhestcpdump -nev-s0-ieth0;# Capturar dados com detalhes e leitura humanizadatcpdump -neva-s0-ieth0;# Capturar com detalhes completos, humanizados e versao hexadecimaltcpdump -nevas0-x-ieth0;# Sem modo promiscuotcpdump -nevas0-p-ieth0;
1.4 – Captura com filtro
Usando filtros para capturar apenas protocolos ou propriedades dos quadros/pacotes:
Bash# Capturar apenas TCP
tcpdump -pnevas0 -i eth0 "tcp";
# Capturar apenas UDP
tcpdump -pnevas0 -i eth0 "udp";
# Capturar apenas ICMP
tcpdump -pnevas0 -i eth0 "icmp";
# Filtro combinado, capturar udp e icmp
tcpdump -pnevas0 -i eth0 "udp or icmp";
# Capturar apenas pacotes TCP SYNC
tcpdump -pnevas0 -i eth0 'tcp[13] & 2 != 0 && tcp[13] & 16 = 0';
# Capturar data/hora microsegundo e dados de sessao BGP de alguns peerings:
tcpdump --time-stamp-precision=nano \
-pnevas0 -i eth0 \
'(host 10.10.20.5 or host 10.100.2.113) and tcp port 179';
# Capturar apenas TCPtcpdump -pnevas0-ieth0"tcp";# Capturar apenas UDPtcpdump -pnevas0-ieth0"udp";# Capturar apenas ICMPtcpdump -pnevas0-ieth0"icmp";# Filtro combinado, capturar udp e icmptcpdump -pnevas0-ieth0"udp or icmp";# Capturar apenas pacotes TCP SYNCtcpdump -pnevas0-ieth0'tcp[13] & 2 != 0 && tcp[13] & 16 = 0';# Capturar data/hora microsegundo e dados de sessao BGP de alguns peerings:tcpdump --time-stamp-precision=nano\-pnevas0-ieth0\'(host 10.10.20.5 or host 10.100.2.113) and tcp port 179';
1.5 – Salvando em arquivo
O TCPDUMP pode salvar sua captura em arquivos para que mais tarde você faça a analise. Isso é especialmente útil quando o problema é intermitente e você precisa ao final do dia comparar o horário do problema com os pacotes capturados naquele horário.
“O segredo de avançar é começar. O segredo de começar é dividir seus projetos complexos e esmagadores em tarefas pequenas e gerenciáveis, e depois começar pela primeira.“ Mark Twain