domingo, 18 de enero de 2009

Protocolos de Enrutamiento. Atacando a RIP (Parte2)

Protocolos de enrutamiento hay muchos, los podemos dividir o clasificar de varias formas:
    Internos, externos, frontera
    Vector-distancia, estado enlace
Y seguro que mas de uno ha oído hablar de alguno de ellos: BGP, OSPF, RIP, EIGRP...

No es que haya unos mejor que otros, dependerá de dónde los queramos implementar, del router, etc... bueno, si hay unos mejores que otros...

Es mas, un router puede implementar varios protocolos de enrutamiento a la vez, por ejemplo puede usar RIP y OSPF simultáneamente y descubrir las rutas por uno, por otro o por los dos...

Lógicamente si Router1 y Router2 quieren intercambiar rutas, ambos deben usar el mismo protocolo de enrutamiento, por ejemplo:

Caso a)

R1: Utiliza RIP y OSPF
R2: Utiliza EIGRP y RIP

Las tablas de rutas que se intercambien se hará por medio de RIP que es el protocolo de enrutamiento “común” que usan los dos.

Caso b)

R1 Utiliza OSPF y RIP
R2: Utiliza EIGRP

Pues no podrán intercambiarse nada porque no hay protocolos de enrutamiento comunes.

Caso c)

R1: Utiliza RIP y OSPF
R2: Utiliza RIP y OSPF

Intercambiarán rutas por medio de OSPF. Ahhh!!! Y por qué no usarán RIP???

Pues por un nuevo concepto que hay que añadir a esto... LA DISTANCIA ADMINISTRATIVA.

La distancia administrativa es un valor numérico que representa el grado de confianza que ofrece un protocolo de enrutamiento, a menor distancia administrativa mejor se supone que es el protocolo de enrutamiento.

RIP utiliza por defecto una distancia administrativa de 120 mientras que OSPF utiliza 110, por tanto se supone que OSPF es mejor, que las rutas descubiertas mediante OSPF son mejores que las descubiertas por RIP y se usaran las de OSPF en su lugar.

Caso d)

R1: Usa RIP, OSPF, rutas estáticas hacia R3 y está directamente conectado a R2 y a R4
R2: Usa RIP, OSPF, rutas estáticas hacia R6 y está directamente conectado a R1 y a R5

R1 sabe como llegar a R2, R3 y R4
R2 sabe como llegar a R1, R5 y R6

Como ves, R1 no se entera de que existe una red... R6, y de la misma forma, R2 no sabe de la existencia de R4

Esto es porque a menos que se REDISTRIBUYAN las rutas estáticas los protocolo de enrutamiento no las descubren por sí mismos

Aún podemos complicar mas el asunto, imagina que R1 sabe mediante OSPF que existe una red X, pero usa RIP para conversar con R2....

Qué pasa con la red X???

Pues que al igual que con las rutas estáticas, las redes descubiertas mediante otros protocolos de enrutamiento no se distribuyen sin más... vamos, al grano... Si se usan varios protocolos de enrutamiento y/o rutas estáticas, es necesario redistribuirlas bajo los otros protocolos de enrutamiento que usemos o el “router del otro extremo” no se enterará que existen...

También es importante aclarar que las distancias administrativas de las rutas estáticas es 1 y las de las redes directamente conectadas es 0 (cero), por ello, si un router descubre que para ir a una red es mejor llegar por X pero existe una ruta estática que dice que es por Y, se irá por donde dice la ruta estática y no mediante la descubierta por el protocolo de enrutamiento en cuestión...

Y cual es la mejor ruta???

Pues esto lo resuelven los protocolos de enrutamiento mediante la MÉTRICA.

La métrica es otro valor numérico que le dice al router el “lo que cuesta” ir de un punto a otro, al igual que las distancias administrativas, cuanto menor métrica (menor coste) mejor camino.

Las métricas dependen mucho del protocolo de enrutamiento usado, los hay que toman como métrica el menor número de saltos, los que utilizan el ancho de banda y también los que toman en cuanta factores como la congestión, el retardo, la fiabilidad o incluso una “mezcla de ellas”, vamos que por ejmplo un router puede decidir si un dato va por un sitio u otro por muchos factores, dependerá del protocolo de enrutamiento elegido.


Bien, creo que lo básico de protocolos de enrutamieto ya está expuesto... ahora vamos a trabajar sobre el título del post: ATACANDO PROTOCOLOS DE ENRUTAMIENTO

En este ejemplo atacaremos a RIP v2, para ello vamos a decir alguna cosita de RIPv2 antes de nada,

RIPv2

· Es un protocolo de enrutamiento vector distancia
· Utiliza como métrica el número de saltos
· Utiliza multitast (224.0.0.9) para comunicarse con los otros routers RIPv2
· Puede ser autenticado, es decir, puede utilizar contraseñas y métodos de autenticación PAP o CHAP para recibir o promulgar las rutas
· Su cuenta al infinito es de 15 saltos, esto es, entre un destino y otro no puede haber mas de 15 saltos o la ruta será inalcanzable
· Utiliza Horizonte Dividido (Split Horizon) esto es, una ruta no debe ser promulgada por la misma interface que fue recibida, con esto se eliminan ciertos tipos de bucles de enrutamiento.
· Utiliza o puede utilizar, rutas envenenadas para evitar bucles de enrutamiento, esto es, marca una ruta con 16 saltos si el router no sabe alcanzarla.
· Informa al origen mediante mensajes ICMP de las posibles incicdencias del enrutamieto
· Utiliza temporizadores para la convergencia y disipar bucles, esto es:
o Cada 30 segundos envía actualizaciones periódicas
o Si se da cuenta que una ruta “ha caído” la mantiene en una especia de “congelador” antes de eliminarla por completo, este tiempo es de 120 seg.
o A los 180 segundos la elimina “de verdad”
· Puede usar máscaras de subred, VLSM y subredes
· Puede usar o usa, actualizaciones desencadenadas para evitar los tiempos de espera que indican los temporizadores
· Utiliza o puede utilizar la validación del origen de la ruta, esto es, sólo aceptar actualizaciones (o enviarlas) a determinadas IP’s
· Utiliza protocolo UDP puerto 520.

Vaaaleee, lo principal está.... lo que no debemos olvidar (ahora en cristiano) es:

· La convergencia de una red RIP puede llevar varios minutos (debido a los temporizadores) si bien, al usar actualizaciones desencadenadas la convergencia de la red puede ser mucho más rápida.
· El máximo número de saltos es 15
· Utiliza direcciones de multicast para “pasarse” las tablas y/o rutas
· Puede que se usen contraseñas (cifradas en MD5 o no) para validar una actualización
· Utiliza la validación en origen (por IP) de las actualizaciones recibidas.

Los pasos del ataque a RIPv2 son:

· Escuchar el tráfico RIP, de ello averiguaremos:
o IP’s Origen de las actualizaciones
o Si se usan contraseñas o no para validar las actualizaciones
o Si la contraseña está cifrada habrá que romperla también, aunque ya te adelanto que se puede “pasar” el hash MD5 sin más para evitar la ruptura de la contraseña que siempre puede ser una tarea larga en el tiempo.

· Enviar actualizaciones falsas con IP origen autenticado o validado, esto lo habremos conseguido mediante el esnifer
· La falsa actualización será encaminar a TODA una RED por “otra” máquina, otro router o “similar” que esté bajo el control del atacante
· Escuchar el tráfico de interés redirigido
· Volver a encaminar los paquetes hacia el verdadero destino.

Y R.I.P. de RIP (Requiescant In Pace, Routing Information Protocol) jajaja...

Para ello vamos a necesitar simplemente una máquina Linux con capacidad de reenvío, un generador de paquetes cualquiera y nuestro querido IPTABLES para hacer un POSTROUTING del tráfico de la red.

También hay otro método mas chulo, usando Zebra o Quagga que emulan dispositivos CISCO en un Linux, podríamos configurar nuestra máquina como otro router más de la red mediante Quagga, habilitar RIPv2 y ponerla a funcionar... pero, nos bastará con lo primero.

El escenario propuesto (para no ser muy complicados) es el siguiente:

Disponemos de 4 Routers, tres de ellos corriendo RIP que están situados en la Central y en las dos sucursales, el cuarto router conecta a la central con los recursos externos, entre ellos Internet y en este no hay RIP (aunque pudiese haberlo, claro... no importa)

La RED de la central es 172.28.0.x/24 y conecta a las oficinas remotas, entiende el término remoto como “otra red con otros routers”, perfectamente podrían estar situados en el mismo edificio, en plantas distintas o en edificios cercanos...

La RED de la Oficina 1 es 192.168.200.x/24

La RED de Oficina 2 es 10.0.0.x/24

La RED de RECURSOS es 192.168.4.x/24 en la que están situados recursos corporativos, por ejemplo DNS, BBDD, etc... y también el acceso a redes remotas, en el caso... Internet.

Los routers involucrados en RIP son los de la Central y las Oficinas, mediante el esnifer iremos “adivinando” la topología y las diferentes Ip’s de los medios que nos conectan.

El atacante va estar situado en la oficina CENTRAL, esto es una conveniencia puesto que ya Está en medio, pero luego comentaremos qué pasaría si estuviese en una de las oficinas en lugar de en la central.

Quiero hacerte notar que aunque el atacante ya está en el medio, el tráfico entre oficinas y/o entre oficinas y recursos y/o entre oficinas e Internet no pasará por él, puesto que para ello tendría que modificar la tabla de enrutamiento de los routers y se supone que éstos están bien configurados (es un decir) o al menos bien protegidos y sin acceso físico a los mismos.

También pensarás que sería mejor que RECURSOS fuese una red distinta conectada de otra forma a CENTRAl, así:


Efectivamente, podría ser, y de hecho será así , ea!!!! Da igual, el “efecto” será el mismo, pero es que no tengo un router con 4 interfaces (ojito que digo 4 interfaces, no un router con un switch de 4 puertos....) hay que hacer routing “de verdad” entre las interfaces...

Por eso el gráfico anterior y no éste último....

Bien, pues escenario en mano (suerte que tenemos de poder verlo en lugar de imaginarlo, jeje) vamos ahora con lo que necesitamos:

· 4 Routers, al menos 3 de ellos con RIPv2 funcionando
· Al menos una máquina en cada red
· Conexión a Internet para ofrecer ese servicio a las sucursales
· Un Linux en la central (el atacante)
· Un generador de paquetes
· Un esnifer
· Otro router en la máquina atacante (que es el mismo Linux, menos mal, con quagga o zebra, o en su defecto, enviar las rutas “mal intencionadas” al menos cada 30 segundos...)

Todo esto “lo tenemos”, bueno lo tengo ahora... (os imagináis como está mi casa, joder!!!!)

Para evitar lo de “convertir” Linux en un router emulando la IOS de cisco, esto puede quedar para otra ocasión, usaremos el generador de paquetes y para mantener la convergencia, nos ocuparemos de enviar el paquete RIP con frecuencia, COMO!!! Que no entiendes por qué hay que enviarlo de vez en cuando???

Pues hombre... ya hemos hablado de los cambios de topología, de la convergencia, etc... recuerda que RIP envía actualizaciones cada 30 segundos... si no lo hacemos con la máquina atacante los otros routers entenderán que esa red o ese router ya no está y dejaran de promulgar su existencia.... claro, no???

1 comentario:

Anónimo dijo...

parceros.... muy bien esplicao todo eso los felicito que chimba las redes...........