Wireshark: guía completa de filtros, comandos y análisis de tráfico [2026]
Wireshark puede capturar miles de paquetes en pocos segundos, pero el desafío no es almacenarlos: el verdadero problema es saber qué estás buscando. Aprender Wireshark no consiste en memorizar una lista interminable de filtros, sino en saber formular preguntas precisas a la red: ¿quién inició la conexión?, ¿qué DNS resolvió?, ¿se completó el handshake TCP?, ¿hubo retransmisiones o resets? En esta guía aprenderás desde los display filters esenciales hasta sintaxis BPF, TShark, troubleshooting y análisis forense para Blue Team.
Respuesta rápida: los filtros Wireshark que deberías conocer primero #
Si ya tienes una captura de paquetes abierta en tu ordenador y necesitas una referencia rápida de visualización, estos son los display filters fundamentales:
| Objetivo de análisis | Display Filter |
|---|---|
| Mostrar TCP | tcp |
| Mostrar UDP | udp |
| Mostrar DNS | dns |
| Mostrar ARP | arp |
| Mostrar ICMP | icmp |
| Mostrar TLS | tls |
| Mostrar HTTP / HTTP/2 | http || http2 |
| Mostrar QUIC | quic |
| Una IP como origen o destino | ip.addr == 192.168.1.10 |
| Filtrar solo paquetes de origen | ip.src == 192.168.1.10 |
| Filtrar solo paquetes de destino | ip.dst == 192.168.1.10 |
| Puerto TCP específico | tcp.port == 443 |
| Puerto UDP específico | udp.port == 53 |
| Inicio de conexión: SYN sin ACK | tcp.flags.syn == 1 && tcp.flags.ack == 0 |
| Cierre abrupto: TCP Reset | tcp.flags.reset == 1 |
| Retransmisiones TCP | tcp.analysis.retransmission |
| Fast Retransmissions | tcp.analysis.fast_retransmission |
| Duplicate ACKs | tcp.analysis.duplicate_ack |
| Segmentos fuera de orden | tcp.analysis.out_of_order |
| Aislar una conversación TCP | tcp.stream == 5 |
| Consultas DNS (Queries) | dns.flags.response == 0 |
| Respuestas DNS (Answers) | dns.flags.response == 1 |
| Nombre consultado en DNS | dns.qry.name contains "ejemplo" |
| Errores en respuestas DNS | dns.flags.rcode != 0 |
| Peticiones HTTP | http.request |
| Peticiones HTTP POST | http.request.method == "POST" |
| Host consultado en cabecera HTTP | http.host == "example.com" |
| SNI cuando está expuesto (sin ECH) | tls.handshake.extensions_server_name contains "example.com" |
Comprende cómo viajan los paquetes, puertos, protocolos y direccionamiento IP antes de auditar tráfico con Wireshark.
Qué es Wireshark y para qué sirve realmente #
Wireshark es un analizador de protocolos de red interactivo y de código abierto. Permite capturar tráfico en tiempo real o abrir archivos de captura previos (formatos .pcap y .pcapng) para diseccionar protocolos como Ethernet, IP, TCP/UDP, DNS, TLS y HTTP. La guía oficial de Wireshark documenta la captura, el filtrado, las estadísticas y el seguimiento de streams.
Actualización 2026: a fecha de revisión de esta guía (16 de septiembre de 2026), la última versión estable anunciada de la rama 4.6 es Wireshark 4.6.8. Mantén la herramienta actualizada y analiza únicamente tráfico que tengas autorización para capturar o inspeccionar.
La interfaz gráfica se estructura en tres paneles clave:
- Packet List: Resumen cronológico de los paquetes capturados (número, tiempo relativo, origen, destino, protocolo e información resumida).
- Packet Details: Árbol jerárquico que desglosa los encabezados y campos decodificados del paquete seleccionado.
- Packet Bytes: Los bytes brutos en hexadecimal y ASCII que forman físicamente el paquete transmitido por el cable o el aire.
Wireshark es una herramienta de referencia para administradores de sistemas, ingenieros de redes, analistas de SOC, especialistas en respuesta ante incidentes (DFIR) y pentesters. Sin embargo, existe una diferencia insalvable entre capturar paquetes y comprender lo que significan: una retransmisión TCP no implica automáticamente un ciberataque; puede ser una pérdida de señal Wi-Fi o saturación en un enlace. Wireshark aporta las evidencias técnicas; el analista debe aportar el contexto.
Capture Filter vs Display Filter: la diferencia que debes aprender primero #
Uno de los errores más frecuentes al empezar con Wireshark es mezclar sus dos lenguajes de filtrado. Tienen propósitos, sintaxis y momentos de aplicación diferentes; la documentación oficial distingue explícitamente entre capture filters y display filters:
Dos Motores de Filtrado Diferentes
- Capture Filters (Filtros de Captura): Se configuran antes de iniciar la captura. Deciden qué paquetes se guardan en el archivo y descartan el resto de forma irreversible. Utilizan la sintaxis libpcap / BPF (Berkeley Packet Filter) (ejemplo:
host 192.168.1.50 and port 443). - Display Filters (Filtros de Visualización): Se aplican después, sobre la captura ya realizada. No borran ningún paquete: solo ocultan los que no coinciden con la condición visual. Utilizan el motor de disección propio de Wireshark (ejemplo:
ip.addr == 192.168.1.50 && tcp.port == 443).
¿Cuál utilizar? Si el volumen y la sensibilidad del entorno lo permiten, una captura amplia seguida de display filters conserva más contexto. Cuando el enlace es muy ocupado, la captura es prolongada, el almacenamiento es limitado o la hipótesis ya está delimitada, un capture filter puede reducir carga y volumen. No existe una regla universal: el filtro debe responder al objetivo y a la capacidad del sistema.
Cómo funciona la sintaxis de los Display Filters y sus operadores lógicos #
La estructura lógica de un filtro de visualización en Wireshark sigue el patrón:
campo operador valor
Por ejemplo, en ip.src == 192.168.1.20 tenemos el campo del protocolo (ip.src), el operador de comparación (==) y el valor deseado (192.168.1.20).
Puedes combinar múltiples condiciones complejas mediante operadores lógicos:
- AND (
&&oand): Ambas condiciones deben cumplirse. Ejemplo:ip.addr == 192.168.1.20 && tcp.port == 443. - OR (
||oor): Al menos una condición debe cumplirse. Ejemplo:dns || icmp. - NOT (
!onot): Niega una condición. Ejemplo:!(ip.addr == 192.168.1.1). - Paréntesis: Permiten agrupar evaluaciones para evitar ambigüedades. Ejemplo:
ip.addr == 192.168.1.20 && (tcp.port == 80 || tcp.port == 443).
Filtrar por dirección IP y direcciones MAC en capa 2 y 3 #
En el análisis de incidentes, aislar los hosts participantes es siempre el primer paso:
1. Direcciones IPv4 e IPv6
ip.addr == 192.168.1.50: Muestra paquetes donde la IP sea origen o destino.ip.src == 192.168.1.50: Solo paquetes originados por ese equipo. Permite responder: "¿Qué conexiones inició esta máquina?".ip.dst == 192.168.1.50: Solo paquetes dirigidos hacia esa máquina.ipv6.addr == 2001:db8::1: Misma lógica para direccionamiento IPv6.
2. Direcciones Ethernet (Capa 2)
Para investigar suplantaciones de identidad local, ataques ARP spoofing o problemas de conmutación en la LAN:
eth.addr == 00:11:22:33:44:55
eth.src == 00:11:22:33:44:55
Recuerda que la dirección MAC solo tiene validez en el segmento local de red; una vez que el paquete cruza un router, la MAC de origen pasa a ser la del router que reenvía el paquete. Si estás analizando tráfico de radio 802.11 en modo monitor, los filtros cambian a wlan.addr, wlan.bssid y tipos de tramas; aprende a capturarlas e interpretarlas en nuestra guía sobre seguridad WiFi: cómo funciona, WPA2, WPA3 y Wi-Fi 7.
Filtros TCP avanzados: handshake, flags y TCP RST #
El protocolo TCP es el más analizado porque sus banderas (flags) revelan el estado exacto de cada comunicación:
El Three-Way Handshake
Toda sesión TCP normal inicia con la secuencia SYN $\rightarrow$ SYN-ACK $\rightarrow$ ACK. Para localizar los intentos de inicio de conexión iniciados por clientes:
tcp.flags.syn == 1 && tcp.flags.ack == 0
Si observas muchos SYN hacia numerosos puertos o destinos en una ventana corta, el patrón puede ser compatible con reconocimiento o escaneo, pero no demuestra por sí solo actividad maliciosa. Correlaciona frecuencia, destinos, respuestas, origen y contexto operativo antes de clasificarlo.
Detección de TCP Reset (RST)
tcp.flags.reset == 1
Un paquete con la bandera RST activa fuerza la terminación inmediata de la conexión. Puede indicar que un puerto está cerrado en el servidor, que un firewall intermedio está cortando la sesión deliberadamente, o que un proceso colapsó de manera imprevista.
Retransmisiones y análisis TCP con tcp.stream #
Wireshark añade campos de análisis derivados para ayudar a interpretar secuencias y ACK. Importante: tcp.analysis.* son heurísticas generadas por Wireshark, no flags transmitidos en el encabezado TCP. La referencia oficial etiqueta varios resultados como “suspected”, por lo que deben interpretarse con el contexto de la captura:
tcp.analysis.retransmission: Marca una posible retransmisión según el análisis de secuencias de Wireshark; confirma el contexto antes de atribuir la causa.tcp.analysis.fast_retransmission: Marca una posible fast retransmission inferida por Wireshark a partir del patrón de ACK y secuencia.tcp.analysis.duplicate_ack: Identifica ACK duplicados según las reglas de Wireshark; pueden asociarse a pérdida o reordenamiento, pero no prueban una causa concreta por sí solos.tcp.analysis.out_of_order: Señala segmentos que Wireshark considera posiblemente fuera de orden según secuencia y temporización.tcp.analysis.flags: Agrupa paquetes con indicadores derivados del análisis TCP.
Referencia técnica: Display Filter Reference — TCP.
El Poder de tcp.stream
En una captura de 50.000 paquetes, analizar IPs y puertos sueltos resulta agotador. Wireshark numera cada conversación TCP de forma única con un índice entero:
tcp.stream == 5
Puedes hacer clic derecho en cualquier paquete relevante y pulsar Follow $\rightarrow$ TCP Stream. Wireshark abrirá una ventana con la conversación bidireccional reconstruida, mostrando la interacción completa entre cliente y servidor.
Filtros UDP y resolución de nombres con DNS #
El protocolo UDP carece de handshake o retransmisiones integradas, por lo que su análisis se centra en la relación petición/respuesta a nivel de aplicación. En ciberseguridad, DNS puede aportar mucha inteligencia contextual:
dns: Todo el tráfico del sistema de nombres de dominio.dns.flags.response == 0: Solo las preguntas o consultas (Queries) enviadas por los clientes.dns.flags.response == 1: Solo las respuestas devueltas por los servidores DNS.dns.qry.name contains "malicioso": Busca resoluciones de un dominio concreto o subdominio.dns.flags.rcode != 0: Muestra resoluciones con código de error (como NXDOMAIN cuando el dominio solicitado no existe).
Algunas familias de malware que utilizan algoritmos de generación de dominios (DGA) pueden producir patrones llamativos de consultas y respuestas NXDOMAIN. Sin embargo, un volumen alto de errores DNS también puede tener causas legítimas; úsalo como señal para investigar, no como veredicto.
Analizar HTTP y tráfico web sin cifrar #
Cuando el tráfico viaja en texto claro mediante HTTP, Wireshark permite auditar hasta el último byte de las transacciones web:
http.request: Todas las peticiones generadas por navegadores o aplicaciones.http.request.method == "GET": Peticiones de descarga o lectura de recursos.http.request.method == "POST": Envíos de formularios, APIs o subida de datos.http.host == "target.com": Filtra por el dominio solicitado en la cabecera Host.http.response.code == 404: Localiza errores de recursos no encontrados o respuestas500de servidor.http.request.full_uri contains "admin": Busca rutas sensibles en la URL.
TLS, HTTPS, HTTP/2 y QUIC: qué es visible bajo cifrado #
Con HTTPS y otros protocolos sobre TLS, Wireshark sigue siendo útil para estudiar endpoints, puertos, tamaños, tiempos, versiones y parte de los metadatos del establecimiento de la conexión. Pero no debes asumir que el nombre del servidor (SNI) siempre será visible.
tls.handshake.extensions_server_name contains "ejemplo.com"
Ese filtro funciona cuando Wireshark puede diseccionar un SNI expuesto. Desde 2026, RFC 9849 define TLS Encrypted Client Hello (ECH), que puede cifrar el ClientHello interno y proteger SNI, ALPN y otros campos sensibles. Por eso, la ausencia de SNI visible no demuestra que no exista una conexión TLS hacia un servicio concreto.
Si necesitas inspeccionar contenido TLS en un laboratorio o investigación autorizada, Wireshark puede usar secretos de sesión, por ejemplo mediante un key log file; la guía oficial documenta la gestión de secretos TLS. En HTTP/2 sobre TLS y HTTP/3 sobre QUIC, el contenido de aplicación permanece cifrado salvo que dispongas de las claves adecuadas.
Para identificar tráfico que Wireshark ha diseccionado como HTTP/2 o QUIC puedes utilizar:
quic || http2
Protocolos de soporte: ARP e ICMP en profundidad #
ARP (Address Resolution Protocol)
arp
Permite resolver qué dirección física MAC corresponde a una IP local. Cambios inesperados en asociaciones IP-MAC, respuestas ARP incoherentes o ciertos patrones de ARP gratuitos pueden justificar una investigación de ARP spoofing/poisoning, aunque también existen causas legítimas. Correlaciona siempre con la topología y el comportamiento esperado de la red.
ICMP (Internet Control Message Protocol)
icmp
ICMP es mucho más que el comando ping: transmite mensajes críticos de control como Destination Unreachable (red o puerto inalcanzable), Time-to-Live Exceeded (utilizado por traceroute en Linux para mapear saltos) y problemas de fragmentación por Path MTU.
Capture Filters esenciales en sintaxis BPF #
Recuerda que estos filtros se introducen en la barra de captura inicial antes de pulsar el botón de inicio:
# Capturar solo un host específico
host 192.168.1.20
# Capturar solo tráfico emitido por una IP
src host 192.168.1.20
# Capturar toda una subred
net 192.168.1.0/24
# Capturar tráfico web cifrado y sin cifrar
tcp port 80 or tcp port 443
# Capturar solo tráfico DNS (UDP y TCP)
port 53
# Excluir el tráfico de tu propia máquina para no saturar
not host 192.168.1.15
Troubleshooting y análisis en Blue Team & SOC #
En operaciones de seguridad defensiva, Wireshark no se utiliza para "mirar a ver qué pasa", sino para responder hipótesis concretas en una investigación:
Checklist de Triaje en el SOC con Wireshark
- 1. ¿Qué resolvió el host sospechoso?:
ip.src == 192.168.1.50 && dns.flags.response == 0 - 2. ¿A qué IPs intentó conectarse por TCP?:
ip.src == 192.168.1.50 && tcp.flags.syn == 1 && tcp.flags.ack == 0 - 3. ¿Qué volumen de datos intercambió?: Usa Statistics → Conversations para localizar flujos de volumen inusual y decidir cuáles requieren investigación adicional.
- 4. ¿Hay transferencias HTTP que merecen revisión?:
http.request.method == "POST"puede ayudarte a aislar peticiones con cuerpo de datos, pero un POST no implica por sí mismo C2, exfiltración ni robo de credenciales.
Este tipo de razonamiento conecta directamente con el Blue Team Roadmap, con la guía para convertirte en analista SOC, con el checklist de habilidades y conocimientos de un analista SOC y con los procesos de Incident Response.
TShark en terminal, búsquedas con contains y regex #
TShark es la versión de línea de comandos de Wireshark. Permite automatizar análisis en servidores sin interfaz gráfica y procesar cientos de archivos PCAP mediante scripts:
# Listar interfaces disponibles
tshark -D
# Capturar en la interfaz 1 limitando la captura al puerto 53 (capture filter)
tshark -i 1 -f "port 53"
# Leer un archivo pcapng y aplicar un display filter
tshark -r captura.pcapng -Y "tcp.analysis.retransmission"
# Extraer campos específicos de consultas DNS en formato tabular
tshark -r captura.pcapng -Y "dns.flags.response == 0" -T fields -e frame.time -e ip.src -e dns.qry.name
Regla práctica: en TShark, -f aplica un capture filter y -Y un display filter. En captura en vivo, un filtro de captura suele ser más eficiente cuando quieres reducir el volumen desde el origen. Consulta el manual oficial de TShark para las opciones vigentes.
Para búsquedas textuales dentro de los paquetes, utiliza los operadores contains (coincidencia de texto) o matches (expresiones regulares basadas en PCRE2):
# Buscar cualquier consulta que contenga la palabra update
dns.qry.name contains "update"
# Buscar mediante expresión regular
dns.qry.name matches "(login|auth|account)\.empresa\.com"
Metodología de análisis, laboratorios prácticos y FAQ #
Para no perderte ante una captura desconocida, puedes usar este flujo pedagógico de trabajo. No es un estándar oficial de Wireshark, sino una secuencia práctica para pasar de visión global a evidencia concreta:
Documentar este proceso con una captura de tráfico real es uno de los mejores proyectos que puedes añadir a tu portfolio de ciberseguridad para demostrar solvencia en entrevistas técnicas. Si estás empezando en este mundo, revisa también cómo empezar en ciberseguridad desde cero.
Preguntas frecuentes sobre Wireshark
¿Cuál es la diferencia entre un capture filter y un display filter?
El capture filter decide qué paquetes se guardan en el archivo usando sintaxis libpcap/BPF antes de capturar. El display filter actúa sobre paquetes ya capturados mediante el lenguaje de disección propio de Wireshark sin alterar la captura original.
¿Cómo filtro una IP en Wireshark?
Para origen o destino usa ip.addr == 192.168.1.10. Para solo origen usa ip.src == 192.168.1.10 y para solo destino ip.dst == 192.168.1.10.
¿Cómo filtro un puerto?
Para TCP utiliza tcp.port == 443. Para UDP utiliza udp.port == 53.
¿Cómo encuentro retransmisiones TCP?
Aplica el filtro tcp.analysis.retransmission. Recuerda evaluarlo en conjunto con el RTT y el contexto temporal de la captura.
¿Cómo puedo seguir una única conexión?
Filtra por su índice con tcp.stream == X o haz clic derecho sobre cualquier paquete y selecciona Follow → TCP Stream.
¿Puede Wireshark ver contraseñas?
Solo si viajan en texto claro mediante protocolos obsoletos o inseguros (HTTP, FTP, Telnet). El tráfico bajo TLS (HTTPS) viaja cifrado salvo que se disponga deliberadamente de las claves de sesión.
¿Wireshark sirve para ciberseguridad?
Sí. Es especialmente útil en Blue Team, troubleshooting y respuesta a incidentes para validar hipótesis sobre comunicaciones, DNS, flujos, protocolos y transferencias. Sus hallazgos deben correlacionarse con otras fuentes de telemetría y con el contexto del incidente.
¿Necesito aprender redes antes de Wireshark?
Es muy recomendable. Puedes empezar a explorar Wireshark desde el primer día, pero comprender TCP/IP, puertos, DNS, routing y el comportamiento de los protocolos multiplica el valor del análisis y evita conclusiones erróneas.