Instructivo WireShark PDF
Instructivo WireShark PDF
Instructivo WireShark PDF
WireShark
Objetivo
Este instructivo describe el uso del programa WireShark (antes llamado Ethereal) para
examinar paquetes en una red de datos.
La arquitectura de software para un protocolo de red en una máquina Linux con tarjeta
Ethernet aparece en la figura. El analizador de protocolo corre como una aplicación,
comunicándose con un componente del kernel Linux llamado Linux Socket Filter. El kernel
de un sistema operativo es la parte central o núcleo del sistema, el socket (significa
enchufe) es una forma de comunicación entre procesos propia de los sistemas Unix, un
proceso es un programa en ejecución. La figura muestra dos analizadores de protocolo
distintos, tcpdump y WireShark; tcpdump funciona en línea de comando, WireShark es
una aplicación gráfica, pero ambos hacen más o menos lo mismo. El Linux Socket Filter
actúa como intermediario entre el analizador de protocolo y el controlador de la tarjeta de
WireShark
WireShark es un analizador de protocolos con interfaz gráfica capaz de reconocer muchos
protocolos distintos. Permite tanto revisar los paquetes de datos en una red activa como
desde un archivo de captura previamente generado; es capaz de comprender diversos
formatos de archivo propios de otros programas de captura, en particular el clásico
tcpdump.
Uso de WireShark
La invocación del programa WireShark puede hacerse a través del menú de invocación
del ambiente gráfico o desde una terminal Unix si no existe la opción en el menú. Si se
hace a través de una terminal Unix, el comando wireshark & o ethereal & (en el
laboratorio) arranca el programa y devuelve el control de la terminal al usuario para poder
continuar ingresando comandos. El símbolo & arranca el programa como proceso
independiente de la terminal. La figura muestra la ventana principal de WireShark luego
de una captura de datos. Inicialmente, esta ventana aparece vacía.
Para iniciar la captura de datos, elegir las opciones de menú Capture: Start (Capturar,
Comienzo). En la ventana de opciones de captura (ver figura), debe fijarse al menos la
interfaz sobre la que se quiere realizar la captura. Los nombres varían según los sistemas
operativos; la interfaz lo (loopback) permite enviar y recibir paquetes en la propia
máquina.
Ejercicio:
Captura, reconocimiento, grabar como texto, grabar en formato WireShark,
visualizar.
1. Iniciar una captura (Capture: Start), elegir la interfaz lo. Arrancar la captura
presionando el botón OK.
2. En ventana aparte, en una terminal de comandos, escribir ping -c3 localhost.
Aguardar a que termine de ejecutarse el comando.
3. Terminar la captura (Stop en la ventana de captura de WireShark).
4. Examinar la captura. Reconocer los paquetes pedido - respuesta (request - reply)
del protocolo ICMP (Internet Control Message Protocol) .
5. Grabar la captura, como texto, en un archivo: File: Print, tic en File, indicar un
nombre de archivo (por ejemplo captura1.txt).
6. Visualizar el archivo; verificar que es legible.
7. Grabar la captura en el formato propio de WireShark: File: Save as...; indicar un
nombre de archivo (por ejemplo, captura1.ether). Este archivo no es legible
como texto, debe ser visualizado con WireShark o con tcpdump.
8. Visualizar el archivo de captura en formato WireShark: File, Open, elegir el
archivo. Verificar que se visualiza correctamente.
Si se desea examinar los paquetes a medida que van siendo capturados, activar en la
ventana de Opciones de Captura "Update list of packets in real time" y "Automatic
scrolling in live capture".
Opciones de invocación
En Unix, la página man de WireShark contiene las opciones de invocación del programa
cuando se lo arranca de la línea de comando. Algunas de las más usadas son:
-h: muestra versión y opciones
-f <expresión>: expresión filtro de captura (sintaxis de tcpdump)
-i <interfaz>: nombre de interfaz de escucha, tal como es mostrada en la salida de
los comandos Unix ifconfig -a o netstat -i.
-n: deshabilita resolución de nombres (tales como nombres de máquinas y nombres de
puertos TCP y UDP). Esta opción es útil para evitar ver el intercambio de paquetes
originados en las consultas al servidor DNS para resolver nombres de máquinas.
-r <archivo>: lee los paquetes del archivo indicado en lugar de realizar una captura.
El archivo debe haber sido generado con WireShark (Ethereal), tcpdump o algún otro
analizador que use el mismo formato.
-w <archivo>: fija el nombre del archivo de captura.
WireShark - Ayuda
Filtrado de paquetes
El filtrado de paquetes permite capturar o desplegar sólo aquellos paquetes de interés
para el estudio en curso, desconociendo la existencia de otros. WireShark tiene dos
modos de filtro distintos:
• filtro de captura: sólo se retienen los paquetes que cumplen la expresión filtro.
Define lo que se guarda.
• filtro de despliegue: de los paquetes capturados, sólo se muestran los paquetes
que cumplen la expresión filtro. Define lo que se ve de lo que hay guardado.
La sintaxis de escritura de ambos tipos de filtro es diferente. Los filtros de captura siguen
la sintaxis del comando tcpdump y deben ser escritos en el cuadro Filter de la ventana de
opciones de captura, antes de iniciar la captura. Los filtros de despliegue se fijan en el
cuadro File de la ventana principal de WireShark. En ambos casos, presionando este
botón File aparece un cuadro de diálogo que permite asignar un nombre a la expresión
filtro construida.
Para los filtros de despliegue existe una ayuda adicional en el botón Add Expression, que
permite construir la expresión eligiendo el protocolo, sus campos y operadores
relacionales.
Filtro de captura
Un filtrado de paquetes por tipo puede lograrse en forma muy simple escribiendo el tipo
en el cuadro Filter de la ventana principal: tcp, icmp, udp, etc. Para construcción de
expresiones de filtro de captura se dispone de palabras claves (src, dst, host, net, len,
etc.), operadores lógicos (and, or, not) y paréntesis. Los paquetes capturados deberán
cumplir con la expresión booleana construida. La página man de tcpdump muestra todas
las opciones. La tabla siguiente muestra un conjunto de ejemplos comunes.
icmp
tcp el campo del protocolo IP fijado en el número correspondiente
udp a ICMP, TCP, UDP u OSPF
ospf
Filtro de despliegue
La creación de filtros de despliegue es similar a la de captura, pero la sintaxis es diferente.
Se construyen más fácilmente usando el constructor invocado por el botón Add
Expression, donde pueden elegirse los campos de cada protocolo, los operadores, e
ingresar los valores requeridos. Algunos ejemplos pueden verse en la siguiente tabla.
Referencias
• WireShark - Network protocol analyzer (http://www.wireshark.org).
• tcpdump, página man.