Покоряем Cisco: атака через TCLДостаточно часто в ходе проведения работ по тестированию на проникновение встречаются машрутизаторы Cisco Systems с привилегированным доступом (level 15), что позволяет использовать их для дальнейшего развития атак с использованием функционала TCL. Сейчас я опишу несколько методов данных атак, и поверь, их использование действительно приводит к повышению прав на, якобы, защищенном маршрутизаторе. Tcl – (Tool Command Language) – скриптовый язык часто применяемых с графической библиотекой Tk, придуман в начале 80-х годов и из-за своей простоты продолжает повсеместно использоваться как встроенный в различные приложения; вспомним хотя бы программы expect или irc-ботов eggdrop, а также использование его как модуля к серверной части apache mod_tcl. В операционную систему IOS, используемую маршрутизаторами Cisco Tcl, был введен с версии IOS 12.3(2)T, что позволило реализовать в маршрутизаторах Cisco Systems функции выполнения "пользовательских" скриптов. Как наиболее часто встречаемый пример, использование IOS IVR для создания интерактивных голосовых меню в системах IP-телефонии. Используя функционал Tcl, мы имеем возможность работать с сокетами, в данном случае открывается некоторая перспектива использования маршрутизатора для следующих действий:
Данными методами также может воспользоваться злоумышленник, получив доступ к TFTP-серверу компании, где размещены существующие скрипты и принудительно заменить существующий сценарий на собственный. В этом случае произойдет его загрузка и запуск на маршрутизаторе. ПрактикуемсяДавай попробуем понять, как это можно реализовать с помощью удаленного шелла, который можно использовать без явной аутентификации с входом на назначенный порт по протоколу Telnet. Подобный сценарий использовался в качестве задания на соревнованиях "Рускрипто CTF 2010". В первую очередь давай разберем, как работает Tcl на устройствах под управлением IOS. Загрузка и исполнение TCL-скрипта: Для первичной загрузки TCL-скриптов необходимо иметь привилегированный доступ не ниже уровня 15 (enable). Скрипт Tcl необходимо загружать удаленно, для этого можно использовать такие протоколы, как TFTP, FTP, RCP, SCP. Загрузку и выполнение скрипта можно выполнять как напрямую в RAM-маршрутизатора, так и в FLASH-память c последующим его запуском с файловой системы IOS. Загрузка скрипта во FLASH и последующее его выполнение:
Загрузка скрипта непосредственно с TFTP-сервера:
Ниже приведен пример TCL-скрипта, который при запуске захватывает сокет на порт TCP/2002 и связывает его с интерфейсом командной строки (EXEC). Загрузка скрипта выполняется методами, описанными выше (в приведенном примере с сервера TFTP).
После загрузки и последующего запуска вышеприведенного скрипта появится возможность зайти в систему (режим EXEC) без использования учетных записей и выполнять любые команды с использованием привилегий супер-пользователя (level 15).
Далее я бы хотел рассказать о некоторых ограничениях, которые необходимо помнить при работе с Tcl на устройствах под управлением IOS. В первых версиях IOS, включающих поддержку Tcl, скрипт продолжал свою работу даже при прерывании EXEC-сессии. В новых версиях последовало исправление, которое завершает работу скрипта при обрыве линии или по команде clear line. Этот "патч-фикс" производителя можно обойти несколькими способами: 1. На линиях, (console 0 или vty 0 4), с которых запускается скрипт, применить команду exec-timeout 0 0, в противном случае по завершении сессии скрипт завершит свою работу.
2. Производить запуск скрипта с использованием апплетов EEM (Embedded Event Manager) по триггеру, которым может быть любое действие, в том числе периодический запуск по таймеру. На примере ниже показана конфигурация, которая загружает скрипт с TFTP после запуска маршрутизатора по истечении 20 секунд.
3. Конвертировать TCL-скрипт в формат политик EEM (Embedded Event Manager) и запускать их по триггеру, которым может быть любое действие, в том числе периодический запуск по таймеру. Готовые утилитыВ ряде ситуаций можно использовать готовые скрипты, такие как IOScat и IOSmap, входящие в IOScat, позволяющие осуществлять проброс портов, прием и передачу файлов путем манипуляций с сокетами. Используя встроенный язык TCL, можно использовать маршрутизатор аналогично ПК с установленным приложением Netcat, предварительно загрузив скрипт TCL в flash-маршрутизатор или через TFTP-сервер напрямую в RAM. Методика загрузки и установки TCL на маршрутизатор описана выше. Примеры реализации: Организация бэкдора на маршрутизаторе (2002 порт):
Организация реверсного шелла на адрес атакующего (порт 12345):
(на твоей машине приемником шелла выступает обычный netcat: nc -l -p 12345) Проброс удаленного порта на локальный порт маршрутизатора (2002):
У данного скрипта есть много других примеров, например копирование файлов с использованием сокетов, имитация телнет-сессии на удаленном хосте и много других функций, которые можно посмотреть на сайте разработчика. Скрипт с названием IOSmap – не что иное, как попытка создать аналог сканера nmap, конечно, в урезанном функционале, но в данном случае достаточно эксклюзивным для работы в среде IOS. Функционал этого TCL-скрипта позволяет производить сканирование диапазонов IP-адресов на открытые TCP/UDP-порты, в том числе используя метод инвентаризации хостов посредством протокола ICMP. Рассмотрим примеры использования:
Изменение вариантов сканирования скрипта возможно путем добавления аргументов: -sP – только по ответу хоста; Учитывая богатые возможности ТСL, можно разработать множество подобных, интересных приложений для реализации их в сетевой среде на оборудовании Cisco Systems. Методы обнаруженияИмея возможность запускать скрипты, также интересно иметь возможность отследить их исполнение. Сделать это можно, подсмотрев процессы и состояние портов на маршрутизаторе, используя следующие команды маршрутизатора:
Начиная с версии IOS 12.4(4)Т появилась возможность использования CPP (Control Plane Policy):
Также можно использовать и автоматизированные средства, такие как система контроля защищенности и соответствия стандартам MaxPatrol (доступен для скачивания на ptsecurity.ru). ПослесловиеТаким образом, все поняли, что любую, даже самую защищенную Cisco можно захватить умело написанным и запущенным TCL-сценарием. В итоге злоумышленник получает шелл со всеми вытекающими отсюда последствиями. А защититься от этого можно только грамотной настройкой маршрутизатора, периодическим обновлением IOS и ежедневным мониторингом логов подключений. В общем, не ленитесь и ухаживайте за своей Cisco :). |