domingo, 25 de diciembre de 2011

De Vacaciones

Seguro la falta de actualizaciones recientes ya hara sospechar eso, pero en el momento me encuentro de vacaciones, por lo que, hasta aproximadamente el 3 de Enero no habra ninguna actualización.

Incluso con este periodo vacacional las actualizaciones futuras tendran un cambio de tema, esto se debe a que la investigación sobre Wireshark necesaria para mi tesis esta practicamente completa y ya solo es necesario transcribir y pulir la redacción de las entradas.

Ya que para la entrega de la tesis mi asesor me a proporcionado el formato en LaTeX oficial de la facultad este sistema de composición de texto recibira unas cuantas entradas, las cuales seran:
  • El sistema de composición de textos LaTeX.
  • Instalación y peculiaridades de TeX Live, la distribución TeX usada en los sistemas Linux.
  • Tablas en LaTex
  • Manejo de bibliografia con BibTex.
El tema de WireShark regresara una vez que comienze el ciclo escolar y tenga acceso a laboratorio de computación necesario para planear las practicas faltantes.

Hasta entonces, que pasen unas buenas vacaciones (si ese es el caso) , tengan un prospero y feliz año nuevo y nos vemos de nuevo aproximadamente el 3 de enero.

lunes, 12 de diciembre de 2011

Filtros de Visualización


La forma mas inmediata y sencilla de utilizar un filtro en Wireshark es el filtro de visualización, este consiste en aplicar un filtro a los paquetes ya capturados de modo que el área de datos visualice únicamente los paquetes que cumplan con las condiciones impuestas por el filtro.

Las ventajas que presentan este tipo de filtros es una mayor versatilidad y simplicidad, puesto que en lugar de seleccionar el filtro y luego capturar los paquetes basta capturar todos los paquetes y luego filtrarlos según sea conveniente lo cual es de gran utilidad si aun no se conoce perfectamente como se manifiesta la situación que se desea analizar.

Sin embargo este tipo de filtros puede causar problemas si se desea realizar un análisis de los paquetes enviados por un tiempo prolongado, ya que el capturar todos los paquetes requiere usar una gran cantidad de memoria y ciclos de procesador para llevar a cabo en análisis.

Para efectuar este filtrado el primer paso a realizar es haber realizado o estar efectuando una captura de paquetes de red, una vez que halla cumplido dicha condición aplicar el filtro es tan sencillo como introducir la expresión del filtro en la barra de filtros.

Para mostrar la operación básica de los filtros de visualización se presenta el siguiente ejemplo

Ejemplo.

Inicialice Wireshark y comience una captura de datos.

Figura 1: Capturando paquetes.

Mientras la captura se esta realizando acceda con el navegador de internet a alguna pagina web, como puede ser http://slashdot.org/

Una vez que la pagina halla descargado por completo y sin detener la captura introduzca en la barra de filtros la expresión

http

Tras lo cual el área de datos lucirá como en la figura.

Figura 2: Filtro http.

Pruebe con las expresiones:

dns
Figura 3: Filtro dns.


arp
Figura 4: Filtro arp.

tcp
Figura 5: Filtro tcp.

También pueden aplicarse filtros mas elaborados, como lo es mostrar solo los paquetes http que provengan de una dirección especifica

ip.addr == 216.34.181.45 && http

Figura 6: http desde 216.34.181.4


Estas son solo algunas de las posibilidades para filtrado, la lista completa puede consultarse desde la documentación oficial de Wireshark.


Referencias


martes, 6 de diciembre de 2011

Filtros de captura


Una de las formas en que son aplicables las capacidades de filtrado de Wireshark son los filtros de captura, estos funcionan imponiendo una serie de condiciones que los paquetes deben de cumplir para ser capturados y almacenados en memoria.
Estos requisitos son expresados como cadenas de texto siguiendo el formato de los filtros de Wireshark detallado con anterioridad.

La posibilidad de aplicar filtros durante la captura es una herramienta útil para casos donde capturar todo el trafico en una red, el cual es el comportamiento predeterminado de Wireshark, sea indeseable, ya sea por los altos requerimientos de memoria y procesador que esto requeriría, por que se desea analizar solo una sección de esa red o examinar el comportamiento de un protocolo en particular.

Estos filtros son aplicables en el dialogo de Opciones de captura, el cual puede ser accedido antes de comenzar una captura desde la barra de herramientas o desde el menú “Capture”, al accederlo el dialogo luciera como la figura 1.

Figura 1: Opciones de Captura.
Como podrá observar existe un cuadro de dialogo a la derecha de un botón con la etiqueta “Capture Filter”, es en este campo donde puede ingresar directamente la cadena del filtro, como en el caso del campo de filtro de la barra de herramientas el color de fondo del campo cambiara a verde si se siguió la sintaxis correctamente o a rojo si existe algún error sintáctico.

Una forma mas sencilla de ingresar el filtro es por medio del dialogo de Filtro de Captura, el cual puede accederse al pulsar el botón “Capture Filter”

Figura 2: Filtros de Captura.
Este filtro contiene una serie de ejemplos los cuales puede usar como base, adaptar a sus necesidades y almacenar para poder usarlos con facilidad en el futuro.

Ejemplo.

Digamos que se desea capturar únicamente los paquetes HTTP provenientes de un sitio web en particular.

En este ejemplo particular se desea capturar unicamente los paquetes provenientes del sitio de noticias http://arstechnica.com/ por lo que se accederá al dialogo de opciones de captura y se introducira el filtro:


como muestra la figura

Figura 3: Filtrando del host www.arstechnica.com.

hecho esto comience la captura, en un principio no aparecerá absolutamente nada, esto es lógico puesto que no hay ningún paquete enviado o recibido desde el post indicado.

Ahora inicie un navegador de internet y diríjase a la dirección: www.arstechnica.com

Al momento que el sitio comienze a descargar Wireshark comenzara a capturar paquetes, lo que le dara una pantalla similar a la figura

Figura 4: Paquetes capturados.
Notara que la columna “Destination” solo aparecen dos valores, la dirección IP de su computadora y la dirección IP de arstechnica.com

Referencias

WireShark wiki – Capture Filters: http://wiki.wireshark.org/CaptureFilters (visitado el 5-dic-2011)

jueves, 1 de diciembre de 2011

Filtrado de paquetes con Wireshark.


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