Wireshark: guía rápida y cheat sheet de filtros

Wireshark: guía rápida y cheat sheet de filtros

Wireshark es la herramienta de análisis de paquetes más usada en análisis forense de red, SOC y pruebas de seguridad. Saber escribir filtros correctos marca la diferencia entre perder horas buscando en miles de paquetes o llegar al tráfico relevante en segundos. Esta cheat sheet cubre los filtros de captura (BPF) y los filtros de visualización (display filters), con ejemplos reales para los protocolos más habituales en ciberseguridad. Para más contexto sobre herramientas defensivas, consulta nuestra guía de cursos y certificaciones de ciberseguridad.

Captura vs. filtros de visualización: la diferencia importante

Wireshark tiene dos tipos de filtros con sintaxis completamente distintas:

  • Filtros de captura (Capture Filters): se aplican antes de capturar. Usan sintaxis BPF (Berkeley Packet Filter). Solo capturan el tráfico que cumple el filtro; el resto se descarta y no se puede recuperar.
  • Filtros de visualización (Display Filters): se aplican sobre una captura ya realizada o en curso. Usan el propio lenguaje de Wireshark, más expresivo. No descartan paquetes, solo los ocultan.

En un entorno de análisis forense o SOC, lo habitual es capturar todo y filtrar después con display filters. Los capture filters se usan cuando el volumen de tráfico es tan alto que guardarlo todo no es viable.

Filtros de captura (BPF)

Filtro BPF Qué captura
host 192.168.1.10 Todo el tráfico hacia o desde esa IP
src host 192.168.1.10 Tráfico originado en esa IP
dst host 192.168.1.10 Tráfico destinado a esa IP
net 192.168.1.0/24 Todo el tráfico de esa subred
port 80 Tráfico HTTP (puerto 80, TCP o UDP)
tcp port 443 Tráfico HTTPS por TCP
not port 22 Excluye SSH (útil para no capturar tu propia sesión)
tcp Solo protocolo TCP
udp Solo protocolo UDP
icmp Solo pings y mensajes ICMP
port 53 Tráfico DNS
tcp port 80 or tcp port 443 HTTP y HTTPS juntos
host 10.0.0.1 and port 3389 RDP hacia un host concreto
not host 10.0.0.254 Excluye un host específico (p. ej. el gateway)

Filtros de visualización (Display Filters): HTTP

Display Filter Qué muestra
http Todo el tráfico HTTP
http.request Solo peticiones HTTP (GET, POST, etc.)
http.response Solo respuestas HTTP
http.request.method == "POST" Solo peticiones POST (envío de formularios, credenciales)
http.request.method == "GET" Solo peticiones GET
http.response.code == 200 Respuestas exitosas
http.response.code == 404 Recursos no encontrados
http.response.code >= 400 Todos los errores HTTP
http.host contains "ejemplo.com" Peticiones a un dominio concreto
http.request.uri contains "login" Peticiones a rutas con «login»
http contains "password" Paquetes HTTP con la cadena «password» en cualquier campo

Filtros de visualización: DNS

Display Filter Qué muestra
dns Todo el tráfico DNS
dns.qry.name contains "google" Consultas DNS que contienen «google»
dns.qry.type == 1 Consultas de tipo A (IPv4)
dns.qry.type == 28 Consultas de tipo AAAA (IPv6)
dns.qry.type == 15 Consultas MX (correo)
dns.flags.response == 0 Solo las preguntas DNS (sin respuestas)
dns.flags.response == 1 Solo las respuestas DNS
dns.count.answers > 10 Respuestas con muchos registros (posible DNS tunneling)

Filtros de visualización: TCP y conexiones

Display Filter Qué muestra
tcp Todo el tráfico TCP
tcp.port == 443 Tráfico en el puerto 443 (origen o destino)
tcp.dstport == 22 Conexiones SSH entrantes
tcp.srcport == 4444 Tráfico originado en el puerto 4444 (p. ej. reverse shell)
tcp.flags.syn == 1 and tcp.flags.ack == 0 Paquetes SYN puros (inicio de conexión o escaneo de puertos)
tcp.flags.reset == 1 Conexiones reseteadas (puertos cerrados o rechazados)
tcp.stream eq 5 Muestra solo el stream TCP número 5 (útil tras Follow TCP Stream)
tcp.analysis.retransmission Retransmisiones (problemas de red o evasión)
ip.src == 10.0.0.5 and tcp.dstport == 80 Peticiones HTTP desde una IP concreta

Follow Stream: reconstruir conversaciones

Una de las funciones más potentes de Wireshark es reconstruir una sesión completa. Haz clic derecho sobre cualquier paquete de una conversación y selecciona:

  • Follow → TCP Stream: reconstruye la sesión TCP completa en texto. Imprescindible para ver credenciales en claro (HTTP, FTP, Telnet) o el contenido de una reverse shell.
  • Follow → HTTP Stream: similar pero decodificando la capa HTTP.
  • Follow → UDP Stream: para protocolos como DNS o TFTP.

Al abrir el stream, Wireshark aplica automáticamente el filtro tcp.stream eq N para aislar esa conversación. Cierra la ventana del stream para volver a la vista general.

Filtros combinados y operadores lógicos

Operador Ejemplo Significado
and / && ip.src == 10.0.0.1 and http Cumple ambas condiciones
or / || dns or http Cumple al menos una
not / ! not arp Excluye el protocolo
contains http.host contains "banco" El campo contiene la cadena
matches http.request.uri matches ".php$" Coincidencia con regex
== ip.addr == 192.168.1.5 Igualdad exacta
!= eth.src != 00:11:22:33:44:55 Diferente de
> / < frame.len > 1400 Comparación numérica

Atajos de teclado más usados

Atajo Acción
Ctrl + E Iniciar / detener captura
Ctrl + F Buscar paquete por contenido
Ctrl + G Ir a un número de paquete concreto
Ctrl + Shift + R Reiniciar captura desde cero
Ctrl + Shift + F Buscar en todos los campos del paquete
Ctrl + Alt + Shift + T Follow TCP Stream (desde paquete seleccionado)

Si estás preparando una certificación como el Security+ o el SSCP, el análisis de tráfico con Wireshark aparece en los dominios de operaciones de red y monitorización de seguridad. Practica con capturas de ejemplo en la sección Sample Captures de la wiki oficial de Wireshark.

Vídeo: «Cómo usar Wireshark: capturar, filtrar y analizar paquetes», por ComoFriki (YouTube).

Preguntas frecuentes

¿Cuál es la diferencia entre un filtro de captura y un display filter en Wireshark?

Un filtro de captura (BPF) descarta el tráfico que no cumple la condición antes de guardarlo: si no lo capturaste, no puedes recuperarlo. Un display filter se aplica sobre una captura ya existente y solo oculta paquetes visualmente sin eliminarlos; puedes quitarlo en cualquier momento para volver a ver el tráfico completo. En análisis forense se usa casi siempre display filter para no perder evidencias.

¿Cómo veo las credenciales que viajan en claro por la red?

Captura el tráfico de la interfaz correspondiente, aplica el filtro http.request.method == "POST" y luego haz clic derecho sobre un paquete relevante y selecciona Follow → TCP Stream. Si las credenciales van sin cifrar (HTTP, FTP, Telnet, SMTP sin TLS) aparecerán en texto plano en la ventana del stream. Para tráfico cifrado (HTTPS/TLS) necesitas la clave privada del servidor o el secreto de sesión (SSLKEYLOGFILE) para descifrarlo.

¿Cómo detecto un escaneo de puertos Nmap en Wireshark?

Un escaneo SYN (nmap -sS) genera muchos paquetes SYN hacia puertos diferentes desde la misma IP origen en muy poco tiempo. El filtro tcp.flags.syn == 1 and tcp.flags.ack == 0 aísla esos paquetes. Combínalo con ip.src == X.X.X.X para ver el patrón de un origen concreto: la secuencia de puertos sondeados queda bastante clara.

¿Wireshark puede descifrar tráfico TLS/HTTPS?

Sí, bajo ciertas condiciones. Si configuras la variable de entorno SSLKEYLOGFILE en el navegador (Chrome y Firefox la soportan), el navegador vuelca los secretos de sesión a ese fichero. En Wireshark, ve a Edit → Preferences → Protocols → TLS y señala ese fichero en (Pre)-Master-Secret log filename. Wireshark descifra el tráfico TLS correspondiente automáticamente.

Sigue tu camino

Cursos de ciberseguridad por especialización

Descubre los cursos que más se adaptan a tu perfil profesional.