Для того, чтобы повысить уровень отказоустойчивости своей сети на уровне маршрутизации, сетевые администраторы в большинстве случаев используют протоколы семейства FHRP. Меня зовут @in9uz, и в рамках данной статьи ты узнаешь какой кошмар может возникнуть в сети, если к конфигурации системы горячего резервирования маршрутизаторов FHRP отнеслись халатно с точки зрения дизайна и безопасности.
It's coming through It's coming through another motherfuckin' big tricks... ᛝ
Intro (Disclaimer)
Данная статья предназначена для специалистов по безопасности, которые проводят пентест в рамках согласованного, легитимного контракта. Разрушение и взлом чужих компьютерных сетей могут преследоваться по закону. Будь осторожен и старайся не испытывать свою судьбу. Скиллы, которые ты освоишь из моей статьи — это только твоя область ответственности.
Для чего созданы FHRP-протоколы
FHRP (First Hop Redundancy Protocol) — это семейство сетевых протоколов, которые позволяют объединить группу физических маршрутизаторов в один логический, с целью повышения отказоустойчивости локальной сети. Далее, у образовавшегося логического маршрутизатора есть свой виртуальный IP-адрес. Этот виртуальный адрес будет назначаться, как адрес шлюза по умолчанию для конечных хостов. Самыми распространенными протоколами класса FHRP являются — HSRP, VRRP и GLBP, безопасность которых я и рассмотрю в рамках этой статьи.
Протокол HSRP (Hot Standby Router/Redundancy Protocol)
Является проприетарной разработкой инженеров Cisco. Здесь всё достаточно просто:
-
Берется какая-то группа физических маршрутизаторов, на них запускается специальный процесс HSRP под уникальным числовым идентификатором.
-
Исходя из значений приоритетов, выбирается ACTIVE-маршрутизатор, STANDBY-маршрутизаторы
-
Настраивается виртуальный IP-адрес, за который будет отвечать ACTIVE-маршрутизатор
-
Опционально: настраивается режим PREEMPT, аутентификация, etc
Сущности домена HSRP и терминология
-
HSRP Active Router — устройство, занимающееся обработкой, маршрутизацией легитимного трафика.
-
HSRP Standby Router — устройство, находящееся в режиме ожидания, которое ожидает отказа активного маршрутизатора. После падения основного Active-роутера, Standby-роутер возьмет на себя главенствующую роль и будет заниматься обязанностями Active-роутера;
-
HSRP Group — группа устройств одной HSRP-группы, обеспечивают работу и отказоустойчивость логического маршрутизатора;
-
HSRP MAC Address — виртуальный MAC-адрес логического маршрутизатора в домене HSRP;
-
HSRP Virtual IP Address — это специальный виртуальный IP-адрес в группе HSRP. Данный IP-адрес будет шлюзом по умолчанию для конечных хостов, используется на самом логическом маршрутизаторе.
-
HSRP Preempt mode — опция, которая позволяет павшему ACTIVE-устройству (после его воскрешения) вернуть себе роль ACTIVE, после того когда его заменил один из STANDBY-маршрутизаторов (ситуация, когда была выполнена подмена ACTIVE-устройства, вышедшего из строя). По умолчанию, Preempt-режим в HSRP отключен.
Скелет и механика работы HSRP
HSRP реализован поверх стека протоколов TCP/IP, поэтому для трансляции служебной информации используется протокол транспортного уровня UDP под номером порта 1985. HSRP-маршрутизаторы в рамках одной логической группы обмениваются специальными пакетами приветствия «hello» каждые 3 секунды, однако, если в течении 10 секунд HSRP-маршрутизатор в рамках одной группы не получил пакет приветствия от своего HSRP-соседа, то он признает его «погибшим»
У данного протокола есть две версии и они отличаются следующими характеристиками:
-
Количества групп (HSRPv1 предлагает до 255 групп, когда HSRPv2 может до 4096)
-
MAC-адреса (HSRPv1 —
00:00:0c:07:ac:xx
/ HSRPv2 —00:00:0C:9F:FX:XX
) (XX — это номер группы HSRP) -
IP-адреса групповой рассылки (HSRPv1 —
224.0.0.2
/ HSRPv2 —224.0.0.102
)
Протокол VRRP (Virtual Router Redundancy Protocol)
Данный протокол разработан на основе феноменов протокола HSRP, вследствие чего имеет большие неприятности с патентами. Поэтому его «свободным» и «открытым» назвать нельзя. Но по крайней мере поддерживается всеми вендорами сетевого оборудования, т.е. использование VRRP в твоей сети позволяет тебе быть независимым от какой-либо экосистемы вендора.
Скелет и механика работы VRRP
Де-факто, если ты знаешь как работает HSRP, ты знаешь как работает и VRRP. Между HSRP и VRRP очень много общего, но отличительные характеристики для тебя обозначу:
-
VRRP не реализован поверх стека протоколов TCP/IP. Данный протокол работает исключительно на сетевом уровне
-
Его IP-адрес мультикастовой рассылки —
224.0.0.18
-
Его идентификатор —
112
-
Вторая версия VRRPv2 отличается поддержкой IPv4 и поддержкой аутентификации. Тип аутентификации в зависимости от вендора. Например, Cisco предлагает защитить VRRP с использованием MD5-аутентификации, когда MikroTik (RouterOS) предлагает AH-аутентификации (AH — это протокол из оперы IPSec’a)
-
Третья версия — VRRPv3 отличается поддержкой IPv6, но лишается аутентификации.
VRRP-соседи в рамках одного домена отказоустойчивости обмениваются специальными пакетами приветствия, каждую секунду (своего рода hello time). Но также есть своего рода «dead timer» — если в течении 10 секунд пакета приветствия не будет — тот роутер от которого ожидался этот «hello» — выпадет из домена отказоустойчивости
Проблема возникновения псевдобалансировки
Проблема заключается в том, что у протоколов HSRP и VRRP нет механизма балансировки нагрузки. При их использовании возникает псевдобалансировка, когда по умолчанию фактически пашет только одно устройство, когда остальные отдыхают и работают в режиме ожидания. Однако, вы можете просто раскидать ваши VLAN по логическим процессам HSRP/VRRP на уровне коммутаторов распределения (L3 свитчи) или на маршрутизаторов, когда будут создаваться логические VLAN-интерфейсы (802.1Q Encapsultation Moment)
Ниже будут примеры настроек для HSRP и VRRP в отношении сетей VLAN 10 и VLAN 30. Dist-SW1 будет пахать на VLAN 10, а за VLAN 30 спать. Dist-SW2 пашет за VLAN 30, а за VLAN 10 спит.
HSRP for VLANs (Cisco IOS)
Dist-SW1(config)# interface vlan 10 Dist-SW1(config-if)# standby 10 ip 10.10.10.254 Dist-SW1(config-if)# standby 10 priority 150 Dist-SW1(config-if)# standby 10 preempt Dist-SW1(config-if)# standby 10 authentication md5 key-string my_heartbeats Dist-SW1(config-if)# end Dist-SW1(config)# interface vlan 30 Dist-SW1(config-if)# standby 30 ip 10.10.30.254 Dist-SW1(config-if)# standby 30 priority 90 Dist-SW1(config-if)# standby 30 authentication md5 key-string my_heartbeats Dist-SW1(config-if)# end Dist-SW2(config)# interface vlan 10 Dist-SW2(config-if)# standby 10 ip 10.10.30.254 Dist-SW2(config-if)# standby 10 priority 90 Dist-SW2(config-if)# standby 10 authentication md5 key-string my_heartbeats Dist-SW2(config-if)# end Dist-SW2(config)# interface vlan 30 Dist-SW2(config-if)# standby 30 ip 10.10.10.254 Dist-SW2(config-if)# standby 30 priority 150 Dist-SW2(config-if)# standby 30 preempt Dist-SW2(config-if)# standby 30 authentication md5 key-string my_heartbeats Dist-SW2(config-if)# end
VRRP for VLANs (Cisco IOS)
Dist-SW1(config)# interface vlan 10 Dist-SW1(config-if)# vrrp 10 ip 10.10.10.254 Dist-SW1(config-if)# vrrp 10 priority 150 Dist-SW1(config-if)# vrrp 10 preempt Dist-SW1(config-if)# vrrp 10 authentication md5 key-string my_heartbeats Dist-SW1(config-if)# end Dist-SW1(config)# interface vlan 30 Dist-SW1(config-if)# vrrp 30 ip 10.10.30.254 Dist-SW1(config-if)# vrrp 30 priority 90 Dist-SW1(config-if)# vrrp 30 authentication md5 key-string my_heartbeats Dist-SW1(config-if)# end Dist-SW2(config)# interface vlan 10 Dist-SW2(config-if)# vrrp 10 ip 10.10.30.254 Dist-SW2(config-if)# vrrp 10 priority 90 Dist-SW2(config-if)# vrrp 10 authentication md5 key-string my_heartbeats Dist-SW2(config-if)# end Dist-SW2(config)# interface vlan 30 Dist-SW2(config-if)# vrrp 30 ip 10.10.10.254 Dist-SW2(config-if)# vrrp 30 priority 150 Dist-SW2(config-if)# vrrp 30 preempt Dist-SW2(config-if)# vrrp 30 authentication md5 key-string my_heartbeats Dist-SW2(config-if)# end
Протокол GLBP (Gateway Load Balancing Protocol)
Разработан инженерами Cisco Systems. Как и HSRP, данный протокол реализован поверх стека протоколов TCP/IP, поэтому для трансляции служебной информации используется протокол транспортного уровня UDP под номером порта 3222. GLBP-маршрутизаторы в рамках одной логической группы обмениваются специальными пакетами приветствия «hello» каждые 3 секунды, однако, если в течении 10 секунд GLBP-маршрутизатор в рамках одной группы не получил пакет приветствия от своего GLBP-соседа, то он признает его «погибшим». Однако, значения таймеров могут конфигурироваться в зависимости от нужд админа.
Скелет и механика работы GLBP
GLBP обеспечивает распределение нагрузки на несколько маршрутизаторов (шлюзов) используя один виртуальный IP-адрес и несколько виртуальных MAC-адресов. Каждый хост сконфигурирован с одинаковым виртуальным IP-адресом и все маршрутизаторы в виртуальной группе участвуют в передаче пакетов.
Работает гораздо иначе в отношении протоколов HSRP и VRRP, так как использует механизмы настоящей балансировки нагрузки, обозначу ниже:
-
Host-Dependent. Тип балансировки нагрузки, использующийся в сети, где есть NAT. Host-Dependent гарантирует тот факт, что хосту вернется тот же MAC-адрес AVF-устройства, который использовался в раннем моменте времени, тем самым трансляции сконфигурированного NAT в отношении хоста разорваны не будут.
-
Round-Robin. В данном режиме AVG-устройство раздает MAC-адреса членам AVF попеременно. Именно этот механизм используется по умолчанию
-
Weight-based round-robin. Балансировка нагрузки на основе специальной метрики «Weight» (если переводить с английского — это вес)
Сущности домена GLBP и терминология
-
AVG (Active Virtual Gateway) — устройство, которое является по сути батей всего логического домена GLBP. «Батя» указывает остальным маршрутизаторам как выполнять обработку легитимного трафика. Раздает MAC-адреса, ответственнен за ответы за ARP-запросы. Кстати говоря, в рамках одной группы GLBP, AVG-членов может быть только один маршрутизатор.
-
AVF (Active Virtual Forwarder) — устройство в домене GLBP, которое занимается обработкой трафика. Их может быть несколько.
-
GLBP Group — логическая группа GLBP, в которую входят физические маршрутизаторы. У каждой логической группы GLBP есть свой уникальный числовой идентификатор
-
GLBP MAC — виртуальный MAC-адрес AVF-членов, раздаваемый существующим AVG-роутером.
-
GLBP Virtual IP Address — IP-адрес, за который ответственнен AVG-маршрутизатор
-
GLBP Preempt Mode — опция, позволяющая воскресшему AVG-устройству вернуть себе роль, после того, когда его подменил AVF, исходя из значений приоритетов. По умолчанию, в отношении AVG режим преемптинга отключен, когда для AVF-членов режим преемптинга включен (с задержкой до 30 секунд, но данное значение может конфигурироваться вручную)
-
GLBP Weight — метрика, указывающая степень нагрузки на интерфейс устройства. Чем эта метрика больше, тем выше нагрузка на интерфейс маршрутизатора.
Механизм селекции
В отношении FHRP-протоколов, значение приоритетов у маршрутизаторов по умолчанию равно 100. Если админ не настраивал приоритеты вручную, то в случае HSRP (ACTIVE), в случае VRRP (MASTER), в случае GLBP (AVG) станет тот маршрутизатор, у которого наибольший адрес. Безусловно, эти приортеты насстраиваются вручную, в зависимости от нужд сетевого администратора и какая ему инфраструктура отказоустойчивости нужна.
Механизм FHRP-таймингов
-
HSRP (Hello time: 3 sec / Hold time: 10 sec)
-
VRRP (Hello time: 1 sec / Hold time: 3 sec)
-
GLBP (Hello time: 3 sec / Hold time: 10 sec)
FHRP Hijacking
Домены FHRP уязвимы к Hijack-атаке, если лидирующие ACTIVE/MASTER/AVG не имеют максимального значения приоритета в отношении своей конфигурации. Если атакующий проведет инъекцию HSRP/VRRP/GLBP-пакета с максимальными значениями приоритетов, он сможет перехватить трафик внутри сети.
Stages Theory
-
Information Gathering. Этап разведки информации, выяснение значений приоритетов, поиск аутентификации, используемый виртуальный IP-адрес, MAC-адреса
-
Authentication Bypassing. Этап обхода аутентификации. Если она есть, разумеется. Сохраняем дамп трафика, эксфильтруем хеши и брутим ключ от домена.
-
Injection. Этап подготовки сетевого интерфейса, прописывание MAC-адреса, разрешение маршрутизации, генерация и отправка вредоносной FHRP-инъекции.
-
Routing Management. Создание вторичного IP-адреса, конфигурация нового маршрута по умолчанию, (NAT) MASQUERADE
Weaponize
-
Wireshark. С помощью данного анализатора сетевого трафика мы будем проводить процесс Information Gathering, перечисление заголовков пакетов
-
John & *2john-эксфильтраторы. John является брутфорсером хешей, *2john скрипты помогут воспроизвести эксфильтрацию хешей из дампа трафика
-
Loki. Является пакетным инжектором, фреймворком для проведения анализа защищенности различных L2/L3-протоколов, даже DRP, FHRP и т.д.
Векторы атаки
-
MITM. Атака типа «человек по середине» с целью перехвата легитимного трафика. Выполняется путем вредоносного FHRP-инжекта с максимальным значением приоритета.
-
Blackhole. Атака с целью завернуть трафик легитимной подсети в НИКУДА. Blackhole в переводе с английского — «черная дыра». Типа трафик в черную дыру улетает и всё, приехали…
-
Kicking router via UDP Flood. DoS-атака, механизм которой заключается в массовой рассылке UDP-датаграмм с целью вывести из строя конечный роутер. Работает в отношении HSRP & GLBP, ибо когда на роутерах запускаются процессы этих протоколов, они автоматически начинают прослушивать UDP-порты 1985 и 3222 (HSRP и GLBP соответственно), для VRRP, опять же, транспортного уровня нет.
Ограничения атаки
-
Зависимость от мощности CPU. После MITM-атаки, трафик всей сети или VLAN-сегмента (в зависимости от существующей инфраструктуры) побежит через твое устройство и оно должно быть готово к обработке, маршрутизации трафика всего легитимного сегмента. Иначе возникнет DoS, а заказчик такой сценарий не оценит и потекут горячие слёзы.
-
Производительность сетевого интерфейса. Сетевая карта, использующаяся в момент проведения атаки должна быть достаточно мощной, чтобы справиться с обработкой большого количества трафика.
-
Зависимость от возможной VLAN-сегментации сети. Если ты находишься, например, в VLAN 10 и сможешь провести MITM через инжект — ты будешь перехватывать трафик того VLAN, в котором сам и находишься. Трафик других VLAN’ов ты не достанешь.
FHRP Nightmare Topology
В рамках практической реализации атак, я собрал трехуровневую сеть, которую я обеспечил доступом в сеть интернет, OSPF и доменами отказоустойчивости HSRP/VRRP/GLBP. В рамках моей атаки, я буду воздействовать именно на уровень распределения сети (Distribution Layer) и перехватывать трафик сети VLAN 10.
Papercut — FTP-сервер под IP-адресом 172.16.60.100
Dustup — тачка с ОС Windows 10 под IP-адресом 172.16.40.1
Attacker (Mercy) — система атакующего с Kali Linux под IP-адресом 10.10.10.3
Boundless — клиентская машина с Linux Mint под IP-адресом 10.10.10.5
Левая часть свитчей уровня Distribution — свитчи Cisco vIOS: Dist-SW1 и Dist-SW2 под адресами 10.10.10.100
и 10.10.10.101
соответственно
Edge Router — пограничный маршрутизатор данной сети, обеспечивает всю сеть интернетом путем механизма NAT (PAT Mechanism Moment)
В качестве динамической маршрутизации выступает позвоночная (BACKBONE) зона OSPF и идентификатором 0
А процессы HSRP/VRRP/GLBP реализованы на виртуальных SVI-интерфейсах.
HSRP Hijacking
Stage 1: Information Gathering
Из дампа трафика в Wireshark мы видим HSRP-объявления от двух коммутаторов под адресами 10.10.10.100
и 10.10.10.101
Исходя из анализа заголовков пакетов HSRP имеем следующую картину (в рамках моей сети я изучил 2 HSRP-объявления):
-
ACTIVE-устройством является коммутатор под адресом
10.10.10.100
, его приоритет 150 -
STANDBY-устройством является коммутатор под адресом
10.10.10.101
, его приоритет 90 -
Используется криптографическая аутентификация (MD5)
-
Виртуальный IP-адрес
10.10.10.254
-
Виртуальный MAC:
00:00:0c:07:ac:01
(ACTIVE) -
Номер HSRP группы
1
Так как ACTIVE-коммутатор имеет приоритет 150
из 255
— вырисовывается вектор Hijack-атаки. Но также, есть используется аутентификация. Аутентификация в отношении FHRP не позволяет неавторизованным устройствам вступать в процесс обеспечения отказоустойчивости. Но так как мы являемся атакующим, нам необходимо выяснить что за ключ используется в качестве аутентификации к HSRP-домену.
Stage 2: Authentication Bypassing
Необходимо сохранить дамп трафика в формате .pcap, далее с помощью hsrp2john.py (в моем случае скрипт называется hsrpexfiltrate.py) выполняем эксфильтрацию хешей. Данный скрипт выплюнет MD5-хеши и в тот же момент преобразует их к формату Джона, что удобно. Потом эти хеши можно перебросить в отдельный файл и скормить его Джону, т.е. этот файл будет выступать в качестве входных данных для брута. Ну и с помощью ключа «—wordlist» указываем путь до словаря
in9uz@Mercy:~$ python2 hsrpexfiltrate.py hsrpwithauth.pcap in9uz@Mercy:~$ cat >> hsrpv1md5hashes in9uz@Mercy:~$ john hsrpv1md5hashes --wordlist=/usr/share/wordlists/rockyou.txt
В итоге нам удалось сбрутить ключ аутентификации к домену HSRP — endgame
Stage 3: Injection
В первую очередь, нам необходимо сменить MAC-адрес на виртуальный MAC-адрес ACTIVE-коммутатора. Это делается для того, чтобы в лишний раз не стриггернуть систему DAI (Dynamic ARP Inspection), ибо DAI вполне может удивиться тому, что в отношении 10.10.10.254
теперь присутствует другой MAC-адрес.
Далее, переключаем наш сетевой интерфейс в неразборчивый режим (promiscious mode) и разрешаем маршрутизацию трафика.
in9uz@Mercy:~$ sudo macchanger --mac=00:00:0C:07:AC:01 eth0 in9uz@Mercy:~$ sudo ifconfig eth0 in9uz@Mercy:~$ sudo sysctl -w net.ipv4.ip_forward=1
Теперь нужно запустить Loki, выбрать сетевой интерфейс
in9uz@Mercy:~$ sudo loki_gtk.py
После запуска инструмента, сам Loki обнаружит рассылаемые HSRP-объявления от маршрутизаторов. Вводим аутентификационный ключ MD5 (endgame), выбираем опцию «Do gratuitous ARP». Это специальная модификация ARP-кадра, являющейся по факту заглушкой, которое оповещает весь широковещательный домен о новой привязке IP-адреса с MAC-адресом. Далее, кликаем на два устройства (в состоянии Seen) и выбираем опцию Get IP.
После этого, Loki сгенерирует кастомную инъекцию с максимальным значением приоритета 255
, что в свою очередь позволит атакующему перехватить ACTIVE-роль и встать таким образом человеком по середине (Man-in-the-Middle moment)
Stage 4: Routing Management
После осуществеленного инжекта, нам необходимо заняться небольшим роутинг-менеджментом.
Сперва нужно удалить старый маршрут по умолчанию, идущий через 10.10.10.254
, ибо так как мы стали новым ACTIVE-маршрутизатором, мы являемся владельцем этого виртуального адреса (10.10.10.254), но при старом маршруте весь трафик замыкается на нашей ОС, что без дополнительных морок вызывает DoS в отношении легитимных хостов :))
Также нужно создать на нашем интерфейсе вторичный адрес со значением HSRP Virtual IP Address (10.10.10.254), опять же, после атаки мы являемся владельцем этого адреса.
in9uz@Mercy:~$ sudo ifconfig eth0:1 10.10.10.254 netmask 255.255.255.0
Пропишем новый маршрут по умолчанию через 10.10.10.100
(это бывший ACTIVE-роутер), но даже не смотря на то, что мы отжали у него ACTIVE-роль, он всё равно сможет выполнить маршрутизацию трафика куда нам нужно. Также можно попробовать прописать второй статический маршрут через 10.10.10.101
, с указанием специальной метрики, т.е. здесь со вторым маршрутом уже реализовывается плавающая статическая маршрутизация.
in9uz@Mercy:~$ sudo route del default in9uz@Mercy:~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.10.100
Также необходимо настроить NAT (MASQUERADING), чтобы видеть ещё и исходящий трафик, кроме входящего
in9uz@Mercy:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
В итоге нам удалось провести MITM-атаку. Чтобы наглядно показать импакт от атаки, подключусь к FTP-серверу Papercut
VRRP Hijacking
Stage 1: Information Gathering
В рамках VRRP, эти пакеты приветствия видны только от MASTER-устройства.
Исходя из анализа заголовков пакетов HSRP обозначим следующую информацию:
-
MASTER-устройством является маршрутизатор под адресом
10.10.10.100
, его приоритет 150 -
Аутентификация отсутствует
-
Виртуальный IP-адрес
10.10.10.254
-
Виртуальный MAC:
00:00:5e:00:01:01
-
Номер VRRP группы
1
Stage 2: Injection
Меняем MAC-адрес на тот, который относится к MASTER, неразборчивый режим и разрешаем маршрутизацию
in9uz@Mercy:~$ sudo macchanger --mac 00:00:5e:00:01:01 eth0 in9uz@Mercy:~$ sudo ifconfig eth0 promisc in9uz@Mercy:~$ sudo sysctl -w net.ipv4.ip_forward=1
Запускаем Loki
in9uz@Mercy:~$ sudo loki_gtk.py
Loki задетектил VRRP-объявление. Всё тоже самое, генерируем заглушку (Gratuitous ARP) и выполняем инжект
Loki выполнил инжект, можно изучить его тело (У инжекта приоритет 255
)
Stage 3: Routing Management
Всё тот же роутинг-менеджемент. Прописываем роуты, создаем вторичный адрес и настраиваем NAT (MASQUERADE)
in9uz@Mercy:~$ sudo ifconfig eth0:1 10.10.10.254 netmask 255.255.255.0 in9uz@Mercy:~$ sudo route del default in9uz@Mercy:~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.10.100 in9uz@Mercy:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Для наглядности снова подключусь к тому FTP-серверу (Papercut), но с другими кредами (death:betrayal)
GLBP Hijacking
Stage 1: Information Gathering
Видим GLBP-объявления от двух устройств. Исходя из анализа пакетов GLBP мы имеем следующую картину:
-
AVG-роутером является устройство под адресом
10.10.10.100
-
AVF-роутером является устройство под адресом
10.10.10.101
-
Аутентификация отсутствует
-
Номер группы GLBP
1
-
Виртуальный IP-адрес
10.10.10.254
-
Виртуальный MAC:
00:07.b4:00.01:01
Stage 2: Injection
Меняем MAC-адрес на тот, который был у AVG, promiscious mode и разрешение маршрутизации
in9uz@Mercy:~$ sudo macchanger --mac=00:07.b4:00.01:01 eth0 in9uz@Mercy:~$ sudo ifconfig eth0 promisc in9uz@Mercy:~$ sudo sysctl -w net.ipv4.ip_forward=1
Запускаем Loki, выбираем интерфейс
Loki обнаружил объявления. Выполняем инжект x Gratuitous ARP
Loki сгенерировал GLBP-инъекцию со значениями приоритетов и веса (Priority 255
x Weight 255
)
Stage 3: Routing Management
Создаем вторичный адрес, прописываем роут и NAT
in9uz@Mercy:~$ sudo ifconfig eth0:1 10.10.10.254 netmask 255.255.255.0 in9uz@Mercy:~$ sudo route del default in9uz@Mercy:~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.10.100 in9uz@Mercy:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Мы стали «человеком по середине», запустим net-creds.py, данная тулза будет дергать чувствительные данные во время анализа трафика (т.е. незашифрованный HTTP/FTP-трафик, NTLM-хэши)
in9uz@Mercy:~/FHRPNightmare/net-creds$ sudo python2 net-creds.py -i eth0
Для наглядности синицирую чтение SMB-шары от имени пользователя distance
Можно сбрутить этот NTLMv2-SSP
, почему нет
Prevention
-
Использование ACL. ACL позволяет фильтровать трафик по различным параметрам, начиная от IP-адреса источника, заканчивая по TCP/UDP портам. (в зависимости от того, какой ACL используете — стандартный или расширенный?)
Для HSRP: ACL aganist 224.0.0.2
or 224.0.0.102
, UDP/1985
Для VRRP: ACL aganist 224.0.0.18
Для GLBP: ACL aganist 224.0.0.102
, UDP/3222
-
Использование аутентификации. Аутентификация не позволяет неавторизованным маршрутизаторам входить в домены отказоустойчивости. Если собираешься защищать домен с помощью аутентификации, используй стойкие ключи, чтобы их было не так просто сбрутить.
Вот Cisco IOS может похвастаться наличием Key-Chain аутентификации, где может быть использовано несколько ключей, а также можно будет настроить временные промежутки, в рамках которых ключи будут приниматься и отправляться. RouterOS вот вообще имеет дикую AH-аутентификацию для VRRP, там такая соль используется — хрен сбрутишь, даже словарный пароль. Кстати говоря, Cisco IOS использует MD5-аутентификацию для FHRP, а RouterOS — AH (протокол из оперы IPSec)
-
Максимальные значения приоритетов. Из соображений безопасности рекомендуется на Master- или Active-маршрутизаторе выставить максимальный приоритет. В таком случае, если злоумышленник отправит вредоносный пакет с приоритетом
255
, у него не выйдет стать «главным», поскольку таковой уже имеется. Кстати говоря, для VRRP удастся выкрутить значение только254
, ибо приоритет255
образовывается де-факто, после того, как MASTER обслуживает IP-адрес
Outro
Протоколы FHRP помогают организовать систему горячего резервирования шлюзов маршрутизации. Такие системы широко распространены в рамках рассмотренного мною кейса. Но теперь ты знаешь, что может произойти с сетью, если инженер не позаботился о дизайне и безопасности конфигурации самих FHRP-протоколов.
Кстати говоря, вот этот FHRP Hijacking может служить альтернативой ARP-спуфингу. В сетях AD открываются все возможности для Relay-атак и сбора информации, также можно реализовать фишинговые атаки и многое другое. Очень надеюсь, это данное моё исследование подарит пентестерам новые векторы атак для пентестеров, а сетевые администраторы обзаведутся новыми кейсами, чтобы повысить безопасность своей сети.
ᛝ
ссылка на оригинал статьи https://habr.com/ru/post/685072/
Добавить комментарий