Está en la página 1de 9

Laboratorio Analizador de protocolos

Wireshark
1. Introducción

Wireshark es un analizador de protocolos de red (conocido coloquialmente como


“sniffer”), implementado en software. Un analizador de protocolos es una herramienta
para capturar paquetes de red y mostrarlos de la manera más detallada posible. Se
puede pensar un analizador de protocolos como un electroscopio aplicado a un cable,
cuando necesitamos conocer las señales eléctricas que se encuentran en él.

Este software permite localizar fallas, desarrollar software y protocolos, y también se


utiliza, como veremos aquí, con fines educativos. Posee una licencia libre, y está
disponible para las plataformas más populares, como Unix, GNU/Linux y MS Windows.

En esta práctica vamos a emplear un analizador de protocolos de red. Veremos sus


funciones principales y cómo emplearlo para estudiar algunos protocolos sencillos,
como ICMP (el protocolo del comando PING), HTTP (el protocolo utilizado para
acceder a páginas web) y algunos otros.

1.1.- Características

● Captura datos en vivo desde una placa de red


● Muestra los datos con un alto nivel de detalle
● Permite guardar y recuperar los datos capturados
● Permite importar y exportar desde y hacia numerosos programas
● Posee reglas de filtrado muy versátiles, incluyendo búsqueda de paquetes
2. Pantalla principal del analizador
En la siguiente figura se presenta un ejemplo de la pantalla principal del programa, en
la que se pueden ver los distintos elementos que la componen, cuya descripción se da
a continuación:

1. Panel de lista de paquetes: Muestra un resumen de cada paquete capturado.


Pulsando sobre los paquetes de este panel se controla el contenido de los otros dos
paneles.

2. Panel de vista en árbol: Muestra el paquete seleccionado en el panel superior (1)


con más detalle, permitiendo acceder a los distintos niveles de protocolos. Al pulsar
sobre cada uno de los niveles se resaltan los datos del paquete correspondientes a
dicho nivel en el panel inferior (3).

3. Panel de detalle de los datos: Muestra el contenido del paquete seleccionado en


el panel superior (1) en formato hexadecimal y ASCII.

Además de los tres paneles principales, tenemos los cinco elementos adicionales
siguientes en la barra de herramientas de filtrado, que se encuentra debajo de la barra
de herramientas principal de Wireshark:

A) Botón de filtro: Permite definir un filtro para la visualización de los paquetes, de


forma que podamos concentrarnos en el análisis de un determinado protocolo o en el
tráfico entrante o saliente de un ordenador determinado. Existen una serie de
expresiones de filtro predeterminadas que se pueden emplear directamente; también
existe la posibilidad de crear una nueva, asignándole un nombre para una utilización
posterior más cómoda.

B) Texto del filtro: Aquí aparece el texto del filtro. Es posible introducir el texto del
filtro directamente en este campo o seleccionar alguno de los filtros que se hayan
utilizado anteriormente.

C) Botón para eliminar el filtro: Pulsando este botón se elimina el filtro que estuviera
activo, presentándose en el panel principal (1) todos los paquetes capturados.

D) Botón para aplicar el filtro: Pulsando este botón se aplica el filtro definido y en el
panel principal (1) se muestran únicamente los paquetes que cumplan las condiciones
indicadas en el filtro.

E) Botón de expresión del filtro: Al pulsar en este botón se accede a un cuadro de


diálogo para la definición de la expresión del filtro, cuyo funcionamiento se describirá
más adelante.

3. Comienzo de una sesión de captura

La captura de paquetes se puede activar de diversas formas:

1.- Seleccionando Capture->Interfaces..., que presentará un cuadro de diálogo similar


al siguiente:
con la lista de interfaces de red disponibles en el ordenador que estemos empleando.
Para dar comienzo a la captura bastará con pulsar en el botón Start correspondiente a
la interfaz deseada.

2.- Seleccionando la opción de menú Capture->Start, o pulsando la combinación de


teclas Ctrl+K. Si todavía no se ha seleccionado una interfaz, habrá que hacerlo antes
de iniciar la captura de paquetes, para lo cual será necesario seleccionar la opción de
menú Capture->Options... Al hacerlo aparecerá el siguiente cuadro de diálogo.

Debemos especificar la interfaz de red sobre la que vamos a capturar los paquetes,
utilizando para ello el cuadro combinado denominado Interface, situado en la parte
superior de este cuadro de diálogo. Si el ordenador dispone de módem o tiene varias
tarjetas de red, tendremos que seleccionar la que queramos analizar. El resto de
opciones podemos dejarlas, de momento, con los valores predeterminados.

El proceso de captura da comienzo al pulsar sobre el botón Start, y su evolución la


podremos observar de varias formas:

Si no está marcada la opción Update list of packets in real time en el panel Display
Options, y tampoco está marcada la opción Hide capture info dialog, aparecerá el
cuadro de diálogo que se muestra en la figura siguiente.
Aquí podremos ver el número de paquetes capturados de los principales protocolos
que maneja Wireshark. También podremos detener la captura pulsando sobre el botón
Stop. Una vez terminada una sesión de captura, en la ventana principal aparecerá la
información de los paquetes capturados, como se muestra en la figura de la primera
página.

También existe la opción de presentar la información de los paquetes capturados


según se van capturando. Para ello es necesario activar la casilla de verificación
Update list of packets in real time, que se encuentra en el panel Display Options
del cuadro de diálogo de opciones de captura. Esta opción, combinada con Automatic
scrolling in live capture, permite ver en el panel principal de la aplicación (1) los
últimos paquetes que va recogiendo el proceso de captura.

4. Filtrado de información

Dada la enorme cantidad de información que circula por una tarjeta de red mientras
está funcionando, resulta especialmente útil poder limitar de alguna manera dicha
información, para poder concentrarse en el análisis del tráfico de red concreto que
interese estudiar.

Wireshark ofrece numerosas posibilidades de filtrado de información, que básicamente


consisten en la selección de protocolos, la definición de un filtro de captura y la
definición de un filtro de presentación de la información. La utilización de cada una de
estas opciones se detalla en los siguientes apartados.

4.1 Protocolos

Como primer nivel de filtrado, podemos escoger los protocolos con los que deseamos
trabajar. La lista completa de protocolos que maneja Wireshark puede verse en un
cuadro de diálogo al que podremos acceder mediante la opción de menú Analyze-
>Enabled Protocols.... En dicho cuadro de diálogo, que se presenta a continuación,
podemos activar o desactivar la utilización de los protocolos que deseemos.

A la hora de activar o desactivar protocolos, debemos tener en cuenta la advertencia


que aparece en este cuadro de diálogo, y que indica que, si desactivamos un
protocolo, no aparecerán los protocolos de los niveles superiores que dependan de él.
Por ejemplo, si desactivamos el protocolo de nivel de transporte TCP, no aparecerán
tampoco todos los protocolos de nivel de aplicación que dependan de él, como HTTP,
SMTP, FTP y muchos otros.

Para realizar las tareas de esta práctica dejaremos activados inicialmente todos los
protocolos que maneja el programa. No obstante, el estudiante puede experimentar
con la activación y desactivación de alguno de estos protocolos para comprobar el
efecto que tiene.

4.2 Captura

El siguiente nivel de filtrado que ofrece Wireshark se aplica al proceso de captura de


los paquetes de red. Podemos definir un filtro que capture únicamente los paquetes de
un determinado protocolo o destinados a un determinado ordenador o puerto. La
utilización de un filtro se realiza en el cuadro de diálogo de opciones de captura,
introduciendo la expresión del filtro en el cuadro de texto situado al lado del botón
Capture Filter.

En esta práctica no vamos a detenernos a estudiar los filtros de captura, pero el


estudiante puede experimentar con diversas expresiones de filtro para comprobar su
efecto. Por ejemplo, la siguiente expresión:

tcp port 23 and host 192.168.1.5

forzará la captura únicamente de los paquetes del protocolo TCP con origen o destino
en el puerto 23 y cuyo origen o destino sea un ordenador con dirección IP 192.168.1.5.

Otra posibilidad de filtrado a la hora de capturar paquetes consiste en desactivar el


modo “promiscuo”, desmarcando para ello la casilla denominada Capture packets in
promiscuous mode en el cuadro de diálogo de opciones de captura, de forma que
sólo se capturen los paquetes originados o destinados a nuestro ordenador. Esta
opción sólo tiene efecto si la red a la que pertenece nuestro ordenador se ha creado
mediante un concentrador (hub); en caso de que la red se haya creado mediante un
conmutador (switch) no debería haber diferencia entre que esta opción estuviera
activada o no.
Es recomendable desactivar el modo “promiscuo” en cualquier caso porque, si la red
se ha creado mediante un concentrador, Wireshark puede capturar paquetes
correspondientes a otros ordenadores, lo que complicará el análisis de la información
que nos interesa.

4.3 Presentación

El último nivel de filtrado de que disponemos en Wireshark es el de presentación de


los paquetes. Podemos definir un filtro mediante el cual seleccionemos, para que se
vean en el panel principal (1), únicamente aquellos paquetes de datos que nos
interesa analizar. Este tipo de filtro es el más completo y en su expresión se pueden
utilizar la mayor parte de los parámetros de los protocolos que estamos analizando.

Para utilizar un filtro de presentación podemos escribir su expresión directamente en el


recuadro de texto del filtro (B) y aplicarlo mediante el botón Apply (D). Tenemos otra
alternativa, que consiste en pulsar el botón de filtro denominado Filter (A). Al hacerlo
aparece el cuadro de diálogo de definición del filtro, que tiene el siguiente aspecto.

Con este cuadro de diálogo podemos definir diversos filtros, asignándoles distintos
nombres para su posterior aplicación. También podemos acceder a este cuadro de
diálogo mediante la opción de menú Analyze->Display Filters....
Si no conocemos la sintaxis de los filtros o los parámetros que podemos emplear en
los mismos, podemos utilizar el botón Expression... para crear una expresión de
forma visual. Al pulsarlo accedemos al siguiente cuadro de diálogo.
En la figura vemos cómo definir un filtro para mostrar los paquetes de datos cuya
dirección IP de origen o de destino sea la 192.168.1.1. La expresión que se genera
para este filtro es:

ip.addr == 192.168.1.1

Más ejemplos de filtros de presentación

Vamos a ver, por último, algunos ejemplos adicionales de filtros de presentación.


1. tcp

Es el tipo de filtro más sencillo, e indica que se presenten sólo los paquetes de datos
del protocolo TCP.

2. ip.proto == 1 and ip.src == 192.168.123.100

Con este filtro seleccionamos los paquetes cuyo protocolo IP sea el 1 (el
correspondiente a ICMP, el del comando PING) y cuya dirección IP de origen sea la
192.168.123.100.

3. (ip.addr == 192.168.123.100 and ip.addr == 192.168.123.101) and


(tcp.port == 1028 and tcp.port == 80)

Este filtro es algo más complejo, e indica que se presenten los paquetes cuya
dirección IP de origen sea la 192.168.123.100 y su dirección IP de destino sea la
192.168.123.101 (o viceversa) y cuyo puerto TCP de origen sea el 1028 y su puerto
TCP de destino sea el 80 (o viceversa).

5. Experimentos con diversos protocolos

Se propone al estudiante que, una vez familiarizado con el funcionamiento del


analizador de protocolos, realice los siguientes experimentos.
5.1 Protocolo ICMP (Protocolo de mensajes de control de Internet)

Vamos a analizarlo con el comando PING, que emplea este protocolo para comprobar
el estado de las redes. Su funcionamiento básico consiste en enviar un paquete de
datos destinado a una determinada dirección IP y ver el tiempo que tarda en recibirse
la respuesta a dicho paquete. Se emplea para ver si existe conectividad de red entre el
ordenador desde el que se emite el comando y el ordenador con el nombre o la
dirección IP indicado en el comando.

Para analizar la estructura de este protocolo con Wireshark, vamos a seguir los pasos
que se indican a continuación:

1. Activar la captura de paquetes.


2. Abrir una ventana de línea de comandos.
3. Ejecutar el comando ping sun.rediris.es en la ventana anterior.
4. Cuando termine la ejecución del comando ping, detener la captura de paquetes.
5. Examinar los paquetes capturados en los paneles (1), (2) y (3) de la ventana
principal de Wireshark.

Si no hemos activado ningún tipo de filtro, ni de protocolo ni de captura, además de los


paquetes que nos interesa analizar, en el panel (1) aparecerán bastantes paquetes
más. Para facilitar el análisis, es recomendable aplicar un filtro de presentación para
que sólo aparezcan los paquetes de este protocolo. Para ello, bastará con escribir
icmp en el campo de texto de filtro (B) de la ventana principal y pulsar el botón Apply
(D).

Si todo ha ido bien, al aplicar el filtro deberán aparecer 8 paquetes, 4 de ellos


correspondientes a las solicitudes (request) y los otros 4 correspondientes a las
respuestas (reply).
Para comprobar el funcionamiento del protocolo en otras condiciones, repetiremos el
experimento anterior ejecutando el comando ping -l 5000 sun.rediris.es en el paso 3.
Con el parámetro -l le indicamos al comando que envíe 5000 bytes de datos (el
comportamiento predeterminado del comando, si no se especifica este parámetro, es
enviar 32 bytes). Como se trata de un tamaño bastante grande, podremos observar
cómo se fragmenta el paquete de datos al enviarlo a la red.

5.2 Protocolo HTTP

Este protocolo es el empleado para acceder a páginas web a través de Internet. En


esta práctica no vamos a entrar en los detalles de su funcionamiento, pero nos va a
servir para probar una de las funcionalidades más interesantes de Wireshark, que es
el seguimiento de un flujo TCP.
Como en el caso de ICMP, para analizar la estructura de este protocolo con Wireshark
vamos a seguir los pasos que se indican a continuación:
1. Activar la captura de paquetes.
2. Lanzar un navegador web (como Firefox o Internet Explorer) y acceder a cualquier
página, como, p.ej., www.unicordoba.edu.co.
3. Cuando termine la carga de la página, detener la captura de paquetes.
4. Examinar los paquetes capturados en los paneles (1), (2) y (3) de la ventana
principal de Wireshark.

También en este caso deberemos aplicar un filtro de presentación, para que


aparezcan únicamente los paquetes que nos interesa analizar. La expresión del filtro
deberá ser similar a la número 3 presentada en el apartado Más ejemplos de filtros de
presentación.
Wireshark ofrece una funcionalidad que facilita la creación de la expresión del filtro si,
como ocurre en este caso, queremos que aparezcan únicamente los datos de una
sesión TCP (concretamente, el acceso a una página web). Para utilizar esta
funcionalidad debemos identificar algún paquete perteneciente a la sesión que nos
ocupa, fácilmente localizable porque la dirección IP de origen debe ser la de nuestro
ordenador y el puerto TCP de destino debe ser el 80, el habitual en la mayor parte de
las servidores web de Internet.

Una vez localizado algún paquete de la sesión, bastará con pulsar con el botón
derecho del ratón sobre él en el panel (1) y seleccionar la opción Follow TCP Stream
en el menú emergente que aparecerá. Al hacerlo, además de crearse la expresión de
filtro adecuada en el recuadro de texto del filtro (B), aparecerá una ventana adicional
en la que se mostrará todo el contenido de la sesión TCP correspondiente, como
puede verse en la figura siguiente.

En esta ventana podemos seleccionar ver toda la conversación que ha tenido lugar
entre nuestro navegador web (cuyas peticiones se muestran en colo rojo) y el servidor
web (cuyas respuestas se muestran en color azul) o ver únicamente las peticiones del
cliente o las respuestas del servidor.

También podría gustarte