Содержание статьи
Сегодня маршрутизаторы производства Cisco Systems лежат в основе всемирной паутины. Они достаточно часто встречаются в ходе проведения работ по тестированию на проникновение, причем с привилегированным доступом level 15, что позволяет использовать их для дальнейшего развития атак на корпоративные сети и платежные системы. Да, слабые места в Cisco IOS присутствуют, как и в любом другом ПО, но лишь немногие специалисты умеют пользоваться недостатками самого IOS, используя Remote Buffer Overflow...
«Кис-кис-кис», или как обнаружить кошку в Сети
Для начала проанализируем общее состояние дел с безопасностью Cisco IOS. Сканеры уязвимостей делают большую работу по выявлению устаревших версий IOS. Это хорошо работает для определения, пропатчено устройство или нет, но нисколько не помогает тестировщику, который не имеет за плечами большого опыта исследований Cisco IOS. За редкими исключениями, остается небольшое количество служб, которые обычно используются во внутрикорпоративной сети компании, и доступ к ним из общей Сети, как правило, запрещен. Например, это могут быть SNMP, Telnet, SSH, HTTP и HTTPS. Но на практике найти кошку в мутной воде всемирной паутины с открытыми портами во внешний мир на сегодняшний день достаточно легко. Ты также можешь найти запущенную службу Finger, обеспечивающую взаимодействие служб мультимедиа протоколов, таких как SIP и H.323, но для получения удаленного доступа к маршрутизатору следует тестировать преимущественно первые пять служб.
Первая служба, которую я хочу обсудить, это SNMP. Как ни странно, SNMP часто оставляют без присмотра на большом числе маршрутизаторов. Причиной этого может быть общее непонимание того, чем SNMP является на самом деле. Simple Network Management Protocol предоставляет широкий спектр информации в большом наборе систем в стандартном формате. Независимо от того, кто производитель вашего коммутатора или маршрутизатора, почти любой клиент SNMP-мониторинга программного обеспечения будет работать с этим устройством, при условии, что SNMP включен и настроен.
Многие сетевые администраторы не понимают, что SNMP предоставляет слишком широкий спектр информации о работающем устройстве, а записи сообществ SNMP могут быть использованы для получения полного контроля над этим устройством. В случае с Cisco IOS записываемые сообщества SNMP могут быть использованы для выгрузки или загрузки и запуска альтернативной конфигурации устройства, либо изменения его текущей конфигурации.
Маршрутизатор с включенной службой Telnet и с тривиальным паролем может быть угнан почти мгновенно через записи сообщества SNMP. Я обычно ищу кошки при помощи SNMP и старого доброго сканера nmap. Да-да, именно с помощью него Тринити взломала во второй серии Матрицы сеть электростанции, и именно его так любят использовать в АНБ. В дистрибутив nmap включены два интересных сценария для работы с SNMP — это SNMP-sysdescr.nse и snmp-brute.nse.
Для удобства использования я немного изменил первый таким образом, чтобы полученный отклик с описанием устройства сразу сохранялся в файле ip_with_snmp.txt. Сам сценарий, конечно же, ищи на нашем DVD. Итак, а что же мы будем сканировать? Например, можно просканировать своего провайдера, предварительно узнав все принадлежащие ему 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)
Киска лакает молоко
И спрашивается, что нам с этой байдой делать дальше? А вот что — натравливаем на найденную киску Metasploit. В принципе, есть два варианта использования: можно пользоваться Metasploit Framework, а можно использовать автоматический анализатор Metasploit Pro. Для старых версий операционной системы Cisco IOS известно несколько уязвимостей HTTP. Две из них, о которых сейчас пойдет речь, относятся к уязвимостям типа «Обход аутентификации». Первая уязвимость CVE-20000945 относится к отсутствию проверки подлинности в Interface Manager Cisco IOS устройств. Этот баг позволяет не прошедшим проверку подлинности получить привилегированный доступ к устройству с Cisco IOS через веб-интерфейс.
Вторая уязвимость CVE-02001-0537 позволяет обойти проверку подлинности, указав уровень проверки подлинности выше, чем «15» в запросе HTTP. Это также предоставляет привилегированный доступ к устройству через веб-интерфейс. С открытым исходным кодом Metasploit Framework в настоящее время обеспечивает оба модуля для эксплуатации этих уязвимостей:
- /auxiliary/scanner/http/cisco_device_manager
- /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, Metasploit теперь содержит модуль, который использует сообщества SNMP, доступные для записи, выгрузки/загрузки и запуска альтернативной конфигурации устройства. Вот на этом и остановимся подробнее. Запускаем наш любимый Metasploit Framework:
msf > msfrpcd –S –U msf –P 123
Сначала находим с помощью SNMP Community Scanner имя readwrite сообщества. Далее для выгрузки конфигурации из горячей киски выбираем конфиг. Далее настраиваем TFTP-сервер. Никакого NAT — сообщенный киске IP-адрес, куда выгружать конфиг, должен быть белым. И, собственно, получаем сам файл конфигурации.
То же самое можно проделать с использованием Metasploit Express и Metasploit Pro — они используют оба эти модуля для автоматического захвата файла конфигурации уязвимых устройств с Cisco IOS. Во время сканирования подбор паролей к 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» увенчается успехом, то автоматически ты получишь дополнительную информацию о системе, в том числе о текущей конфигурации устройства.
В исследованиях, перечисленных выше, нет ничего нового. Новым является лишь простота использования продуктов Metasploit и их способность по цепочке автоматически скомпрометировать уязвимые устройства. По большому счету, эти тесты являются лишь ориентиром для дальнейшего развития исследований безопасности сетевых устройств. И есть еще одна вещь, о которой я не упомянул до сих пор. Что же мы будем делать с полученными файлами конфигурации Cisco IOS после того, как мы их получим в процессе тестирования сетевых устройств? Эти файлы содержат рабочие конфигурации устройств, включающие в себя VTY-пароли, пароли «enable», ключи VPN, SSL-сертификаты и параметры доступа к Wi-Fi. Metasploit будет автоматически обрабатывать эти файлы конфигурации, чтобы выбрать из них конфиденциальные данные и сохранить их как данные аутентификации.
Metasploit Express и Metasploit Pro могут автоматически использовать полномочия, полученные из файлов конфигурации, чтобы получить доступ к другим устройствам этой же сети. Если доступ был получен к одному из устройств Cisco через слабые сообщества SNMP, и было обнаружено, что VTY-пароль — «ciscorules!», то ты можешь использовать профиль подбора паролей «knownonly » для того, чтобы с помощью любого протокола автоматически попробовать этот пароль в отношении любого другого устройства в той же самой сети. После того, как ты получишь доступ к другим устройствам, конфигурационные файлы будут получены на твой компьютер и запустится процесс их анализа. Ты можешь легко применить пароли, взятые из маршрутизаторов Cisco, для входа на сайт интрасети или использовать их для получения доступа к множеству других сетевых устройств.
Переполнение буфера в маршрутизаторе Cisco на основе процессора Motorola
Исследовательская группа по проблемам безопасности Phenoelit когда-то давно создала программу с кодом командного интерпретатора для проведения удаленной атаки на маршрутизатор Cisco 1600 на основе процессора Motorola 68360 QUICC (программа была представлена на азиатской конференции Blackhat аж в 2002 году).
Для этой атаки в векторе вторжения используется переполнение буфера в операционной системе IOS от Cisco и несколько новых методов использования структур управления кучей в IOS. Изменяя структуры кучи, можно внедрить и исполнить вредоносный код. В опубликованном варианте атаки код командного интерпретатора представляет собой созданный вручную код в виде машинных команд Motorola, который открывает потайной ход на маршрутизаторе.
Этим кодом можно воспользоваться при наличии любого переполнения буфера в устройствах Cisco (более подробная информация об этой атаке доступна по адресу phenoelit.de). И теперь ты, как настоящий гуру устройств Cisco, можешь смело поместить этот шелл-код в свою коллекцию Metasploit Framework для последующих экспериментов по удаленному переполнению буфера и его запуска на удаленном устройстве. Но это уже будет совсем другая история…