Wireshark e Análise de Tráfego
Aula 5 de 6
Wireshark
Instalação e Captura
# Verificar se Wireshark está instalado
Get-Command wireshark -ErrorAction SilentlyContinue
Get-Command tshark -ErrorAction SilentlyContinue
# Iniciar captura via CLI
tshark -i \Device\NPF_{...}
tshark -D # Listar interfaces disponíveis
Filtros de Captura vs Display
Filtros de Captura (BPF — Berkeley Packet Filter): Filtram no momento da captura — não consomem recursos do disco.
host 192.168.1.1 # Tráfego de/para IP específico
port 80 # Tráfego HTTP
tcp # Apenas TCP
not arp and not icmp # Excluir ARP e ICMP
net 192.168.1.0/24 # Sub-rede inteira
portrange 8000-8080 # Range de portas
Filtros de Display: Filtram sobre os pacotes já capturados — flexíveis, sem perda de dados.
ip.addr == 192.168.1.1 # Endereço IP
tcp.port == 443 # Porta TCP
http.request.method == "GET" # Método HTTP
tcp.flags.syn == 1 # Pacotes SYN
dns.qry.name contains "google" # Consultas DNS
http.response.code == 404 # Respostas 404
tcp.analysis.retransmission # Retransmissões TCP
tcp.analysis.ack_lost_segment # ACKs perdidos
tcp.stream eq 0 # Fluxo TCP específico
Análise de Fluxo
# Seguir fluxo TCP via CLI
tshark -r captura.pcap -q -z follow,tcp,ascii,0
# Estatísticas de protocolo
tshark -r captura.pcap -q -z io,phs
# IO Graph (tráfego por segundo)
tshark -r captura.pcap -q -z io,stat,1
# Resolver hosts
tshark -r captura.pcap -q -z hosts
Expert Info
Wireshark classifica eventos em:
- Chat: informações normais (SYN, ACK)
- Note: situações incomuns (retransmissões, dup ACK)
- Warning: problemas sérios (checksum errors, zero window)
- Error: pacotes malformados
tcpdump
# Comandos essenciais
tcpdump -i eth0 # Capturar na interface
tcpdump -i eth0 host 10.0.0.1 # Filtrar por host
tcpdump -i eth0 port 80 # Filtrar por porta
tcpdump -i eth0 tcp and port 443 # Combinação
tcpdump -i eth0 -w captura.pcap # Salvar em arquivo
tcpdump -r captura.pcap # Ler arquivo
tcpdump -i eth0 -s 0 -v # Payload completo, verbose
tcpdump -i eth0 -X # Hex + ASCII
tcpdump -i eth0 -nn # Sem resolução de nomes
tcpdump -i eth0 -c 100 # Parar após 100 pacotes
# Flags TCP
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
tcpdump -i eth0 'tcp[tcpflags] & tcp-rst != 0'
Análise de Tráfego TCP
Three-Way Handshake
SYN Seq=100 → (Cliente → Servidor)
SYN-ACK Seq=300, Ack=101 → (Servidor → Cliente)
ACK Seq=101, Ack=301 → (Cliente → Servidor)
Retransmissão e Window
# Indicadores de problemas
_ tcp.analysis.retransmission → Timeout expirou, pacote reenviado
_ tcp.analysis.fast_retransmission → 3 dup ACKs recebidos
_ tcp.analysis.zero_window → Receptor sem buffer (aplicação lenta)
_ tcp.analysis.window_full → Janela atingiu o máximo
_ tcp.analysis.lost_segment → Gap na sequência (pacote perdido)
Latência
# Calcular RTT (Round Trip Time)
tshark -r captura.pcap -Y "tcp.stream eq 0" -T fields -e tcp.analysis.ack_rtt
HTTP/SSL Troubleshooting
# Capturar tráfego HTTP específico
tshark -i 1 -Y "http.request or http.response" -T fields -e http.host -e http.request.uri -e http.response.code
# Capturar TLS handshake
tshark -i 1 -Y "tls.handshake.type == 1 or tls.handshake.type == 2" # Client/Server Hello
# Descriptografar TLS com chave de sessão (SSLKEYLOGFILE)
# Configure a variável SSLKEYLOGFILE no navegador
$env:SSLKEYLOGFILE = "C:\temp\keys.log"
# No Wireshark: Editar → Preferências → TLS → (Pre)-Master-Secrets log filename
Lab: Análise Prática com tshark
# Capturar tráfego DNS (porta 53)
tshark -i 1 -f "port 53" -c 10 -T fields -e dns.qry.name -e dns.flags.response
# Capturar um GET HTTP
tshark -i 1 -f "tcp port 80" -c 10 -Y "http.request" -T fields -e http.request.method -e http.host
# Analisar pacote específico com detalhes
# tshark -r captura.pcap -Y "frame.number == 1" -V
# Gerar estatísticas de protocolo de uma captura
# tshark -r captura.pcap -q -z io,phs
# Monitorar tráfego TCP em tempo real (porta específica)
# tshark -i 1 -f "tcp port 8080" -T fields -e ip.src -e ip.dst -e tcp.srcport -e tcp.dstport -e tcp.flags.syn -e tcp.flags.ack
# Simular tráfego para captura
ping -n 10 8.8.8.8
nslookup google.com
curl http://example.com -UseBasicParsing
Wireshark/tshark é o canivete suíço da análise de redes. Filtros display resolvem 90% dos problemas: comece com
tcp.analysis.flagspara diagnósticos rápidos.