Saltar al contenido
Lectura11 minPreview

Filtros, flujos y tshark para leer un pcap

Un pcap de una tarde trae miles de paquetes y usted busca tres. La diferencia entre tardar diez minutos y tardar dos horas es saber filtrar. Aquí van las herramientas que yo uso, en el orden en que las uso.

Ficha de los filtros de visualización de Wireshark

  • Qué son: expresiones que esconden todo menos lo que le interesa. Ojo: son los filtros de visualización (la barra verde, arriba), no los de captura. El archivo no se toca; solo cambia lo que ve.
  • Dónde: la barra de filtro de Wireshark, o tshark -Y "..." en la terminal.

Sintaxis

protocolo.campo OPERADOR valor

Filtros que más uso

FiltroQué muestra
dnssolo tráfico DNS
dns.qry.name contains "exfil"consultas cuyo nombre incluye ese texto
http.requestsolo las peticiones HTTP (no las respuestas)
tcp.flags.syn == 1 && tcp.flags.ack == 0los primeros paquetes de cada conexión
ip.addr == 192.0.2.23todo lo que entra o sale de esa IP

Combine con && (y), || (o) y ! (no). Un error que todos cometemos el primer día:

dns.qry.name = "algo"

Wireshark pinta la barra de rojo: el operador de igualdad es == (o eq), no =.

Seguir un flujo

Cuando quiera leer una conversación de corrido (lo que el cliente pidió y lo que el servidor contestó, sin paquetes sueltos), haga clic derecho en un paquete de la conexión y elija Seguir > Flujo TCP (o Flujo UDP). Wireshark arma el diálogo completo, en colores distintos por lado, y deja aplicado un filtro tcp.stream eq N. Para un reto web o de texto claro, esto suele mostrarle la respuesta de una.

Para el panorama use Estadísticas > Conversaciones: la pestaña de cada protocolo le dice quién habló con quién y cuánto. Si un equipo le mandó cientos de paquetes a una sola dirección, salta a la vista.

Ficha de tshark

  • Nombre: tshark es la versión de terminal de Wireshark (terminal shark). Sirve para lo mismo sin abrir la interfaz y es la que usaría dentro de un script.

Sintaxis

tshark -r ARCHIVO.pcap -Y "FILTRO" -T fields -e CAMPO

Opciones principales

OpciónQué haceEjemplo
-rlee un archivo en vez de capturartshark -r captura.pcap
-Yaplica un filtro de visualización-Y "http.request"
-T fields -eimprime solo el campo que pida-T fields -e dns.qry.name
-ccorta tras N paquetes-c 20

Un ejemplo que vale por mil: sacar todos los nombres DNS consultados, uno por línea, listos para procesar.

$ tshark -r captura.pcap -Y "dns.flags.response == 0" -T fields -e dns.qry.name
www.cafedelvalle.example
intranet.cafetal.ejemplo.cr
hora.cafetal.ejemplo.cr

El error más común con tshark en Windows es llamarlo sin tenerlo en el PATH:

tshark : El término 'tshark' no se reconoce como nombre de un cmdlet...

Se arregla abriendo la terminal desde la carpeta de Wireshark, o agregando esa carpeta al PATH. Si no quiere pelear con eso, todo lo de esta píldora se puede hacer con la interfaz y, en la última lección, con Python.