Передача данных для подбора пароля пакетам NUKER и RANDOM может быть организована как с помощью произвольных процедур\утилит, так и вручную. Оба пакета предназначены для применения с БД, не являющейся целевой и доступной лицу, проводящему подбор пароля, с привилегиями, обеспечивающими чтение таблицы USER$, создание\изменение\удаление пользователей. Для пакета RANDOM требуются дополнительные привилегии, связанные с созданием таблиц большого объема, триггеров и доступа к ряду представлений схемы SYS. Для ведения журнала отчета владельцу пакетов должен быть доступен пакет SYS.UTL_FILE (по умолчанию доступен всем пользователям) и право на запись файлов в директорию пользовательского дампа (не предоставлено по умолчанию всем пользователям). Пакеты NUKER и RANDOM по определенным правилам выбирают возможное значение пользовательского пароля для указанного пользователя, создают\изменяют текущий пароль пользователя с заданным именем, выбирают значение полученной хеш-функции и сравнивают его с заданным значением, полученным из целевой БД для заданного пользователя. В случае совпадения этих значений пароль вычислен. Оба пакета используют для получения значений возможных паролей генераторы случайных комбинаций заданной длины из перечня доступных символов (букв, цифр и специальных знаков), при этом в пакете NUKER используется оригинальный генератор, а в пакете RANDOM встроенный пакет Oracle. Оба пакета формируют отчет о результатах работы и генерируют почтовое уведомление с отчетом.
Эффективность применения пакетов NUKER и RANDOM для подбора паролей в варианте случайного перебора возможных комбинаций заданной длины напрямую зависит от сложности установленного пользователем пароля (его длины, наличия смешанных буквенно-цифровых символов, применения специальных символов), определяющим значением является ДЛИНА ПАРОЛЯ. Компьютер класса РIV с тактовой частотой 3 ГГц и достаточным объемом ОЗУ способен подобрать значение пароля длиной:
- менее 4 знаков - две-четыре минуты;
- 4 знака - 15..20 минут;
- 5 знаков - от суток до месяца;
- 6 знаков и более - от полугода до бесконечности.
Естественно, временной интервал, за который может быть подобран пользовательский пароль, играет различную роль в различных случаях. Если есть уверенность, что пользовательский пароль в целевой БД не будет сменен за время его подбора, время генерации ограничивается только техническими возможностями нападающего. Если же за время генерации пароль будет гарантированно сменен, то смысл его подбора теряется. Отсюда вывод: пароли ответственных пользователей должны не только отвечать требованиям сложности (длина, набор символов), но и регулярно заменяться с интервалом, гарантирующим невозможность его случайного подбора за этот период. Этот процесс легко поддается автоматизации как на базе встроенного пакета Oracle, так и с помощью внешних утилит, генерирующих значения паролей по заданным критериям. Контроль за сроками смены паролей должен являться одной из повседневных обязанностей АБД.
Продолжительное время, которое может потребоваться для генерации пароля пользователя, делает практически бессмысленным применение метода случайного перебора с количеством знаков более четырех (при условии отсутствия неограниченных вычислительных возможностей у нападающего), однако, в ряде случаев это время может быть существенно сокращено. Первым инструментом для повышения эффективности подбора пароля является использование словарей, составленных по самым различным принципам и критериям, в том числе и для национальных языков, поддерживаемых целевой БД. Примеры таких словарей можно посмотреть здесь. Отсюда еще один вывод: не следует в качестве паролей использовать устойчивые словосочетания, аббревиатуры и слова из общеупотребительного, профессионального лексиконов, без включения в пароль дополнительных символов, нарушающих семантическую логику. Контроль за сложностью паролей легко устанавливается АБД для каждого экземпляра Oracle.
Использование словарей повышает вероятность обнаружения пользовательского пароля, но временные интервалы могут оставаться весьма значительными. Для приведенного выше примера конфигурации исследовательского компьютера временной интервал для объема словаря в 1 000 000 слов составляет около одного часа. Учитывая тот факт, что объем литературных словарей всех языков, использующих латиницу, не превышает 30 млн слов, семантический пароль может быть подобран примерно за сутки, а с учетом национальности пользователя - значительно быстрее. В пакете RANDOM реализован механизм использования словарей для подбора пароля. В прилагаемых словарях для паролей содержатся данные по более чем 3 млн слов европейских языков из словарей различной направленности и тематики, которые могут быть интегрированы в пакет RANDOM. Создать собственный словарь поможет пакет DICT_MAKER.
Выбор конкретного пользователя, для которого будет производиться подбор пароля, определяется конкретными условиями и задачами, однако существует пользователи, для которых эта целесообразность присутствует всегда - это пользователи SYS и SYSTEM. Эти пользователи есть в любой БД, их доступ не может быть заблокирован и они обладают максимальными привилегиями. Учитывая, что соединение с SYS как правило должно производиться AS SYSDBA, а удаленное подключение с такими привилегиями легко может быть запрещено АБД, особый интерес представляет подбор паролей для пользователя SYSTEM - однажды сгенерировав значения хеш-функции и сохранив их в каком-либо виде, нападающий может в дальнейшем использовать эти значения уже генерации хеш-функции, весьма сократив временные затраты на подбор паролей. Естественно, организовав соответствующим образом несложную систему хранения, получив по определенному порядку значения хеш-функции для большого числа возможных паролей пользователя SYSTEM, возможно свести временные затраты на подбор пароля к минутам. В этом хранилище, использующем пакет RANDOM, присутствуют данные по более, чем 160 млн значений хеш-функций паролей для пользователей SYS и SYSTEM, полученные как по словарям, так и по дополнительным условиям (например, все возможные сочетания знаков длиной менее 6 символов). Для приведенного выше примера конфигурации исследовательского компьютера временной интервал для поиска значений пароля составляет две минуты, что неизмеримо повышает возможности по проникновению в целевую БД. Любой АБД может проверить свои пароли на предмет уязвимости, отправив заявку на safeguardian@yandex.ru.
Таким образом, все меры защиты пользовательских паролей, указанные выше, должны в еще большей степени применяться к паролям пользователей SYS и SYSTEM ввиду существования особых условий для их подбора. Пример использования пакета RANDOM показывает относительную легкость подбора простых паролей для ответственных пользователей БД, доступную практически любому лицу. Вполне реально создание даже в относительно простых условиях хранилища паролей длиной до 8 знаков, что в огромном количестве БД открывает доступ к данным с максимальными привилегиями. И кто знает, может и существует уже хранилище с паролями в 30 знаков :) ? Для целей генерации хеш-функции могут прямо использоваться системные библиотеки из пакета Oracle, в том числе - минимальной конфигурации, например, клиентского. Скорость подбора паролей в этом случае возрастает в несколько раз по сравнению с указанными выше временными затратами. Принципиально способ подбора мало чем отличается от примененного в пакете RANDOM, поэтому реализация использования этих библиотек здесь не рассматривается.
В результате перечисленных элементарных действий по проникновению в целевые базы данных , использовав для ускорения рутинных операций утилиты TNScaner_v201, PassFinger_v101, PassChecker_v101, воспользовавшись данными, полученными с помощью пакетов NUKER и RANDOM , мы продемонстрировали как может быть преодолена защита СУБД Oracle при несоблюдении администратором БД элементарных требований по организации системы безопасности и пренебрежения рекомендациями производителя программного обеспечения. Практически не использовались широко распространенные методы социальной инженерии, не рассматривались вопросы по использованию пробелов в защите прикладных программ, серверов приложений, включая Oracle Application Server и другие варианты несанкционированного доступа к БД, основанные на уязвимости операционных систем.
Основным выводом изложенного материала является необходимость комплексной организации защиты БД в самом тесном сотрудничестве с системными администраторами и службой безопасности. В этой защите нет мелочей, как было показано.
В заключение откроем небольшой секрет (если поиск по этой ссылке еще не подсказал) , что обе базы данных вполне реальны, принадлежат известным университетам, первый из которых расположен на одном из западных континентов (БД содержит обширный архив видеофильмов, помимо прочих данных о сотрудниках, студентах, партнерах), а второй - в очень Юго-Восточной Азии (БД обеспечивает работу библиотеки, разветвленной справочной системы, является репозитарием Application Server). Обе БД доступны и сейчас. Один вопрос так и остался невыясненным - зачем администраторы открыли доступ к БД из Интернета? И сами не знают ...
А теперь самое время задаться вопросом - ну, проникли, а что дальше, зачем это надо?
А об этом немного поговорим здесь.