kb.erickguedes.com
Redes de Computadores: Fundamentos Práticos

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.flags para diagnósticos rápidos.