Filtros do Wireshark: 12 Expressões Que Substituem 30 Cliques

Substituir cliques na interface gráfica por expressões diretas na barra de busca do Wireshark é a maneira mais rápida de isolar anomalias, erros de conexão e tráfego malicioso em arquivos PCAP massivos. O domínio dos Display Filters (filtros de exibição) elimina a navegação lenta por menus de estatísticas e a expansão manual de cabeçalhos hexadecimais, permitindo que analistas de rede e segurança encontrem a causa raiz de um problema em segundos, seja na interface visual ou via linha de comando com o TShark.

Principais Aprendizados

  • Filtros de exibição utilizam a sintaxe rica do motor de dissecação do Wireshark, enquanto filtros de captura usam a sintaxe BPF (Berkeley Packet Filter). Misturá-los é o erro mais comum.
  • A expressão tcp.flags.syn == 1 && tcp.flags.ack == 0 é o padrão para detectar varreduras de portas (port scans), isolando tentativas de conexão sem resposta.
  • O filtro tls.handshake.type == 1 revela o Server Name Indication (SNI), permitindo identificar o destino de conexões web mesmo quando o tráfego subsequente é criptografado.

A Diferença Crucial: Filtros de Captura vs. Filtros de Exibição

Antes de aplicar qualquer expressão, é fundamental separar as duas camadas de filtragem do Wireshark. Um erro técnico frequente é tentar utilizar a mesma sintaxe para ambas as funções.

Os filtros de captura atuam no nível da biblioteca de captura (pcap) utilizando a sintaxe BPF (Berkeley Packet Filter). Eles descartam pacotes antes mesmo de serem salvos no disco. Por exemplo, para capturar apenas tráfego de um IP específico, utiliza-se host 192.168.1.1. O consenso técnico aponta que o uso excessivo de filtros de captura pode criar pontos cegos perigosos em investigações forenses, embora sejam necessários em redes de altíssimo rendimento (10Gbps+) para poupar armazenamento.

Já os filtros de exibição (Display Filters) utilizam o poderoso motor de dissecação do próprio Wireshark. Eles são aplicados após a captura do tráfego, permitindo refinar a visualização sem deletar os dados originais. A sintaxe é completamente diferente: para ver o tráfego do mesmo IP, a expressão correta seria ip.addr == 192.168.1.1. A recomendação da indústria é a abordagem "catch all, filter later" (capture tudo, filtre depois), garantindo que o contexto do incidente não seja perdido. Para entender melhor como isolar tráfego na origem, ferramentas como o tcpdump são frequentemente utilizadas em conjunto com o Wireshark.

Interface do Wireshark mostrando filtro de exibição TCP

A Evolução do Wireshark: Adeus WinPcap, Olá Npcap

A infraestrutura de captura no Windows passou por mudanças definitivas. O Wireshark não suporta mais o obsoleto WinPcap, cuja última versão (4.1.3) data de 2013 e não recebe mais suporte da Microsoft. O uso do Npcap tornou-se obrigatório para garantir estabilidade e segurança nas capturas modernas.

Além das correções de vulnerabilidades assistidas por Inteligência Artificial presentes na versão estável 4.6.8 (lançada em agosto de 2026), a partir da versão 4.6.0, o Wireshark introduziu o recurso de visualização "Plots". Diferente dos tradicionais "I/O Graphs" que geravam apenas histogramas por tempo, a nova ferramenta permite criar gráficos de dispersão (scatter plots) para correlações avançadas de tráfego, conforme documentado pelo blog oficial do Wireshark.

12 Filtros de Exibição Que Substituem a Navegação Manual

Abaixo estão as expressões lógicas que substituem dezenas de cliques em menus de contexto (como "Follow TCP Stream") e aceleram a Análise de Tráfego de Rede (NTA).

1. Isolando Conversas TCP Específicas

Em vez de clicar com o botão direito e selecionar "Follow TCP Stream", utilize o índice da conversa:

  • tcp.stream eq 5: Isola exclusivamente todos os pacotes (ida e volta) da quinta conexão TCP registrada no arquivo PCAP.

2. Identificando Problemas de Retransmissão e Latência

Para diagnosticar lentidão na rede sem abrir a janela de "Expert Information":

  • tcp.analysis.retransmission: Mostra apenas pacotes que precisaram ser reenviados, indicando perda de pacotes no caminho.
  • tcp.analysis.flags: Exibe todos os eventos anômalos detectados pelo analisador TCP, como ZeroWindow, Keep-Alive e retransmissões rápidas. Entender a anatomia de um segmento TCP é vital para interpretar esses alertas.

3. Detecção de Port Scans (Varreduras de Rede)

Para equipes de SOC (Security Operations Center), isolar tentativas de mapeamento de rede é crucial:

  • tcp.flags.syn == 1 && tcp.flags.ack == 0: O padrão da indústria para identificar conexões iniciadas (SYN) que ainda não receberam reconhecimento (ACK). Um alto volume desse filtro partindo de um único IP indica um scan ativo. Se você precisa descobrir o que está rodando localmente, o comando netstat -ano é o complemento ideal no endpoint.
Diagrama de detecção de port scan via pacotes SYN

4. Extração de Metadados em Tráfego Criptografado (TLS)

Com a maior parte da web utilizando HTTPS, ler o conteúdo do pacote não é mais possível sem as chaves de sessão. No entanto, é possível extrair o destino da conexão observando o início da comunicação:

  • tls.handshake.type == 1: Isola o pacote Client Hello. É neste pacote que o navegador envia o SNI (Server Name Indication) em texto claro, revelando o domínio acessado antes da criptografia ser estabelecida. Entender o handshake TLS é essencial para investigações modernas.

5. Filtragem Avançada de DNS

Erros de resolução de nomes frequentemente causam falhas de aplicação que parecem ser problemas de roteamento:

  • dns.flags.rcode != 0: Exibe todas as respostas DNS que resultaram em erro (como NXDomain - domínio não encontrado).
  • dns.qry.name contains "microsoft": Busca por qualquer requisição de resolução de nome que contenha a string especificada. Compreender como o DNS funciona ajuda a interpretar essas falhas de resolução.

6. Operadores Lógicos Combinados

A verdadeira força dos filtros está na combinação de condições (AND/OR/NOT):

  • ip.addr == 10.0.0.50 && !(tcp.port == 80 || tcp.port == 443): Mostra todo o tráfego do IP 10.0.0.50, exceto a navegação web padrão (HTTP e HTTPS). Ideal para encontrar tráfego de malware ou serviços não documentados.
  • http.request.method == "POST": Isola apenas envios de dados para servidores web (como formulários ou uploads), ignorando o tráfego de leitura (GET).

TShark: O Wireshark na Linha de Comando

Muitos profissionais acreditam erroneamente que o TShark é uma versão inferior do Wireshark. Na realidade, ele possui exatamente o mesmo motor de dissecação, mas é otimizado para lidar com arquivos PCAP gigantescos que fariam a interface gráfica travar por falta de memória RAM.

No TShark, os filtros de exibição são aplicados utilizando a flag -Y, conforme documentado pelo projeto TShark.dev. Por exemplo: tshark -r captura.pcap -Y 'tls.handshake.type == 1'.

A maior vantagem do TShark é a extração em massa de campos específicos (flag -T fields) para integração com pipelines de dados (grep, awk). O comando tshark -r captura.pcap -T fields -e ip.src -e dns.qry.name extrairá apenas os IPs de origem e os domínios consultados, gerando uma lista limpa e pronta para análise estatística.

Perguntas Frequentes

O Wireshark consegue descriptografar qualquer tráfego HTTPS se eu tiver o arquivo PCAP?

Não. Nas versões modernas do TLS (1.3), devido ao Perfect Forward Secrecy (PFS), possuir a chave privada do servidor não é suficiente. É necessário possuir as chaves de sessão simétricas, geralmente exportadas pelo navegador do cliente através da variável de ambiente SSLKEYLOGFILE, para que o Wireshark consiga ler o payload descriptografado.

Qual a diferença entre usar "ip.addr" e "ip.src" nos filtros?

O filtro ip.src == 192.168.1.1 mostrará apenas os pacotes onde o IP especificado é a origem da transmissão. O filtro ip.dst filtra pelo destino. Já o ip.addr == 192.168.1.1 é um atalho lógico que mostra pacotes onde o IP é a origem OU o destino, exibindo a conversa completa.

Por que meu filtro "ip.addr == 10.0.0.1" não funciona nas opções de captura?

Porque as opções de captura (Capture Options) utilizam a sintaxe BPF, que atua antes da dissecação do pacote. Para filtrar por IP durante a captura e evitar que outros pacotes sejam salvos em disco, a sintaxe correta BPF é host 10.0.0.1.

Fontes

Postar um comentário

0 Comentários

Contact form