Всем привет. Меня зовут @necreas1ng(читается как Некрейсинг), я являюсь исследователем сетевой безопасности, сетевым инженером и специалистом по тестированию на проникновение. В моей статье ты узнаешь, что может значить наличие протокола GLBP в сети для пентестера. А также, будут рассмотрены превентивные меры, позволяющие повысить уровень безопасности домена GLBP. Эта работа содержит в себе теоретическую часть (куда же без теории творить похек) и практическую, в которой будет раскрыт импакт при проведении атаки.
Intro
GLBP (Gateway Load Balancing Protocol) — это проприетарная разработка инженеров Cisco Systems, созданная для организации системы горячего резервирования маршрутизаторов и балансировки нагрузки. Входит в класс протоколов первого перехода (FHRP — First Hop Redundancy Protocol). Кстати говоря, в отличии от известных HSRP и VRRP, GLBP предлагает настоящую балансировку нагрузки (например, Round-Robin, Host-Dependent, Weighted-like). По умолчанию, GLBP использует Round-Robin балансировку. А использование HSRP/VRRP предполагает только организацию резервирования, так называемая «псевдобалансировка» А хотя… Тот или иной HSRP/VRRP-маршрутизатор можно настроить таким образом, чтобы каждый из них отвечал за обработку трафика той или иной VLAN-сети, но это совсем другая история. Так как GLBP является проприетарной разработкой инженеров Cisco, он может быть использован только на оборудовании Cisco.
GLBP работает аналогично, но совсем не идентично его родственникам HSRP и VRRP. Протоколы HSRP и VRRP позволяют объединить несколько физических маршрутизаторов в один логический маршрутизатор с общим IP-адресом. А этот самый общий (виртуальный) IP-адрес будет использоваться в качестве адреса шлюза по умолчанию для хостов в сети. Но при этом, весь потенциал вычислительных ресурсов зарезервированных маршрутизаторов почти не используется. Организовывается только система горячего резервирования. В случае падения «главного» маршрутизатора, один из резервных перехватит роль «главного» и будет отвечать за всю обработку трафика. GLBP же может предложить распределение нагрузки на несколько маршрутизаторов в рамках одной GLBP-группы.
Для трансляции и обработки служебной информации, GLBP использует зарезервированный IP-адрес групповой рассылки 224.0.0.102 и протокол транспортного уровня UDP под номером порта 3222. Специальные пакеты приветствия «GLBP Hello» отправляются каждые 3 секунды. Если в течении 10 секунд GLBP-маршрутизатор не получил пакет приветствия от соседа, то сосед будет признан «мертвым» и выпадет из домена GLBP.

Ограничения в использовании GLBP
-
Протокол GLBP может использоваться только в сетях Ethernet
-
Если GLBP сконфигурирован на логическом (802.1Q Encapsulation) интерфейсе, то номер группы GLBP должен отличаться от номера VLAN-сети
-
Маршрутизатор должен поддерживать какое-то количество каких-либо MAC-адресов на одном физическом интерфейсе
-
В рамках одной GLBP может быть задействовано до 1024 физических маршрутизаторов и только до 4-х виртуальных маршрутизаторов, занимающихся обработкой легитимного трафика. Т.е. балансировка нагрузки могут организовывать только 4 маршрутизатора.
Терминология и сущности в домене GLBP
AVG (Active Virtual Gateway) — маршрутизатор с главенствующей ролью, также отвечает за раздачу MAC-адресов остальным маршрутизаторам в рамках одной GLBP группы. Эдакий «босс» в GLBP-домене. AVG указывает остальным маршрутизаторам, как распределять трафик по средству раздачи им MAC-адресов, когда прилетает ARP-запрос. Стоит отметить, что в домене GLBP, AVG-маршрутизатор может быть только один, но он также может быть AVF-членом.
AVF (Active Virtual Forwarder) — маршрутизатор в группе GLBP, занимающийся обработкой трафика в сети.
GLBP Priority — значение приоритета, определяющее какой маршрутизатор в GLBP группе будет AVG. По умолчанию это значение равно 100 (диапазон приоритета может быть от 1 до 255). Может настраиваться вручную, т.е. сетевой инженер сам определяет, какой роутер будет «начальником», а какой будет «подчиненным». Чем выше приоритет, тем больше вероятность, что маршрутизатор получит AVG-роль. Обычно AVG-роль даётся более мощным маршрутизаторам.
GLBP Weight — значение так называемого «веса» маршрутизатора в GLBP-группе. GLBP Weight определяет уровень нагрузки на маршрутизатор. Это значение «плавающее» и может меняться в зависимости от нагрузки на физический канал (задействован механизм Object Tracking), но может настраиваться и вручную.
GLBP Virtual IP Address — виртуальный IP-адрес в домене GLBP. Используется в качестве адреса шлюза по умолчанию для легитимных хостов.
GLBP Hijacking
Техника этой сетевой атаки заключается в том, чтобы навязать свое устройство в качестве главного маршрутизатора с помощью инъекции вредоносного GLBP-пакета с максимальным значением приоритета. Успешная эксплуатация приводит к MITM-атаке, в результате которой ты сможешь перехватить трафик внутри сети, проводить редирект или вызвать DoS. Достаточно собрать GLBP-пакет с наивысшим значением приоритета 255 и направить его в сторону локальной сети.
Видео с моей демонстрацией GLBP Hijacking атаки: https://www.youtube.com/watch?v=X_rCoaWcQpA


Стенд
В качестве стенда для практической части статьи выступит следующая сеть:
-
Маршрутизаторы Cisco vIOS — GW1 и GW2
-
Коммутаторы Cisco vIOS — SW1 и SW2
-
Машина с Windows, выступающая в качестве шары SMB — Dustup
-
Машина с Debian, выступающая в качестве FTP сервера — Papercut
-
Машина с Kali Linux, выступающая в качестве ОС злоумышленника — Evil
-
Машина с Linux Mint, выступающая в качестве легитимного хоста — Boundless



Вооружение
Для проведения атаки я буду использовать Loki. Это специальный пакетный инжектор, позволяющий проводить атаки на L2/L3 протоколы, также он умеет и в GLBP-инъекцию, когда в Scapy нет реализации протокола GLBP. Он выполнит инъекцию вредоносного GLBP-пакета со значением 255, что в свою очередь позволяет нам получить AVG-роль. В итоге, у нас появляется возможность перехватывать трафик.

Для проведения атаки нам понадобится следующая информация:
-
IP-адрес AVG-маршрутизатора (Active маршрутизатора)
-
Используемый виртуальный IP-адрес
Всю необходимую информацию ты сможешь извлечь путем анализа GLBP-трафика


Проведение атаки на домен GLBP и перехват трафика
В первую очередь нам необходимо переключить интерфейс в неразборчивый режим и разрешить маршрутизацию трафика.
necreas1ng@Evil:~$ sudo ifconfig eth0 promisc necreas1ng@Evil:~$ sudo sysctl -w net.ipv4.ip_forward=1
Запускаем Loki.
necreas1ng@Evil:~$ sudo loki_gtk.py
Выбираем интерфейс.

Loki обнаружил GLBP-объявления маршрутизаторов GW1 и GW2.

Выбираем маршрутизатор GW1 под адресом 10.10.100.100 и начинаем инжект с помощью опции Get IP

Строение вредоносного GLBP-пакета. Приоритет максимальный, как и значение веса (GLBP Weight)

После выполнения инъекции необходимо создать вторичный IP-адрес на нашем сетевом интерфейсе со значением виртуального IP-адреса. Также укажем 24-битную маску.
necreas1ng@Evil:~$ sudo ifconfig eth0:1 10.10.100.254 netmask 255.255.255.0
Для того, чтобы видеть не только входящий трафик, но и исходящий — настроим правило SNAT (MASQUEARDING).
necreas1ng@Evil:~$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Теперь нужно удалить маршрут по умолчанию на нашей машине и прописать новый, который будет ходить через бывший AVG-маршрутизатор. Даже не смотря на то, что мы отжали AVG-роль у маршрутизатора GW1 — он всё равно сможет выполнить маршрутизацию трафика.
necreas1ng@Evil:~$ sudo route del default necreas1ng@Evil:~$ sudo route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.10.100.100
Вот и всё, мы стали «человеком по середине», теперь у нас есть возможности для осуществления:
-
MiTM-атаки
-
DoS-атаки
-
Перенаправления трафика
Воспользуемся инструментом net-creds.py для перехвата чувствительных данных из сетевого трафика. И для теста я прочитаю SMB-шару (Находится на машине Dustup)
necreas1ng@Evil:~$ sudo python2 net-creds/net-creds.py -i eth0



Превентивные меры
-
Аутентификация. Использование аутентификации не позволяет неавторизованным маршрутизаторам входить в процесс GLBP.
GW1(config)# interface GigabitEthernet0/0 GW1(config)# glbp 1 authentication md5-string i_4m_p4percut
GW2(config)# interface GigabitEthernet0/0 GW2(config)# glbp 1 authentication md5-string i_4m_p4percut
-
Ограничение GLBP-трафика. С помощью механизма ACL можно дропать GLBP-трафик (GLBP использует адрес 224.0.0.102 и UDP под номером порта 3222)
GW1(config)# ip access-list extended DropGLBP GW1(config-ext-nacl)# permit udp 10.10.100.0 0.0.0.3 eq 3222 host 224.0.0.102 GW1(config-ext-nacl)# deny udp any eq 3222 any eq 3222 GW1(config-ext-nacl)# permit ip any any GW1(config)# interface GigabitEthernet0/0 GW1(config-if)# ip access-group DropGLBP in
GW2(config)# ip access-list extended DropGLBP GW2(config-ext-nacl)# permit udp 10.10.100.0 0.0.0.3 eq 3222 host 224.0.0.102 GW2(config-ext-nacl)# deny udp any eq 3222 any eq 3222 GW2(config-ext-nacl)# permit ip any any GW2(config)# interface GigabitEthernet0/0 GW2(config-if)# ip access-group DropGLBP in
Outro
Вот таким образом можно провести атаку на протокол GLBP. Кстати говоря, данная атака может служить отличной альтернативой популярному ARP-спуфингу, открываются большие возможности даже для проведения различных Relay-атак в доменах Active Directory.
Протокол достаточно редко где используется в рамках продакшна, но тем не менее, меня это не остановило написать статью. Думаю, моя работа подарит пентестерам новый вектор атаки, а сетевые администраторы повысят уровень безопасности своих сетей.
ссылка на оригинал статьи https://habr.com/ru/post/675510/
Добавить комментарий