Содержание статьи
- Перехват и дешифровка ключа TACACS+
- Шаг 1: MITM-атака
- Шаг 2: Loki
- Атаки на протокол CDP
- Сбор информации
- DoS-атака CDP Flooding
- Злоупотребление динамическим транкингом
- Сетевой паралич при атаке на VTP
- Какие бывают роли в VTP-домене
- Типы объявлений
- Атаки на протокол EIGRP
- Разведка в сети
- Поддельные соседи EIGRP
- Черная дыра
- Злоупотребление K-значениями
- Переполнение таблиц маршрутизации
- MITM-атака через абьюз проприетарных FHRP-протоколов Cisco
- Зачем нужен FHRP
- Угон GLBP и перехват трафика
- Угон HSRP и перехват трафика
- Эксплуатация Cisco Smart Install
- Эксфильтрация конфигурации и перечисление через SNMP
- cisco_config_tftp
- snmp_enum
- Постэксплуатация взломанного устройства
- Bruteforce hashes
- Cisco EEM
- Lateral VLAN Segmentation Bypass
- Configuration Enumeration
- Выводы
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Перехват и дешифровка ключа TACACS+
TACACS+ (Terminal Access Controller Access Control System) — протокол, предназначенный для централизованного оперирования учетными записями, которые используются непосредственно для администрирования сетевого оборудования. Сервер TACACS+ решает, позволить или запретить доступ пользователю, который пытается войти в панель управления сетевым оборудованием.
У этого протокола есть две версии: TACACS и TACACS+. Мы будем разбираться именно с TACACS+.
«Плюсовая» версия отличается повышенным уровнем безопасности и интегрированным шифрованием. Также разделены функции AAA (аутентификация, авторизация и учет), и их можно использовать по отдельности.
Если злоумышленник сумеет встать посередине между клиентом и сервером TACACS, он сможет перехватить ключ для аутентификации в зашифрованном виде, а потом провести против него локальный брутфорс. То есть ты и брутфорсишь ключ, и в логах не палишься. И если тебе удастся сбрутить ключ, то ты сможешь получить доступ к сетевому оборудованию и расшифровать трафик в Wireshark. Да, Wireshark умеет работать с двумя версиями протокола TACACS. Предоставив «Акуле» ключ, ты сможешь дешифровать остальную часть данных, в которой хранится логин пользователя.
Шаг 1: MITM-атака
Сперва нужно провести MITM-атаку, тут все зависит от обстоятельств и твоих предпочтений. Для примера я реализую ARP-спуфинг в отношении TACACS-агента и TACACS-сервера.
- В качестве агента TACACS выступит коммутатор SW1 с IP-адресом
10.
.10. 100. 10 - В качестве сервера TACACS выступит TACACSGUI с адресом
10.
.10. 100. 70
ARP-спуфинг я реализую через утилиту Ettercap. Для начала необходимо переключить интерфейс в неразборчивый режим и разрешить маршрутизацию:
necreas1ng@Inguz:~$ sudo ifconfig eth0 promisc
necreas1ng@Inguz:~$ sudo sysctl -w net.ipv4.ip_forward=1
Запускаем Ettercap:
necreas1ng@Inguz:~$ sudo ettercap -G
В качестве прослушивающего интерфейса выступит eth0. Запустим сканирование хостов.
Target 1 будет хост с IP-адресом 10.
, а Target 2 — 10.
.
Проводим ARP-спуфинг против двух целей.
Шаг 2: Loki
Теперь необходимо запустить Loki. Это специальный инструмент, созданный для анализа безопасности протоколов L2/L3. По возможностям он не хуже той же популярной Yersinia и составляет ей серьезную конкуренцию. Loki также умеет брутфорсить ключи TACACS. В случае успеха брутфорса ключа в зашифрованном виде (обычно он зашифрован в формате MD5) мы сможем получить доступ к оборудованию и расшифровать зашифрованный TACACS-трафик.
Запускаем Loki:
necreas1ng@Inguz:~$ sudo loki_gtk.py
Выбираем интерфейс для атаки.
Также нужно указать путь до словаря, чтобы провести брутфорс зашифрованного ключа. Обязательно снимай галочку с опции Use Bruteforce, иначе Loki будет ломать пароль полным перебором, не задействовав сам словарь.
Теперь нужно ждать, пока легитимный администратор войдет на устройство через сервер TACACS. Предполагается, что сетевой администратор уже зашел, а мы, встав посередине через ARP-спуфинг, перехватываем трафик. И при этом легитимные хосты не понимают, что в их соединение вмешался кто‑то посторонний.
Теперь нажимаем на кнопку CRACK и ждем, пока Loki ломанет пароль.
Отлично, нам удалось сбрутить ключ, теперь нужно расшифровать TACACS-трафик. Как я и сказал, Wireshark умеет работать с зашифрованным трафиком TACACS при наличии ключа.
Видим, какой баннер использовался.
Обнаруживаем логин пользователя admin
.
В итоге у нас есть креды admin:
, с которыми можно зайти на само оборудование. Пожалуй, проверю их на валидность.
Вот таким образом можно атаковать TACACS+ и получать доступ к панели управления сетевым оборудованием.
Атаки на протокол CDP
CDP (Cisco Discovery Protocol) — разработка инженеров Cisco Systems, протокол канального уровня, созданный для того, чтобы устройства могли обмениваться информацией. CDP может помочь сетевому администратору и облегчить процесс траблшутинга, но для злоумышленника... Сейчас выясним.
Сбор информации
По умолчанию CDP выполняет рассылку объявлений на все свои порты. Но что, если злоумышленник подключится в порт того же коммутатора? Воспользовавшись сетевым сниффером, будь то Wireshark или tcpdump, он сможет извлечь ценную информацию о самом устройстве — начиная его моделью и заканчивая версией Cisco IOS. Воспользовавшись этой информацией, он сможет провести перечисление той же версии Cisco IOS и найти по ней уязвимость, а затем проэксплуатировать ее.
DoS-атака CDP Flooding
Если злоумышленник спровоцирует рассылку огромного количества CDP-объявлений, то сам флудинг вызовет перегрузку коммутатора и нарушит работу сети. Также будет переполняться таблица соседей CDP. Проводить эту атаку просто, поэтому не буду вдаваться в подробности.
На этот раз мы воспользуемся Yersinia:
necreas1ng@Inguz:~$ sudo yersinia -G
Выставляем опцию flooding CDP table и начинаем атаку. Центральный процессор коммутатора будет перегружен, как и таблица CDP-соседей, вследствие чего возникает «сетевой паралич».
Злоупотребление динамическим транкингом
DTP (Dynamic Trunking Protocol) — протокол канального уровня, призванный организовать автоматическую систему транкинга. Благодаря DTP коммутаторы сами решают, какой порт будет работать в режиме магистрального канала (Trunk), а какой нет. На мой взгляд, использование DTP говорит о некачественном дизайне сети. Транки должны быть строго там, где они нужны, и это должно быть задокументировано. Особенно смешно, когда сетевой инженер сам не знает, какой порт у него в транке, а какой в режиме доступа.
По умолчанию порты коммутатора работают в режиме Dynamic Auto. Это говорит о том, что коммутационный порт находится в режиме инициации транка со стороны соседнего коммутатора. Пентестеру нужно физически подключиться к коммутатору и отправить кадр DTP Desirable, который триггерит переключение порта в режим транка. Далее злоумышленник сможет провести перечисление сетей VLAN с помощью анализа кадров STP и обойти сегментацию сети VLAN — создав виртуальные интерфейсы.
info
Подробнее об атаке протокола DTP ты сможешь узнать из другой моей статьи.
Для атаки понадобится скрипт, который будет генерировать кадр DTP Desirable. Для этого я написал небольшую программу DTPHijacking.py. Ее исходный код открыт, можешь изучить его.
necreas1ng@Inguz:~$ sudo python3 DTPHijacking.py --interface eth0
Хочу отметить, что Access/
указывает на то, что DTP-кадр имеет тип Desirable, который велит порту переключиться в режим Trunk. А 802.
указывает на тип инкапсуляции 802.1Q.
info
Ни в коем случае не прерывай работу скрипта. Он инжектит DTP Desirable каждые три секунды. Созданные динамически магистральные каналы на коммутаторе живут всего пять минут. Через пять минут транк отваливается.
Проанализировав STP-кадры, мы узнаем о существовании сетей VLAN 30 и 60.
С данной информацией и наличием транк‑порта мы можем получить доступ к этим сетям VLAN, при этом обойдя VLAN-сегментацию. Необходимо будет создать виртуальные интерфейсы и назначить на них IP-адрес.
necreas1ng@Inguz:~$ sudo vconfig add eth0 30
necreas1ng@Inguz:~$ sudo vconfig add eth0 60
necreas1ng@Inguz:~$ sudo ifconfig eth0.30 up
necreas1ng@Inguz:~$ sudo ifconfig eth0.60 up
necreas1ng@Inguz:~$ sudo dhclient -v eth0.30
necreas1ng@Inguz:~$ sudo dhclient -v eth0.60
Таким образом, можно обойти VLAN-сегментацию и получить доступ к VLAN-сетям.
Сетевой паралич при атаке на VTP
VTP (VLAN Trunking Protocol) — протокол, созданный для централизованного управления сетями VLAN. Чтобы отслеживать актуальную базу данных VLAN, коммутаторы проверяют специальные номера ревизии. Когда происходит любое обновление таблицы, номер ревизии повышается на единицу. И если коммутатор обнаружит конфигурацию, у которой номер ревизии выше, он автоматически обновит свою базу данных VLAN.
Какие бывают роли в VTP-домене
- VTP Server. Коммутатор в роли VTP Server может создавать новые VLAN, удалять старые или менять информацию в самих VLAN. Также он занимается генерированием объявлений VTP для остальных членов домена.
- VTP Client. Коммутатор в этой роли будет получать специальные анонсы VTP от других коммутаторов в домене, чтобы обновлять базы данных VLAN у себя. Клиенты ограничены в возможностях создавать VLAN и даже не имеют права локально изменять конфигурацию VLAN. Иначе говоря, доступ read only.
- VTP Transparent. В этом режиме коммутатор не участвует в процессах VTP и может вести у себя полное и локальное администрирование всей конфигурации VLAN. Работая в прозрачном режиме, коммутаторы занимаются только передачей объявлений VTP от других коммутаторов, не затрагивая свою конфигурацию сетей VLAN. У таких коммутаторов номер ревизии всегда будет равен нулю, и против них атаку провести не получится.
Типы объявлений
- Summary Advertisement. Объявление VTP, которое сервер VTP отправляет каждые 300 секунд (5 минут). В этом объявлении хранится имя домена VTP, версия протокола, отметка времени и значение MD5-хеша конфигурации.
- Subset Advertisement. Это объявление VTP, которое отправляется при каждом изменении конфигурации VLAN.
-
Advertisement Request — запрос от клиента VTP к серверу VTP на сообщение
Summary
. Обычно рассылается в ответ на сообщение о том, что коммутатор обнаружилAdvertisement Summary
с бóльшим номером ревизии конфигурации.Advertisement
Атаку на протокол VTP можно провести только с транкового порта, поскольку объявления VTP транслируются и принимаются только на транковых портах. Поэтому при пентесте после атаки на DTP твоей следующей целью может быть VTP. Для атаки на домен VTP я буду использовать Yersinia. С ее помощью я проведу VTP-инжект, который стирает всю базу данных VLAN и тем самым парализует сеть.
info
У протокола VTP есть целых три версии. В этой статье я проведу атаку против первой версии — VTPv1.
Для стирания всей базы данных VLAN выбираем опцию deleting all VTP vlans.
Хост из сети VLAN 60 утратил связность до шлюза.
Атаки на протокол EIGRP
EIGRP (Enhanced Interior Gateway Routing Protocol) — протокол динамической маршрутизации. Является дистанционно‑векторным протоколом. При отсутствии аутентификации и конфигурации пассивных интерфейсов злоумышленник может вмешаться в процесс EIGRP-маршрутизации и вызвать отравление таблиц маршрутизации. Более того, сеть EIGRP (иначе говоря, автономная система) «плоская», и у нее отсутствует сегментация на какие‑либо зоны. Что это может значить для атакующего? Ну, если он проведет инъекцию маршрута, то, скорее всего, этот маршрут распространится по всей автономной системе EIGRP.
В первую очередь для атаки на автономную систему EIGRP необходимо установить соседство с легитимным маршрутизатором EIGRP, что открывает большие возможности, начиная от базовой разведки и заканчивая разными инъекциями.
info
Не забывай, что без предварительной установки соседства легитимные EIGRP-маршрутизаторы не будут реагировать на рассылаемые тобой сообщения EIGRP (будь то Hello
, Update
или другие).
Для этого я воспользуюсь FRRouting. Это опенсорсное ПО, которое предназначено для создания маршрутизатора в Unix и Linux. FRRouting позволяет реализовать виртуальный маршрутизатор, поддерживающий протоколы BGP, OSPF, EIGRP, RIP и другие. Его достаточно развернуть на своей атакующей системе, и фактически ты сможешь притвориться легитимным роутером в домене маршрутизации. Как развернуть FRR на своей системе, я покажу в следующем разделе.
info
Для проведения атак на домены маршрутизации EIGRP я разработал несколько инструментов и поместил их в свой репозиторий EIGRPWN на GitHub. Там ты найдешь все инструменты, которые я использовал для атаки на EIGRP в этой статье.
Разведка в сети
Подключение к домену маршрутизации позволяет нам провести перечисление и разведку сетей и не тратить много времени на сканирование. Это способ значительно экономит твое драгоценное время. К тому же при сканировании ты можешь спалиться перед системами безопасности IPS/IDS. Как по мне, подключение к домену и перечисление — вектор атаки на домены маршрутизации, который дарит тебе наибольший импакт.
Но для этого всего нужно развернуть FRRouting. Приступим.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»