Издано: апреля 23, 2009
Введение
Часто системные администраторы имеют смутное представление о SNMP.
Вследствие неопределенного представления о предназначении этого
протокола, а соответственно и незнания потенциально возможных проблем,
вопросы его безопасности часто упускаются из виду.
Вероятно, вы удивитесь, впервые увидев вывод утилиты наподобие
SNMP-Enum Филиппа Уэйтенса (Filip Waeytens), запущенной на
Windows 2000 Server с включенным SNMP сервисом. Собранная информация
могла бы сильно озадачить системного администратора и дать
представление о богатых возможностях SNMP.
Тот факт, что протокол SNMP основан на UDP, делает его еще более
интересным. Являясь протоколом без установления соединения, UDP уязвим
к атаке подмены IP (IP spoofing). Если в вашей организации есть
маршрутизаторы Cisco, вы готовы к исследованию того, что с ними можно
сделать с помощью SNMP.
Сценарий атаки
Ознакомьтесь со сценарием атаки. Ниже приводится текущая конфигурация
атакуемого маршрутизатора (Victim Router):
Обратите внимание на правило доступа для группы RW. Это правило
пытается ограничить SNMP доступ на чтение/запись, разрешив его только
для пользователей из локальной сети (192.168.1.0).
Можно выделить два основных этапа атаки:
1. Обход правил доступа SNMP на атакуемом маршрутизаторе с целью
получения доступа к конфигурационному файлу маршрутизатора.
2. Создание GRE туннеля между атакуемым маршрутизатором и
маршрутизатором хакера для удаленного перехвата трафика атакуемой
клиентской машины (Victim Client).
Теория
Как упоминалось в статье “Exploiting Cisco Routers, Part 1″,
используя SNMP-команду SET, можно заставить Cisco маршрутизатор
замещать/отправлять его конфигурационный файл с помощью TFTP.
Отправив SNMP запрос SET с поддельным IP адресом (из диапазона,
описанного в RFC1918 - 192.168.1.0) мы должны заставить атакуемый
маршрутизатор отправить нам свой конфигурационный файл. Это
предполагает, что мы знаем `private community string’ и ACL, описанные
в строке конфигурации группы RW.
Обход правил доступа SNMP
Начнем с создания поддельного SNMP запроса. Используя небольшой Perl
скрипт и Ethereal, перехватим стандартный SNMP SET запрос “copy
config”, который мы будем использовать в качестве базового пакета.
После выполнения скрипта будет перехвачен SNMP пакет/ Как и ожидалось, этот запрос был отклонен
маршрутизатором, и конфигурационный файл не был отослан.
Обратите внимание на IP адрес атакующего (80.179.76.227). Теперь,
используя hex-редактор, мы изменим этот IP адрес и некоторый другие
поля заголовка пакета. В шестнадцатеричной системе счисления
подделанный IP адрес 192.168.1.5 выглядит как C0 A8 01 05.
Затем мы отправим пакет, используя file2cable (или любой другой
генератор пакетов):
После этого наш TFTP сервер примет соединение.
Обратите внимание на обратный IP адрес SNMP пакета и на TFTP запрос на
запись (пакеты 1 и 2). Пакет обходит правила доступа SNMP, и мы
получаем конфигурационный файл атакуемого маршрутизатора по TFTP.
GRE туннель
GRE (Generic Routing Encapsulation) - протокол туннелирования,
разработанный для инкапсуляции произвольных типов пакетов сетевого
уровня внутри пакета сетевого уровня. Один из вариантов использования
GRE - соединение сегментов IPX сети через канал связи поддерживающий
только сетевой уровень модели OSI. В этом случае вам нужно будет
создать GRE туннель с одного маршрутизатора на другой для передачи IPX
пакетов туда и обратно через канал поддерживающий только протокол IP.
Однако мы будем использовать GRE для достижения целей, отличных от его
обычного предназначения. Наш план состоит в следующем:
Атакуемый маршрутизатор
Нам нужно создать GRE туннель на атакуемом маршрутизаторе. Так как
доступа к терминалу (консоли) у нас нет, мы можем просто
отредактировать полученный файл конфигурации и затем отправить его
назад на маршрутизатор, используя поддельный SNMP SET запрос. Добавим
следующие строки в файл конфигурации атакуемого маршрутизатора:
Они означают следующее:
Теперь мы можем настроить правила доступа (access-lists) для указания
типа проходящего через туннель трафика и карты маршрутизации
(route-maps) необходимые для перенаправления трафика.
Для этого добавим в файл конфигурации атакуемого маршрутизатора еще
несколько строк:
Мы разрешили передачу данных по протоколам SSL, HTTP, FTP, telnet,
SMTP и POP3.
Теперь, если трафик соответствует вышеописанным правилам, он будет
перенаправлен в соответствии с картами маршрутизации, описание которых
нужно добавить в файл конфигурации:
Эта запись несет в себе следующий смысл:
Маршрутизатор хакера
Конфигурация маршрутизатора атакующего чуть сложнее, так как мы должны
определить две карты маршрутизации - одну для переправления трафика на
компьютер атакующего (sniffer), и другую для отправки трафика обратно
на атакуемый маршрутизатор. Очень важно, чтобы мы отправляли
туннелированные данные назад на атакуемый маршрутизатор, чтобы
атакуемый компьютер (Victim Client) не потерял соединение.
Начнем с создания GRE туннеля на маршрутизаторе атакующего:
Эти правила означают следующее:
Очень важно, что мы используем карту маршрутизации для перенаправления
данных. Маршрутизатор получает туннелированные данные,
инкапсулированные в GRE пакете, и без декодирования пакета мы не можем
их просмотреть. Переправляя полученные пакеты атакующему (sniffer),
маршрутизатор передает их как обычные IP пакеты без GRE инкапсуляции.
Наконец, создадим карту маршрутизации и ассоциируем ее с интерфейсом
Ethernet0/0:
Эти дополнительные настройки означают следующее:
Атакующий (sniffer)
По завершению конфигурирования маршрутизаторов нам нужно настроить
компьютер атакующего (sniffer) для перехвата и перенаправления данных.
Важно, чтобы компьютер был сконфигурирован на обратное перенаправление
пакетов. Для этого можно использовать одну из следующих команд:
или
Без перенаправления наша атака вызовет отказ от обслуживания (DoS) на
атакуемом компьютер и соответственно потеряет смысл.
Начинаем атаку
После того как все настройки будут завершены, все, что нам останется
сделать - загрузить новый модифицированный файл конфигурации на
атакуемый маршрутизатор. Результатом будет активации GRE туннеля и
перенаправление всего трафика из локальной сети атакуемого компьютера
к хакеру (sniffer).
Нам нужно создать поддельный SNMP SET запрос, в результате которого
маршрутизатор загрузит новый конфигурационный файл и добавит его к
текущей конфигурации. Для того чтобы получить базовый пакет мы снова
отправим обычный запрос:
Перехватим этот пакет и изменим обратный IP адрес и некоторые другие
поля заголовка пакета.
После отправки модифицированного пакета, будет создано TFTP соединения
с нашим компьютером
Обратите внимание на TFTP запрос на чтение (пакет No.2). Пакет обходит
правила доступа SNMP, вследствие чего происходит загрузка и добавление
к текущей конфигурации нового модифицированного конфигурационного
файла. Отладочная информация атакуемого маршрутизатора дает много
интересного о ходе атаки:
Заметьте, что адрес TFTP сервера отличается от IP адреса атакующего и
передается отдельным параметром.
Проверить работоспособность туннеля можно, отослав отладочную команду
на маршрутизатор атакующего:
Кроме использования специализированного сниффера (такого как dsniff)
для перехвата паролей, передаваемых открытым текстом, мы можем
осуществить сложные атаки класса `человек посередине -
man-in-the-middle’ на компьютер жертвы. Ettercap - хорошая утилита,
позволяющая, кроме перехвата разных типов паролей, организовать атаку
`человек посередине’ на шифруемые протоколы SSL и SSH. С помощью
фильтров Ettercap можно управлять проходящим трафиком и изменять его.
Возможности практически бесконечны.
Заключение
Иногда некоторые вещи являются не тем, чем кажутся. Когда имеешь дело
с SNMP (или другим протоколами на основе UDP) всегда нужно знать об
укромных уголках и трещинах, упущение из виду которых может стать
причиной компрометации вашей сети.
В описанном примере, дополнительного правило доступа, явно
определяющего адрес TFTP сервера (находящегося на атакованном нами
маршрутизаторе) хватило бы, чтобы сорвать атаку.
Скептики могут спросить “Как атакующий узнал о правилах доступа /
имени SNMP группы RW?”. Эта информация может быть получена перебором,
причем не только имена групп, но и разрешенные IP адреса, и такая
утилита уже существует.
Целью статьи было показать не столько эффективность описанной атаки,
сколько потенциальные бреши протоколов, основанных на UDP. Это никоим
образом не означает, что оборудование Cisco небезопасно. Грамотная
конфигурация должна свести на минимум шансы обхода защиты. Ошибки
сетевых администраторов - вот основные причины компрометаций
оборудования Cisco.
Информация об укреплении защиты маршрутизаторов Cisco может быть
найдена на сайте NSA.
Популярность: 89% [!]
Tagged with: forward, ftp, HTTP, nat, traffic, tun, tunnel, Windows