Practica 3

20
Práctica 3: Uso de herramientas y análisis de paquetes Autores: Enrique Bonet Rogelio Montañana Paco Soriano Objetivo y descripción general. El objetivo de esta práctica es analizar el comportamiento de los protocolos de redes más comunes mediante sencillas herramientas, generalmente comandos, disponibles en Linux. Se puede obtener ayuda sobre los protocolos, los comandos y sus parámetros con el comando man 1 de Linux, cuyo uso será necesario en muchos casos para obtener la opción o parámetro adecuado a indicar en el comando a ejecutar. Esta práctica se desarrolla utilizando los ordenadores con el sistema operativo Linux redes. Los ordenadores deberán estar conectados a la red de la universidad en todo momento, utilizando para ello rosetas de número impar . Las rosetas de número impar están conectadas a puertos de un hub de 10 Mb/s, mientras que las rosetas de número par están conectadas a puertos de 100 Mb/s de un switch; aunque el switch da mayor rendimiento en esta práctica resulta más interesante utilizar el hub porque permite ‘husmear’ el tráfico de otros ordenadores del laboratorio. La mayor parte de la práctica se desarrolla de forma independiente en cada ordenador, salvo el experimento de cambio de MAC que se hace por parejas de ordenadores. En cada ordenador debería haber a ser posible uno y como máximo dos alumnos. El alumno deberá contestar las preguntas planteadas y anotar en las zonas reservadas al efecto la respuesta obtenida, pues ello facilitará su posterior estudio. Antes de comenzar la práctica acuérdate de apagar el cortafuegos con: service iptables stop 1 En el apéndice A de la práctica se encuentra una breve explicación del uso del comando man de Linux.

Transcript of Practica 3

Page 1: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

Autores: Enrique Bonet Rogelio Montañana

Paco Soriano Objetivo y descripción general.

El objetivo de esta práctica es analizar el comportamiento de los protocolos de redes más comunes mediante sencillas herramientas, generalmente comandos, disponibles en Linux. Se puede obtener ayuda sobre los protocolos, los comandos y sus parámetros con el comando man1 de Linux, cuyo uso será necesario en muchos casos para obtener la opción o parámetro adecuado a indicar en el comando a ejecutar.

Esta práctica se desarrolla utilizando los ordenadores con el sistema operativo Linux redes. Los ordenadores deberán estar conectados a la red de la universidad en todo momento, utilizando para ello rosetas de número impar. Las rosetas de número impar están conectadas a puertos de un hub de 10 Mb/s, mientras que las rosetas de número par están conectadas a puertos de 100 Mb/s de un switch; aunque el switch da mayor rendimiento en esta práctica resulta más interesante utilizar el hub porque permite ‘husmear’ el tráfico de otros ordenadores del laboratorio.

La mayor parte de la práctica se desarrolla de forma independiente en cada

ordenador, salvo el experimento de cambio de MAC que se hace por parejas de ordenadores. En cada ordenador debería haber a ser posible uno y como máximo dos alumnos.

El alumno deberá contestar las preguntas planteadas y anotar en las zonas

reservadas al efecto la respuesta obtenida, pues ello facilitará su posterior estudio. Antes de comenzar la práctica acuérdate de apagar el cortafuegos con:

service iptables stop

1 En el apéndice A de la práctica se encuentra una breve explicación del uso del comando man de Linux.

Page 2: Practica 3

Redes

P3-2

Desarrollo de la práctica. 1.- hostname.

El comando hostname permite obtener el nombre del ordenador en que nos encontramos.

¿Cuál es el nombre del ordenador de prácticas?.

Respuesta:

2.- host y nslookup.

Los comandos host y nslookup2 muestran información de la dirección IP de un ordenador, del nombre de un ordenador conocida su dirección IP, e incluso proporcionan datos de los servidores de nombres que se utilizan en las consultas.

¿Cuál es la dirección IP del ordenador lab3inf14.uv.es?.

Respuesta:

¿Y la del ordenador glup.uv.es?.

Respuesta:

¿Y la del ordenador robotica.uv.es?.

Respuesta:

A la vista de las respuestas anteriores ¿Puede un ordenador responder a más de un

nombre?. 2 El comando nslookup está disponible en todos los sistemas operativos Unix (incluido Linux) y Windows. El comando host solo está disponible en Linux, pero tiene mas funcionalidades que nslookup.

Page 3: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-3

Respuesta:

¿Qué servidores de nombres (DNS) existen en la universidad de Valencia (dominio

uv.es)?. ¿Qué ordenador es el servidor primario (SOA)?. Si ejecutas host sin ningún parámetro obtendrás la lista de todos los posibles parámetros e información sobre su uso.

Respuesta:

En el fichero /etc/resolv.conf se almacena información sobre el dominio en

el que se encuentra tu ordenador y los servidores DNS a los que se consulta. Comprueba este fichero y relaciona lo que hay escrito con el resultado de la pregunta anterior.

Respuesta:

El comando host también permite obtener el nombre de un ordenador dada su

dirección IP. Ejecuta ahora el comando “host 147.156.222.65” ¿Qué nombre tiene ese ordenador?

Respuesta:

Page 4: Practica 3

Redes

P3-4

3.- ifconfig y arp.

Los comandos ifconfig y arp han sido utilizados en prácticas anteriores para modificar las direcciones IP de los ordenadores y consultar la tabla ARP cache, que es la correspondencia entre direcciones MAC e IP que almacena el ordenador.

Ahora veremos como es posible modificar la dirección MAC de un ordenador y asignarle la dirección que queramos3. Para ello, debemos ejecutar el comando “ifconfig eth0” que nos dará información de la tarjeta de red (de la primera en caso de que tengamos varias). De los datos obtenidos debemos anotar la dirección MAC.

Dirección MAC de nuestro ordenador:

Los primeros 6 bytes de la MAC nos dan información sobre el fabricante. Puedes

buscar esta información en http://standards.ieee.org/regauth/oui e indicar el fabricante de tu tarjeta de red.

Respuesta:

Como cualquier modificación de los parámetros de red mediante ifconfig borra

la tabla de rutas existente, antes de usar este comando debemos averiguar mediante el comando “route –n” la dirección IP del router por defecto de nuestro ordenador.

Dirección IP del router por defecto:

El siguiente experimento debe realizarse con los ordenadores agrupados por parejas,

por tanto nos debemos poner de acuerdo con los compañeros de un ordenador vecino, les preguntaremos su dirección IP y haremos ping a su ordenador, ejecutando después el comando “arp –a”. De esta forma obtendremos la dirección MAC de su ordenador.

Dirección MAC del ordenador vecino:

3 Esta modificación es temporal, en caso de que el ordenador se reinicie recuperará la dirección MAC que le asignó el fabricante a la tarjeta de red.

Page 5: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-5

Ahora vamos a modificar nuestra dirección MAC. Pero antes debemos decidir cual será la nueva dirección. Podemos poner cualquier secuencia de dígitos hexadecimales, procurando que no haya direcciones duplicadas en la LAN. Si asignamos direcciones MAC al azar el riesgo de direcciones duplicadas es pequeño, pero no nulo. Además la LAN abarca no solo el laboratorio sino todo el edificio, por lo que no resulta fácil averiguar que MACs están en uso en un momento dado.

Para resolver este problema utilizaremos direcciones locales. Sabemos que en la

LAN solo se están utilizando direcciones globales, no locales. Por tanto si las nuevas MAC son locales no habrá riesgo de duplicados con el resto del edificio. Las direcciones MAC locales se caracterizan por llevar a 1 el penúltimo bit del primer byte. Si tomamos la dirección global de nuestro ordenador, que tiene este bit a cero, y lo cambiamos a 1 manteniendo el resto igual habremos creado una dirección local que será única en toda la LAN. Para cambiar dicho bit lo que haremos sencillamente es sumar 2 al segundo dígito hexadecimal de nuestra dirección. Por ejemplo si la MAC global de nuestro ordenador es la 3A:08:02:6B:B7:0C la dirección MAC local correspondiente será la 3C:08:02:6B:B7:0C.

Una vez decidida la nueva dirección MAC ejecutaremos la siguiente secuencia de

comandos:

ifconfig eth0 down ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX ifconfig eth0 up ifconfig eth0

Con el último comando comprobamos que en efecto el cambio ha tenido lugar. Al usar el comando ifconfig se ha borrado la ruta por defecto. Por tanto debemos

definirla nuevamente mediante el comando:

route add –net 0.0.0.0 netmask 0.0.0.0 gw dirección_IP donde ‘dirección_IP’ es la dirección IP de nuestro router por defecto, que hemos anotado anteriormente.

Antes de seguir debemos esperar a que nuestros compañeros lleguen a este punto de la práctica.

Ahora volveremos a ejecutar un ping a la dirección IP de nuestros compañeros.

¿Funciona? En caso de que no funcione ¿Hay alguna explicación?

Respuesta:

Quizá el comando “arp –a” nos ayude a encontrarla.

Page 6: Practica 3

Redes

P3-6

A continuación borraremos la entrada del ordenador de nuestros compañeros en nuestra tabla ARP cache mediante el comando ”arp -d dirección IP”, donde dirección IP es la del ordenador de nuestros compañeros. Puede ocurrir que ya haya caducado la asignación y no hará falta borrarla.

Ahora volveremos a ejecutar un ping a la dirección IP de nuestros compañeros, y ejecutaremos a continuación el comando ”arp –a”, ¿Ha funcionado el ping? ¿Qué dirección MAC aparece relacionada con la dirección IP de nuestros compañeros?. Si estuviéramos conectados a un switch y viéramos la tabla de direcciones MAC veríamos también allí reflejada la nueva dirección.

Respuesta:

4.- ethtool.

El comando ethtool permite visualizar y modificar los parámetros de funcionamiento de una interfaz, así ethtool eth0 permite visualizar los parámetros de funcionamiento de la interfaz eth0.

Ejecutar ethtool sobre el dispositivo eth0 y obtener la velocidad de funcionamiento y el modo duplex (half-duplex o full-duplex).

Respuesta:

Uno de los parámetros que se indica en la respuesta anterior es el modo de auto-

negociación (on u off). Por defecto, el dispositivo de red arranca con la auto-negociación en on, para negociar sus parámetros con el switch, hub, etc., al que se encuentre conectado. Consultando la página de man de ethtool, ¿Qué comando hemos de ejecutar para poner el modo en off?.

Respuesta:

Page 7: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-7

Una vez hemos desactivado la auto-negociación, modificar el modo de transmisión de half-duplex a full-duplex, ¿Qué comando hemos ejecutado?.

Respuesta:

Modificar ahora la velocidad de transmisión de los 10 Mb/s actuales a 100 Mb/s.

¿Qué comando es necesario ejecutar?.

Respuesta:

¿Por qué no es posible ejecutar ninguna conexión desde el ordenador al cambiar la

velocidad?.

Respuesta:

Restaurar los valores anteriores es tan sencillo como activar otra vez el modo de

auto-negociación. Activar dicho modo para que se restauren los valores correctos.

Una vez restaurado el estado, pasaremos a ver estadísticas del dispositivo. Ejecutar el comando con la opción -S y obtener datos sobre los paquetes y bytes transmitidos y recibidos, etc.

Respuesta:

Page 8: Practica 3

Redes

P3-8

La opción -t permite realizar un chequeo del dispositivo de red, pudiendo funcionar en modo online, en el cual no se interrumpe el funcionamiento de la red, u offline, en el cual el chequeo es más riguroso, pero se detiene brevemente el funcionamiento de la red. Ejecuta el chequeo en modo online y explica la respuesta obtenida.

Respuesta:

5.- netstat.

Este comando muestra estadísticas de los protocolos IP, TCP, UDP e ICMP y el estado de las conexiones que utilizan el protocolo de transporte TCP.

Ejecuta netstat -t y escribe la respuesta obtenida.

Respuesta:

Ejecuta ahora una conexión FTP a glup.uv.es mediante el comando ftp. Utiliza

como usuario anonymous y como contraseña tu dirección de e-mail [email protected]. Mientras la conexión de FTP este activa ejecuta otra vez netstat -t y explica los cambios existentes.

Respuesta:

Abre ahora el navegador web y efectua una conexión al servidor web de la

universidad (www.uv.es). Ejecuta netstat -t y analiza la respuesta obtenida.

Respuesta:

Page 9: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-9

La opción -s proporciona datos sobre los paquetes transmitidos y recibidos de los protocolos IP, TCP, UDP e ICMP. Ejecutalo y escribe el número de paquetes IP, TCP, UDP e ICMP transmitidos y recibidos.

Respuesta:

Ejecuta ahora el comando ping 147.156.222.65 seguido de netstat –s y

observa que protocolos han modificado sus valores.

Respuesta:

Ejecuta el comando host glup.uv.es. ¿Qué protocolos han modificado sus

valores?.

Respuesta:

6.- traceroute

Este programa determina el camino hacia un destino enviando datagramas con valores crecientes del parámetro TTTL (Time To Live) para el destino especificado. Las implementaciones de Windows (tracert) envían paquetes ICMP “Echo request” (como el ping) mientras que las de Linux/UNIX utilizan por defecto datagramas UDP, aunque también tienen la posibilidad de enviar paquetes ICMP “Echo request” e incluso TCP SYN.

Cuando un paquete llega a un router este decrementa el valor del campo TTL en 1 antes de reenviarlo. Cuando el TTL vale 0 el router descarta el paquete y devuelve al sistema de origen un mensaje ICMP “Time Exceded”. Para determinar la ruta, traceroute envía un primer paquete con un TTL de 1 y lo incrementa paulatinamente en 1 cada vez, hasta que el destino responda o se alcance el TTL máximo. Existen diversos motivos por los que el comando traceroute puede fallar, por ejemplo que en algún router del camino se hayan configurado interfaces con direccionamiento privado, que se haya desactivado el envío de mensajes ICMP, que exista un cortafuegos en el camino, etc.

Page 10: Practica 3

Redes

P3-10

Anotar el camino existente desde el ordenador de prácticas hasta el ordenador glup.uv.es.

Respuesta:

Ejecutar lo mismo con shackleton.uv.es (servidor DHCP de Blasco Ibáñez).

Respuesta:

La opción -n indica a traceroute que no resuelva los nombres de los routers

que aparecen en el camino, lo cual incrementa la velocidad de funcionamiento del comando. Ejecuta traceroute www.berkeley.edu seguido de traceroute –n www.berkeley.edu y compara el tiempo (www.berkeley.edu es el servidor web de la Universidad de Berkeley).

Ejecuta ahora traceroute www.uv.es .Verás que el comando no funciona, da

una posible explicación del resultado obtenido.

Respuesta:

7.- wireshark.

Wireshark es el analizador de protocolos más popular en la actualidad. Se trata de un software de dominio público que está desarrollado para múltiples plataformas de sistemas operativos y múltiples interfaces físicas. El software puede obtenerse de forma gratuita de www.wireshark.org. Este programa es una evolución del conocido como Ethereal, pero su principal desarrollador pasó a trabajar para otra empresa y por problemas de registro de marcas tuvo que cambiarle el nombre.

Wireshark tiene una interfaz gráfica. Cuando se utiliza sobre una interfaz Ethernet

puede funcionar en modo promiscuo y capturar todas las tramas de la red, o bien en modo no promiscuo y capturar solo las tramas dirigidas a su interfaz. Aunque posee muchas opciones de inicio, lo más normal es ejecutarlo sin ningún tipo de opción y configurarlo durante su uso.

Las imágenes que se muestran a continuación corresponden a su antecesor, Ethereal.

Page 11: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-11

El funcionamiento es muy similar, por lo que esto no supone ningún problema.

El interfaz de usuario es bastante simple e intuitivo. Para capturar trafico de red, basta con pulsar Capture y seleccionar Capture options. Se abre una nueva ventana en la que debemos indicar que deseamos capturar por la interfaz eth0 y de momento desmarcar la casilla de Capture packets in promiscuous mode, pulsando a continuación Start.

Aparecerán unos contadores, y se comenzará a capturar todo el tráfico que llegue a nuestro ordenador4. Cuando se tengan capturadas algunas tramas, detener el proceso de captura pulsando Detener.

4 La mayoría del tráfico capturado corresponde a tráfico broadcast, por lo que en ciertos momentos el número de paquetes capturado puede ser elevado.

Page 12: Practica 3

Redes

P3-12

La ventana se divide ahora en tres zonas. En la superior se muestra la lista de tramas/paquetes capturados, a razón de una línea por paquete. En la intermedia se muestra en detalle la estructura del paquete seleccionado en la primera, y en la inferior se muestra el contenido del paquete en hexadecimal. Para analizar un paquete basta con pincharlo en la zona superior; entonces se puede seleccionar alguno de los campos que aparecen en la zona intermedia y desglosarlo en sus partes si las tiene (por ejemplo ver en detalle los campos de la cabecera IP). Al seleccionar algún campo de la zona intermedia automáticamente queda seleccionado en la inferior el contenido en hexadecimal correspondiente, con lo que es posible analizar el contenido con todo detalle. En el ejemplo que aparece a continuación se ha seleccionado en la zona superior la trama número 4; en la zona intermedia se ha seleccionado el campo ‘Ethertype’ de la cabecera Ethernet y como puede verse en la zona inferior han quedado seleccionados automáticamente los bytes 13 y 14 de la trama, que en este caso tienen el valor hexadecimal “0800”, que es el Ehertype que corresponde al protocolo IP.

El analizador interpreta los protocolos desde el nivel de enlace al nivel de

Page 13: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-13

aplicación. La lista de protocolos que abarca para cada uno de los niveles es muy completa.

Comprueba ahora los contenidos de la cabecera de la trama Ethernet, ¿son los que se han visto en teoría?.

Pasa ahora a analizar la cabecera del protocolo IP. Hay 20 bytes a analizar. Comprueba todos los campos y explica que significa cada uno.

Como la captura suele recoger una gran cantidad de paquetes, el analizador posee la opción de poder crear filtros5 que capturen tan solo los paquetes que cumplan unas determinadas condiciones. Los filtros se crean dentro de la ventana Capture options escribiendo el filtro deseado dentro de la opción Capture filter. A partir de este momento, vamos a eliminar el tráfico broadcast que llega a nuestro ordenador mediante el filtro: not ether host FF:FF:FF:FF:FF:FF que elimina en la captura todo el tráfico broadcast existente en la red.

Pon en marcha de nuevo la captura de paquetes y ejecuta el comando traceroute –t 16 glup.uv.es, explicando la respuesta obtenida.

Pon en marcha el modo captura y utiliza ahora el comando ping para forzar el envío de mensajes ICMP. Intenta que los paquetes no lleguen a su destino poniendo un TTL bajo (opción –t del comando ping). Analiza los resultados obtenidos.

Respuesta:

Vamos a usar ahora el comando ping con paquetes IP que se hayan de fragmentar

(opción –s) e intenta predecir cuantos fragmentos se producirán y de que tamaño. Probar exactamente el comando ping –c 1 –s 4000 glup.uv.es. Ahora con el analizador observa las tramas Ethernet y comprueba si fue correcta la predicción. Observa las cabeceras y analiza si la información que contienen los campos de fragmentación coincide con la que era de esperar.

Respuesta:

5 En el apéndice B se encuentra una explicación de los filtros y su sintaxis.

Page 14: Practica 3

Redes

P3-14

Realiza ahora una conexión FTP a glup.uv.es. Cierra dicha conexión y analiza algunas de las tramas recibidas.

Respuesta:

Vamos a proceder ahora a trabajar en modo promiscuo. Para ello, marcaremos la

casilla de Capture packets in promiscuous mode. Empezamos la captura y la detendremos cuando se hayan capturado algunos paquetes para analizar. Comprobaremos que ahora los paquetes tienen direcciones de origen y destino distintas a las de nuestro ordenador6. Si deseamos seleccionar tan solo los paquetes que tengan un determinado origen, destino, opción IP, etc., podemos crear nuestros propios filtros.

¿Qué filtro permitiría capturar tan solo los paquetes cuyo origen o destino es lab3inf14.uv.es.?

Respuesta:

Usando ese filtro, el profesor hará un conjunto de cosas en su ordenador (lab3inf14)

y el alumno deberá capturarlas todas e interpretar lo que ha hecho el profesor.

Respuesta:

Dentro de la pestaña Analyze existe la opción Follow TCP Stream. Dicha opción

permite realizar el análisis de una conexión TCP particular. Para utilizarlo pincha sobre una de los paquetes TCP que hayas capturado y comprueba lo que optienes.

6 Esto se debe a que los ordenadores de prácticas están conectados a un hub. En caso de que un ordenador este conectado a un switch, y dado que el switch solo envía por el puerto al que corresponde la dirección MAC, normalmente no recibiríamos paquetes dirigidos a otros ordenadores.

Page 15: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-15

Crea ahora un filtro que capture tan solo los paquetes cuyo destino sea glup.uv.es y el protocolo sea TCP.

Respuesta:

Crea un filtro que capture las consultas realizadas a los DNS (paquetes con origen o

destino el puerto 53 UDP).

Respuesta:

Crea un filtro que capture los paquetes IP de longitud menor de 200 bytes.

Respuesta:

Crea un filtro que capture los paquetes que tengan un valor del campo TTL menor

que 16.

Respuesta:

Por último, crea un filtro que capture todos los paquete cuyo campo DF esté a 1.

Respuesta:

Page 16: Practica 3

Redes

P3-16

Apéndice A: El comando man de Linux.

Linux, al igual que UNIX, incluye un manual sobre los comandos, lo cual posibilita consultar la sintaxis, opciones, etc., de cualquier comando. El comando que permite consultar el manual es man, cuya sintaxis es: man [-k] [sección] <comando>

Donde -k y sección son optativas y comando es el comando del cual se desea consultar la página de manual. Por ejemplo, para consultar como funcionan las páginas de manual se ejecuta: man man

En algunos casos, existe más de una página referida a un comando, por ejemplo, printf posee dos entradas en las páginas del manual de comandos, una referida al comando printf que permite dar formato a la salida de datos de un intérprete y otra referida a la función printf del lenguaje de programación C. En tal caso el comando man muestra la primera página que encuentra comenzando a leer en la sección 1 del manual. Si deseamos otra página del manual, debemos indicar la sección del manual en la que debe mirar. Por lo tanto: man printf Devuelve información sobre el comando printf (sección 1). man 3 printf Devuelve información sobre la función printf de C (sección 3).

La opción -k indica a man que deseamos que busque en todas las páginas del manual y nos devuelva las secciones y páginas donde aparezca la palabra introducida. Por ejemplo: man -k chown

Nos devuelve como respuesta: chown (1) - Change file owner and group chown, fchown, lchown (2) - Change ownership of a file

Donde (x) indica la sección del manual donde encontró la palabra.

La consulta de una página del manual finaliza pulsando la tecla ‘q’, pudiendo usarse las teclas direccionales para avanzar o retroceder por la página del manual que se esta consultando.

Page 17: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-17

Apéndice B: Filtros en ethereal.

En ethereal es posible construir filtros que determinen si un determinado paquetes van a ser o no capturado. En caso de que no se utilice ningún filtro, todos los paquetes son capturados.

Los filtros se construyen mediante expresiones que consisten en una o más primitivas. Las primitivas, usualmente, consisten en un identificador (nombre o número), precedidas por uno o más calificadores. Existen tres tipos diferentes de calificadores:

• De tipo: Identifican un nombre o dirección, sus posibles valores son host, net y port. Algunos ejemplos son:

Filtro Explicación

host glup.uv.es Paquetes cuyo origen o destino es el ordenador glup.uv.es.net 147.156.0.0/16 Paquetes cuyo origen o destino es la red 147.156.0.0/16 port 20 Paquetes cuyo origen o destino es el puerto 20.

Si no existe ningún calificador de tipo, se asume que el tipo es host.

• De dirección: Identifican una dirección particular de transferencia, esto es, un origen o destino. Sus valores posibles son src, dst, src or dst y src and dst. Por ejemplo:

Filtro Explicación

src glup.uv.es Paquetes cuyo origen es el ordenador glup.uv.es. dst net 147.156.0.0/16 Paquetes destino es la red 147.156.0.0/16 src or dst port ftp-data Paquetes cuyo origen o destino es el puerto 20 (ftp-data).

Si no se indica ningún calificador de dirección, se toma el calificador de dirección por defecto (src or dst).

• De protocolo: Identifican un protocolo particular. Sus valores posibles son ether,

fddi, tr, ip, ip6, arp, rarp, decnet, tcp y udp. Por ejemplo7:

Filtro Explicación ether src glup.uv.es Paquetes ethernet cuyo origen es el ordenador

glup.uv.es. arp net 147.156 Paquetes de protocolo ARP con origen o destino en

la red 147.156. tcp port 21 Paquetes cuyo protocolo es TCP y origen o destino

en el puerto 21.

Si no se especifica ningún protocolo, todos los protocolos que sean consistentes con la identificación de tipo son capturados.

7 Si en algún momento se desea especificar una dirección ethernet en el filtro, está debe especificarse como XX:XX:XX:XX:XX:XX

Page 18: Practica 3

Redes

P3-18

Como puede verse por la explicación de los diferentes tipos de calificadores,

siempre están presentes, aunque sea por defecto, los tres tipos de calificadores. Así, la expresión: ip 147.156.222.65

Es equivalente a: ip src or dst host 147.156.222.65

Pueden construirse filtros más complejos mediante la combinación de primitivas mediante la utilización de paréntesis y/o las palabras and, or y not, siendo la prioridad de not mayor que la de and y or, cuya prioridad entre si es igual. Así, por ejemplo: host glup.uv.es and not port ftp

Indica que se capturen todos los paquetes cuyo origen o destino es glup.uv.es excepto aquellos cuyo puerto de origen o destino es el de ftp (puerto 21).

Un listado de las primitivas más utilizadas se encuentra en la siguiente tabla:

Primitiva Descripción dst host <ordenador> Verdad si el campo destino del paquete es el

<ordenador>. src host <ordenador> Verdad si el campo origen del paquete es el

<ordenador>. host <ordenador> Verdad si el campo origen o destino del paquete es

el <ordenador>. Ether dst <ordenador> Verdad si la dirección ethernet de destino es el

<ordenador>. Ether src <ordenador> Verdad si la dirección ethernet de origen es el

<ordenador>. Ether host <ordenador> Verdad si la dirección ethernet de origen o destino

es el <ordenador>. dst net <red> Verdad si la dirección de destino del paquete

corresponde a una dirección de la <red>. src net <red> Verdad si la dirección de origen del paquete

corresponde a una dirección de la <red>. net <red> Verdad si la dirección de origen o destino del

paquete corresponde a una dirección de la <red>. dst net <red> mask <mascara> Verdad si la dirección de destino del paquete

corresponde a una dirección de la <red> de máscara <mascara>.

src net <red> mask <mascara> Verdad si la dirección de origen del paquete corresponde a una dirección de la <red> de máscara <mascara>.

Page 19: Practica 3

Práctica 3: Uso de herramientas y análisis de paquetes

P3-19

Primitiva Descripción net <red> mask <mascara> Verdad si las dirección de origen o destino del

paquete corresponde a una dirección de la <red> de máscara <mascara>.

dst net <red>/<longitud> Verdad si la dirección de destino del paquete corresponde a una dirección de la <red> cuya máscara se indica por <longitud>.

src net <red>/<longitud> Verdad si la dirección de origen del paquete corresponde a una dirección de la <red> cuya máscara se indica por <longitud>.

net <red>/<longitud> Verdad si las dirección de origen o destino del paquete corresponde a una dirección de la <red> cuya máscara se indica por <longitud>.

dst port <puerto> Verdad si el paquete tiene como destino el puerto dado por <puerto>8.

src port <puerto> Verdad si el paquete tiene como origen el puerto dado por <puerto>.

port <puerto> Verdad si el paquete tiene como origen o destino el puerto dado por <puerto>.

less <longitud> Verdad si el paquete tiene una longitud menor o igual que <longitud>.

greater <longitud> Verdad si el paquete tiene una longitud mayor o igual que <longitud>.

Además de las expresiones anteriores, existen expresiones del tipo:

<expresión 1> <operador> <expresión 2>

Donde <operador> es uno de los operadores de comparación <, >, <=, >=, = y != (menor, mayor, menor o igual, mayor o igual, igual y distinto).

Por su parte, <expresión 1> y <expresión 2> son expresiones aritméticas compuestas por constantes enteras expresadas con la sintaxis de C/C++ y los operadores +, -, *, /, & y | (suma, resta, producto, división, and lógico y or lógico). Además, existe una expresión especial que permite acceder a unos datos concretos del paquete. Esta expresión que permite el acceso a los datos de un paquete tiene la sintaxis: protocolo [ desplazamiento : tamaño]

Donde protocolo es uno de los protocolos validos (ether, fddi, tr, ip, arp, rarp, tcp, udp, icmp o ip6), desplazamiento es el desplazamiento, en bytes, desde el comienzo de los datos del protocolo especificado (el primer byte es el byte cero), y tamaño son los bytes a analizar, tomando por defecto el valor de 1 byte si no se especifica ningún valor. Por ejemplo: ip[0 : 1] & 0x0F != 5

8 Esta expresión y las dos siguientes pueden ir precedidas de tcp ó udp, para indicar que solo se desea el puerto correspondiente al protocolo TCP ó UDP respectivamente.

Page 20: Practica 3

Redes

P3-20

Indica todos los paquetes que contienen opciones IP (campo longitud de la cabecera

con valor distinto de 5). Esta expresión también puede escribirse como: ip[0] & 0x0F != 5

Teniendo en cuenta que si no se especifica el tamaño se toma por defecto 1. Por otra parte, el siguiente ejemplo: ip[6 : 2] & 0x1FFF == 0

Indica solo datagramas no fragmentados o el primer fragmento de los datagramas fragmentados (campo desplazamiento del fragmento igual a cero).