Contenido
- 2. ¿Qué son los filtros de Wireshark?
- 3. ¿Cómo funcionan por dentro?
- 4. ¿Para qué sirven realmente?
- 5. Tipos de filtros en Wireshark
- 6. Conclusión
- Filtros básicos pero muy visuales
- Práctica: Análisis de Tráfico HTTP con Wireshark en una Web Vulnerable
- 4. Análisis guiado en Wireshark
- 4.1. Visualizar únicamente tráfico HTTP
- 4.2. Listar únicamente peticiones GET
- 4.3. Detectar peticiones con parámetros
- 4.4. Analizar el login (peticiones POST)
- 4.5. Visualizar cookies y sesiones
- 4.6. Encontrar errores en la web
- 4.7. Localizar recursos concretos: imágenes, JS y CSS
- 4.8. Seguir una conversación completa
- 5. Cuestionario final
Wireshark es un analizador de tráfico de red que permite capturar y examinar, en tiempo real o a través de archivos pcap, todos los paquetes que circulan por un equipo o una interfaz de red. Su potencia reside en su capacidad para mostrar cada detalle de la comunicación: protocolos, cabeceras, datos, errores y patrones internos.
Sin embargo, una captura completa suele contener miles de paquetes mezclados: peticiones web, DNS, tráfico de fondo del sistema, retransmisiones TCP, etc. Analizar todo a la vez es inviable. Para poder investigar de forma eficaz, necesitamos herramientas que nos permitan centrarnos solo en lo relevante.
Aquí es donde entran en juego los filtros de visualización.
2. ¿Qué son los filtros de Wireshark?
Un filtro en Wireshark es una expresión que permite mostrar únicamente los paquetes que cumplen una o varias condiciones. El resto de los paquetes no se eliminan: simplemente se ocultan temporalmente de la vista.
Los filtros son una forma de decirle a Wireshark:
“De entre todos estos miles de paquetes, solo quiero ver los que coincidan con esta característica concreta.”
Por ejemplo:
- “Solo quiero ver peticiones GET a una web.”
- “Muéstrame las cookies enviadas por el navegador.”
- “Quiero ver los paquetes destinados al puerto 80.”
- “Enséñame el tráfico DNS para saber qué dominios se resolvieron.”
Con esto, el análisis deja de ser caótico y se convierte en una investigación guiada.
3. ¿Cómo funcionan por dentro?
3.1. Campos de los protocolos
Wireshark entiende cada protocolo y lo descompone en campos.
Por ejemplo, en HTTP podemos encontrar:
http.hosthttp.request.methodhttp.cookie
En TCP aparecen campos como:
tcp.porttcp.flags.syntcp.seq
En DNS:
dns.qry.name
Cada uno de estos campos puede usarse para crear filtros.
3.2. Operadores
Para comparar esos campos con valores concretos, Wireshark utiliza operadores lógicos y relacionales:
| Operador | Significado |
|---|---|
== | Igual a |
!= | Distinto |
contains | El campo contiene un texto concreto |
< / > | Comparación numérica |
&& | AND lógico |
| ` | |
! | Negación (NO) |
Con estos operadores podemos crear condiciones desde sencillas hasta muy complejas.
3.3. Ejemplos básicos
http
Muestra únicamente paquetes HTTP.
http.request.method == "POST"
Filtra todas las peticiones POST (ideal para ver formularios y logins sin cifrar).
tcp.port == 80
Muestra tráfico hacia/desde el puerto 80 (HTTP en claro).
http.cookie contains "PHPSESSID"
Filtra cookies asociadas a sesiones PHP.
4. ¿Para qué sirven realmente?
Los filtros permiten:
• Analizar aplicaciones web en PHP
Ver cómo un navegador solicita index.php, cómo envía credenciales por POST o cómo recibe una cookie de sesión.
• Depurar problemas
Identificar errores HTTP, pérdidas de paquetes, retransmisiones TCP o peticiones repetidas.
• Seguir el flujo de un usuario
Reconstruir la secuencia de navegación: qué URL pidió, cuándo inició sesión y qué recursos cargó la página.
• Detectar configuraciones inseguras
Tráfico HTTP en claro, cookies sin atributos de seguridad, peticiones POST sin cifrar…
• Aprender el funcionamiento interno de la red
DNS, ARP, TLS, TCP handshake y otros mecanismos que normalmente pasan desapercibidos.
5. Tipos de filtros en Wireshark
Wireshark tiene dos categorías (aunque muchos alumnos las confunden al principio):
1. Filtros de captura (Capture Filters)
Se aplican antes de capturar y limitan qué paquetes se guardan en el archivo.
Tienen sintaxis estilo BPF (más escueta):
Ejemplo:
port 80
host 192.168.1.100
2. Filtros de visualización (Display Filters)
Se aplican después de capturar y permiten analizar sin perder nada.
Son los que se usan el 99% del tiempo en clase:
http.request.method == "GET"
dns.qry.name contains "example.com"
6. Conclusión
Los filtros son la herramienta fundamental para convertir una captura de tráfico en bruto en una historia comprensible. Permiten investigar, aprender, depurar y entender cómo se comportan las aplicaciones web y los protocolos de red.
Dominar los filtros equivale a dominar Wireshark.
Filtros básicos pero muy visuales
1. Filtrar por HTTP en claro
Cuando trabajan con un hosting sin HTTPS o usando HTTP local:
http
Muestra peticiones GET, POST, cabeceras, parámetros… el caramelo didáctico ideal.
2. Solo peticiones GET
http.request.method == "GET"
Sirve para ver qué recursos pide el navegador: imágenes, JS, CSS, el index.php.
3. Solo peticiones POST (login, formularios)
http.request.method == "POST"
Perfecto para mostrar cómo se enviarían credenciales sin cifrar. Nada despierta conciencias como ver un usuario y contraseña en texto plano.
Filtros para cazar PHP
4. Peticiones explícitas a archivos PHP
http.request.uri contains ".php"
Puedes ver exactamente qué scripts se llaman: login.php, insert.php, update.php.
5. Extraer cookies (sesiones PHP)
http.cookie
Llega el momento «¿ves esto? Esto es tu sesión… y si te la robo, te convierto en ti».
6. Ver el PHPSESSID en tráfico no cifrado
http.cookie contains "PHPSESSID"
Es el filtro dramático: el espíritu del session hijacking entra en clase.
Cuando todo va cifrado (HTTPS)
La gente suele pensar “si está cifrado, no veo nada”, pero sí hay cosas interesantes:
7. Filtrar solo TLS/SSL
tls
8. Ver el SNI (qué dominio está visitando el cliente)
tls.handshake.extensions_server_name
SNI revela dominios incluso aunque el contenido esté cifrado. Muy útil para explicación OSINT.
9. Ver el handshake TLS
tls.handshake
Para explicar versiones de TLS, cipher suites, certificados…
Filtros orientados al servidor web
10. Filtrar por puerto
tcp.port == 80 || tcp.port == 443
Básico pero efectivo para centrar el tráfico.
11. Filtrar errores HTTP
http.response.code >= 400
Se ven los 404, 403, 500… Ideal cuando tus alumnos han roto algo sin querer.
12. Ver solo respuestas 200 (todas bien)
http.response.code == 200
Filtros para mostrar problemas reales
13. Retransmisiones TCP (problemas de red)
tcp.analysis.retransmission
Traduce “la red no es perfecta, observad estas repeticiones”.
14. Paquetes fuera de orden
tcp.analysis.out_of_order
15. Flujo lento o paquetes perdidos
tcp.analysis.lost_segment
Filtros de capas bajas (para dar color a la clase)
16. Filtrar ARP
arp
Es como ver el vecindario de máquinas preguntándose mutuamente “¿quién eres?”.
17. Filtrar DNS
dns
Verán cada dominio que consulta el navegador antes siquiera de entrar al PHP.
Un combo que siempre triunfa en clase
Ver solo: peticiones POST + tráfico HTTP + mostrar cookies
Sirve para simular un login vulnerable:
http.request.method == "POST" && http.cookie
Y si están usando HTTPS pero quieres que entiendan lo que no pueden ver:
tls && http
No aparece nada HTTP, y eso invita al clásico «¿ves? por esto existe HTTPS».
Práctica: Análisis de Tráfico HTTP con Wireshark en una Web Vulnerable
Caso práctico: testphp.vulnweb.com
1. Introducción
En esta práctica aprenderás a utilizar Wireshark para analizar el tráfico HTTP generado al navegar por una aplicación web vulnerable. El objetivo es comprender cómo viajan las peticiones y respuestas en una web sin cifrado, identificar parámetros, observar cabeceras, analizar formularios y cookies de sesión, y entender los riesgos de seguridad asociados.
La web utilizada es:
http://testphp.vulnweb.com/
Este sitio es un entorno público y autorizado para prácticas de ciberseguridad ofrecido por Acunetix, por lo que su uso es completamente legal con fines académicos.
2. Objetivos de la práctica
Al finalizar la actividad, deberás ser capaz de:
- Capturar tráfico HTTP real con Wireshark.
- Aplicar filtros para aislar información concreta.
- Analizar peticiones GET y POST.
- Identificar parámetros, rutas internas y patrones de navegación.
- Localizar cookies y sesiones enviadas en texto claro.
- Comprender los riesgos de enviar credenciales por HTTP.
3. Procedimiento
3.1. Preparación
- Abre Wireshark.
- Selecciona la interfaz de red que utilices para navegar por Internet.
- Inicia la captura de paquetes.
- Abre el navegador y visita:
http://testphp.vulnweb.com/
- Navega por distintas secciones: categorías, productos, artista, carrito…
- Accede al formulario de login e introduce cualquier usuario y contraseña (fallará siempre, es parte del diseño).
- Realiza varias acciones para generar tráfico suficiente.
- Regresa a Wireshark y detén la captura.
4. Análisis guiado en Wireshark
A continuación aplicarás varios filtros y analizarás lo que ocurre en cada caso.
4.1. Visualizar únicamente tráfico HTTP
Filtro:
http
Qué debes observar:
- Todas las peticiones realizadas al servidor.
- Rutas como
/index.php,/listproducts.php,/product.php, etc. - Imágenes, scripts y otros recursos solicitados.
Ejemplo típico que deberías encontrar:
GET /listproducts.php?cat=1 HTTP/1.1
Host: testphp.vulnweb.com
4.2. Listar únicamente peticiones GET
Filtro:
http.request.method == "GET"
Observa cómo la web utiliza parámetros en la URL. Ejemplos que verás:
GET /artist.php?artist=4
GET /product.php?pic=3
GET /listproducts.php?cat=2
Esto permite mapear la estructura del sitio.
4.3. Detectar peticiones con parámetros
Filtro:
http.request.uri contains "="
Este filtro muestra exclusivamente peticiones con parámetros GET.
Ejemplos esperados:
GET /shoppingcart.php?add=2
GET /login.php?test=1
Fíjate en cómo la información viaja en texto plano.
4.4. Analizar el login (peticiones POST)
En la web, introduce un usuario y contraseña en el formulario.
Filtro:
http.request.method == "POST"
Debes encontrar una petición similar a:
POST /userinfo.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
uname=prueba&pass=1234
Reflexiona sobre el riesgo de enviar credenciales por HTTP sin cifrar.
Filtro:
http.cookie
Deberías ver algo como:
Cookie: PHPSESSID=8d6v93h3k8a...
Esto confirma que la sesión también viaja sin protección alguna.
4.6. Encontrar errores en la web
Filtro:
http.response.code >= 400
Este filtro permite localizar:
- Páginas no encontradas (404)
- Errores internos (500)
- Accesos no permitidos (403)
Esto ayuda a entender la estructura interna del sitio.
4.7. Localizar recursos concretos: imágenes, JS y CSS
Para analizar recursos específicos:
Imágenes (JPG):
http.request.uri contains ".jpg"
Scripts:
http.request.uri contains ".js"
Hojas de estilo:
http.request.uri contains ".css"
Permite reconstruir exactamente todo lo que carga el navegador.
4.8. Seguir una conversación completa
Selecciona cualquier paquete HTTP → clic derecho →
Follow → HTTP Stream
Verás la conversación completa entre cliente y servidor:
- Petición completa
- Respuesta completa
- HTML enviado
Perfecto para reconstruir acciones exactas del usuario.
5. Cuestionario final
Responde a las siguientes preguntas basándote en tu captura:
- Lista todos los parámetros GET que aparecieron durante tu navegación.
- ¿Qué peticiones POST detectaste? ¿Qué información enviaron?
- ¿Cómo viajan las credenciales del formulario de login?
- ¿Qué cookies o identificadores de sesión aparecen durante la captura?
- ¿Puedes reconstruir qué páginas visitó el usuario? Describe el flujo.
- ¿Has encontrado algún error HTTP (404, 500…)? ¿En qué rutas?
- Explica qué riesgos de seguridad existen al usar HTTP en lugar de HTTPS.


