Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Атаки на домены динамической маршрутизации могут устроить настоящий хаос в сети, так как нарушают сам процесс маршрутизации. В этой статье я поделюсь своей модификацией атаки Evil Twin для перехвата данных в сетях на основе протокола OSPF. Также продемонстрирую способ подключения к автономной системе, покажу, как можно обойти аутентификацию и выполнить вредоносную LSU-инъекцию.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
OSPF (open shortest path first) — это протокол внутридоменной динамической маршрутизации, основанный на математическом алгоритме Эдсгера Дейкстры. Это link-state-протокол, и во время передачи данных по OSPF анализируется состояние канала. На основе состояния канала OSPF структурирует таблицы маршрутизации, поддерживает их актуальность и выполняет автоматический обмен маршрутной информацией со своими соседями. OSPF — открытый стандарт, который поддерживают все вендоры сетевого оборудования. И это самый распространенный протокол внутридоменной маршрутизации в рамках продакшена.
В этой статье я буду говорить о второй версии OSPF. Характеристики ее таковы:
224.0.0.5
;
reference bandwidth / link bandwidth
для оценки стоимости маршрута. То есть константа полосы пропускания делится на фактическую скорость полосы пропускания. Однако значение reference bandwdith
может быть изменено.
Установление соседства в OSPF
Протокол OSPF атаковать куда сложнее, чем его родственников — дистанционно‑векторные протоколы маршрутизации (например, RIP или EIGRP). Обозначу основные проблемы:
Чтобы атаковать домен динамической маршрутизации, нужно подключиться непосредственно к самому процессу маршрутизации. Это можно сделать через настоящий роутер (имею в виду железку) либо воспользоваться FRR.
info
FRRouting — это специальный виртуальный маршрутизатор, который может интегрироваться с твоей ОС и работать как настоящий роутер. Очень крутая штука, поскольку поддерживает множество интересных протоколов: BGP, IS-IS, OSPF, EIGRP, VRRP, BFD и так далее. В этой статье я воспользуюсь именно FRR.
В первую очередь нужно активировать демоны FRR. За каждый протокол будет отвечать отдельный демон. Нам понадобятся демоны ospfd
и staticd
.
root@kali:~# nano /etc/frr/daemons
ospfd=yesstaticd=yes
Перед запуском демона переключаем сетевой интерфейс в promiscuous mode, разрешаем маршрутизацию и активируем работу NAT Helper (NFCONNTRACK).
in9uz@kali:~$ sudo ip link set eth0 promisc on
in9uz@kali:~$ sudo sysctl -w net.ipv4.ip_forward=1
in9uz@kali:~$ sudo modprobe nf_conntrack
root@kali:~# echo "1" > /proc/sys/net/netfilter/nf_conntrack_helper
После этого включаем демон FRR и проверяем его состояние.
in9uz@kali:~$ sudo systemctl start frr
in9uz@kali:~$ sudo systemctl status frr
Состояние FRR
С помощью команды vtysh
попадаем на панель управления маршрутизатором:
in9uz@kali:~$ sudo vtysh
kali# show ver
Панель управления FRR
В качестве лаборатории мы с тобой выстроим трехуровневую сеть. Для SMB-шары я выделил отдельный сегмент (WAREHOUSE), но на самом деле это просто коммутатор уровня распределения. Также есть несколько виртуальных сетей, они находятся на коммутаторах уровня доступа, а на коммутаторах уровня распределения происходит уже маршрутизация между самими VLAN.
Отказоустойчивость сети обеспечивает HSRPv2. Начиная с уровня распределения, я настроил динамическую маршрутизацию OSPF, все хранится в нулевой BACKBONE-зоне.
Топология лабораторной сети
10.10.20.1
— Fake (VLAN 20) (Windows 10 LTSC);
10.10.30.1
— Boundless (VLAN 30) (Windows 10 LTSC);
10.10.50.2
— Attacker (VLAN 50) (Kali Linux);
10.10.50.100
— Dist-SW1 (HSRPv2 Active) (Cisco vIOS L2 Image);
10.10.50.101
— Dist-SW2 (HSRPv2 Standby) (Cisco vIOS L2 Image);
192.168.100.1
— SMB Share (Windows Server 2019 Standard).
Первым делом нам нужно изучить трафик OSPF, узнать об ID зоны, наличии аутентификации, router-id
и так далее. Из пакета OSPF Hello, полученного от Dist-SW1 (10.10.50.100
), можно заметить, что используется нулевая зона 0.0.0.0
.
Дамп OSPF-трафика
Также используется MD5-аутентификация. Она не позволяет неаутентифицированным роутерам входить в процесс маршрутизации. Не зная ключ, подключиться к сети OSPF не выйдет.
Характеристики ключа
На скриншоте некоторые характеристики ключа. Идентификатор ключа (ID) — единица.
Для сниффинга криптографического MD5-хеша воспользуемся утилитой Ettercap. Перед этим переключаемся в promisc.
in9uz@kali:~$ sudo ip link set eth0 promisc on
in9uz@kali:~$ sudo ettercap -G
Ettercap обнаружил MD5-хеш
Копируем эти хеши и брутим. Кстати говоря, очень удобно, что хеши сразу представлены в формате John the Ripper.
in9uz@kali:~$ cat >> ospf-hashes
in9uz@kali:~$ john ospf-hashes --wordlist=ospfwordlist
Взломанный пароль от домена OSPF
Пароль удалось сбрутить, это flatl1ne
. С этим ключом мы можем подключиться к сети OSPF.
Основной принцип атаки заключается в редистрибуции статического маршрута в сеть OSPF с наименьшей метрикой. Эта сеть выступит в качестве вектора для инъекции ложного маршрута. FRR позволяет оперировать статической маршрутизацией и ее редистрибуцией, что освобождает нас от использования дискретных утилит (Loki, Scapy и прочих).
Источник: xakep.ru