Analisando Tráfego de Rede com Wireshark
Quando Usar
- Investigar suspeitas de intrusão na rede examinando evidências em nível de pacote de tráfego de comando e controle, exfiltração de dados ou movimento lateral
- Diagnosticar problemas de desempenho de rede, como retransmissões, fragmentação ou falhas de resolução DNS
- Analisar padrões de comunicação de malware capturando tráfego de hosts isolados ou em sandbox
- Validar regras de firewall e IDS confirmando qual tráfego realmente está atravessando segmentos de rede
- Extrair arquivos, credenciais ou indicadores de compromisso de sessões de rede capturadas
Não use para capturar tráfego em redes sem autorização, para interceptar comunicações privadas sem autorização legal, ou como substituto de plataformas SIEM completas em monitoramento de produção.
Pré-requisitos
- Wireshark 4.0+ e utilitário de linha de comando tshark instalados
- Privilégios root/sudo ou associação ao grupo
wiresharkpara captura de pacotes ao vivo - Acesso à interface de rede (NIC física, porta span ou tap de rede) ao segmento monitorado
- Espaço em disco suficiente para arquivos de captura de pacotes (estime 1 GB por minuto em links gigabit movimentados)
- Familiaridade com protocolos TCP/IP, HTTP, DNS, TLS e SMB em nível de pacote
Fluxo de Trabalho
Etapa 1: Configurar Ambiente de Captura
Configure a interface de captura e filtros para direcionar o tráfego relevante:
# Listar interfaces disponíveis
tshark -D
# Iniciar captura na eth0 com filtro de captura para limitar escopo
tshark -i eth0 -f "host 10.10.5.23 and (port 80 or port 443 or port 445)" -w /tmp/capture.pcapng
# Capturar com buffer circular para gerenciar uso de disco (10 arquivos, 100MB cada)
tshark -i eth0 -b filesize:102400 -b files:10 -w /tmp/rolling_capture.pcapng
# Capturar em múltiplas interfaces simultaneamente
tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcapng
Para GUI do Wireshark, defina o filtro de captura na janela de Opções de Captura antes de iniciar.
Etapa 2: Aplicar Filtros de Exibição para Análise Direcionada
# Filtrar tráfego HTTP contendo user agents suspeitos
tshark -r capture.pcapng -Y "http.user_agent contains \"curl\" or http.user_agent contains \"Wget\""
# Encontrar consultas DNS para TLDs suspeitos
tshark -r capture.pcapng -Y "dns.qry.name contains \".xyz\" or dns.qry.name contains \".top\" or dns.qry.name contains \".tk\""
# Identificar retransmissões TCP indicando problemas de rede
tshark -r capture.pcapng -Y "tcp.analysis.retransmission"
# Filtrar tráfego SMB para detecção de movimento lateral
tshark -r capture.pcapng -Y "smb2.cmd == 5 or smb2.cmd == 3" -T fields -e ip.src -e ip.dst -e smb2.filename
# Encontrar transmissão de credenciais em texto claro
tshark -r capture.pcapng -Y "ftp.request.command == \"PASS\" or http.authbasic"
# Detectar padrões de beaconing (conexões em intervalos regulares)
tshark -r capture.pcapng -Y "ip.dst == 203.0.113.50" -T fields -e frame.time_relative -e ip.src -e tcp.dstport
Etapa 3: Análise Profunda Específica por Protocolo
# Seguir um stream TCP para reconstruir uma conversa
tshark -r capture.pcapng -q -z follow,tcp,ascii,0
# Analisar pares requisição/resposta HTTP
tshark -r capture.pcapng -Y "http" -T fields -e frame.time -e ip.src -e ip.dst -e http.request.method -e http.request.uri -e http.response.code
# Extrair estatísticas de consulta/resposta DNS
tshark -r capture.pcapng -q -z dns,tree
# Analisar handshakes TLS para conjuntos de cifras fracos
tshark -r capture.pcapng -Y "tls.handshake.type == 2" -T fields -e ip.src -e ip.dst -e tls.handshake.ciphersuite
# Enumeração de acesso a arquivos SMB
tshark -r capture.pcapng -Y "smb2" -T fields -e frame.time -e ip.src -e ip.dst -e smb2.filename -e smb2.cmd
Etapa 4: Extrair Artefatos e IOCs
# Exportar objetos HTTP (arquivos transferidos via HTTP)
tshark -r capture.pcapng --export-objects http,/tmp/http_objects/
# Exportar objetos SMB (arquivos transferidos via SMB)
tshark -r capture.pcapng --export-objects smb,/tmp/smb_objects/
# Extrair todos os IPs de destino únicos para consulta em inteligência de ameaças
tshark -r capture.pcapng -T fields -e ip.dst | sort -u > unique_dest_ips.txt
# Extrair informações de certificados SSL/TLS
tshark -r capture.pcapng -Y "tls.handshake.type == 11" -T fields -e x509sat.uTF8String -e x509ce.dNSName
# Extrair todas as URLs acessadas
tshark -r capture.pcapng -Y "http.request" -T fields -e http.host -e http.request.uri | sort -u > urls.txt
# Calcular hash dos arquivos extraídos para correspondência de IOC
find /tmp/http_objects/ -type f -exec sha256sum {} \; > extracted_file_hashes.txt
Etapa 5: Análise Estatística e Detecção de Anomalias
# Estatísticas de hierarquia de protocolos
tshark -r capture.pcapng -q -z io,phs
# Estatísticas de conversas ordenadas por bytes
tshark -r capture.pcapng -q -z conv,tcp -z conv,udp
# Identificar os maiores comunicadores
tshark -r capture.pcapng -q -z endpoints,ip
# Dados de gráfico IO (pacotes por segundo)
tshark -r capture.pcapng -q -z io,stat,1,"COUNT(frame) frame"
# Detectar padrões de varredura de portas
tshark -r capture.pcapng -Y "tcp.flags.syn == 1 and tcp.flags.ack == 0" -T fields -e ip.src -e tcp.dstport | sort | uniq -c | sort -rn | head -20
Etapa 6: Gerar Relatórios e Exportar Evidências
# Exportar pacotes filtrados para um novo PCAP para preservação de evidências
tshark -r capture.pcapng -Y "ip.addr == 10.10.5.23 and tcp.port == 4444" -w evidence_c2_traffic.pcapng
# Gerar resumo de pacotes em formato CSV
tshark -r capture.pcapng -T fields -E header=y -E separator=, -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len > traffic_summary.csv
# Criar saída PDML (XML) para análise programática
tshark -r capture.pcapng -T pdml > capture_analysis.xml
# Calcular hash do arquivo de captura para cadeia de custódia
sha256sum capture.pcapng > capture_hash.txt
Conceitos-chave
| Termo | Definição |
|---|---|
| Filtro de Captura (BPF) | Sintaxe de filtro Berkeley Packet Filter aplicada no momento da captura para limitar quais pacotes são gravados, reduzindo o tamanho do arquivo e melhorando o desempenho |
| Filtro de Exibição | Sintaxe de filtro específica do Wireshark aplicada a pacotes já capturados para análise focada sem alterar o arquivo de captura |
| PCAPNG | Formato de captura de pacotes de próxima geração que suporta múltiplas interfaces, resolução de nomes, anotações e metadados em um único arquivo |
| Stream TCP | Sequência remontada de segmentos TCP representando uma conversa bidirecional completa entre dois endpoints |
| Dissecador de Protocolo | Módulo do Wireshark que decodifica os campos e a estrutura de um protocolo específico, permitindo inspeção profunda do conteúdo dos pacotes |
| Gráfico IO | Visualização em série temporal das taxas de pacotes ou bytes durante a duração da captura, útil para identificar picos de tráfego ou beaconing |
Ferramentas e Sistemas
- Wireshark 4.0+: Analisador de pacotes com GUI que possui dissecadores de protocolo para mais de 3.000 protocolos, remontagem de streams e capacidades de exportação
- tshark: Versão em linha de comando do Wireshark para captura sem interface gráfica, processamento em lote e pipelines de análise scriptados
- tcpdump: Ferramenta de captura de pacotes leve para capturas rápidas em sistemas remotos sem dependências de GUI
- mergecap: Utilitário do Wireshark para combinar múltiplos arquivos de captura em um único PCAP para análise unificada
- editcap: Utilitário do Wireshark para dividir, filtrar e converter entre formatos de arquivo de captura
Cenários Comuns
Cenário: Investigando Suspeita de Exfiltração de Dados via Tunelamento DNS
Contexto: A equipe SOC detectou volumes de consultas DNS excepcionalmente altos de uma estação de trabalho (10.10.3.45) para um domínio externo. O SIEM sinalizou consultas DNS com média de 200 por minuto, comparado a uma linha de base de 15. Uma captura de pacotes foi iniciada a partir do tap de rede na VLAN da estação de trabalho.
Abordagem:
- Capturar tráfego da sub-rede da estação usando
tshark -i eth2 -f "host 10.10.3.45 and port 53" -w dns_exfil_investigation.pcapng - Analisar padrões de consulta DNS:
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.name contains \"suspect-domain.xyz\"" -T fields -e frame.time -e dns.qry.name - Examinar rótulos de subdomínio para dados codificados (subdomínios longos com codificação base64 indicam tunelamento):
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.type == 16" -T fields -e dns.qry.name -e dns.txt - Calcular o volume de dados somando os comprimentos dos nomes das consultas para estimar a largura de banda de exfiltração
- Extrair nomes de consulta únicos e decodificar subdomínios base64 para recuperar o conteúdo exfiltrado
- Exportar pacotes de evidência para um PCAP separado e gerar hash SHA-256 para cadeia de custódia
Armadilhas:
- Capturar tráfego não filtrado em uma rede movimentada e ficar sem espaço em disco antes de coletar dados relevantes
- Usar filtros de exibição em vez de filtros de captura, resultando em arquivos enormes que são lentos para processar
- Ignorar tráfego DNS criptografado (DoH/DoT) que contorna a captura DNS tradicional na porta 53
- Deixar de estabelecer o hash da captura de pacotes e a documentação da cadeia de custódia para evidências forenses
Formato de Saída
## Relatório de Análise de Tráfego
**ID do Caso**: IR-2024-0847
**Arquivo de Captura**: dns_exfil_investigation.pcapng
**SHA-256**: a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
**Duração**: 2024-03-15 14:00:00 a 14:45:00 UTC
**Interface de Origem**: eth2 (porta span VLAN 30)
### Descobertas
**1. Tunelamento DNS Confirmado**
- Origem: 10.10.3.45
- DNS de Destino: 8.8.8.8 (encaminhado para ns1.suspect-domain.xyz)
- Volume de consultas: 9.247 consultas em 45 minutos (205/min vs linha de base de 15/min)
- Comprimento médio do rótulo do subdomínio: 63 caracteres (dados codificados em base64)
- Dados estimados exfiltrados: ~2,3 MB por meio de respostas de registros TXT
**2. Indicadores de Compromisso**
- Domínio: suspect-domain.xyz (registrado 3 dias antes)
- Servidor de Nomes: ns1.suspect-domain.xyz (203.0.113.50)
- Padrão de consulta: requisições de registro TXT com subdomínios codificados em base64
- Padrão de resposta: registros TXT contendo payloads codificados em base64