Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
За всю свою карьеру сетевого инженера я повидал немало сетей, где использовалось оборудование Cisco. И в большинстве случаев это оборудование работало с конфигурацией по умолчанию, что ставит локальную сеть под большой удар со стороны потенциального нарушителя. Из этой статьи ты узнаешь, какой кошмар может возникнуть в сетях Cisco, если к их настройке отнеслись халатно.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
TACACS+ (Terminal Access Controller Access Control System) — протокол, предназначенный для централизованного оперирования учетными записями, которые используются непосредственно для администрирования сетевого оборудования. Сервер TACACS+ решает, позволить или запретить доступ пользователю, который пытается войти в панель управления сетевым оборудованием.
У этого протокола есть две версии: TACACS и TACACS+. Мы будем разбираться именно с TACACS+.
«Плюсовая» версия отличается повышенным уровнем безопасности и интегрированным шифрованием. Также разделены функции AAA (аутентификация, авторизация и учет), и их можно использовать по отдельности.
Если злоумышленник сумеет встать посередине между клиентом и сервером TACACS, он сможет перехватить ключ для аутентификации в зашифрованном виде, а потом провести против него локальный брутфорс. То есть ты и брутфорсишь ключ, и в логах не палишься. И если тебе удастся сбрутить ключ, то ты сможешь получить доступ к сетевому оборудованию и расшифровать трафик в Wireshark. Да, Wireshark умеет работать с двумя версиями протокола TACACS. Предоставив «Акуле» ключ, ты сможешь дешифровать остальную часть данных, в которой хранится логин пользователя.
Сперва нужно провести MITM-атаку, тут все зависит от обстоятельств и твоих предпочтений. Для примера я реализую ARP-спуфинг в отношении TACACS-агента и TACACS-сервера.
10.10.100.10
.
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
Ettercap
В качестве прослушивающего интерфейса выступит eth0. Запустим сканирование хостов.
Сканирование хостов
Target 1 будет хост с IP-адресом 10.10.100.10
, а Target 2 — 10.10.100.70
.
Проводим ARP-спуфинг против двух целей.
Начало ARP-спуфинга
Теперь необходимо запустить Loki. Это специальный инструмент, созданный для анализа безопасности протоколов L2/L3. По возможностям он не хуже той же популярной Yersinia и составляет ей серьезную конкуренцию. Loki также умеет брутфорсить ключи TACACS. В случае успеха брутфорса ключа в зашифрованном виде (обычно он зашифрован в формате MD5) мы сможем получить доступ к оборудованию и расшифровать зашифрованный TACACS-трафик.
Запускаем Loki:
necreas1ng@Inguz:~$ sudo loki_gtk.py
Выбираем интерфейс для атаки.
Loki. Выбор интерфейса
Также нужно указать путь до словаря, чтобы провести брутфорс зашифрованного ключа. Обязательно снимай галочку с опции Use Bruteforce, иначе Loki будет ломать пароль полным перебором, не задействовав сам словарь.
Настройка пути до словаря
Теперь нужно ждать, пока легитимный администратор войдет на устройство через сервер TACACS. Предполагается, что сетевой администратор уже зашел, а мы, встав посередине через ARP-спуфинг, перехватываем трафик. И при этом легитимные хосты не понимают, что в их соединение вмешался кто‑то посторонний.
Локи обнаружил соединение TACACS
Теперь нажимаем на кнопку CRACK и ждем, пока Loki ломанет пароль.
Локи взломал ключ TACACS. Пароль: secret1234
Отлично, нам удалось сбрутить ключ, теперь нужно расшифровать TACACS-трафик. Как я и сказал, Wireshark умеет работать с зашифрованным трафиком TACACS при наличии ключа.
Скармливаем «Акуле» ключ
Видим, какой баннер использовался.
Использовавшийся баннер
Обнаруживаем логин пользователя admin
.
В итоге у нас есть креды admin:secret1234
, с которыми можно зайти на само оборудование. Пожалуй, проверю их на валидность.
Успешная аутентификация на оборудовании SW1
Вот таким образом можно атаковать TACACS+ и получать доступ к панели управления сетевым оборудованием.
CDP (Cisco Discovery Protocol) — разработка инженеров Cisco Systems, протокол канального уровня, созданный для того, чтобы устройства могли обмениваться информацией. CDP может помочь сетевому администратору и облегчить процесс траблшутинга, но для злоумышленника… Сейчас выясним.
По умолчанию CDP выполняет рассылку объявлений на все свои порты. Но что, если злоумышленник подключится в порт того же коммутатора? Воспользовавшись сетевым сниффером, будь то Wireshark или tcpdump, он сможет извлечь ценную информацию о самом устройстве — начиная его моделью и заканчивая версией Cisco IOS. Воспользовавшись этой информацией, он сможет провести перечисление той же версии Cisco IOS и найти по ней уязвимость, а затем проэксплуатировать ее.
Дамп CDP-трафика
Если злоумышленник спровоцирует рассылку огромного количества CDP-объявлений, то сам флудинг вызовет перегрузку коммутатора и нарушит работу сети. Также будет переполняться таблица соседей CDP. Проводить эту атаку просто, поэтому не буду вдаваться в подробности.
На этот раз мы воспользуемся Yersinia:
necreas1ng@Inguz:~$ sudo yersinia -G
Инструмент обнаружил коммутатор SW1
Выставляем опцию flooding CDP table и начинаем атаку. Центральный процессор коммутатора будет перегружен, как и таблица CDP-соседей, вследствие чего возникает «сетевой паралич».
Начало атаки
Перегруженный центральный процессор коммутатора
Переполняющаяся таблица CDP-соседей
DTP (Dynamic Trunking Protocol) — протокол канального уровня, призванный организовать автоматическую систему транкинга. Благодаря DTP коммутаторы сами решают, какой порт будет работать в режиме магистрального канала (Trunk), а какой нет. На мой взгляд, использование DTP говорит о некачественном дизайне сети. Транки должны быть строго там, где они нужны, и это должно быть задокументировано. Особенно смешно, когда сетевой инженер сам не знает, какой порт у него в транке, а какой в режиме доступа.
По умолчанию порты коммутатора работают в режиме Dynamic Auto. Это говорит о том, что коммутационный порт находится в режиме инициации транка со стороны соседнего коммутатора. Пентестеру нужно физически подключиться к коммутатору и отправить кадр DTP Desirable, который триггерит переключение порта в режим транка. Далее злоумышленник сможет провести перечисление сетей VLAN с помощью анализа кадров STP и обойти сегментацию сети VLAN — создав виртуальные интерфейсы.
info
Подробнее об атаке протокола DTP ты сможешь узнать из другой моей статьи.
Для атаки понадобится скрипт, который будет генерировать кадр DTP Desirable. Для этого я написал небольшую программу DTPHijacking.py. Ее исходный код открыт, можешь изучить его.
Инструмент DTPHijacking.pynecreas1ng@Inguz:~$ sudo python3 DTPHijacking.py --interface eth0
Строение DTP-инъекции
Хочу отметить, что Access/Desirable (0x03)
указывает на то, что DTP-кадр имеет тип Desirable, который велит порту переключиться в режим Trunk. А 802.1Q/802.1Q (0xa5)
указывает на тип инкапсуляции 802.1Q.
info
Ни в коем случае не прерывай работу скрипта. Он инжектит DTP Desirable каждые три секунды. Созданные динамически магистральные каналы на коммутаторе живут всего пять минут. Через пять минут транк отваливается.
Проанализировав STP-кадры, мы узнаем о существовании сетей VLAN 30 и 60.
Анализ STP-кадров
С данной информацией и наличием транк‑порта мы можем получить доступ к этим сетям 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
Полученные адреса по DHCP для виртуальных интерфейсов
Успешные ICMP-запросы в сторону шлюзов сетей VLAN 30 и 60
Таким образом, можно обойти VLAN-сегментацию и получить доступ к VLAN-сетям.
VTP (VLAN Trunking Protocol) — протокол, созданный для централизованного управления сетями VLAN. Чтобы отслеживать актуальную базу данных VLAN, коммутаторы проверяют специальные номера ревизии. Когда происходит любое обновление таблицы, номер ревизии повышается на единицу. И если коммутатор обнаружит конфигурацию, у которой номер ревизии выше, он автоматически обновит свою базу данных VLAN.
Summary Advertisement
. Обычно рассылается в ответ на сообщение о том, что коммутатор обнаружил Summary Advertisement
с бóльшим номером ревизии конфигурации.
Атаку на протокол VTP можно провести только с транкового порта, поскольку объявления VTP транслируются и принимаются только на транковых портах. Поэтому при пентесте после атаки на DTP твоей следующей целью может быть VTP. Для атаки на домен VTP я буду использовать Yersinia. С ее помощью я проведу VTP-инжект, который стирает всю базу данных VLAN и тем самым парализует сеть.
info
У протокола VTP есть целых три версии. В этой статье я проведу атаку против первой версии — VTPv1.
Для стирания всей базы данных VLAN выбираем опцию deleting all VTP vlans.
Начало атаки на домен VTP
База данных VLAN перед атакой
База данных VLAN после атаки
Сетевой паралич
Хост из сети VLAN 60 утратил связность до шлюза.
EIGRP (Enhanced Interior Gateway Routing Protocol) — протокол динамической маршрутизации. Является дистанционно‑векторным протоколом. При отсутствии аутентификации и конфигурации пассивных интерфейсов злоумышленник может вмешаться в процесс EIGRP-маршрутизации и вызвать отравление таблиц маршрутизации. Более того, сеть 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. Приступим.
Источник: xakep.ru