Страница 3 из 11 Перечисление целей: использование управляющей программы листенера Обнаружив листенер Oracle, нарушитель захочет определить, имеет ли он какие-нибудь реальные уязвимости. Это называется перечислением целей” (target enumeration). Листенер по команде STATUS сообщает о себе массу информации, вывод по умолчанию может быть расширен командой SET DISPLAYMODE для режимов вывода RAW или VERBOSE, например: SET DISPLAYMODE VERBOSE В некоторых портах могут использоваться установки по умолчанию. Пример вывода по команде STATUS показан на рис. 4.
Рис. 4. Листенер Oracle 9i выдает свои секреты по команде STATUS. Как видно, листенер выдает очень полезный список информации, включая: операционную систему сервера (полезна для атак на ОС); версию листенера (обычно, но не всегда, совпадает с версией базы данных). Полезная информация, когда известны уязвимости данной версии и DBA не вставил соответствующие заплаты; время запуска и время работы с точностью до секунд. Знание текущего системного времени может дать ключ к часовому поясу, в котором работает машина, – это всегда полезно для планирования атак, когда администратор, скорее всего, спит. Это может также направить атаки на протоколы и криптографические механизмы, которые базируются на времени; проверку установки пароля листенера (установка SECURITY); контроль включения трассировки и определение данного ее уровня. Трассировочный файл может содержать подробную информацию о получаемых пакетах; контроль включения протокола SNMP (открывает еще один механизм атаки); файл параметров листенера и протокольные файлы. Это позволяет узнать каталог ORACLE_HOME (так что, когда мы проникнем в систему, мы будем знать, где находятся данные); доступные сервисы. MODOSE – коммуникационный канал для Apache (еще одно служебное имя базы данных; однако соединиться с базой данных по имени MODOSE” иногда сложно, если статус и команды листенера блокируются межсетевым экраном), PLSExtProc – агент внешних процедур (обсуждается позднее) и другие сервисы, наверняка относящиеся к базам данных. Мы можем использовать это информацию для вставки записей в tnsnames.ora данного сервера и попробовать связаться с базой данных, используя SQL Plus или другие средства. Даже если не установлен пароль, листенер может быть закрыт” с помощью новой конфигурационной опции ADMIN_RESTRICTIONS (введена в Oracle9i, для более ранних версий можно вставить заплату; этот параметр описан ниже в подразделе Меры противодействия – установка параметров защиты листенера”). Используя команды реконфигурирования листенера, такие, как SET LOG_STATUS, можно проверить, включен ли режим ADMIN_RESTRICTIONS (см. рис. 5). Ошибка TNS-12508 указывает, что ADMIN_RESTRICTIONS включен.
Рис. 5. Ответы листенера на команду set log_status при включенном/выключенном режиме ADMIN_RESTRICTIONS. Дополнительная информация может быть обнаружена с помощью команды VERSION, как это показано на рис. 6.
Рис. 6. Ответ листенера на команду VERSION. Если пароль листенера не установлен (или мы знаем его), то мы с помощью команды SERVICES можем попробовать получить дополнительную информацию о работающих сервисах, как это показано на рис. 7.
Рис.7. Пример ответа листенера на команду SERVICES. Это поможет определить другие сетевые порты, используемые сервисами Oracle (которые также могут быть объектом атак). Также отметим дополнительную информацию, выдаваемую в режиме вывода VERBOSE (см. выше), которая раскрывает детали выполняемых программ, их окружение и параметры. |