ataque al protocolo rip - Departament d`Enginyeria Informàtica i

Anuncio
ENGINYERIA TÈCNICA DE TELECOMUNICACIÓ
ESPECIALITAT TELEMÀTICA
PROYECTO FINAL DE CARRERA
Curso 2007-2008
ATAQUE AL PROTOCOLO RIP
Alumno: Salvador Álvarez
Director: Francesc Sebè
Fecha entrega: Abril 2008
ATAQUE AL PROTOCOLO RIP
2
ÍNDICE
PRESENTACION
5
1. INTRODUCCIÓN
6
1.1 Tabla de encaminamiento
1.2 Encaminamiento estático y dinámico
1.3 Protocolo de encaminamiento
1.4 Concepto de EGP E IGP
2. RIP
2.1 Introducción a RIP
2.2 Algoritmo del Vector de Distancia
2.2.1 Cambios en la topologia
2.2.2 Prevención de la inestabilidad: Cuenta a infinito
2.2.3 Horizonte dividido con actualización inversa envenenada
2.2.4 Trigger Update
2.3 Especificaciones del Protocolo RIP
2.4 Formato del mensaje
2.5 Consideraciones en el direccionamiento
2.6 Temporizadores
2.7 Proceso de entrada
2.7.1 Comando Request
2.7.2 Comando Response
2.8 Proceso de salida
2.9 Ejemplo RIP
2.10 RIP VERSION 2
2.10.1 Formato mensaje RIP version 2
2.10.2 Consideraciones y compatibilidades
2.11 Limitaciones del protocolo
3. DISEÑO DE ATAQUE
3.1 Introducción
3.2 Conocimiento de la red
3.3 Mensajeria falsa
3.4 Expansión de la mensajeria falsa
3.5 Provocar cancelación de rutas
3.6 Persistencia
4. DESARROLLO
4.1 Introduccion
4.2 Análisis funcional
4.3 Análisis técnico
4.4 Pruebas
6
9
10
10
12
12
12
17
19
22
26
27
28
30
32
33
34
35
36
37
40
40
43
44
45
45
45
46
48
50
51
52
52
52
55
58
3
4.4.1 Pruebas ST
4.4.2 Pruebas IT
4.4.3 Pruebas PR
59
59
61
5. CONCLUSIONES
64
6. RECURSOS UTILIZADOS
65
7. MANUAL
66
7.1 Introducción
7.2 Requisitos
7.3 Características
7.4 Descripción de la aplicación
7.5 Mensajes de error
66
66
66
67
69
4
PRESENTACIÓN
Una ruta, en telemática, es el camino que los datos deben seguir desde un
origen hasta llegar a su destino. En una arquitectura o topología de red, es de
gran importancia que todas las entidades que forman parte de la misma,
ordenadores o routers, se puedan comunicar entre ellos. Una topología de
red, puede ser tan simple como dos ordenadores conectados punto a punto, o
una gran red conmutada. Por esta razón es necesario que exista un
mecanismo que permita la comunicación, sea cual sea la topología de red. A
este mecanismo se le denomina encaminamiento, y determina las rutas que
deben seguir los datos.
En las redes que utilizan el protocolo TCP/IP, las máquinas encargadas de
encaminar la información se denominan routers. Los routers son máquinas
que tienen diversos interfaces de red. Cuando un router recibe una trama de
datos por una interfaz observa su cabecera IP para ver la dirección IP donde
va dirigida la trama. Según el destino donde va dirigida la trama, ésta va a ser
reenviada por un interfaz o por otro. La decisión sobre por qué lugar se debe
reenviar una trama se toma a partir de la información contenida en las tablas
de encaminamiento de un router. Esta información se puede configurar de
forma manual (proceso muy laborioso) por parte del administrador o se puede
obtener de forma automática mediante la utilización de protocolos de
encaminamiento. Un protocolo de encaminamiento es utilitzado por los routers
de una red para intercambiar la información necesaria para que cada router
pueda configurar sus tablas de encaminamiento.
Uno de los protocolos de encaminamiento más antiguos y conocidos, es el
Protocolo RIP, de las siglas en inglés, Routing Informacition Protocol. Pero,
¿Es realmente RIP un buen protocolo de encaminamiento? Este proyecto,
pretende demostrar las vulnerabilidades y problemas de seguridad que
presenta la utilización del protocolo RIP en redes conmutadas.
Primeramente, se analiza el protocolo, como funciona, que particularidades
tiene. A continuación se hace un estudio de los posibles problemas de
seguridad del protocolo. Y por último, se muestra la implementación de una
aplicación para ejecutar un ataque de denegación de servicio en una red
conmutada que utilice el protocolo RIP como protocolo de encaminamiento.
Este ataque tiene como finalidad interferir en el correcto funcionamiento de la
red en cuestión. El ataque consiste en introducir en la red un equipo que
inserte mensajes falsos. Estos mensajes falsos, al ser recibidos y procesados
por los routers causaran su desconfiguración de las tablas de
encaminamiento.
Para una buena comprensión de los temas tratados en el presente
proyecto, se recomienda que el lector tenga conocimientos básicos en
configuración de redes, conocimientos del protocolo TCP/IP, y conocimientos
del lenguaje de programación JAVA.
5
1 INTRODUCCIÓN
1.1 TABLA DE ENCAMINAMIENTO
La función de encaminamiento de una red trata de encontrar las rutas de
mínimo coste a través de la red, estando el parámetro de coste basado en el
número de saltos, el retardo esperado u otras métricas.
Una red de comunicaciones puede ser muy simple. Por ejemplo, dos
ordenadores conectados mediante un cable determinan una red de
comunicaciones. En una red de estas características es evidente que el flujo
de datos que ira de un ordenador a otro será siempre por el cable que los une.
Fig 1.
Pero, lo habitual encontrarnos arquitecturas de red más complejas. En ese
caso, los routers deben estar configurados para que los datos enviados entre
dos máquinas cualquiera lleguen a su destino. Por ejemplo, en la Fig 2. se
muestra una red con 4 ordenadores.
Fig 2.
Cada ordenador debe poder comunicarse con el resto de ordenadores de
la red. El ordenador A esta directamente conectado con B. Por lo tanto,
utilizan el cable de red que los une para comunicarse. En el caso de que el
ordenador A quiera comunicarse con el ordenador C, es necesario que el flujo
de datos pase por el ordenador B. Entonces, en ordenador B debe ser el
encargado de hacer llegar los datos que quiere enviar A a su destino. En este
6
caso como el destino es el ordenador C, reenviaría los datos por su interfaz 3.
De manera similar se pueden determinar cada ruta necesaria para que todos
los ordenadores de la red se puedan comunicar.
Se pueden presentar las rutas fácilmente en una tabla para cada
ordenador de la red. Por ejemplo, el ordenador A tendría la siguiente tabla de
rutas:
Destino
B
C
D
Puerta enlace
B
B
Interfaz
1
1
1
La puerta de enlace es la máquina a través de la cual una máquina envía
sus datos para que lleguen a destinos con los cuales no está conectada
directamente. En este caso, el ordenador A utiliza el ordenador B como puerta
de enlace para comunicarse con el resto de la red. Según este esquema, es
responsabilidad de B que los datos acaben llegando a su destino. La interfaz,
es el medio físico que se utiliza en cada ruta. En el ejemplo, como el
ordenador A solo dispone de una interfaz, enviará todos sus datos por esta. A
cada ruta posible, también se le conoce con el nombre de Entrada de la tabla.
La tabla de rutas del ordenador B tendría la siguiente pinta:
Destino
A
C
D
Puerta enlace
Interfaz
1
3
2
Como el ordenador B esta interconectado con todos los ordenadores de la
red en cuestión, no necesita puertas de enlace para comunicarse.
De forma similar se puede determinar las tablas del ordenador C y del
ordenador D:
Destino
B
D
D
Puerta enlace
Destino
C
B
A
Puerta enlace
B
B
Interfaz
2
1
2
Interfaz
1
3
2
7
Se puede observar como utilizan B como puerta de enlace para
comunicarse con A.
Según lo visto hasta el momento, una tabla de rutas contiene la
información que indica a una máquina como encaminar una trama de datos a
partir del destino donde esta va dirigida. A esta tabla se le denomina Tabla de
encaminamiento.
En una tabla de encaminamiento, se incluye el destino que se quiere
alcanzar, la puerta de enlace, si procede, y la interfaz que se utiliza para llegar
al destino. Adicionalmente se incluyen otros parámetros útiles para el
encaminamiento, que se verán más adelante. En las redes TCP/IP, el destino
se indica mediante la dirección IP del ordenador de destino, y la puerta de
enlace por la dirección IP del ordenador que hace tal función.
Fig. 3
La red representada en la Fig.3, esta constituida por tres ordenadores, y
dos redes. Por una parte, tenemos la red 192.168.1.0/24, y por otra, la red
192.168.2.0/24. Se han asignado direcciones IP en las interfaces de los
ordenadores respetando la singularidad en la red. La tabla de
encaminamiento que obtendríamos del ordenador A seria similar a la
siguiente:
Ordenador A
Destination
192.168.1.0
192.168.2.0
Gateway
0.0.0.0
192.168.1.2
Genmask
255.255.255.0
255.255.255.0
Iface
eth0
eth0
Cuando una máquina esta directamente conectada a una red, no necesita
puerta de enlace, gateway, para comunicarse con esta. En ese caso se utiliza
la dirección 0.0.0.0 para indicar que no es necesario puerta de enlace. El
ordenador A, como esta directamente conectado a la red 192.168.1.0 no
necesita puerta de enlace. En cambio, para comunicar con la red 192.168.2.0,
necesita de la puerta de enlace 192.168.1.2.
Las tablas de encaminamiento de los ordenadores B y C tendrían la
siguiente pinta:
8
Ordenador B
Destination
192.168.1.0
192.168.2.0
Gateway
0.0.0.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
Iface
eth0
eth1
Como el ordenador B está directamente conectado a las dos redes no
necesita de puertas de enlace.
Ordenador C
Destination
192.168.1.0
192.168.2.0
Gateway
192.168.2.1
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
Iface
eth0
eth0
Si el ordenador A desea enviar una trama de datos a la máquina C,
consultará la tabla de encaminamiento para decidir donde tiene que dirigir los
datos. En este caso enviará los datos por la única interfaz que tiene, la interfaz
eth0, que conecta directamente con B. Cuando el ordenador B recibe los
datos de A, ve que va dirigido al ordenador C en la cabecera IP. Entonces,
consultará en las tablas de encaminamiento por que interfaz tiene que
reencaminar los datos. En este caso por su interfaz eth1. Finalmente los datos
llegan a su destino, el ordenador C.
1.2 ENCAMINAMIENTO ESTÁTICO Y DINÁMICO
En redes no demasiado grandes, es factible configurar las tablas de
encaminamiento de forma manual. Cuando las tablas de encaminamiento se
configuran de forma manual, el encaminamiento se denomina Estático. En el
encaminamiento estático la información de las tablas de encaminamiento se
configuran una única vez. Esta información permanecerá inalterada a no ser
que la modifiquemos manualmente.
Para redes más grandes y complejas, esto no es factible. En primer lugar,
un número mayor de ordenadores, implica un número mayor de rutas a
configurar, siendo una tarea laboriosa, y en ocasiones difícil de hacer. Por otra
parte, cambios en la topología, tales como incluir más ordenadores, suponen
reconfigurar todos los ordenadores de la red para obtener comunicación con
los ordenadores incluidos. Además, si un enlace falla, como las rutas son
fijas, este método no es capaz de encontrar rutas alternativas para encaminar
los datos. En definitiva, la técnica de encaminamiento estático no se adapta al
estado de la red.
Por consiguiente, es necesario disponer de un mecanismo automático para
solucionar todos estos problemas. Este mecanismo debe rellenar la
9
información de las tablas de encaminamiento de los routers de forma
automática. Además, en caso de cambios en la topología de la red, la
información de las tablas debe actualizarse también de forma automática. De
esta forma, evitamos que cambios en la topología de red, tales como fallos en
enlaces o ampliaciones de red, provoquen problemas de comunicación. A este
mecanismo se le denomina Encaminamiento Dinámico. El contenido de las
tablas de encaminamiento cambia en la medida que lo hacen las condiciones
de la red.
Para hacer posible el encaminamiento dinámico es necesario que las
estaciones intercambien información acerca del estado de la red.
1.3 PROTOCOLO DE ENCAMINAMIENTO
Un protocolo de encaminamiento define el mecanismo mediante el cual los
routers de una red intercambian la información necesaria para configurar sus
tablas de encaminamiento.
Es necesario que en una red, todos los routers utilicen el mismo protocolo
de encaminamiento para intercambiar información. Solo así se puede tener la
certeza de que el mecanismo funcionará correctamente.
La meta de un protocolo de encaminamiento es muy simple:
“Proporcionar la información necesaria para el encaminamiento”.
1.4 CONCEPTO DE EGP E IGP
En una red tal como Internet, es inverosímil que se use un único protocolo
de encaminamiento. La red está organizada por diferentes Sistemas
Autónomos. Se entiende por sistema autónomo un conjunto de redes y
dispositivos que se encuentran administrados por una solo entidad, o al
menos tiene un grado razonable de control a nivel técnico y de administración.
Cada sistema autónomo tiene su propia tecnología de encaminamiento. Esta,
por tanto, puede ser diferente o no para cada sistema autónomo. El protocolo
de encaminamiento usado dentro de un sistema autónomo se le denomina un
IGP (Interior Gateway Protocol). Este protocolo se ocupa de que el contenido
de las tablas de encaminamiento de los routers del sistema autónomo sea
correcto.
10
Fig. 4
Para interconectar sistemas autónomos se usa otro protocolo a parte. Los
protocolos usados en este caso, son los EGP (Exterior Gateway Protocol).
Mediante estos protocolos, los distintos sistemas autónomos pueden
intercambiar información sobre las redes que se encuentran en su interior.
11
2 RIP
2.1 INTRODUCCIÓN A RIP
RIP, de las siglas en ingles Routing Information Protocol, es un protocolo
de encaminamiento dinámico basado en el Algoritmo de Bellman-Ford (o
Vector de Distancia). La descripción de este algoritmo fue a manos de Ford
and Fulkerson, de ahí que este algoritmo a veces también se le denomine
como el Algoritmo Ford-Fulkerson. El término Bellman-Ford también es usado
para referirse a este algoritmo. Viene del hecho que la formulación se basa en
la ecuación del Bellman, la base de la “Programación Dinámica”. El algoritmo
del Vector de Distancia, define los procedimientos utilizados en el protocolo
RIP para llevar a cabo en encaminamiento, así como de otros protocolos de
encaminamiento como IGRP y EIGRP de Cisco.
Este protocolo se ha utilizado para el encaminamiento de redes de
ordenadores desde la aparición de ARPANET. La red ARPANET nació en
1969 como resultado de un proyecto de investigación del Departamento de
Defensa norteamericano, que trataba de encontrar una vía de comunicación
alternativa a la comunicación a través de radio, ya que se preveía que en el
caso de una guerra nuclear, temor con fundamento en aquella época, las
comunicaciones por radio se verían fuertemente afectadas. ARPANET se
considera como el origen de Internet.
RIP Comenzó a ser un estándar de facto para intercambiar información de
encaminamiento entre routers y hosts. Se utilizó para dicho propósito por la
mayoría de los vendedores comerciales de routers IP.
El protocolo RIP se usa como un IGP. Fue diseñado para trabajar con un
tamaño de red moderado. Por consiguiente, esta pensado para redes que no
sean demasiado grandes. No está pensado para el uso en ambientes muy
complejos.
2.2 ALGORITMO DEL VECTOR DE DISTANCIA
El algoritmo del vector de distancia, define un procedimiento que busca la
mejor ruta para cada destino en una red cualquiera de computadores. Para
llevar a cabo esto, los routers de la red intercambian un conjunto de mensajes.
Con la información obtenida, cada router guarda una ruta hacia cada
destinación posible en el sistema, es decir, construye una tabla de
encaminamiento. En la práctica es necesario guardar la siguiente información
para cada destinación:
- Dirección de destino: En implementaciones IP de este algoritmo, esto se
traduce como la dirección IP de destino del host o de la red.
- Puerta de enlace: El siguiente router donde se deben enviar los datos para
que este se encarge de reencaminarlos hasta su destino.
12
- Interfaz: La conexión física que se debe usar para alcanzar la primera puerta
de enlace.
- Métrica: Parámetro que mide el coste de la ruta. En RIP, la métrica utilizada
es el número de saltos que se debe realizar para alcanzar el destino.
-Temporizador: Indica cuando fue la última actualización de la ruta.
A este conjunto de información se le conoce como Vector de distancia, ya
que para cada ruta posible se incluye la distancia hasta llegar al destino,
mediante el parámetro de métrica. Por tanto los routers de la red intercambian
vectores de distancia para que todos los participantes en el algoritmo
obtengan información sobre el estado de la red.
La métrica es una medida que sirve para comparar rutas. Si se obtienen
dos rutas para llegar al mismo destino, se dice que la mejor ruta para llegar a
ese destino es la que consuma un número menor de recursos de la red, es
decir la del mínimo coste. En el protocolo RIP, se utiliza una métrica que
cuenta a través de cuantos routers deben pasar los datos hasta llegar a su
destino, es decir, el número de saltos que se debe realizar para alcanzar el
destino. Por tanto, ante dos rutas posibles, la mejor, la del mínimo coste, será
la que realice un número menor de saltos hasta llegar a un destino dado.
Fig. 5
Por ejemplo, en la Fig. 5, la métrica de la ruta que va del ordenador A
hasta el ordenador D es 2, ya que tiene que pasar a través del ordenador B
hasta llegar a su destino. Para llegar al ordenador F, existen dos
posibilidades, o dos rutas: a través de B o a través de C. Si se escoge a través
de B la métrica de esa ruta es 3. En cambio si se escoge a través de C la
métrica es 2. Por tanto esta última es la mejor ruta ya que su métrica es
13
menor. Por otra parte, se considera métrica 0 la ruta de ir de una estación a sí
misma. Aunque esta ruta parezca inútil, se debe incluir en los vectores de
distancia.
En el ejemplo anterior se ha considerado una métrica de 1 para cada
enlace de la red. En ocasiones la métrica puede ser diferente en cada enlace.
Esto es así porque puede ser que un enlace sea más lento que otro, o
simplemente menos fiable. Por esta razón se definen métricas diferentes. En
cualquier caso, en RIP se utiliza por defecto métricas de valor 1 en todos los
enlaces.
Inicialmente cada máquina de la red solamente tiene información de sí
misma. Con los primeros mensajes intercambiados obtienen información
sobre sus vecinos. A medida que se van intercambiando más mensajes con
las máquinas vecinas el conocimiento de la red es mayor. Es necesario que la
información se reciba periódicamente para mantener las mejores rutas en todo
momento. De esta forma, es posible mantener las rutas óptimas para todo el
sistema entero solamente usando la información obtenida de routers vecinos.
Es de esperar que este algoritmo converja en las estimaciones correctas
sobre las rutas en un tiempo finito, siempre y cuando no haya cambios de la
topología de red. No existe un orden sobre el envío de información entre
entidades. Simplemente, es importante que las entidades no paren de enviar
actualizaciones, y que las redes no retrasen los mensajes demasiado. Cada
entidad puede enviar actualizaciones según su propio reloj. Ante un cambio de
sistema o topología el algoritmo de encaminamiento comienza a moverse
hacia un nuevo equilibrio, usando el viejo como su punto de partida.
Cogiendo como referencia la Fig. 5, veamos como evoluciona el algoritmo
partiendo desde el inicio.
Fig. 6
Primeramente, cada estación solo tiene información de sí misma, por tanto
la información que contendran los vectores de distancia será la siguiente:
14
ESTACION
A
B
C
D
E
F
Vector de distancia
[A:0]
[B:0]
[C:0]
[D:0]
[E:0]
[F:0]
Cada estación puede llegar a ella misma con métrica 0. Con la información
enviada, las estaciones aprenderan las rutas a las estaciones vecinas que
tienen directamente conectadas, con un coste de 1.
ESTACION
A
B
C
D
E
F
Rutas aprendidas
[A:0, B:1:i1, C:1:i2]
[B:0, A:1:i1, D:1:i2]
[C:0, A:1:i1, E:1:i2]
[D:0, B:1:i1, E:1:i2]
[E:0, C:1:i3, D:1:i1, F:1:i2]
[F:0, E:1:i1]
En los vectores de distancia, se incluyen ahora las rutas aprendidas:
ESTACION
A
B
C
D
E
F
Vector de distancia
[A:0, B:1, C:1]
[B:0, A:1, D:1]
[C:0, A:1, E:1]
[D:0, B:1, E:1]
[E:0, C:1, D:1, F:1]
[F:0, E:1]
Las estaciones aprenden rutas de sus vecinos, y actualizan sus tablas de
encaminamiento. En la siguiente actualización incluyen las rutas que han
aprendido en sus vectores de distancia que envían:
ESTACION
A
B
C
D
E
F
Rutas aprendidas
[A:0, B:1:i1, C:1:i2, D→B:2:i1, E→C:2:i2]
[B:0, A:1:i1, D:1:i2, C→A:2:i1, E→D:2:i2]
[C:0, A:1:i1, E:1:i2, B→A:2:i1, D→E:2:i2, F→E:2:i2]
[D:0, B:1:i1, E:1:i2, F→E:2:i2, C→E:2:i2, A→B:2:i1]
[E:0, C:1:i3, D:1:i1, F:1:i2, B→D:2:i1, A→C:2:i3]
[F:0, E:1:i1, D→E:2:i1, C→E:2:i1]
Cuando se aprende una ruta nueva, se debe almacenar la puerta de
enlace y el interfaz. Por ejemplo, La estación A, ha aprendido la ruta de D,
pero para llegar a D debe enviar los datos a través de B. En la tabla se
simboliza como D→B (D vía B). Se puede observar que la estación A y B aún
15
no saben de la existencia de la estación F, y al revés, la estación F no sabe de
la existencia de A y B.
Las estaciones envían sus vectores de distancia, con las rutas aprendidas:
ESTACION
A
B
C
D
E
F
Vector de distancia
[A:0, B:1, C:1, D:2, E:2]
[B:0, A:1, D:1, C:2, E:2]
[C:0, A:1, E:1, B:2, D:2, F:2]
[D:0, B:1, E:1, F:2, C:2, A:2]
[E:0, C:1, D:1, F:1, B:2, A:2]
[F:0, E:1, D:2, C:2]
Obsérvese que en los vectores de distancia no se incluye la puerta de
enlace de la ruta ni el interfaz. Sola se informa la métrica de cada destinación.
En la tercera iteración las estaciones siguen aprendiendo nuevas rutas:
ESTACION
A
B
C
D
E
F
Rutas aprendidas
[A:0, B:1:i1, C:1:i2, D→B:2:i1, E→C:2:i2, F→C:3:i2]
[B:0, A:1:i1, D:1:i2, C→A:2:i1, E→D:2:i2, F→D:3:i2]
[C:0, A:1:i1, E:1:i2, B→A:2:i1, D→E:2:i2, F→E:2:i2]
[D:0, B:1:i1, E:1:i2, F→E:2:i2, C→E:2:i2, A→B:2:i1]
[E:0, C:1:i3, D:1:i1, F:1:i2, B→D:2:i1, A→C:2:i3]
[F:0, E:1:i1, D→E:2:i1, C→E:2:i1, B→E:3:i1, A→E:3:i1]
La red ha llegado al equilibrio en tres actualizaciones. Todas las
estaciones se pueden comunicar entre ellas, ya que han aprendido todas las
rutas. Aun así es necesario seguir enviando actualizaciones para mantener el
equilibrio de forma periódica para que las estaciones detecten cambios en la
topología. Por ejemplo, si dejamos de recibir el vector de distáncia de un
router vecino, esto se debe a que dicho router ya no resulta accesible para
nosotros.
Se puede resumir las acciones que debe hacer cada estación que
participa en el algoritmo en tres puntos:
Mantener una tabla con una entrada para cada destinación posible en el
sistema. La entrada contendrá la distancia a la destinación, y la primera puerta
de enlace en la ruta de esa red y el interfaz. Conceptualmente, debe de haber
una entrada para ella misma, con métrica 0, pero no será realmente incluida
en la tabla de encaminamiento.
-
Periódicamente, enviar su vector de distancia a cada vecino.
Recibir los vectores de distancia de sus vecinos y comparar las entradas
recibidas con las almacenadas en la tabla de encaminamiento. Si se
encuentra alguna con una métrica menor, escoger la nueva ruta.
16
2.2.1 CAMBIOS EN LA TOPOLOGIA
En una red, los routers y líneas fallan. Esto implica que la topología de red
cambia, y por el mismo motivo, el sistema de vecinos cambia. Por lo tanto, la
próxima vez que se hace el cálculo de rutas, el cambio tiene que reflejarse.
Para solventar este problema, el algoritmo del vector de distancia debe
disponer de un mecanismo de caducidad de las rutas. Este mecanismo es
propio del protocolo específico que se utilice. En el protocolo RIP, cada puerta
de enlace que participa en el encaminamiento envía un mensaje de
actualización a todos sus vecinos una vez cada 30 segundos. Si no se obtiene
la actualización transcurridos 180 segundos, se considera que o la puerta de
enlace se ha roto o que la red de conexión ha dejado de funcionar. Entonces,
se marca la ruta como inválida. Si recibimos de otro vecino una ruta válida, se
substituye por la ruta que esta marcada como inválida. Se espera 180
segundos antes de dar por caducada una ruta a pesar de esperar respuesta
de nuestros vecinos cada 30 segundos. Desafortunadamente, en las redes,
los datos se pierden de vez en cuando, por lo tanto, no es buena idea
invalidar una ruta basándose en una sola actualización que falte.
Es útil tener una manera de notificar a nuestros vecinos que no hay
actualmente una ruta válida de una cierta red. RIP, como otros protocolos de
esta clase, hace esto a través de un mensaje normal de actualización,
marcando esa red como inalcanzable. Se elige una métrica específica para
indicar una destinación inalcanzable; ese valor es más grande que la métrica
válida más grande que esperamos ver. En la implementación existente del
RIP, se utiliza 16. Este valor se refiere normalmente al ‘infinito’, puesto que es
más grande que la métrica válida más grande. 16 puede parecer un número
asombrosamente pequeño. Más adelante se verá porque se escoge este y no
otro.
En la Fig. 7, tenemos una topología de red constituida por cuatro
ordenadores conectados.
Fig. 7
17
Con la red en equilibrio, las estaciones tienes las siguientes rutas
aprendidas:
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1, C:1:i2, D→C:2:i2]
[B:0, A:1:i1, C:1:i2, D→C:2:i2]
[C:0, A:1:i3, B:1:i1, D:1:i2]
Por tanto, enviarián los siguientes vectores de distancia:
ESTACION
A
B
C
Vector de distancia
[A:0, B:1, C:1, D:2]
[B:0, A:1, C:1, D:2]
[C:0, A:1, B:1, D:1]
En la Fig. 8 se ilustra el caso anterior, pero el enlace entre la estación A y
C ha dejado de funcionar. Se simboliza con una ‘x’.
Fig. 8
La estación A y la estación C se ven afectadas por este cambio de
topología y marcan sus rutas como inválidas. Se incluyen las rutas inválidas
con una métrica de 16, es decir, inalcanzables:
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1, C:16, D:16]
[B:0, A:1:i1, C:1:i2, D→C:2:i2]
[C:0, A:16, B:1:i1, D:1:i2]
En la siguiente actualización, las estaciones afectadas aprenden de la
estación B una ruta alternativa. La red se vuelve a equilibrar.
18
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1, C→B:2:i1, D→B:3:i1]
[B:0, A:1:i1, C:1:i2]
[C:0, A→B:2:i1, B:1:i1, D:1:i2]
Según lo visto hasta ahora, se puede garantizar que el algoritmo permite a
las estaciones, que encuentren las rutas idóneas a las destinaciones de la red.
En caso de un cambio de topología el algoritmo es capaz de equilibrarse en
un cierto tiempo.
2.2.2 PREVENCIÓN DE LA INESTABILIDAD: CUENTA A INFINITO
El valor de métrica escogido en RIP para representar un destino
inalcanzable, es 16. Si suponemos que un destino es inaccesible, todas las
puertas de enlace inmediatamente vecinas fijarán la métrica para ese destino
a 16. Las puertas de enlace un salto más lejos de los vecinos directos
terminarían con una métrica 17; las entradas dos saltos más lejos con 18, y
así sucesivamente. Esto es debido a que el cálculo de la métrica es la suma
de costes para esa ruta. Aún así en RIP el valor máximo permitido para una
métrica es 16. Por tanto el sistema converge en una métrica de 16 para el
destino inalcanzable, en todas las puertas de enlace, es decir, una puerta de
enlace como máximo puede fijar una métrica 16 en sus rutas, y esta indica
que el destino de esa ruta es inalcanzable.
En el apartado anterior, se ha visto que el algoritmo del vector de distancia
permite equilibrar la red en un cierto tiempo cuando se produce un cambio en
la topología de red. En algunos casos, según la topología de red y el cambio
de topología producido, el tiempo de convergencia no es aceptable.
En la Fig. 9 se ilustra una topología de tres ordenadores.
Fig. 9
19
Las rutas aprendidas al inicio son:
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1]
[B:0, A:1:i1, C:1:i2]
[C:0, B:1:i1]
Desde este punto, A y C envían sus vectores de distancia:
Fig. 10
Vector de A: [A:0, B:1]
Vector de C: [C:0, B:1]
La estación B también envía su vector de distancia:
Fig. 11
Vector de B: [B:0, A:1, C:1]
La estación A aprende la ruta a la estación C. Y la estación C aprende la
ruta a la estación A.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1, C→B:2:i1]
[B:0, A:1:i1, C:1:i2]
[C:0, B:1:i1, A→B:2:i1]
La red ha llegado al equilibrio, cada estación puede comunicarse con el
resto de estaciones del sistema. Supóngase que la línea de comunicación
entre la estación A y B deja de funcionar:
20
Fig. 12
En la siguiente actualización B no recibe el vector de distancia de A.
Transcurrido un tiempo sin recibir información sobre la estación A, la ruta a la
estación A que tiene almacenada la estación B, caduca, y se marca como
inalcanzable, es decir con métrica 16. Recuérdese que en RIP, el tiempo de
caducidad de una ruta, es de 180 segundos.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A:16, C:1:i2]
[C:0, B:1:i1, A→B:2:i1]
Como la estación A queda aislada, tampoco recibe vectores de distancia
de B y marca sus rutas como inalcanzables.
La estación C envía su vector de distancia.
Fig. 13
Vector de C: [C:0, B:1, A:2]
Como C aún no sabe que la línea entre la estación A y la estación B ha
fallado, tiene en su base de datos una ruta para llegar hasta la estación A ,
que para ella es válida. Por tanto se incluye esta ruta en su vector de
distancia. B piensa que C tiene un camino alternativo para llegar a la estación
A e incluye una nueva entrada en su base de datos con métrica 3.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A→C:3:i2, C:1:i2]
[C:0, B:1:i1, A→B:2:i1]
En este punto, como la estación C no recibe de la estación B la ruta que
aprendió para llegar a la estación A (A→B:2), después de un cierto tiempo
21
marcará esa ruta como inválida, y en la actualización siguiente aprenderá de
nuevo la ruta de la estación B, pero esta vez, con métrica 4.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A→C:3:i2, C:1:i2]
[C:0, B:1:i1, A→B:4:i1]
Ahora es B quién no recibe actualización de la ruta A que aprendió de C
(A→C:3). Por tanto, a la larga adoptara una métrica de 5 para esta ruta.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A→C:5:i2, C:1:i2]
[C:0, B:1:i1, A→B:4:i1]
Por culpa de estos rebotes de información entre las estaciones, la métrica
de la ruta a la estación A se va incrementando, y no es eliminada de las tablas
de encaminamiento. No se cancelará por completo hasta que no se alcance
una métrica de 16, la máxima permitida. Por tanto se puede concluir que el
tiempo de convergencia es lento. A este tipo de problemas se le conoce como
Cuenta a infinito.
Para prevenir este tipo de situaciones, en el protocolo RIP se implementa
dos mecanismos: ‘Horizonte dividido con actualización inversa’, y ‘Trigger
Update’.
2.2.3 HORIZONTE DIVIDIDO CON ACTUALIZACIÓN INVERSA
ENVENENADA
El problema descrito en el apartado anterior es causado por el hecho de
que las estaciones se engañan mutuamente sobre las estimaciones que
hacen.
Horizonte dividido, es una técnica para evitar estos problemas. Para
conseguirlo, no se envía información sobre una ruta por el mismo enlace por
el que ha llegado. Además se utiliza la técnica de ‘Inversa envenenada’. Si
una ruta es inalcanzable si que se anuncia por la misma interfaz que se
aprendió que la ruta es inalcanzable.
Véase la evolución de la topología de la Fig. 12, aplicando estas técnicas.
Partimos del equilibrio antes de que la estación A dejara de funcionar.
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:1:i1, C→B:2:i1]
[B:0, A:1:i1, C:1:i2]
[C:0, B:1:i1, A→B:2:i1]
22
Cuando la estación A deja de funcionar:
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A:16, C:1:i2]
[C:0, B:1:i1, A→B:2:i1]
La estación C envía su vector de distancia:
Vector de C: [C:0, B:1]
Como C aprendió la ruta a la estación A por la interfaz que la une con la
estación B, en su vector de distancia no incluye esta ruta. Por lo tanto, la
estación B no aprenderá de nuevo la ruta a la red que ha dejado de funcionar
cuando C mande su vector. Con el tiempo C marcara su ruta a la estación A
como no válida por el hecho de no recibir actualizaciones por parte de B:
ESTACION
A
B
C
Rutas aprendidas
[A:0, B:16, C:16]
[B:0, A:16, C:1:i2]
[C:0, B:1:i1, A:16]
Se puede concluir que utilizando estas técnicas la convergencia es mucho
más rápida. De todas formas, en algunas topologías no es suficiente con
utilizar estas técnicas.
En la Fig. 15 se muestra un escenario con 5 estaciones.
Fig. 14
23
ESTACION
N
A
B
C
D
Rutas aprendidas
[N:0, A:1:i1, C→A:2:i1, B→A:2:i1, D→A:3:i1]
[A:0, N:1:i3, B:1:i1, C:1:i2, D→B:2:i1]
[B:0, A:1:i2, D:1:i1, C→A:2:i2, N→A:2:i2]
[C:0, A:1:i2, D:1:i1, B→A:2:i2, N→A:2:i2]
[D:0, B:1:i1, C:1:i2, A→B:2:i1, N→B:3:i1]
La red funciona correctamente y todas las estaciones se pueden
comunicar con el resto de estaciones del sistema. De repente, la línea que
une estación N con la estación A deja de funcionar.
Fig. 15
Como consecuencia a esto la estación N queda aislada del sistema y con
el tiempo eliminará todas sus rutas por no recibir vectores de distancia de la
estación vecina A. Por otra parte, la estación A marcará la ruta a la estación N
como inválida al no recibir actualizaciones. A envía su vector de distancia
indicando con métrica 16 la ruta a la estación N.
24
Fig. 16
Esto implica que las estaciones B y C marquen la ruta a la estación N
como inalcanzable. Supóngase en este punto que D envía su vector de
distancia.
Fig. 17
Como la estación D aprendió la ruta a la estación N gracias a la estación
B, no incluye en el vector de distancia dirigido a B esta ruta. Pero, en el vector
de distancia dirigido a la estación C si que incluye esta ruta. Debido a esto, la
estación C cree encontrar una ruta alternativa a través de la estación D y
activa de nuevo la ruta a la estación N con métrica 4 vía D.
En las siguientes actualizaciones se entra en un proceso de cuenta a
infinito de la ruta N:
25
Fig. 18
En este ejemplo se puede observar que la convergencia ante cambios en
la topología es lenta. Por tanto se necesita de otro mecanismo adicional para
evitar estas situaciones. Este mecanismo es ‘Trigger Update’.
2.2.4 TRIGGER UPDATE
La técnica ‘Trigger Update’, consiste en enviar las actualizaciones
inmediatamente ante un cambio de rutas. Es decir, si una estación cambia
una ruta de su base de datos, inmediatamente informa a sus vecinos de dicho
cambio. Con este tipo de técnica se evita el problema descrito en el ejemplo
anterior.
26
Fig. 19
Retómese el ejemplo cuando la estación A envía sus vectores de
distancia, indicando que la ruta a la estación N es inalcanzable.
Inmediatamente después de que B y C reciben la noticia de que la ruta a la
estación N es inalcanzable, reenvían esta información. Con esto se consigue
que la estación D se entere de que la ruta a la estación N es inalcanzable
antes de su próxima actualización periódica, y se evita de esta forma la cuenta
a infinito.
Hasta el momento se ha enseñado las bases de los protocolos de
encaminamiento basados en vectores de distancia. Se han mostrados
diversos ejemplos donde en las rutas de encaminamiento se incluyen rutas
hacia diferentes máquinas. No obstante, en redes IP, las máquinas se
agrupan en redes. Conceptualmente, el proceso de encaminamiento es igual
al mostrado en los ejemplos del algoritmo del vector de distancia, pero se
incluye información de como llegar a una determinada red.
2.3 ESPECIFICACIONES DEL PROTOCOLO RIP
El Protocolo RIP tiene 2 versiones. La versión 1 descrita en el RFC
(Request For Comments) 1058, y la versión 2, descrita en el RFC 2453. En el
presente texto se describe primeramente el protocolo basándose en la versión
1. Finalmente, se dedica un apartado adicional para indicar las ampliaciones y
mejoras que aporta la versión 2 del protocolo.
Cada router que utilice RIP se entiende que tiene interfaces a una o más
redes del sistema. La métrica que se usa en RIP es el número de saltos y es
un número entero entre 1 y 15 inclusivos. Por defecto se utiliza una métrica de
27
1 por salto. Sin embargo, un administrador del sistema puede fijar la métrica
de cada red manualmente.
Cada entidad que usa RIP debe tener una tabla de encaminamiento. Esta
tabla de encaminamiento debe tener una entrada para cada destinación
posible en el sistema. Cada entrada contiene por lo menos la información
siguiente:
La dirección IP del destino o un rango de direcciones indicado mediante
dirección de red + máscara
-
La métrica, o número de saltos hasta alcanzar el destino
La dirección IP de la puerta de enlace siguiente. Si el destino está en una
de las redes directamente conectadas, este campo no será necesario.
Una bandera para indicar que la información sobre la ruta ha cambiado
recientemente.
-
Temporizadores de tiempo asociados a la ruta.
La dirección IP de destino, puede ser tanto una dirección IP de una
máquina como una dirección IP de una red o subred. Por tanto, en los
vectores de distancia que intercambian los routers se puede anunciar rutas
tanto de máquinas como de redes o subredes.
Inicialmente, las tablas de encaminamiento de cada router solo contienen
entradas a las redes que están directamente conectadas. Después, cada
router empieza a enviar vectores de distancia. Con los vectores de distancia
recibidos los routers aprenden rutas nuevas de sus vecinos que van
introduciendo en sus tablas de encaminamiento, siguiendo las pautas que
marca el algoritmo del vector de distancia descrito en el apartado anterior.
2.4 FORMATO DEL MENSAJE
RIP envía su información encapsulada en datagramas del protocolo UDP
(User Datagram Protocol). UDP es un protocolo del nivel de transporte para el
intercambio de datagramas. Permite el envío de datagramas a través de la red
sin que se haya establecido previamente una conexión, ya que el propio
datagrama incorpora suficiente información de direccionamiento en su
cabecera. Tampoco tiene confirmación, ni control de flujo, por lo que los
paquetes pueden adelantarse unos a otros, y tampoco se sabe si ha llegado
correctamente, ya que no hay confirmación de entrega o de recepción. Cada
router que usa RIP tiene un proceso de encaminamiento que envía y recibe
datagramas por el puerto 520 UDP. Por tanto, un datagrama RIP tendrá una
cabecera IP y una cabecera UDP.
28
Además RIP permite procesos ‘silenciosos’. Un proceso silencioso
normalmente no envía ningún mensaje. Sin embargo, escucha los mensajes
enviados por otros. Estos procesos son utilizados habitualmente por
ordenadores que no actúan como puertas de enlace, pero desean escuchar
los mensajes de encaminamiento para supervisar las puertas de enlace
locales y mantener sus tablas de encaminamiento actualizadas.
A continuación se muestra el formato que tienen los datagramas que se
utilizan en RIP versión 1 para enviar información de la red. Los tamaños de
campo están en octetos.
0
7
8
15 16
COMANDO (1)
VERSIÓN (1)
ADDRESS FAMILY IDENTIFIER
ADDRESS (4)
0 (4)
0 (4)
MÉTRICA (4)
31
0 (2)
0 (2)
Estos datagramas no son otra cosa que vectores de distancia. Cada
datagrama contiene un comando, un número de versión, y otros argumentos
referentes a una ruta. Cada datagrama puede contener hasta 25 rutas. Hay
campos que quedan con valor 0. Estos campos están pensados para
ampliaciones en futuras versiones del protocolo.
Si se tiene que enviar más de 25 entradas, se debe enviar en más de un
mensaje.
29
A continuación se describirá el formato de la versión 1 del protocolo. Los
comandos utilizados en esta versión son:
1 – Request: Una petición al sistema para enviar toda o parte de su tabla de
encaminamiento.
2 – Response: Mensaje que contiene toda o parte de la tabla de
encaminamiento del remitente. Este mensaje se puede enviar en respuesta a
una petición, o puede ser un mensaje de actualización generado por el
remitente.
3 – Traceon: Obsoleto. Los mensajes que contienen este comando deben ser
ignorados.
4 – Traceoff: Obsoleto. Los mensajes que contienen este comando deben ser
ignorados.
5 – Reserved: Este comando reservado es utilizado por Sun Microsystems
para propósitos suyos. Si se añaden nuevos comandos en alguna versión más
actual, deben comenzar por el 6. Los mensajes que contienen este comando
pueden ser ignorados si en las implementaciones utilizadas no esta definido.
Para Request y Response, el resto del datagrama contiene una lista de
destinaciones, con información sobre cada una. Cada entrada en esta lista
contiene:
Identificador de la familia: Específica el tipo de dirección de esa entrada.
En direcciones IP el identificador de la familia es 2.
Dirección: Dirección destino de la ruta.
Métrica: Número de saltos hasta llegar a la dirección de destino. Debe
ser un valor entre 1 y 16 inclusivos.
El tamaño máximo del datagrama es 512 octetos. Esto incluye solamente
las partes del datagrama descritos arriba. No tiene en cuenta las cabeceras
propias del IP o del UDP.
2.5 CONSIDERACIONES EN EL DIRECCIONAMIENTO
Los routers de una red RIP, intercambian mensajes de petición y de
respuesta para llevar a cabo el encaminamiento. Sin embargo, las
destinaciones que aparecen en estos mensajes pueden ser de redes, de
ordenadores, o una dirección por defecto (la dirección 0.0.0.0). Generalmente,
la información de encaminamiento de ordenadores individuales no es
necesaria. Si cada ordenador en una red o subred dada es accesible a través
de una puerta de enlace, entonces no es necesario considerar a estos en las
tablas de encaminamiento.
30
Fig. 20
En la Fig. 20 se muestran dos redes: La red 10.0.0.0 y la red 192.168.1.0.
Para que el ordenador A se pueda comunicar con la red 192.168.1.0 no es
necesario que almacene en su tabla de encaminamiento la ruta a cada uno de
los ordenadores de esta red, ya que todos estos son accesibles a través de la
puerta de enlace B, con dirección 10.0.0.2. Por lo tanto su tabla de
encaminamiento sería:
RED
10.0.0.0
192.168.1.0
GW
DC
10.0.0.2
Métrica
0
1
GW: Gateway
DC: Directamente conectado
Si se incluyen las rutas a los ordenadores individuales la tabla de
encaminamiento sería más complicada:
RED
10.0.0.0
192.168.1.0
192.168.1.2
192.168.1.3
192.168.1.4
GW
DC
10.0.0.2
10.0.0.2
10.0.0.2
10.0.0.2
Métrica
0
1
1
1
1
Claramente se puede ver que en este caso se puede resumir las rutas a
los ordenadores individuales por la ruta a la red.
Por tanto, los routers que utilizan RIP, al encaminar un datagrama, primero
deben comparar su dirección de destino con la lista de direcciones ya
aprendida, para ver si es posible emparejarla con una dirección de subred o
una red ya aprendida.
Cuando un router evalúa una destinación nueva que recibe, su
interpretación dependerá de si conoce o no la máscara de subred que se le
aplica. Si la conoce, es posible determinar que tipo de dirección es. Por
ejemplo, considérese que la red 128.6.0.0 tiene una máscara de subred de
255.255.255.0. Por tanto la dirección 128.6.0.0 es de red, la 128.6.4.0 es de
31
subred, y la 128.6.4.1 es una dirección de un ordenador en particular. Sin
embargo, si el router no sabe la máscara de subred, la interpretación de una
dirección puede ser ambigua. En este tipo de casos, se considera que estas
direcciones corresponden a direcciones de ordenador. Para evitar esta clase
de ambigüedad, no se debe enviar rutas de subred a otros vecinos que no
sepan la máscara apropiada. Por tanto, a menos que se hayan hecho las
provisiones especiales, las rutas a una subred no se deben enviar fuera de la
red de la cual forma parte dicha subred.
La dirección especial 0.0.0.0 es usada como la ruta por defecto. Esta
dirección se utiliza para agrupar todas aquellas direcciones que no se sabe
donde encaminarlas. Normalmente, es decisión del administrador la manera
de manejar este tipo de entrada.
2.6 TEMPORIZADORES
Para determinar la caducidad de una ruta es necesario el uso de
temporizadores. Cada router asocia tres temporizadores para cada ruta que
tiene almacenada:
- Tiempo de actualización cada 30 segundos. Cada vez que el temporizador
llega a 30 segundos se produce una actualización. El proceso de RIP
despierta y envía un mensaje de respuesta no solicitado con el vector de
distancia, a todos los routers vecinos.
- Tiempo de En cancelación a los 180 segundos. Una vez transcurridos 180
segundos sin recibir actualización de una ruta, se considera no válida. Sin
embargo la ruta se retiene un cierto periodo de tiempo, lo cual permite advertir
a los vecinos que la ruta ha sido eliminada.
- El temporizador del ‘recolector de basura’, a los 120 segundos. Una vez
transcurridos 120 segundos, después de que una ruta haya pasado al estado
‘En cancelación’, la ruta es definitivamente eliminada de la tabla de
encaminamiento. El nombre de este temporizador, ‘recolector de basura’,
viene del hecho que esta asociado a todas aquellas rutas residuales que se
deben ir borrando de la tabla de encaminamiento.
Por consiguiente, para que una ruta pase al estado ‘En Cancelación’
deben transcurrir 6 períodos de actualización sin recibir noticias de esta ruta, y
120 segundos más para que sea definitivamente eliminada.
32
Una ruta puede ser marcada como no válida por dos razones:
- El temporizador de ‘En cancelación’ expire.
- La métrica de la ruta es 16.
En cualquier caso, se sigue el siguiente proceso para cancelar una ruta:
- El temporizador de ‘recolector de basura’ se fija a 120 segundos.
- La métrica para la ruta se fija a 16 (infinito). Esto hace que la ruta sea
quitada del servicio.
- Se activa una bandera indicando que ha cambiado esta entrada. Esto implica
el envío inmediato del nuevo vector de distancia (Trigger Update).
Hasta que expira el contador de tiempo de ‘recolector de basura’, la ruta se
incluye en todas las actualizaciones enviadas, con una métrica de 16. Cuando
expira el contador, la ruta se suprime de la base de datos y no se incluye en
los vectores de distancia.
Si se encuentra una nueva ruta a esta red mientras el contador ‘recolector
de basura’ esta activo, la nueva ruta substituye la que está a punto de ser
suprimida, y el contador se desactiva.
2.7 PROCESO DE ENTRADA
El proceso de entrada del protocolo RIP se produce cuando un router que
utiliza este protocolo recibe un vector de distancia RIP, y consiste en el
procesamiento de este. Antes de procesar los vectores detalladamente, se
debe observar el formato de estos. Para ello se mira el campo ‘Versión’ en el
datagrama:
Versión 0:
Los datagramas con versión 0, son ignorados. Estos
corresponden a una versión anterior del protocolo, en la que el formato del
paquete era de una máquina específica.
Versión 1: Los datagramas se procesarán. Todos los campos que tienen que
ser 0 se comprueban. Si una de ellos no lo es, el mensaje entero se ignora.
Versión >1: Versiones futuras del protocolo, que pueden utilizar los campos
puestos a 0. Este es el caso de la versión 2 que veremos más adelante.
Después de comprobar la versión, el proceso dependerá del valor que
tenga el campo ‘Comando’.
33
2.7.1 COMANDO REQUEST
La petición (Request) se usa para recibir toda o parte de la tabla de
encaminamiento. Normalmente, se envía una petición broadcast por el puerto
UDP 520. En este caso, los ordenadores que participan de forma pasiva, es
decir, que solo están a la ‘escucha’ no responden a la petición. Sin embargo,
puede haber situaciones que interese que respondan también. En ese caso, la
petición se debe enviar por un puerto UDP que no sea el 520. Si la petición
viene de cualquier otro puerto, deben responder.
La petición es procesada entrada a entrada. Si no hay entradas, no se da
ninguna respuesta. Existe un caso especial. Si hay una sola entrada en la
petición, con un identificador de la familia de la dirección de 0 (que significa
sin especificar), y una métrica al infinito, es decir, a 16, esto es equivalente a
una petición de toda la tabla de encaminamiento.
0
7
1 (Request)
8
15
16
VERSIÓN
0
31
0
0
0
0
0
16 (Metrica)
Este tipo de mensaje suele ser enviado por routers que acaban de ser
reiniciados o routers que se ponen en funcionamiento por primera vez. A
excepción de este caso especial, el proceso es muy simple. Para cada
entrada, se mira la destinación en la base de datos de encaminamiento. Si
hay una ruta, poner la métrica de esa ruta en el campo métrica
correspondiente del datagrama. Si no hay ruta para esa destinación
especificada, poner a infinito, es decir, 16, en el campo métrica. Una vez que
se hayan completado todas las entradas, poner el comando en respuesta, es
decir comando a valor 2, y enviar el datagrama nuevo por el puerto por el cual
vino.
Si la petición es de la tabla completa, se hace el proceso normal con horizonte
dividido. Por tanto ciertas entradas de la tabla de encaminamiento no serán
mostradas. En cambio, si la petición es de un número específico de entradas,
se enviarán las pedidas, pero no se aplicara el proceso de horizonte dividido.
Normalmente esto último se utiliza para hacer diagnósticos.
2.7.2 Comando Response
Para generar un mensaje de respuesta el campo comando del mensaje
debe ser 2. Las respuestas se pueden recibir por varias razones:
- Respuesta a una consulta específica
- Una actualización regular
- Accionados por un cambio en la métrica
34
Indiferentemente de cómo fueron generadas las respuestas, el proceso a
seguir es el mismo.
Como el proceso de respuesta puede actualizar la tabla de
encaminamiento de un router, es importante comprobar que el mensaje de
respuesta sea válido. La respuesta debe ser ignorada si viene por otro puerto
que no sea el 520. La dirección IP de la respuesta se debe comprobar para
que sea de un vecino válido.
Una vez el datagrama es considerado válido, se procesan las entradas una
a una. Mirar la dirección de destino. Comprobar el identificador de la familia de
la dirección. Si no es un valor esperado, por ejemplo direcciones IP, ignorar la
entrada. También se tiene que comprobar que las direcciones no sean de la
clase D o E, o si es la 127 ‘loopback’ o de ‘localhost’. Comprobar que la
versión sea coherente con los campos a 0 que debe llevar.
Cuando el mensaje de respuesta recibido tiene el formato correcto según
las comprobaciones anteriores, se cotejan las rutas recibidas por las ya
aprendidas. Primeramente se mira si la ruta esta o no en la tabla de
encaminamiento. En caso de que no este, generalmente se agregará una
entrada nueva. Sin embargo, hay varias excepciones. Si la métrica es infinita,
no se agregará la entrada. Se debe evitar agregar rutas a ordenadores si son
parte de una red o subred para la cual ya se tiene entrada buena. En
cualquier otro caso, se agregará una nueva entrada a la base de datos de
encaminamiento. Esto incluye las acciones siguientes:
-
Insertar la destinación y la métrica.
-
Insertar la puerta de enlace.
Inicializar el temporizador de caducidad de la ruta. Si el temporizador
‘recolector de basura’ está funcionando en esa ruta, pararlo.
Activar la bandera de cambio de ruta, y señalar el proceso de salida para
provocar una actualización.
Si hay una ruta ya existente, primero se tiene que comparar las puertas de
enlace. Si es la misma, se inicializa el temporizador de caducidad. Después se
compara la métrica. Si la métrica es más baja:
Se actualiza la ruta por la del datagrama, Es decir, se pone la nueva
métrica y la puerta de enlace nueva.
-
Inicializar el temporizador.
Activar la bandera de cambio de ruta, y señalar el proceso de salida para
provocar una actualización.
Si la métrica nueva es 16, se inicia el proceso para suprimir la ruta. La ruta
se utilizará solo para los paquetes de encaminamiento, y se inicializa el
35
temporizador de cancelación. Observar que una cancelación se produce solo
cuando la métrica se pone por primera vez en 16. Si la métrica era ya 16, una
futura cancelación será ignorada.
Si la métrica nueva es igual que la vieja, lo más simple es no hacer nada,
solo se inicializa el temporizador de caducidad.
Cualquier entrada se ignora en el caso que fallen las comprobaciones,
pues esta es considerada peor que la ruta actual.
2.8 Proceso de salida
En este apartado se detalla el proceso usado para crear los mensajes de
respuesta que contienen toda o parte de una tabla de encaminamiento. Este
proceso puede ser accionado por varios motivos:
Debido a una petición. En este caso, el mensaje solo se envía a una
destinación.
Por una actualización regular. Cada 30 segundos, la tabla entera se
envía a los vecinos.
Debido a actualizaciones accionadas. Siempre que la métrica de una ruta
cambia, se acciona una actualización.
Cuando una respuesta se tiene que enviar a todas las destinaciones, es
decir, la actualización regular o una actualización accionada, se envía un
mensaje broadcast a todas las redes conectadas. En la mayoría de los casos
esto equivale a todas las puertas de enlace vecinas. Sin embargo, hay
algunos casos donde esto no es bueno, ya que puede llegar a redes que no
interesa que lleguen mensajes de encaminamiento. Si este es el caso, se
debería crear una lista real de los vecinos, y enviar un datagrama a cada uno
explícitamente. Este mecanismo es definido por cada implementador.
Las actualizaciones accionadas pueden causar cargas excesivas en redes
con capacidad limitada o con muchas puertas de enlace. Por consiguiente, el
protocolo requiere que se incluyan provisiones para limitar la frecuencia de
actualizaciones accionadas. Las actualizaciones accionadas se pueden anular
si coincide al mismo tiempo con la actualización regular.
Las actualizaciones accionadas no necesitan incluir la tabla de
encaminamiento entera. Solo las rutas que han cambiado. Más
concretamente, en los mensajes generados se incluirán las rutas que tengan
la bandera de cambio activada. Cuando se hacen actualizaciones accionadas
o normales se usa el horizonte dividido. Una vez se hayan hecho las
actualizaciones accionadas, las banderas de cambio se deben desactivar.
La única diferencia entre una actualización accionada y otros mensajes de
actualización es la posible omisión de las rutas que no han cambiado. El resto
de los mecanismos son similares.
36
A continuación se detalla como se genera un datagrama de respuesta para
una red directamente conectada en particular:
La dirección IP origen debe ser la del ordenador que envía la actualización.
Esto es importante porque esta dirección se pone en las tablas de
encaminamiento de otros routers. Si se utiliza una dirección incorrecta, otros
routers pueden no encaminar bien los datagramas.
Poner el número de la versión RIP. Poner el comando en respuesta. Poner los
campos que deben ser cero, a cero. Ahora se van completando las entradas.
El tamaño máximo del datagrama es 512 octetos. Cuando no hay
suficiente espacio hay que enviar dos datagramas.
Las rutas se deben incluir en el datagrama aunque sus métricas sean
infinitas. Si la puerta de enlace de una ruta está en la red para la cual esta
destinado el datagrama, la métrica se pone a 16, o se quita la entrada entera.
Ignorar las entradas según horizonte dividido con retorno envenenado.
2.9 EJEMPLO RIP
A modo de ejemplo y para retener los procedimientos vistos anteriormente
que usa el protocolo RIP, se propone un ejemplo de una red RIP, ilustrado en
la Fig. 21.
Fig. 21
Se trata de un conjunto de 4 redes y 3 routers dispuestos en serie. Cada
router tiene dos interfaces y se han asignado direcciones IP respetando la
singularidad en la red.
Inicialmente los routers tienen en sus tablas de encaminamiento las redes
a las que están directamente conectadas. Cada 30 segundos, los routers
envían sus tablas por sus interfaces a todos sus vecinos. Para ello utilizan la
dirección de broadcast.
Router A
Destino
Máscara
Gateway IF
Métrica
192.168.0.0 255.255.255.0 0.0.0.0
eth0 0
192.168.1.0 255.255.255.0 0.0.0.0
eth1 0
37
Router B
Métrica
Destino
Máscara
Gateway IF
192.168.1.0 255.255.255.0 0.0.0.0
eth0 0
192.168.2.0 255.255.255.0 0.0.0.0
eth1 0
Router C
Destino
Máscara
Gateway IF
Métrica
192.168.2.0 255.255.255.0 0.0.0.0
eth0 0
192.168.3.0 255.255.255.0 0.0.0.0
eth1 0
Supóngase que los routers acaban de encenderse. En este caso, envían
un mensaje de petición de la tabla de encaminamiento a sus vecinos. El
formato de este mensaje es de una sola entrada, con un identificador de la
familia de la dirección de 0 y una métrica al infinito, es decir, a 16.
0
7 8
1 (Request)
0 (Cero)
15
16
1 (Versión)
31
0
0
0
0
0
16 (Métrica)
Supóngase que el router B recibe una petición de la tabla del router A. El
router B construye su vector de distancia y lo envía al router A. El router A
recibirá el siguiente datagrama:
0
7
2 (Response)
8
15
16
1 (Versión)
31
0
0
2
192.168.2.0
0
0
1 (Métrica)
Como se puede observar, en el datagrama enviado, no se incluye la ruta a
la red 192.168.1.0. ya que se esta utilizando ‘horizonte dividido’.
El router A actualiza su tabla de encaminamiento:
Router A
Destino
192.168.0.0
192.168.1.0
192.168.2.0
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.1.2
IF
eth0
eth1
eth1
Métrica
0
0
1
38
De forma similar el resto de routers del sistema también aprenderán las rutas.
Router B
Destino
192.168.1.0
192.168.2.0
192.168.3.0
192.168.0.0
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.2.2
192.168.1.1
IF
eth0
eth1
eth1
eth0
Métrica
0
0
1
1
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.2.2
IF
eth0
eth1
eth0
Métrica
0
0
1
Router C
Destino
192.168.2.0
192.168.3.0
192.168.1.0
Debido a las ‘Trigger Updates’, cuando se realiza un cambio en la tabla de
encaminamiento de cada router se genera automáticamente una
actualización.
Router A
Destino
192.168.0.0
192.168.1.0
192.168.2.0
192.168.2.0
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.1.2
192.168.1.2
IF
eth0
eth1
eth1
eth1
Métrica
0
0
1
2
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.2.2
192.168.1.1
IF
eth0
eth1
eth1
eth0
Métrica
0
0
1
1
Máscara
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Gateway
0.0.0.0
0.0.0.0
192.168.2.2
192.168.2.2
IF
eth0
eth1
eth0
eth0
Métrica
0
0
1
2
Router B
Destino
192.168.1.0
192.168.2.0
192.168.3.0
192.168.0.0
Router C
Destino
192.168.2.0
192.168.3.0
192.168.1.0
192.168.0.0
Con esto, los routers aprenden todas las rutas del sistema, y la red llega a
su equilibrio con rapidez.
39
2.10 RIP VERSION 2
En este apartado se pretende describir las mejoras que ofrece RIP v2
respecto a su versión anterior.
2.10.1
FORMATO MENSAJE RIP VERSION 2
RIP v2 también usa el puerto 520 UDP para enviar y recibir datagramas. El
formato de RIP v2 permite que los routers compartan información adicional
importante. La cabecera del mensaje es el mismo para los RIP v1 y los RIP
v2. En cambio el resto del mensaje cambia sustancialmente:
0
7 8
15 16
COMANDO (1)
VERSIÓN (1)
0 (2)
ADDRESS FAMILY IDENTIFIER
ETIQUETA DE RUTA (2)
CABECERA EXTRA (20)
IP ADDRESS (4)
MÁSCARA DE SUBRED (4)
SIGUIENTE SALTO (4)
MÉTRICA (4)
31
Para especificar que se trata de RIP v2 se pone el número 2 en el campo
versión. Campos que en la versión 1 del protocolo se dejaban a 0, ahora en la
versión 2 se utilizan. Los campos añadidos son:
- Etiqueta de ruta:
El campo de etiqueta de ruta proporciona un método para separar las rutas
‘internas’ de RIP, es decir, rutas para las redes dentro del dominio de
encaminamiento RIP, y las rutas ‘externas’ de RIP, aprendidas por un EGP o
de otro IGP.
Los routers que utilizan otros protocolos a parte de RIP se deben
configurar con la etiqueta de ruta para importar rutas de otras fuentes. Las
rutas importadas de un EGP deben marcarse con una etiqueta fijada
arbitrariamente.
Serían posibles otras aplicaciones a la etiqueta de ruta, mientras todos los
routers del dominio RIP las usen.
- Cabecera extra para autenticación:
En la versión dos, el protocolo tiene una nueva funcionalidad de
autentificación. RIP utiliza una entrada completa para realizar esta función. Si
el identificador de la familia de la dirección de la primera y solamente de la
primera entrada de un mensaje es 0xFFFF, el resto de la entrada contiene
información de autentificación. Esto significa que como máximo habrá 24
entradas RIP en el resto del mensaje. Si no usamos autentificación en un
mensaje, la secuencia 0xFFFF no debe aparecer en ningún identificador de la
familia de dirección en ninguna entrada. Un mensaje con autentificación
comenzaría como sigue:
40
0
7 8
15
COMANDO (1)
VERSIÓN (1)
0XFFFF
16
31
SIN USO (2)
TIPO DE AUTENTIFICACIÓN (2)
AUTENTIFICACIÓN (16)
Actualmente, el único tipo de autentificación es una contraseña simple y
corresponde al tipo 2. Los 16 octetos contienen la contraseña en texto plano.
Si la contraseña ocupa menos de 16 octetos, se rellena con ceros a la
izquierda.
Si un router no se configura para autentificar mensajes RIP v2, los
mensajes RIP v1 y los RIP v2 no autentificados serán aceptados. Los
mensajes RIP v2 autentificados serán rechazados. Si el router se configura
para autentificar mensajes RIP v2, los mensajes RIP v1 y los RIP v2 que
pasen la autentificación serán aceptados. Los no autentificados y los
mensajes no válidos de RIP v2 serán rechazados. Para una seguridad
máxima, los mensajes RIP v1 deben ser ignorados cuando se esta
autentificando, si no, la información de encaminamiento de mensajes
autentificados sería propagada por routers RIP v1 de forma no autentificada.
Como los mensajes que utilizan autentificación están marcados con una
familia de dirección 0xFFFF, un sistema RIP v1 ignoraría este mensaje.
- Máscara de Subred:
El campo de máscara de subred contiene la máscara de subred que se
aplica a la dirección IP. Si este campo es cero, entonces quiere decir que no
se ha incluido la máscara para esa entrada.
En un interfaz donde un router RIP v1 puede oír la información de otro RIP
v2 las reglas que se aplican son las siguientes:
- La información interna de una red nunca debe ser anunciada en otra red.
- La información sobre una subred en particular no se puede anunciar donde
los routers son RIP v1, donde se puede considerar una ruta de host.
- Siguiente salto:
Es la siguiente dirección IP a la cual deben ser enviados los paquetes de
una ruta. Un valor de 0.0.0.0 en este campo indica que el siguiente salto es
vía el autor del anuncio RIP. Una dirección de salto siguiente, forzosamente,
debe ser accesible directamente.
El propósito de este campo es eliminar los paquetes que son encaminados
a través de saltos adicionales del sistema. Es especialmente útil para redes
donde RIP no esta funcionando en todos los routers.
41
Fig. 22
En la Fig. 22, se muestra un ejemplo de aplicación del campo ‘Siguiente
salto’. En este ejemplo se están usando dos protocolos de encaminamiento
diferentes. Por una parte se esta utilizando RIPv2, y por otra, se esta
utilizando el protocolo OSPF. Como A y C utilizan un protocolo de
encaminamiento diferente no se entienden y entonces A no puede aprender
nuevas rutas a través de C. Por tanto todas las rutas las debe aprender a
través de B. No obstante, B puede utilizar el campo ‘Siguiente salto’ para
indicar al router A que reencamine directamente sus paquetes al router C, y
de esta forma conseguir un encaminamiento más óptimo.
Obsérvese que el salto siguiente es un campo de consulta. Es decir, si se
ignora la información proporcionada, se puede encaminar pero es posible que
no de la forma óptima. Si el salto siguiente recibido no es directamente
accesible, debe ser tratado como 0.0.0.0.
2.10.2 CONSIDERACIONES Y COMPATIBILIDADES
Para reducir la carga innecesaria, se usa una dirección multicast en las
actualizaciones periódicas. La dirección multicast es 224.0.0.9.
Si un router RIP v2 recibe una petición RIP v1, debe responder con una
respuesta RIP v1. Si el router se configura para enviar solamente mensajes
RIP v2, no debe responder la petición de RIP v1.
La versión 1 del protocolo específica que los mensajes RIP de la versión 0
son ignorados, que las de versión 1 son ignorados cuando se encuentre un
campo definido como 0 y es diferente a cero, y que los mensajes RIP de
versión mayor a 1 no deben ser descartados si no se encuentra un campo
definido como 0 con valor diferente de cero. Por tanto la versión 2 de RIP es
totalmente compatible con la versión antigua.
Un router compatible es necesario por dos razones. Primero, en
implementaciones de RIP v1 no se siguen algunas reglas propias de RIP v2.
En segundo lugar, el uso de multicasting evitaría que los sistemas RIP v1
recibieran las actualizaciones RIP v2. Por consiguiente un router debe ser
configurado interfaz a interfaz según corresponda.
Un router tiene cuatro configuraciones:
42
-
RIP v1, en el cual solamente se envían los mensajes RIP v1
Compatibilidad RIP v1, en el cual los mensajes RIP v2 son broadcast.
RIP v2, en el cual los mensajes RIP v2 son multicast
‘Ninguno’, que inhabilita enviar mensajes RIP.
Se recomienda fijar por defecto RIP v1 o RIP v2, pero nunca
Compatibilidad RIP v1. Esto es así debido a los problemas potenciales que
pueden ocurrir en algunas topologías.
Los routers deben también configurarse, para aceptar RIP v1 solamente,
RIP v2 solamente, o ninguno. Debe configurarse por interfaz. Se recomienda
que por defecto se escoja el elegido para enviar actualizaciones.
Como los paquetes de la versión 1 no contienen información de subred, la
semántica empleada por los routers en las redes que contienen la versión 1 y
las redes de la versión 2 se debe limitar al de la versión 1.
2.11 LIMITACIONES DEL PROTOCOLO
El protocolo RIP no soluciona todos los problemas del encaminamiento.
Según lo mencionado en la introducción, está previsto para el uso como IGP,
en redes razonablemente homogéneas y de tamaño moderado. A
continuación se enumeran algunas limitaciones específicas del protocolo:
El protocolo esta limitado para redes que no superen los 15 saltos en sus
rutas. Los diseñadores pensaron que el diseño básico del protocolo era
inapropiado para redes más grandes. Nótese que este límite asume un coste
unitario para cada salto. Esta es la manera que RIP se configura
normalmente. Si el administrador del sistema elige utilizar costes más
grandes, el límite superior de 15 puede convertirse en un problema.
Otro limitación es la ‘cuenta al infinito’ en ciertas situaciones inusuales. Si
en un sistema, una ruta de encaminamiento implicará a todos los routers, la
resolución de la ruta requeriría mucho tiempo (si la frecuencia de las
actualizaciones de la información de encaminamiento es limitada) o ancho de
banda (si las actualizaciones fueran enviadas siempre que los cambios fueran
detectados). Tal ruta consumiría una cantidad grande de ancho de banda de
la red antes de que la ruta fuera corregida. Creemos que en casos realistas,
esto no será un problema excepto en líneas lentas. Incluso entonces, el
problema será bastante inusual, puesto que se toman varias precauciones
para prevenir estos problemas.
Este protocolo usa ‘métrica’ fija para comparar rutas alternativas. Esto no
es apropiado para situaciones donde se requiere un servicio a tiempo real,
fiabilidad, o balanceo de carga.
43
Hasta aquí llega la descripción del protocolo RIP. En el siguiente bloque se
presenta el diseño de ataque utilizado para vulnerar la seguridad del
protocolo, y provocar de esta forma una denegación del servicio en una red
cualquiera.
44
3. DISEÑO DE ATAQUE
3.1 INTRODUCCIÓN
Una vez se tienen todos los detalles del funcionamiento del protocolo RIP,
descritos en el apartado anterior, ya se está en condiciones para iniciar el
diseño de una estrategia para provocar una denegación de servicio en una
red conmutada que utilice este protocolo para enrutar.
Se parte de la idea de que se dispone de una entidad o PC, dentro de la
red, la cual se controla completamente. La red podrá ser cualquier topología
posible, por lo tanto, se debe determinar cuando será posible y cuando no una
denegación de servicio utilizando la estrategia de ataque que se define en
este apartado.
La definición de la estrategia de ataque presentada en este apartado es
teórica. Esto quiere decir que hace falta una puesta a la práctica para
confirmar el correcto funcionamiento.
3.2 CONOCIMIENTO DE LA RED
La primera condición para realizar un buen ataque, es conocer la red a la
que se esta atacando. No obstante, se ha mencionado como premisa que la
red atacada puede presentar cualquier topología. Por tanto se debe buscar un
mecanismo que permita conocer la red, sea cual sea la topología de la misma.
Supóngase que tenemos control de una entidad dentro de una red
cualquiera donde se utiliza el protocolo RIP. Si se actuara como un sistema
silencioso o pasivo, es decir, sin participar en las actualizaciones de las tablas,
llegarían actualizaciones de los vecinos por lo menos cada 30 segundos. Por
consiguiente, el primer paso para realizar el ataque será aprender de los
vecinos el estado de la red. Y que mejor forma para conocer el estado de la
red que realizando una petición de vector de distancia directamente a los
routers que se encuentran en nuestro segmento de red.
Como ya se vio en la definición del protocolo, para realizar una petición de
toda la tabla se construye un datagrama con el campo comando ‘01’, y una
sola entrada. El identificador de la familia de esta entrada será 0 (sin
especificar), y con métrica 16.
0
7
8
01
15
16
VERSIÓN (1)
0
31
0 (2)
0 (2)
IP ADDRESS (4)
0 (4)
0 (4)
16
45
Si se encuentran routers conectados directamente a nuestra entidad
controlada, se recibirá como mínimo un vector de encaminamiento de cada
uno.
3.3 MENSAJERIA FALSA
Gracias a la información recibida por la petición de las tablas de
encaminamiento la entidad controlada tendrá conocimiento de las LANs que
hay interconectadas en el sistema que tiene que atacar.
Para provocar una denegación de servicio en una red, hay que provocar
que los routers de la red no reencaminen bien los datos. Para conseguir esto,
se debe conseguir que las tablas de encaminamiento de los routers no sean
correctas, es decir, las rutas no sean las adecuadas para encaminar.
El parámetro métrica es el utilizado para determinar si una ruta es mejor
que otra, y por tanto, es el parámetro que utilizan los routers para actualizar
sus rutas, el parámetro que es capaz de cambiar una ruta de las tablas de
encaminamiento. Aprovecharemos este aspecto para modificar las tablas de
encaminamiento de los routers de forma fraudulenta.
Por consiguiente, la entidad controlada tiene que ser capaz de forzar a los
routers de la red a reencaminar mal los datos. Para ello, puede enviar
vectores de distancia con métricas falsas, especialmente escogidas, que
hagan cambiar las rutas que estos tienen almacenadas en sus tablas de
encaminamiento.
Fig. 23
Supóngase que el ordenador A de la Fig. 23 es la entidad controlada
dentro de un sistema RIP. El ordenador B presentaría la siguiente tabla de
encaminamiento:
Destino
1.0.0.0
2.0.0.0
3.0.0.0
4.0.0.0
5.0.0.0
6.0.0.0
Máscara
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
Gateway
0.0.0.0
0.0.0.0
2.0.0.2
2.0.0.2
2.0.0.2
2.0.0.2
IF
eth0
eth1
eth1
eth1
eth1
eth1
Métrica
0
0
1
2
3
4
46
Con el fin de cambiar las tablas de encaminamiento del ordenador B, la
entidad controlada A debe proporcionar rutas mejores a las que tiene B
almacenadas. Para proporcionar una ruta mejor debe tener una métrica
menor. La menor métrica permitida en el protocolo RIP es 1. Por tanto, la
entidad controlada debe construir un vector falso de actualización con las
métricas a 1:
0
7
8
02
15
16
VERSIÓN (1)
2
31
0 (2)
0 (2)
1.0.0.0
0 (4)
0 (4)
1
2
0 (2)
2.0.0.0
0 (4)
0 (4)
1
2
0 (2)
3.0.0.0
0 (4)
0 (4)
1
2
0 (2)
4.0.0.0
0 (4)
0 (4)
1
2
0 (2)
5.0.0.0
0 (4)
0 (4)
1
2
0 (2)
6.0.0.0
0 (4)
0 (4)
1
Cuando el ordenador B reciba este vector, mirará si hay alguna ruta mejor
que las que tiene almacenadas en su tabla de encaminamiento. En este caso,
encontrará que la ruta a la red 4.0.0.0 es mejor, ya que la entidad controlada
le esta proporcionando una alternativa con métrica 1 y el ordenador B tiene
esta ruta con métrica 2. Por tanto el ordenador B actualizara su tabla de
encaminamiento. Por el mismo motivo, la ruta a la red 5.0.0.0 y la red 6.0.0.0
también cambiaran:
47
Destino
1.0.0.0
2.0.0.0
3.0.0.0
4.0.0.0
5.0.0.0
6.0.0.0
Máscara
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
Gateway
0.0.0.0
0.0.0.0
2.0.0.2
1.0.0.1
1.0.0.1
1.0.0.1
IF
eth0
eth1
eth1
eth0
eth0
eth0
Métrica
0
0
1
1
1
1
A partir de este momento los datos que el ordenador B quiera enviar a la
red 4.0.0.0 a la red 5.0.0.0 o a la red 6.0.0.0, los enviará por su interfaz eth0
vía 1.0.0.1, y como es de esperar, los datos no llegarán nunca, es decir, se ha
provocado una denegación de servicio entre el ordenador B y la red 4.0.0.0,
5.0.0.0 y 6.0.0.0. A efectos de B la topología de red es como la de la Fig. 24:
Fig. 24
El ordenador B no ha actualizado más rutas porque las alternativas que le
daba la entidad controlada A eran a igual de condiciones o peores. Por tanto,
por ahora se puede concluir que es posible provocar una denegación a los
vecinos de la entidad controlada enviando métricas 1, pero solo en las redes
que se encuentren como mínimo a dos saltos de los ordenadores atacados.
3.4 EXPANSIÓN DE LA MENSAJERIA FALSA
Como ya se vio anteriormente, el protocolo RIP implementa ‘Triggered
Update’. Esta técnica consiste en enviar actualizaciones inmediatamente
después de sufrir un cambio de rutas. En el caso que nos ocupa en el ejemplo
anterior, cuando el ordenador B sufre un cambio de sus rutas informará a sus
vecinos de dichos cambios:
Fig. 25
48
Como el protocolo también implementa horizonte dividido solo enviara la
actualización a su ordenador vecino C. Las rutas que cambiaron en el
ordenador B eran las rutas con destinación a la red 4.0.0.0, a la red 5.0.0.0, y
a la red 6.0.0.0. Con la actualización enviada, C recibirá estas tres rutas
nuevas con métrica 2. Antes de la actualización C tenía la siguiente tabla de
encaminamiento:
Destino
1.0.0.0
2.0.0.0
3.0.0.0
4.0.0.0
5.0.0.0
6.0.0.0
Máscara
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
Gateway
2.0.0.1
0.0.0.0
0.0.0.0
3.0.0.2
3.0.0.2
3.0.0.2
IF
eth0
eth0
eth1
eth1
eth1
eth1
Métrica
1
0
0
1
2
3
El ordenador C compara sus rutas almacenadas con las rutas recibidas en
la actualización, y realiza los cambios cuando encuentra una ruta mejor:
Destino
1.0.0.0
2.0.0.0
3.0.0.0
4.0.0.0
5.0.0.0
6.0.0.0
Máscara
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
Gateway
2.0.0.1
0.0.0.0
0.0.0.0
3.0.0.2
3.0.0.2
2.0.0.1
IF
eth0
eth0
eth1
eth1
eth1
eth0
Métrica
1
0
0
1
2
2
Como era de esperar el ordenador C ha cambiado su ruta a la red 6.0.0.0
puesto que el ordenador B le ofrecía una alternativa mejor, aunque falsa, ya
que esta información ha sido transmitida mediante el ataque iniciado por la
entidad controlada A. En este caso se provoca una denegación de servicio
entre el ordenador C y la red 6.0.0.0. El resto de rutas no se han visto
afectadas, ya que el ordenador B no puede ofrecer una ruta mejor al
ordenador atacado C.
Con este ejemplo, se puede concluir que los mensajes falsos enviados por
una entidad controlada dentro de un sistema RIP se extenderán por la red y
pueden provocar cambios en las rutas y por tanto denegación del servicio,
siempre y cuando la ruta que ofrece el vecino sea mejor que la ruta que tiene
almacenada el ordenador atacado en cada caso.
3.5 PROVOCAR CANCELACIÓN DE RUTAS
Como se vio anteriormente en la definición del protocolo, el proceso de
cancelación de una ruta se puede dar en los siguientes casos:
-
No se recibe actualización de una ruta y esta caduca
Se recibe una actualización de la ruta con métrica 16.
49
Si se recibe un vector de distancia cuyas rutas tienen métrica 16 se inicia
el proceso de cancelación de las rutas, y estas no son utilizadas por la tabla
de encaminamiento hasta que se consiga una ruta alternativa.
Retómese el ejemplo de la Fig. 23. La tabla de encaminamiento de B seria:
Destino
1.0.0.0
2.0.0.0
3.0.0.0
4.0.0.0
5.0.0.0
6.0.0.0
Máscara
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
255.0.0.0
Gateway
0.0.0.0
0.0.0.0
2.0.0.2
2.0.0.2
2.0.0.2
2.0.0.2
IF
eth0
eth1
eth1
eth1
eth1
eth1
Métrica
0
0
1
2
3
4
Supóngase que el ordenador controlado A envía un vector cuyas rutas
tienen métrica 16 al ordenador B:
0
7
8
02
15
16
VERSIÓN (1)
2
31
0 (2)
0 (2)
1.0.0.0
0 (4)
0 (4)
16
2
0 (2)
2.0.0.0
0 (4)
0 (4)
16
2
0 (2)
3.0.0.0
0 (4)
0 (4)
16
2
0 (2)
4.0.0.0
0 (4)
0 (4)
16
2
0 (2)
5.0.0.0
0 (4)
0 (4)
1
2
0 (2)
6.0.0.0
0 (4)
0 (4)
16
Debido a este vector, el ordenador B iniciaría el proceso de cancelación de
las rutas:
50
Destino Máscara Gateway IF
Métrica
1.0.0.0 255.0.0.0 0.0.0.0
eth0 0
2.0.0.0 255.0.0.0 0.0.0.0
eth1 0
Por tanto las rutas desaparecen de la tabla de encaminamiento hasta que
se encuentra una alternativa. Se ha provocado una denegación de servicio
entre el ordenador B y las redes 3.0.0.0, 4.0.0.0, 5.0.0.0 y 6.0.0.0.
Se puede ver, que enviando vectores con métrica 16 es posible provocar
una denegación de servicio entre un vecino y una red, siempre y cuando la
red no este directamente conectada a este vecino.
La expansión de la mensajería falsa sería similar a la descrita en el
apartado anterior.
3.6 PERSISTENCIA
Hasta el momento se ha visto que es posible realizar una denegación de
servicio enviando mensajería falsa, y provocando la actualización de las tablas
de encaminamiento de nuestros vecinos.
No obstante, para conservar la denegación de servicio es necesario enviar
mensajes falsos periódicamente. Esto es así, ya que en RIP las rutas tienen
una caducidad. Por tanto, para conservar la denegación de servicio, la entidad
controlada dentro del sistema RIP debe enviar mensajeria falsa
periodicamente.
51
4. DESARROLLO
4.1 INTRODUCCION
Tomando como punto de partida la estrategia de ataque definida en el
bloque anterior, ha llegado la hora de implementar una aplicación que ayude a
demostrar la base teórica de la estrategia de ataque, y provoque una
denegación de servicio en una red RIP.
Como lenguaje de programación se ha escogido Java. Para ello se ha
instalado un kit de desarrollo y el programa IDE NetBeans como apoyo. El kit
de desarrollo java utilizado es el ‘JAVA 2 SDK’ en su versión 1.3.1. Java 2
SDK incluye herramientas útiles para desarrollar y probar programas escritos
en el lenguaje de programación Java y que se ejecutan en la plataforma Java.
Estas herramientas están diseñadas para que se utilicen desde la línea de
comandos. Para desarrollar de una manera más cómoda se ha utilizado el
programa Netbeans. NetBeans es una plataforma para el desarrollo de
aplicaciones usando Java y un Entorno integrado de desarrollo (IDE)
desarrollado por la Plataforma NetBeans.
Para simplificar la implementación se ha considerado que la entidad
controlada dentro del sistema RIP tiene una única interfaz. Esto es así porque
se entiende que la entidad controlada será un ordenador personal.
La aplicación dispone, por una parte, de una interfaz gráfica donde se
informa de los eventos y de los posibles errores, y por otra parte, la lógica que
trata los datagramas o paquetes de datos RIP que se reciben y se envían a la
red atacada. Recuérdese que el protocolo RIP utiliza el puerto UDP 520. Por
lo tanto, para recibir y enviar datagramas se utilizan ‘sockets’ UDP
configurados en el puerto 520. Este puerto es posible que este ocupado por
alguna otra aplicación a la hora de ejecutar la aplicación. Si es así, se debe
‘matar’ el proceso para dejar libre el puerto 520.
4.2 ANÁLISIS FUNCIONAL
En este apartado se describen los aspectos funcionales que reúne la
aplicación de ataque al protocolo RIP.
Infraestructura Técnica: La aplicación de ataque al protocolo RIP esta
programada íntegramente en JAVA.
Definición funcional: La aplicación debe provocar una denegación de servicio
enviando mensajería RIP falsa de forma persistente. Las entradas a la
aplicación serán la versión RIP utilizada (RIPv1 o RIPv2) y la métrica falsa
utilizada (métrica 1 o métrica 16). El programa mostrará los resultados que va
obteniendo del ataque por pantalla.
52
RIPv1 / RIPv2: Según la versión escogida por el usuario, la forma de enviar
los datagramas cambia. En el caso de RIP versión 1, se utilizará la dirección
broadcast. En cambio, si se utiliza RIP versión 2, se utilizará la dirección
multicast (224.0.0.9). Por otra parte se debe tener en cuenta el formato de los
mensajes descritos en la definición del protocolo según la versión escogida.
Interfaz gráfica: La interfaz gráfica es el mecanismo que se utiliza para
interactuar con el usuario de la aplicación. Consta de dos botones: Uno para
iniciar el ataque: ‘Conectar’ y otro para pararlo: ‘Stop’. Además el usuario
puede escoger que tipo de ataque quiere realizar: vectores con métrica 1, o
vectores con métrica 16, y si la red a la que quiere atacar utiliza RIPv1 o
RIPv2. También dispone de una pantalla donde se informa de los eventos que
se suceden en el transcurso del ataque o posibles errores que puedan
ocasionarse.
La elección de la versión RIP, así como el tipo de ataque que se desea
realizar se escogen mediante listas desplegables.
Fig. 26
Es posible realizar cualquier tipo de configuración:
RIP1
RIP2
Ataque Métrica 0
RIP1 + Ataque Métrica 1
RIP2 + Ataque Métrica 1
Ataque Métrica 16
RIP1 + Ataque Métrica 16
RIP2 + Ataque Métrica 16
En la pantalla se informa, mediante mensajes, de todos los eventos que se
produzcan a lo largo del ataque. En todos los mensajes se incluye la hora. La
pantalla también sirve para informar de posibles fallos o errores y que
opciones tiene el usuario para solventarlos.
A continuación se muestra un esquema de la interacción entre el usuario y
la aplicación:
53
Fig. 27
El programa finaliza cuando se produce un error o cuando el usuario
presiona el botón ‘Stop’.
Diagrama funcional de actividades: El usuario indica los parámetros de
entrada e inicia el ataque. La aplicación hace una petición de la tabla de
encaminamiento según el parámetro de entrada V (versión RIP). Cuando la
aplicación obtiene la tabla de encaminamiento, informa al usuario por pantalla
del estado de la red. Acto seguido envía la mensajería falsa dependiendo de
los parámetros de entrada V (versión RIP) y M (Métrica).
A continuación se muestra un esquema de la interacción entre el usuario,
la aplicación y la red RIP atacada.
54
Fig. 28
Este esquema representa un ciclo de ejecución. Esto quiere decir que la
petición de la tabla de encaminamiento y el ataque se hará indefinidamente
hasta que se pare la ejecución de la aplicación, ya sea debido a un error o a la
finalización manual por parte del usuario.
Excepciones controladas: Se controlan las excepciones que puedan surgir
informando al usuario a través de la pantalla de la interfaz gráfica. Las
excepciones pueden ser de formato RIP, de red, de código...
Una excepción, implicará la parada automática del proceso de ataque y
por tanto de la ejecución del programa, dando la posibilidad al usuario de
iniciar un nuevo ataque cuando lo desee.
Riesgos: Se pueden encontrar problemas de comunicación con el router
vecino, ocasionados por:
- Problemas a nivel de IP.
- Problemas de sincronismo al enviar y recibir datagramas.
4.3 ANÁLISIS TÉCNICO
En este apartado se describen los aspectos técnicos que debe reunir la
aplicación de ataque al protocolo RIP.
55
Classes JAVA: La aplicación consta de tres classes bien diferenciadas. La
primera clase, ‘atac.class’, se trata de la clase principal. Se encarga de la
interfaz gráfica y la gestión del hilo de ejecución del ataque. ‘recibirUDP.class’,
se encarga de la comunicación en red mediante sockets UDP. Además en
esta clase se implementarán las actividades del ataque. ‘entrada.class’, se
trata de una clase que almacena de forma ordenada las datos de una entrada
RIP. La clase ‘atac.class’, contiene además una lista o vector de ‘entradas’.
56
Diagrama técnico de actividades:
Fig. 29
57
Excepciones controladas: Los errores más comunes en la aplicación, o mejor
dicho las excepciones, son las de comunicación. Todas las excepciones se
controlan con try – catch en el código Java. En caso de producirse
excepciones se procede siempre de la misma manera:
- Se reporta el mensaje de error a la pantalla de la interfaz gráfica.
- Se para el hilo de ejecución del ataque RIP.
Para hacerlo más inteligible, no se muestran los mensajes de error que
reporta Java, sino que se controla para mostrar por pantalla un mensaje más
claro, para que el usuario lo entienda. Sin embargo, si un error no se ha tenido
en cuenta, se mostrará el mensaje de error que proporciona Java.
A continuación se enumeran las excepciones java que se controlan:
SocketException:
Exception Java
Address already in use: Cannot bind
No route to host: Datagram send
failed
socket closed
Mensaje mostrado
Socket: El puerto 520 lo esta usando
otra aplicación, ciérrela para poder
iniciar el ataque
Socket: No se ha podido enviar la
petición. Revise las conexiones de red
Socket: Socket cerrado
IOException
Exception Java
Receive timed out
Mensaje mostrado
E/S: Los vecinos no están
contestando a la petición RIP
4.4 PRUEBAS
Un plan de pruebas es necesario para demostrar el correcto
funcionamiento de la aplicación. Se definen tres entornos de pruebas:
- ST (SystemTest): Abarca el proceso de desarrollo y programación de la
aplicación. Se ha comprobado la compilación del programa y el buen
funcionamiento a nivel local.
- IT (Integración): Abarca la comunicación del programa con la red. Se han
hecho pruebas de comunicación con un router.
- PR (Producción): Se ha escogido un caso real para probar el ataque.
58
4.4.1 PRUEBAS ST
Las pruebas ST, consisten en comprobar el buen funcionamiento del
código de la aplicación a nivel local. Estas pruebas se reducen a que el código
compile correctamente, y se comporte según lo descrito en el análisis
funcional y análisis técnico. Se han realizado las siguientes comprobaciones:
- Botones de ‘conectar’ y ‘stop’: Se ha comprobado que se inicie el hilo de
ejecución al hacer clic a ‘conectar’, y que finalice al hacer clic en ‘stop’.
- Desplegables: Se ha comprobado que se recoge la versión y el tipo de
ataque de forma correcta, desde la interfaz gráfica.
- Formato mensajes: Se ha comprobado que los mensajes que salen por la
pantalla tengan el formato deseado, en especial, los retornos de carro y la
hora que se produjo el evento.
- Datagramas: Se ha comprobado que la confección de los datagramas sea
la correcta, para prevenir posibles errores en las pruebas IT.
4.4.2 PRUEBAS IT
Las pruebas IT, consisten en comprobar la correcta comunicación entre la
entidad controlada y el router vecino, verificando que se están realizando las
actividades esperadas.
Para ello es necesario disponer de un router que disponga de RIP, tanto la
versión 1 como la versión 2. En este caso, se ha utilizado un ordenador Linux
del laboratorio, instalando la aplicación routed.
Routed es una implementación en código libre del protocolo RIP. En los
ordenadores de laboratorio no viene instalado por defecto en el SO Linux.
Pero no es difícil de conseguir e instalar.
Para la instalación se realizan los siguientes pasos:
./configure –with-c-compiler=cc
make
make install
Una vez instalado se ubica en "/usr/sbin". Ejecutarlo es tan fácil como:
/usr/sbin/routed
Una vez el ordenador esta configurado para que utilice RIP, enviará un
mensaje de actualización de sus tablas de encaminamiento cada 30
segundos. Lo podemos comprobar mediante un análisis con el programa
Wireshark.
59
Fig. 30
El programa Wireshark es un analizador de protocolos utilizado para
realizar análisis y solucionar problemas en redes de comunicaciones para
desarrollo de software y protocolos, y como una herramienta didáctica para
educación. Cuenta con todas las características estándar de un analizador de
protocolos.
Como otros analizadores de protocolos, Wireshark soporta la utilización de
filtros. En este caso, para capturar solo el tráfico del protocolo RIP se ha
utilizado el siguiente filtro:
- udp port 520
Con este filtro solo se captura el tráfico UDP que venga del puerto 520, el
utilizado por el protocolo RIP.
Para comprobar el buen funcionamiento del programa se han testeado los
siguientes temas:
- Comprobar que se envía el datagrama de petición de la tabla de
encaminamiento y se recibe una respuesta correcta por parte del router.
- Comprobar el formateo de la tabla de encaminamiento, y la correcta
inserción en la lista de entradas.
- Comprobar el buen funcionamiento del programa en la confección de los
datagramas de ataque, prestando atención en la versión y el tipo de ataque
que se debe realizar en cada caso.
- Comprobar que los datagramas falsos de ataque se envían correctamente.
Para realizar las pruebas se han utilizado trazas en el código, para mostrar
por consola las actividades que se realizaban, y se ha utilizado el programa
Wireshark para ver la comunicación entre la entidad controlada que ejecuta la
aplicación y el router.
60
4.4.3 PRUEBAS PR
Se ha configurado una red de pruebas:
Fig. 31
Se trata de una topología de red constituido por 5 ordenadores. La entidad
controlada es un portátil con sistema operativo windowsXP, que tiene
instalado el programa de ataque. Todos los ordenadores tienen sistema
operativo linux, con tres interfaces de red, y el demonio routed instalado. En
este caso solo necesitaremos 2 interfaces de red para los ordenadores A, B y
C, y una interfaz para el ordenador D.
Con esta topología se consigue la entidad atacada A obtenga mediante
aprendizaje dinámico de rutas una ruta de métrica 2, la ruta a la red
192.168.4.0. Esto es útil para realizar pruebas con mensajes falsos de métrica
1 desde la entidad controlada.
Se han asignado direcciones IP en las interfaces de red de cada ordenador
respetando la singularidad en cada red. De esta forma, en la red 192.168.3.0,
el ordenador B tiene la dirección 192.168.3.1 asignada en su interfaz, y el
ordenador C tiene la dirección 192.168.3.2.
Para configurar cada ordenador se ha utilizado la siguiente metodología:
#Deshabilitamos las interfaces que se están utilizando
ifconfig eth2 down
#Habilitamos la redirección de paquetes
echo 1 > /proc/sys/net/ipv4/ip_forward
#Configuramos las interfaces
ifconfig eth0 192.168.1.2 up
ifconfig eth1 192.168.2.1 up
61
Esto es un guión de ejemplo para el ordenador A. Se ha configurado de
forma similar el resto de ordenadores.
Para configurar el portátil, la entidad controlada, se le ha asignado la IP
192.168.1.1 desde el panel de control de windows.
Antes de arrancar routed la tabla de encaminamiento de A tenia la
siguiente pinta:
Kernel IP routing table
Destination
Gateway
192.168.2.0
0.0.0.0
192.168.1.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
Flags Metric Ref
U
0
0
U
0
0
Use Iface
0 eth0
0 eth1
Flags Metric Ref
U
0
0
U
0
0
Use Iface
0 eth0
0 eth1
Flags Metric Ref
U
0
0
U
0
0
Use Iface
0 eth0
0 eth1
Flags Metric Ref
U
0
0
Use Iface
0 eth1
La tabla de encaminamiento de B:
Kernel IP routing table
Destination
Gateway
192.168.3.0
0.0.0.0
192.168.2.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
La tabla de encaminamiento de C:
Kernel IP routing table
Destination
Gateway
192.168.4.0
0.0.0.0
192.168.3.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
La tabla de encaminamiento de D:
Kernel IP routing table
Destination
Gateway
192.168.4.0
0.0.0.0
Genmask
255.255.255.0
Se arranca routed y se obtiene lo siguiente en el ordenador A:
Kernel IP routing table
Destination
Gateway
192.168.4.0
192.168.2.2
192.168.3.0
192.168.2.2
192.168.2.0
192.168.2.1
192.168.2.0
0.0.0.0
192.168.1.0
192.168.1.2
192.168.1.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
UG
UG
U
UG
U
Metric
2
1
0
0
0
0
Ref
0
0
0
0
0
0
Use
0
0
0
0
0
0
Iface
eth0
eth0
eth0
eth0
eth1
eth1
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
UG
U
UG
U
UG
Metric
1
0
0
0
0
1
Ref
0
0
0
0
0
0
Use
0
0
0
0
0
0
Iface
eth0
eth0
eth0
eth1
eth1
eth1
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
U
UG
U
UG
Metric
0
0
0
0
1
Ref
0
0
0
0
0
Use
0
0
0
0
0
Iface
eth0
eth0
eth1
eth1
eth1
En el ordenador B:
Kernel IP routing table
Destination
Gateway
192.168.4.0
192.168.3.2
192.168.3.0
192.168.3.1
192.168.3.0
0.0.0.0
192.168.2.0
192.168.2.2
192.168.2.0
0.0.0.0
192.168.1.0
192.168.2.1
En el ordenador C:
Kernel IP routing table
Destination
Gateway
192.168.4.0
192.168.4.1
192.168.4.0
0.0.0.0
192.168.3.0
192.168.3.2
192.168.3.0
0.0.0.0
192.168.2.0
192.168.3.1
62
192.168.1.0
192.168.3.1
255.255.255.0
UG
2
0
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
U
UG
UG
UG
Metric
0
0
1
2
3
Ref
0
0
0
0
0
0 eth1
En el ordenador D:
Kernel IP routing table
Destination
Gateway
192.168.4.0
192.168.4.2
192.168.4.0
0.0.0.0
192.168.3.0
192.168.4.1
192.168.2.0
192.168.4.1
192.168.1.0
192.168.4.1
Use
0
0
0
0
0
Iface
eth1
eth1
eth1
eth1
eth1
Se observa que se han aprendido rutas nuevas vía RIP. Además, en el
ordenador A se ha obtenido una ruta con métrica 2.
Iniciamos el ataque utilizando mensajes falsos con métrica 1. Se observa
lo siguiente en la tabla de encaminamiento del ordenador A:
Kernel IP routing table
Destination
Gateway
192.168.4.0
192.168.1.1
192.168.3.0
192.168.2.2
192.168.2.0
192.168.2.1
192.168.2.0
0.0.0.0
192.168.1.0
192.168.1.2
192.168.1.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
UG
UG
U
UG
U
Metric
1
1
0
0
0
0
Ref
0
0
0
0
0
0
Use
0
0
0
0
0
0
Iface
eth1
eth0
eth0
eth0
eth1
eth1
La ruta con métrica 2 ha sido atacada. Ahora cada vez que A se quiera
comunicar con la red 192.168.4.0 enviara los paquetes hacia nuestra entidad
controlada. Según este experimento se puede afirmar que la estrategia de
ataque enviando mensajes falsos con métrica 1 es efectiva para atacar rutas
con métricas igual o mayor de 2.
El ataque tiene que ser persistente. Si no lo fuera el ordenador A vuelve a
tomar la ruta correcta.
Una posible aplicación, aparte de denegar el servicio, con este tipo de
ataque es poder ‘escuchar’ datos de una red que en cualquier otro caso no
tenemos acceso. Según este caso se puede capturar el tráfico que el
ordenador A envía a la red 192.168.4.0, y luego redireccionar los paquetes
otra vez a su destinación real.
Iniciamos el ataque enviando mensajes con métrica 16. Obtenemos lo
siguiente:
Kernel IP routing table
Destination
Gateway
192.168.2.0
192.168.2.1
192.168.2.0
0.0.0.0
192.168.1.0
192.168.1.2
192.168.1.0
0.0.0.0
Genmask
255.255.255.0
255.255.255.0
255.255.255.0
255.255.255.0
Flags
UG
U
UG
U
Metric
0
0
0
0
Ref
0
0
0
0
Use
0
0
0
0
Iface
eth0
eth0
eth1
eth1
Se observa que las rutas que se aprendieron vía RIP han desaparecido de
la tabla de encaminamiento. Han sido añadidas en el proceso de cancelación
y ya no se usan para encaminar.
63
5. CONCLUSIONES
Tras realizar las pruebas, se puede observar que el protocolo RIP es
vulnerable tanto utilizando el ataque de métrica 16 como utilizando el ataque
de métrica 1.
No obstante, en las pruebas se han configurado los routers para que utilice
RIP en todas las redes que tiene directamente conectadas. Esto, en un caso
real no seria necesario. Retomemos el caso de pruebas:
Fig. 32
El protocolo RIP participa en todas las interfaces. Pero se puede ver que
en la interfaz Ethernet, que conecta con la red donde se encuentra la entidad
controlada no sería necesario configurar RIP. Esto es así porque no hay
ningún router que le pueda interesar la información que envía RIP. Además,
en el caso que el administrador de la red le interesase que la red Ethernet
utilizará RIP, puede configurarlo de forma pasiva, de esta forma los mensajes
de respuesta que reciba el ordenador A por esa interfaz son rechazados
directamente.
Por lo tanto, se puede concluir que RIP, aunque es vulnerable, es útil en
un entorno de confianza, y hay que prestar especial atención a la hora de
configurarlo y no utilizarlo en las interfaces donde no haga falta.
6. RECURSOS UTILIZADOS
Para desarrollar el presente proyecto se han utilizado diferentes tipos de
recursos. Por una parte, se ha hecho uso de recursos bibliográficos para la
documentación sobre el protocolo RIP. Para ello se han consultado los RFCs
(Request For Comments) número 1058 y 2453. Internet también ha sido en
diversas ocasiones una fuente de inspiración.
64
En cuanto a los programas empleados, se ha utilizado el kit de desarrollo
java SDK 1.3.1_13. Además se ha utilizado el IDE NetBeans. Por otro lado, ha
sido de mucha utilidad la aplicación Wireshark, para el estudio de los
datagramas UDP RIP. También ha sido de gran apoyo la aplicación cports,
para matar puertos cuando ha sido necesario.
Para las pruebas de Integración y Producción, se ha utilizado cuatro PC’s
con Linux, un portátil con Windows XP y el programa ‘routed’. El programa
routed, es una implementación del protocolo RIP en código abierto.
65
7. MANUAL
7.1 INTRODUCCIÓN
Este documento recoge la guía de usuario de la aplicación Java de ataque
al protocolo de encaminamiento RIP.
Mediante esta herramienta, el usuario puede realizar un ataque a una red
conmutada que utilice RIP como protocolo de encaminamiento, desde un
ordenador conectado a dicha red.
7.2 REQUISITOS
Para al ejecución correcta de la aplicación se debe disponer de la máquina
virtual java instalada en el ordenador que vaya a realizar el ataque. Además
se debe disponer de acceso a la red atacada.
7.3 CARACTERÍSTICAS
La principal característica de la aplicación de ataque al protocolo RIP, es
la capacidad para realizar un ataque de red sin necesidad de tener
conocimientos técnicos del protocolo, simplemente utilizando una sencilla
interfaz gráfica. El ataque es posible en cualquier topología de red, desde un
ordenador conectado a la red.
Además la aplicación soporta tanto RIP en su versión 1, como la versión
2. El tipo de ataque que se consigue es una denegación de servicio en la red,
y es posible realizarlo siguiendo dos estrategias diferentes.
66
7.4 DESCRIPCIÓN DE LA APLICACIÓN
Elementos de la aplicación:
Fig. 33
1.- Conectar: Mediante este botón iniciamos un ataque
2.- Stop: Mediante este botón paramos un ataque
3.- Selección de versión: Selección de la versión del protocolo RIP que utiliza
la red que queremos atacar.
RIP1: Selección de la versión 1 del protocolo RIP
RIP2: Selección de la versión 2 del protocolo RIP
4.- Selección de tipo de ataque: Selección del tipo de ataque que deseamos
realizar.
- Ataque métrica 16: La aplicación enviará mensajes falsos con el campo
métrica 16.
- Ataque métrica 1: La aplicación enviará mensajes falsos con el campo
métrica 1.
5.- Pantalla: Se muestra mediante mensajes el proceso del ataque y los
mensajes de error.
Inicio del ataque:
Para iniciar un ataque presionar el botón conectar. Se mostrará por
pantalla el siguiente mensaje:
67
Fig. 34
-Intentando crear Socket UDP 520...: La aplicación intenta iniciar una conexión
por el puerto 520, utilizado por el protocolo RIP.
-Versión escogida: Se muestra la versión que se ha escogido.
-Ataque escogido: Se muestra el tipo de ataque escogido.
-Socket creado con éxito: Indica que la aplicación ha conseguido iniciar la
conexión.
-Ejecutando rutina: Petición de tabla de encaminamiento: La aplicación envía
un mensaje RIP solicitando al router la tabla de encaminamiento. El formato
del mensaje dependerá de la versión escogida antes de conectar.
Fig. 35
68
- Datagrama request enviado: Informa de que el datagrama de petición de la
tabla de encaminamiento ha sido enviada con éxito.
- Datagrama recibido: Informa de que el router ha contestado y se ha recibido
la tabla de encaminamiento con éxito.
- Red RIP: Tabla de encaminamiento recibida: Informa de que se ha recibido
una tabla de encaminamiento con el formato correcto.
- Entrada aprendida: x.x.x.x – Métrica: x: Indica que una nueva ruta ha sido
aprendida, especificando la dirección IP y la métrica.
- Ejecutando rutina: Enviar datagrama falso: Envío de un datagrama falso.
Con las rutas aprendidas se construye un datagrama falso según el tipo de
ataque y la versión RIP escogida, para ser enviado a la red atacada.
- Datagrama falso enviado: Indica que el datagrama falso ha sido enviado con
éxito.
7.5 MENSAJES DE ERROR
Mensaje
Socket: El puerto 520 lo esta usando
otra aplicación, ciérrela para poder
iniciar el ataque
Socket: No se ha podido enviar la
petición. Revise las conexiones de
red.
Socket: Socket cerrado
E/S: Los vecinos no están
contestando a la petición RIP
Error comando: No se ha recibido un
datagrama response
Error versión: La red no es
compatible con RIP1
Error versión: La red no es
compatible con RIP2
Descripción
El programa no se puede
ejecutar porque el puerto 520,
que utiliza RIP, esta ocupado
por otra aplicación.
Se ha producido un problema
de comunicación con la red.
El socket se ha cerrado.
Normalmente cuando se clica
en el botón stop.
Si los vecinos tardan más de
30 segundos en contestar una
petición
Si se recibe un datagrama que
no es de respuesta.
La red que se esta intentando
atacar no utiliza RIP1
La red que se esta intentando
atacar no utiliza RIP2
69
Descargar