Una de las características
proporcionadas por Wireshark para facilitar el análisis de los
paquetes que circulan por una red es la capacidad de aplicar filtros
de modo que el numero de paquetes visualizados o capturados se
reduzca a únicamente los que son de interés para el usuario.
La correcta aplicación del filtrado
proporciona una serie de ventajas tanto en el óptimo uso de los
recursos del equipo, al no almacenar en memoria ni procesar paquetes
de ningún interés, como al usuario al limitar el análisis
únicamente a los protocolos, direcciones IP, tiempos y rangos que se
estén examinando.
Sintaxis de filtros en Wireshark.
Antes de pasar a como aplicar los
filtros es adecuado tener una comprensión básica de la sintaxis
para aplicar los mismos, esto se hace por medio de una cadena de
texto con un formato especifico, de forma similar a las condiciones
booleanas de los lenguajes de programación.
Para Wireshark el formato utilizado es
el siguiente:
<campo a filtrar>
<relación a cumplir> <valor de referencia>
Donde:
Campo a filtrar: Indica cual de
los posibles campos contenidos en el paquete de datos debe de cumplir
la condición indicada, para indicarlo basta con poner la cadena de
texto que identifica a dicho campo.
Puesto que la lista de posibles campos
a filtrar es demasiado extensa para intentar listarla se recomienda
ir a la documentación oficial de Wireshark para conocerla en
detalle.
Relación a cumplir: Esta parte
del filtro indica como se desea que sea el dato contenido en el campo
en relación con el valor de referencia, esta parte se muestra como
operadores lógicos idénticos a los usados en el lenguaje de
programación C, mas tres condiciones extra todos los operadores
disponibles se listan a continuación
Present: El operador por
defecto devuelve verdadero si el campo esta presente en los paquetes
capturados.
== : Igual a, retorna
verdadero si el valor contenido en el campo es igual al valor de
referencia.
!= : Diferente a, este
operador se cumple cuando el contenido del campo es diferente al
valor de referencia.
> : Mayor que, verdadero
solo si el campo contiene un valor mayor que el valor de referencia.
< : Menos que, regresa
verdadero cuando el valor en el campo sea menor que la referencia.
>=: Mayor o Igual, se
cumple cuando el campo contiene un valor igual o mayor a la
referencia.
<=: Menor o Igual, si el
campo contiene una valor menor o igual a la referencia este operador
regresara verdadero.
Contains: contiene,
verdadero si el campo contiene alguno de los elementos
proporcionados como un rango en el valor de referencia.
Matches: coincide,
retornara verdadero si el el contenido del campo coincide
perfectamente con el rango de valores de referencia.
Valor de referencia.
Este es el valor con el que deseamos
filtrar los paquetes, su valor y formato variaran dependiendo de lo
que se desee realizar pudiendo pasar de un simple valor booleano, una
dirección IP, un numero de secuencia o un rango de valores a
comparar.
Para explicar el funcionamiento de la
forma mas sencilla posible se presenta el siguiente ejemplo de un
filtro sencillo.
ip.dst == 128.30.52.45
Este filtro en particular le indica a
Wireshark que solo debe mostrar los paquetes donde el campo destino
de la cabecera IP contenga la dirección 128.30.52.45, de esto y
basándonos en los expuesto anteriormente podemos separar los tres
elementos del filtro, siendo:
Campo a filtrar: ip.dst, la
dirección destino del protocolo IP.
Relación a cumplir: ==, queremos
que el campo sea igual al valor de referencia.
Valor deseado: 128.30.52.45, la
dirección IP a la que queremos sea igual el valor contenido en el
campo ip.dst.
Dialogo de expresiones.
Con el propósito de simplificar la
creación de filtros Wireshark proporciona un dialogo especializado
desde el cual diseñar los filtros, de modo que no sea necesario
memorizar la larga lista de campos que pueden filtrarse, este dialogo
puede accederse pulsando el botón “Expression...” en la barra de
filtros y se muestra en la Figura 1
|
Figura 1: Dialogo de expresiones. |
Este dialogo facilita la creación de
los filtros ya que solo hay que seleccionar el campo a filtrar y la
relación que se desea se cumpla, el único dato que debe ser
introducido manualmente es el valor de referencia o el rango de
valores de referencia, cada uno con su campo de texto.
Combinación de filtros.
Otra de las capacidades de los filtros
en Wireshark es el poder aplicar mas de un filtro simultáneamente
utilizando los conectores lógicos and y or para definir cuales son
los resultados deseables, su funcionamiento se describe a
continuación.
And: Y, este conector logico
regresara verdadero solo si ambas condiciones de filtrado se cumplen
Or: O, regresa verdadero si alguna
de las condiciones de filtro de cumple.
Como en el caso anterior se presentara
un ejemplo para demostrar como funcionan los conectores, en este caso
se desea filtrar los paquetes que contengan la cabecera http y
su cabecera TCP contenga activa la bandera FIN, para esto el filtro a
utilizar es:
http and tcp.flags.fin
Examinando los componentes del filtro
se tiene
http: cuando solo se indica
el campo Wireshark solo muestra los paquetes que lo contengan, en
esta caso mostrara los paquetes que contengan la cabecera http.
and: el conector Y,
deseamos que se cumpla la condición anterior y la siguiente.
tcp.flags.fin: pedimos que
solo se muestren los paquetes cuya cabecera tcp contenga la bandera
Fin activada.
Al aplicar este filtro Wireshark solo
desplegara los paquetes que cumplan con ambas condiciones.
Referencias