Пентест в телекоме или перехват управления сетевых устройств

Сегодня маршрутизаторы Cisco Systems лежат в основе всемирной паутины. Они достаточно часто встречаются в ходе тестирований на проникновение (penetration testing) в сети телекоммуникационных компаний, причем с привилегированным доступом level 15, что позволяет использовать эти роутеры для подмены маршрутной информации в глобальной сети Интернет по сценарию bgp route hijacking с реализацией сценария bgp route injection. Да, слабые места в Cisco IOS присутствуют, как и в любом другом программном обеспечении, но лишь немногие специалисты умеют пользоваться недостатками самого IOS, используя Remote Code Execution на этой платформе…

Идентифицируем маршрутизатор в сети

Для начала проанализируем общее состояние дел с безопасностью Cisco IOS. Сканеры уязвимостей делают большую работу по выявлению устаревших версий Cisco IOS. Это хорошо работает для определения, пропатчено устройство или нет, но нисколько не помогает инженеру электросвязи да пусть даже того же Ростелекома, который не имеет за плечами большого опыта исследований операционной системы Cisco IOS. За редкими исключениями, остается небольшое количество служб, которые обычно используются во внутреннем VLAN-е управления телекоммуникационной сети передачи данных, и доступ к ним из общей сети интернет, как правило, запрещен. Например, это могут быть SNMP, Telnet, SSH, HTTP и HTTPS. Но на практике найти маршрутизатор Cisco в мутной воде всемирной паутины с открытыми портами управления во внешний мир на сегодняшний день достаточно легко. Ты также можешь найти запущенную службу Finger, обеспечивающую взаимодействие служб мультимедиа протоколов, таких как SIP и H.323, но для получения удаленного доступа к маршрутизатору и последующей реализации bgp route injection тебе следует тестировать на предмет захвата управления преимущественно первые пять служб.

Первая служба, которую я хочу обсудить, это SNMP. Как ни странно, SNMP часто оставляют без присмотра на большом числе магистральных маршрутизаторов. Причиной этого может быть общее непонимание того, чем SNMP является на самом деле. Simple Network Management Protocol предоставляет широкий спектр информации в большом наборе систем в стандартном формате. Независимо от того, кто производитель найденного тобой в сети коммутатора или маршрутизатора, почти любой клиент SNMP-мониторинга будет работать с этим устройством, при условии, что SNMP включен и настроен на нём.

Многие начинающие пентестеры (penetration testers) сетей передачи данных не понимают, что SNMP предоставляет слишком широкий спектр информации о сетевом устройстве, а записи сообществ SNMP могут быть использованы для получения полного контроля над этим коммутатором или маршрутизатором. В случае с Cisco IOS записываемые (RW) сообщества SNMP могут быть использованы для выгрузки или загрузки или запуска уже твоей конфигурации устройства, либо просто небольшого изменения текущей конфигурации.

Маршрутизатор с включенной службой Telnet и с тривиальным паролем может быть угнан почти мгновенно через записи сообщества SNMP. Обычно я ищу маршрутизаторы при помощи SNMP и старого доброго сетевого сканера nmap. Да-да, именно с помощью него Тринити взломала во второй серии Матрицы сеть электростанции, и именно его так любят использовать в АНБ, о чем на неоднократно рассказывал бывший сотрудник Booz Allen Hamilton Эдвард Сноуден. В дистрибутив nmap включены два интересных сценария для работы с SNMP — это snmp-sysdescr.nse и snmp-brute.nse.

Для удобства использования я немного изменил первый скрипт таким образом, чтобы полученный отклик от сканируемых устройств с описанием сразу сохранялся в файле ip_with_snmp.txt. Итак, а что же мы будем сканировать? Например, можно просканировать своего провайдера, предварительно узнав все принадлежащие ему IP-префиксы, просто перейдя по адресу bgp.he.net и скопировав все циферки из раздела Prefixes v4 в файл my_telecom.txt. Командная строка в этом случае для запуска nmap будет выглядеть следующим образом:

nmap -sU -n -P0 -v -p 161 --script=snmp-sys.nse -iL my_telecom.txt

  • -sU — ведь правда, что служба SNMP работает по UDP протоколу, поэтому мы и задействуем только UDP-сканирование;
  • –р 161 — через 161-й порт;
  • -v — это я хочу видеть ход процесса на экране;
  • -n — не определять имена DNS для найденных хостов (и вправду, сейчас они мне совершенно ни к чему);
  • -P0 — не пинговать хосты в процессе сканирования.

Я обычно пользуюсь консольной версией, потому как GUI к ней нещадно зависает при таких объемах сканирования. Просто создай .bat-файл в каталоге, где лежит nmap с этой командной строкой, и запусти его.

Все эти опции заметно убыстряют процесс предварительного сканирования. Итак, в результате мы получим что-то вроде этого:



172.154.10.34 Cisco IOS Software, c7600rsp72043_rp Software (c7600rsp72043_rp-ADVIPSERVICESK9-M), Version 12.2(33)SRD2, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2009 by Cisco Systems, Inc.
Compiled Wed 20-May-09 2 System uptime: 117 days, 7:11:43.12 (1013470312 timeticks)

Выгружаем конфигурации активного оборудования

И спрашивается, что теперь со всем этим делать дальше? А вот что — натравливаем на найденную Cisco наш старый добрый Metasploit. В принципе, есть два варианта использования: можно пользоваться Metasploit Framework, а можно использовать автоматический анализатор Metasploit Pro или Community версии. Для старых версий операционной системы Cisco IOS известно несколько уязвимостей HTTP. Две из них, о которых сейчас пойдет речь, относятся к уязвимостям типа «Обход аутентификации». Первая уязвимость CVE-20000945 относится к отсутствию проверки подлинности в Interface Manager Cisco IOS устройств. Этот баг позволяет не прошедшим проверку подлинности пользователям получить привилегированный доступ к устройству с Cisco IOS через веб-интерфейс.

Вторая уязвимость CVE-02001-0537 позволяет обойти проверку подлинности, указав уровень проверки подлинности выше, чем «15» в запросе HTTP. Это также предоставляет привилегированный доступ к устройству через веб-интерфейс. С открытым исходным кодом Metasploit Framework в настоящее время обеспечивает оба модуля для эксплуатации этих уязвимостей:

  1. /auxiliary/scanner/http/cisco_device_manager
  2. /auxiliary/scanner/http/cisco_ios_auth_bypass

Metasploit Express и Metasploit Pro автоматически распознают Cisco IOS HTTP-службу во время сканирования. Теперь ты можешь проверить наличие этих двух уязвимостей на устройствах в сети любой телекоммуникационной компании и использовать их для получения доступа к рабочей конфигурации этих устройств.

В дополнение к этим двум известным уязвимостям, пароли сетевого устройства также могут быть найдены путем перебора с использованием службы HTTP. Протокол HTTP является довольно быстрым для подбора пароля по сравнению с медленными терминальными службами типа Telnet или SSH. Metasploit Express и Metasploit Pro автоматически скопируют в свою базу рабочую конфигурацию устройства после успешного подбора пароля к службе HTTP устройства Cisco IOS. Metasploit Pro и Metasploit Framework (равно как и сканер nmap в комплекте со сценарием snmpbrute.nse) включают в себя модуль SNMP brute force tool, написанный в качестве вспомогательного модуля, который может использовать словарь общих паролей для идентификации действительных SNMP сообществ маршрутизатора и определяет, являются ли они только для чтения, или для чтения и записи. В дополнение к основному модулю подбора пароля к SNMP, Metasploit теперь содержит модуль, который использует сообщества SNMP, доступные для записи, выгрузки/загрузки и запуска альтернативной конфигурации устройства. Вот на этом и остановимся подробнее. Запускаем наш любимый Metasploit Framework:

msf > msfrpcd –S –U msf –P 123

Сначала находим с помощью SNMP Community Scanner имя ReadWrite сообщества. Далее для выгрузки конфигурации из маршрутизатора под управлением Cisco IOS выгружаем конфиг. Далее настраиваем TFTP-сервер. Никакого NAT — сообщенный Cisco маршрутизатору IP-адрес, куда выгружать конфиг, должен быть белым.

И, собственно, получаем сам файл конфигурации.

Metasploit успешно подобрал пароли и выгрузил конфигурации устройств под управлением Cisco IOS

То же самое можно проделать с использованием Metasploit Express и Metasploit Pro — они используют оба эти модуля для автоматического захвата файла конфигурации уязвимых устройств с Cisco IOS. Во время сканирования подбор паролей к SNMP-сообществам запускается в фоновом режиме с небольшим списком слов из общего словаря. Если любой из этих паролей сработает, и если хотя бы одно SNMP сообщество обнаружено как записываемое, тогда Metasploit Pro настроит локальную службу TFTP и скачает файл конфигурации этого устройства сам.

Протокол SNMP теперь также интегрирован в средства интеллектуального подбора паролей, компонент которых использует список наиболее популярных имен сообществ в дополнение к динамически генерируемым паролям. Этот список получен в результате исследовательского проекта по изучению паролей веб-форм и встроенных файлов конфигурации. Так, проанализировав результаты, мы определили, какие пароли чаще всего используются, в том числе для SNMP-сообществ. Результаты этого проекта были удивительны: наиболее широко используются пароли «public@ES0» и «private@ES0», как это описано в примере конфигурации в документации Cisco.

Последние два протокола, которые хотелось бы обсудить, это Telnet и SSH. Эти протоколы и обеспечивают доступ к удаленной командной оболочке на целевом устройстве под управлением Cisco IOS (как правило, для привилегированных пользователей). Наиболее заметным отличием одного протокола от другого является то, что SSH часто требует знания удаленного имени пользователя и пароля, в то время как Telnet обычно запрашивает только пароль для проверки подлинности пользователя. Metasploit Framework содержит модули подбора паролей с использованием этих протоколов и будет автоматически создавать интерактивные сессии до тех пор, пока подходящий пароль не будет найден.

В целом Metasploit Express и Metasploit Pro всегда имели на борту готовые модули тестирования сетевых устройств через Telnet- и SSH-протоколы, но в последней версии стало возможным использовать список наиболее часто используемых паролей, составленный нашими аналитиками. В самом начале списка слов приведены необычные пароли. В целом подбор по словарю очень эффективен, если в качестве пароля для доступа к устройству было использовано реально существующее слово. Не углубляясь слишком далеко, я могу сказать, что некоторые провайдеры часто используют один и тот же пароль для настройки коммутаторов доступа.

После того, как был подобран пароль и установлена рабочая сессия через Telnet- или SSH-протоколы устройства Cisco IOS, функция автоматического сбора информации, включенная в Metasploit Express и Metasploit Pro, автоматически считает информацию о версии IOS и список активных пользователей, а затем попытается получить пароль к доступу «enable» путем перебора по списку наиболее распространенных паролей. Если попытка подобрать пароль «enable» увенчается успехом, то автоматически ты получишь дополнительную информацию о системе, в том числе о текущей конфигурации устройства.

Захват управления и bgp route injection

В исследованиях, перечисленных выше, нет ничего нового. Новым является лишь простота использования продуктов Metasploit и их способность по цепочке автоматически скомпрометировать уязвимые устройства телекоммуникационной компании, причем даже такой крупной, как Ростелеком. По большому счету, модули Metasploit являются лишь ориентиром для дальнейшей организации bgp route hijacking по сценарию bgp route injection. И есть еще одна вещь, о которой я не упомянул до сих пор. Что же мы будем делать с полученными файлами конфигурации маршрутизаторов Cisco IOS после того, как мы их получим в процессе тестирования на проникновение в оболочку управления сетевых устройств? Эти файлы содержат рабочие конфигурации устройств, включающие в себя VTY-пароли, пароли «enable», ключи VPN, SSL-сертификаты и параметры доступа к Wi-Fi. Metasploit будет автоматически обрабатывать эти файлы конфигурации, чтобы выбрать из них конфиденциальные данные и сохранить их как данные для аутентификации на других устройствах.

Metasploit пробует применять ранее найденные пароли из полученных конфигураций Cisco

Metasploit Express и Metasploit Pro могут автоматически использовать пароли, полученные из файлов конфигурации, чтобы пробовать получить доступ к другим устройствам этой же сети телекоммуникационной компании, повторно используя их. Если доступ был получен к одному из устройств Cisco через слабые сообщества SNMP, и было обнаружено, что VTY-пароль — «ciscorules!», то ты можешь использовать профиль подбора паролей «knownonly» для того, чтобы с помощью любого протокола автоматически попробовать этот пароль в отношении любого другого устройства в той же самой сети.

После того, как ты получишь доступ к другим устройствам, конфигурационные файлы будут получены на твой компьютер и запустится процесс их анализа. Ты можешь легко применить пароли, взятые из маршрутизаторов Cisco, для входа на сайты интрасети или использовать их для получения доступа к множеству других сетевых устройств, а также для реализации bgp route injection на пограничном маршрутизаторе в этой сети.

Remote Code Execution в маршрутизаторах Cisco на процессорах Motorola

Исследовательская группа по проблемам безопасности Phenoelit когда-то давно создала программу с кодом командного интерпретатора для проведения удаленного тестирования маршрутизатора Cisco 1600 на основе процессора Motorola 68360 QUICC (программа была представлена на азиатской конференции Blackhat аж в 2002 году).

При таком тестировании используется переполнение буфера в операционной системе Cisco IOS и несколько новых методов использования структур управления кучей в IOS. Изменяя структуры кучи, можно внедрить и исполнить свой кастомный код. В опубликованном варианте тестирования на проникновение код командного интерпретатора представляет собой созданный вручную код в виде машинных команд Motorola, который открывает потайной ход (backdoor) на маршрутизаторе.

Этим машинным кодом можно воспользоваться при наличии любого переполнения буфера в устройствах Cisco (более подробная информация об этом методе тестирования доступна по адресу phenoelit.de). И теперь ты, как настоящий гуру устройств Cisco и операционной системы IOS, можешь смело поместить этот шелл-код в свою коллекцию Metasploit Framework для последующих экспериментов по удаленному переполнению буфера и его запуска на удаленном устройстве для реализации bgp route leaking. Но это уже будет совсем другая история…

Более подробно обсудить со мной вопрос практического применения описанных инструментов и техник можно в личных сообщениях. Контактные данные указаны в соответствующем разделе этого сайта.

Leave a Comment