Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Безопасность Oracle глазами аудитора: нападение и защита

Покупка
Артикул: 616074.01.99
К покупке доступен более свежий выпуск Перейти
Эта книга является первым исследованием, написанным отечественным автором, которое посвящено проблеме безопасности СУБД Oracle. Материал книги основан на практическом опыте автора, полученном им в результате проведения тестов на проникновение и обширной исследовательской деятельности в области безопасности СУБД. Книга построена таким образом, что вначале читатель ставится на место потенциального злоумышленника и изучает все возможные способы получения доступа к базе данных, вплоть до поиска новых уязвимостей и написания эксплоитов. Получив достаточно знаний об основных уязвимостях СУБД и о способах проникновения, читатель переходит ко второй части книги, в которой подробно описаны методы защиты СУБД Oracle как с помощью безопасной конфигурации и следования стандартам (в частности, PCI DSS), так и при помощи дополнительных средств обеспечения ИБ. Книга предназначена как специалистам по безопасности, так и сетевым администраторам, разработчикам и администраторам баз данных, а также всем тем, кто интересуется вопросами информационной безопасности.
Поляков, А. М. Безопасность Oracle глазами аудитора: нападение и защита [Электронный ресурс] / А. М. Поляков. - Москва : ДМК Пресс, 2010. - 336 с.: ил. - ISBN 978-5-94074-517-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/408106 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Поляков А. М.

Безопасность Oracle
глазами аудитора:
нападение и защита

Под редакцией И. Медведовского, к.т.н.,

генерального директора компании Digital Security

Москва, 2010

УДК
004.4

ББК
32.973.26-018.2
П49

П49
Поляков А. М.

Безопасность Oracle глазами аудитора: нападение и защита. – М.: ДМК Пресс,
2010. – 336 с.: ил.

ISBN 978-5-94074-517-4

Эта книга является первым исследованием, написанным отечественным

автором, которое посвящено проблеме безопасности СУБД Oracle. Материал книги основан на практическом опыте автора, полученном им в результате
проведения тестов на проникновение и обширной исследовательской деятельности в области безопасности СУБД.

Книга построена таким образом, что вначале читатель ставится на место

потенциального злоумышленника и изучает все возможные способы получения доступа к базе данных, вплоть до поиска новых уязвимостей и написания эксплоитов. Получив достаточно знаний об основных уязвимостях
СУБД и о способах проникновения, читатель переходит ко второй части
книги, в которой подробно описаны методы  защиты СУБД Oracle как с помощью безопасной конфигурации и следования стандартам (в частности,
PCI DSS), так и при помощи дополнительных средств обеспечения ИБ.

Книга предназначена как специалистам по безопасности, так и сетевым

администраторам, разработчикам и  администраторам баз данных, а также
всем тем, кто интересуется вопросами информационной безопасности.

  УДК 004.4

ББК 32.973.26-018.2

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой

бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав.

Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность

технических ошибок все равно существует, издательство не может гарантировать абсолютную
точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги.

© Поляков А., 2009

ISBN 9785940745174
© Оформление, ДМК Пресс, 2010

Содержание

Благодарности ....................................................................................... 10

Предисловие от редактора.............................................................. 11

Введение .................................................................................................. 13

Часть I. Анализ защищенности СУБД Oracle снаружи........ 18

Глава 1. Архитектура СУБД.............................................................. 18
1.1. База данных ........................................................................................ 18
1.1.1. Физический уровень.................................................................... 18
1.1.2. Логический уровень..................................................................... 20
1.2. Структуры памяти ............................................................................... 20
1.3. Процессы ............................................................................................ 21
1.4. Прочие компоненты СУБД ................................................................... 22
1.5. Заключение ......................................................................................... 22
1.6. Полезные ссылки ................................................................................ 22

Глава 2. Анализ защищенности службы TNS Listener ........ 23
2.1. Описание службы Листенера .............................................................. 23
2.1.1. Режимы работы Листенера .......................................................... 25
2.2. Атаки на незащищенную службу Листенера ........................................ 26
2.2.1. Получение детальной информации о системе через службу
Листенера ............................................................................................. 27
2.2.2. Атака на отказ в обслуживании через службу Листенера ............. 28
2.2.3. Отказ в обслуживании через set trc_level ..................................... 30
2.2.4. Отказ в обслуживании через set log_file ....................................... 30
2.2.5. Добавление пользователя с правами DBA через set log_file ........ 31
2.2.6. Получение административных прав на сервере через set log_file .... 33
2.2.7. Прочие атаки ............................................................................... 35
2.3. Атаки на защищенную службу Листенера ............................................ 38
2.3.1. Перехват пароля .......................................................................... 39
2.3.2. Аутентификация при помощи хэша.............................................. 40
2.3.3. Расшифровка пароля на доступ к службе Листенера ................... 41
2.3.4. Удаленный перебор пароля на доступ к службе Листенера ......... 43
2.4. Атаки на Листенер, защищенный дополнительными опциями............. 44
2.4.1. Опция безопасности ADMIN_RESTRICTIONS ............................... 44

Содержание
Содержание
Содержание
Содержание
Содержание

2.4.2. Опция безопасности LOCAL_OS_AUTHENTICATION ...................... 45
2.5. Заключение ......................................................................................... 46
Сводная таблица ................................................................................... 47
2.6. Полезные ссылки ................................................................................ 49

Глава 3. Подключение к СУБД. Получение SID базы
данных ....................................................................................................... 50
3.1. Подбор SID .......................................................................................... 53
3.1.1. Проверка на стандартные значения SID ...................................... 53
3.1.2. Перебор SID по словарю ............................................................. 55
3.1.3. Подбор SID методом полного перебора (Brute force)................... 55
3.2. Поиск информации о SID и SERVICE_NAME в сторонних приложениях .... 56
3.2.1. Получение SERVICE_NAME через Enterprise Manager Control ....... 57
3.2.2. Получение SERVICE_NAME через Oracle Application Server .......... 59
3.2.3. Получение SID через  систему SAP R/3 и SAP Web Application
Server .................................................................................................... 60
3.2.4. Получение SERVICE_NAME через Oracle XDB ............................... 63
3.2.5. Получение SID через доступ к СУБД MsSQL ................................. 63
3.2.6. Получение SID или SERVICE_NAME через уязвимое
вебприложение ................................................................................... 67
3.3. Получение SID с помощью дополнительных знаний или прав в сети ..... 67
3.3.1. Получение SID с помощью общедоступных данных
о корпоративной сети ........................................................................... 68
3.3.2. Получение SID из соседних СУБД в корпоративной сети ............. 68
3.3.3. Получение SID из соседних серверов корпоративной сети ........... 69
3.3.4. Получение SID или SERVICE_NAME прослушиванием
сетевого трафика .................................................................................. 70
3.4. Заключение ......................................................................................... 71
3.5. Полезные ссылки ................................................................................ 72

Глава 4. Преодоление парольной защиты ............................... 73
4.1. Настройка «по умолчанию».................................................................. 73
4.1.1. Установка СУБД ........................................................................... 74
4.1.2. Стандартные учетные записи ...................................................... 74
4.1.3. Проверка на наличие стандартных паролей ................................ 78
4.2. Подбор аутентификационных данных .................................................. 80
4.2.1. Подбор имен пользователей ....................................................... 80
4.2.2. Подбор паролей .......................................................................... 82
4.2.3. Подбор паролей AS SYSDBA ........................................................ 83
4.3. Альтернативные способы получения паролей ..................................... 85
4.3.1. Получение паролей с помощью общедоступных данных об ИС .... 85
4.3.2. Получение паролей из соседних СУБД ........................................ 86
4.3.3. Подключение к СУБД с использованием локального доступа
к серверу .............................................................................................. 86
4.3.4. Получение паролей через доступ к файловой системе сервера .. 87
4.4. Перехват аутентификационных данных ............................................... 95

Содержание
Содержание
Содержание
Содержание
Содержание

4.4.1. Процесс аутентификации пользователей .................................... 95
4.4.2. Перехват процесса аутентификации и расшифровка хэша ......... 96
4.5. Заключение ......................................................................................... 97
4.6. Полезные ссылки ................................................................................ 98

Глава 5. Безопасность сервера приложений
и сторонних компонентов ................................................................. 99
5.1. Низко  висящие фрукты (Oracle XDB) ................................................. 100
5.2. Oracle Application Server .................................................................... 102
5.2.1. Архитектура Oracle Application Server ........................................ 102
5.2.2. Обнаружение Oracle Application Server ...................................... 105
5.2.3. Атаки на Oracle Application Server .............................................. 106
5.2.4. Современные атаки на Oracle Application Server ........................ 109
5.3. Автоматическая проверка ................................................................. 112
5.4. Заключение ....................................................................................... 115
5.5. Полезные ссылки .............................................................................. 116

Заключение к части I......................................................................... 117

Часть II. Анализ защищенности СУБД Oracle изнутри ..... 118

Глава 6. Повышение привилегий.
Локальные уязвимости СУБД ....................................................... 119
6.1. PL/SQLинъекции .............................................................................. 120
6.1.1. Введение в PL/SQL .................................................................... 120
6.1.2. PL/SQLинъекции ...................................................................... 121
6.1.3. Blind SQL Injection ...................................................................... 123
6.1.4. Внедрение PL/SQLпроцедур .................................................... 126
6.1.5. Анонимный PL/SQLблок ........................................................... 128
6.1.6. Выполнение PL/SQLкоманд напрямую ..................................... 132
6.1.7. Cursor Injection ........................................................................... 136
6.1.8. Защита с помощью DBMS_ASSERT и ее обход .......................... 138
6.1.9. История продолжается. Lateral SQL Injection ............................. 141
6.1.10. Заключение ............................................................................. 147
6.2. Атаки на переполнение буфера ......................................................... 148
6.2.1. Анализ одной уязвимости .......................................................... 149
6.2.2. Написание POCэксплоита к новой уязвимости......................... 152
6.2.3. Выполнение произвольного кода на сервере ............................ 154
6.3. Фокусы с представлениями .............................................................. 155
6.3.1. Представления .......................................................................... 155
6.3.2. Объединения ............................................................................. 156
6.3.3. Первая уязвимость, связанная с обработкой объединений ....... 158
6.3.4. Объединения + представления.................................................. 159
6.3.5. История продолжается .............................................................. 161
6.4. Cursor snarfing ................................................................................... 163

Содержание
Содержание
Содержание
Содержание
Содержание

6.4.1. Стандартная атака..................................................................... 163
6.4.2. Продвинутая атака .................................................................... 164
6.5. Dll Patching ........................................................................................ 168
6.5.1. Модификация библиотеки ......................................................... 168
6.5.2. Посылка команд по сети ............................................................ 169
6.6. Прочие уязвимости ........................................................................... 171
6.6.1. Примеры нестандартных уязвимостей из CPU July 2008 ............ 172
6.6.2. Примеры нестандартных уязвимостей из CPU April 2008 ........... 172
6.6.3. Примеры нестандартных уязвимостей из более ранних CPU ..... 173
6.7. Поиск и эксплуатация уязвимостей ................................................... 174
6.7.1. Поиск уязвимостей .................................................................... 175
6.7.2. Написание эксплоита ................................................................ 180
6.7.3. Системы обнаружения вторжений и методы их обхода.............. 182
6.8. Заключение ....................................................................................... 184
6.9. Полезные ссылки .............................................................................. 185

Глава 7. Вскрытие паролей ........................................................... 187
7.1. Хранение паролей ............................................................................. 188
7.2. Алгоритм шифрования паролей ........................................................ 189
7.3. Подбор паролей ................................................................................ 192
7.3.1. Подбор паролей по словарю...................................................... 192
7.3.2. Подбор пароля методом грубого перебора (bruteforce) ............ 194
7.3.3. Перебор с использованием Rainbow Tables ............................... 195
7.4. Oracle 11g и нововведения ................................................................ 200
7.4.1. Хранение паролей ..................................................................... 200
7.4.2. Алгоритм шифрования паролей ................................................ 201
7.5. Заключение ....................................................................................... 204
7.6. Полезные ссылки .............................................................................. 205

Глава 8. Получение доступа к операционной системе .... 206
8.1. Выполнение команд ОС через СУБД ................................................. 206
8.1.1. Выполнение команд ОС, используя внешние библиотеки ......... 207
8.1.2. Выполнение команд ОС, используя JAVAпроцедуры ................ 212
8.1.3. Выполнение команд ОС, используя пакет DBMS_SCHEDULER .. 217
8.1.4. Выполнение команд ОС с помощью пакета Job Scheduler ......... 222
8.1.5. Выполнение команд ОС путем модификации системных
переменных Oracle .............................................................................. 224
8.2. Доступ к файловой системе ОС через СУБД...................................... 225
8.2.1. Доступ к файловой системе через UTL_FILEпроцедуры ........... 225
8.2.2. Доступ к файловой системе через DBMS_LOBпроцедуры ........ 229
8.2.3. Доступ к файловой системе через JAVAпроцедуры .................. 231
8.2.4. Доступ к файловой системе через DBMS_ADVISORпроцедуры 235
8.3. Заключение ....................................................................................... 236
8.4. Полезные ссылки .............................................................................. 236

Содержание
Содержание
Содержание
Содержание
Содержание

Глава 9. Поэтапные способы повышения привилегий
и другие атаки ...................................................................................... 239
9.1. Поэтапные способы повышения привилегий..................................... 240
9.1.1. Привилегия GRANT ANY [OBJECT] PRIVILEGE/ROLE.................... 241
9.1.2. Привилегия SELECT ANY DICTIONARY ......................................... 242
9.1.3. Привилегия SELECT ANY TABLE .................................................. 243
9.1.4. Привилегия INSERT/UPDATE/DELETE ANY TABLE ........................ 245
9.1.5. Привилегия EXECUTE ANY PROCEDURE...................................... 245
9.1.6. Привилегия CREATE/ALTER ANY PROCEDURE ............................. 246
9.1.7. Привилегия ALTER SYSTEM ........................................................ 247
9.1.8. Привилегия ALTER USER ............................................................ 247
9.1.9. Привилегия ALTER SESSION ...................................................... 248
9.1.10. Привилегия ALTER PROFILE ..................................................... 249
9.1.11. Привилегия CREATE LIBRARY ................................................... 249
9.1.12. Привилегия CREATE ANY DIRECTORY ........................................ 250
9.1.13. Привилегия CREATE/ALTER ANY VIEW ....................................... 250
9.1.14. Привилегия CREATE ANY TRIGGER ............................................ 251
9.1.15. Привилегия CREATE ANY/EXTERNAL JOB .................................. 252
9.1.16. Роль JAVASYSPRIV .................................................................... 253
9.1.17. Роль SELECT_CATALOG_ROLE .................................................. 253
9.2. Нестандартные способы повышения привилегий ............................. 255
9.2.1. Атака на Листенер при помощи пакета UTL_TCP ........................ 255
9.2.2. Поиск паролей и конфиденциальной информации .................... 256
9.3. Заключение ....................................................................................... 260
9.4. Полезные ссылки .............................................................................. 261

Глава 10. Закрепление прав в системе,
руткиты для Oracle ............................................................................. 262
10.1. СУБД и ОС ....................................................................................... 262
10.2. Руткиты первого поколения ............................................................. 263
10.2.1. Скрытие посторонних пользователей ...................................... 263
10.2.2. Скрытие посторонних заданий (Jobs) ...................................... 264
10.3. Руткиты второго поколения ............................................................. 267
10.3.1. Модификация исполняемых файлов ........................................ 268
10.4. Заключение ..................................................................................... 269
10.5. Полезные ссылки ............................................................................ 269

ЧАСТЬ III. Защита СУБД Oracle .................................................... 270

Глава 11. Безопасная настройка СУБД Oracle ..................... 271
11.1. Методы защиты СУБД Oracle от атак на Листенер ........................... 271
11.1.1. Защита Листенера от сканирования ........................................ 271
11.1.2. Ограничение доступа к службе Листенера............................... 273

Содержание
Содержание
Содержание
Содержание
Содержание

11.1.3. Защита от неавторизированных подключений к Листенеру ..... 273
11.1.4. Установка патчей и удаление лишних компонентов ................. 274
11.1.5. Защита от атак, направленных на перехват пароля ................. 275
11.1.6. Защита от неправомерного доступа к конфигурационным
файлам ............................................................................................... 275
11.1.7. Мониторинг обращений к Листенеру и защита от перебора .... 276
11.1.8. Защита от получения злоумышленником SID ........................... 278
11.1.9. Последние штрихи ................................................................... 280
11.2. Настройка парольной защиты ......................................................... 280
11.2.1. Стандартные учетные записи и пароли .................................... 280
11.2.2. Установка паролей и конфигурирование парольной политики .. 282
11.2.3. Настройка OS Authentication и Remote OS Authhentication ........ 285
11.2.4. Защита от неправомерного доступа к хэшам паролей ............. 286
11.3. Механизмы внутренней защиты ...................................................... 286
11.3.1. Первичная настройка и установка критических обновлений .... 287
11.3.2. Безопасное назначение привилегий........................................ 288
11.3.3. Ограничение доступа к ОС....................................................... 291
11.3.4. Защита от руткитов ................................................................. 293
11.4. Заключение ..................................................................................... 293
11.5. Полезные ссылки ............................................................................ 294

Глава 12. Аудит и расследование инцидентов..................... 295
12.1. Введение в подсистему аудита СУБД Oracle ................................... 295
12.1.1. Уровни подсистемы аудита...................................................... 296
12.1.2. Включение ведения журнала аудита ........................................ 300
12.1.3. Защита журналов аудита ......................................................... 302
12.2. Настройка аудита событий для обнаружения злоумышленника ...... 303
12.2.1. Отслеживание атак на Листенер и подбора SID ....................... 303
12.2.2. Отслеживание попыток подбора имен пользователей
и паролей ............................................................................................ 303
12.2.3. Отслеживание попыток повышения привилегий ...................... 306
12.2.4. Отслеживание доступа к таблицам с паролями ....................... 308
12.2.5. Отслеживание доступа к ОС .................................................... 309
12.2.6. Отслеживание попыток скрытия следов пребывания .............. 310
12.3. Заключение ..................................................................................... 311
12.4. Полезные ссылки ............................................................................ 311

Глава 13.  Соответствие стандартам безопасности ......... 312
13.1. Законы и стандарты в сфере ИБ ...................................................... 312
13.2. Стандарт PCI DSS ............................................................................ 314
13.2.1. Начальные сведения о PCI DSS ................................................ 315
13.2.2. СУБД Oracle и PCI DSS ............................................................. 315
13.3. Решения Oracle для соответствия СУБД требованиям
безопасности........................................................................................... 316
13.3.1. Oracle Advanced Security .......................................................... 316
13.3.2. Oracle Secure Backup ............................................................... 316

Содержание
Содержание
Содержание
Содержание
Содержание

13.3.3. Oracle Enterprise Manager Configuration.................................... 317
13.3.4. Oracle Database Vault ............................................................... 317
13.3.5. Oracle Identity Management ...................................................... 317
13.3.6. Oracle Audit Vault ...................................................................... 317
13.4. Заключение ..................................................................................... 318
13.5. Полезные ссылки ............................................................................ 318

Заключение ........................................................................................... 319

Соответствие СУБД Oracle требованиям PCI DSS .............. 320

Приложение A. Применимость PCI DSS
к хостингпровайдерам ................................................................... 331

Приложение B. Компенсирующие меры ................................. 333

Благодарности

В первую очередь хочется поблагодарить весь рабочий коллектив компании
Digital Security за помощь и поддержку, оказанную в процессе работы над материалом. И в частности, Илью Медведовского, под редакцией которого выходит данная книга, за то, что поддержал идею написания этой книги, дал возможность
опубликовать ее, делился своим опытом и помогал преодолевать возникающие
трудности. Свою благодарность хочу также выразить техническому редактору
этой книги и моему коллеге Антону Карпову – за его работу по коррекции материала для данной книги. Отдельное спасибо Леониду Кацу, за редактирование
иллюстраций к данной книге. И всем остальным сотрудникам.
Хочу выразить благодарность тем людям, без которых, возможно, я бы в свое
время вообще не заинтересовался темой, которой посвящена эта книга. Это профессор Владимир Владимирович Платонов, благодаря которому я с большим энтузиазмом начал относиться к теме информационной безопасности, и мой преподаватель по базам данных, доцент Леонид Бушуев, благодаря которому, я впервые
познакомился с СУБД Oracle и после чего решил заняться вопросами ее безопасности.
Нельзя не поблагодарить всех известных исследователей безопасности СУБД
Oracle, на статьях и публикациях которых я рос в профессиональном плане. Это
такие люди, как Дэвид Личфилд (David Litchfield), Пит Финниган (Pete Finnigan), Александр Корнбруст (Alexander Kornbrust) и др., чьи исследования всегда
заставляли меня восхищаться ими. Они были и остаются для меня теми авторитетами, которые показывали, что всегда есть к чему стремиться, и не давали расслабиться ни на секунду.
И конечно же, хотел бы поблагодарить мою семью, близких друзей и любимую
девушку за веру в меня и терпение, а также извиниться перед ними за то, что работа над книгой отняла у меня значительную часть времени, по праву принадлежащего им.

Предисловие от редактора

Уважаемый читатель!
В 2009 году исполняется 10летний юбилей книги «Атака на Интернет». Все это
время меня часто тревожил тот факт, что после того как тема информационной
безопасности стала популярна и наш рынок буквально заполонили книги по информационной безопасности, подавляющее большинство из них, к сожалению,
являлись простой компиляцией общеизвестных фактов и были написаны авторами, очень далекими от практики. При этом переводные издания представляли гораздо больший интерес. Возникает вопрос – неужели перевелись в России исследователипрактики, для которых вопросы анализа защищенности операционных
систем и приложений не являются пустым звуком? На самом деле ответ лежит на
поверхности. Несмотря на то что исследователейодиночек довольно много, их
деятельность эпизодична и, за редким исключением, скрыта от широкой общественности, а результаты малоизвестны в России, не говоря уж о Западе. Кроме
того, на сегодняшний момент (рубеж 2008–2009 годов) в России и странах СНГ
существует только один известный и получивший международное признание исследовательский центр, основной задачей которого является поиск и исследование новых уязвимостей. Речь идет о Digital Security Research Group (DSecRG),
который был открыт и финансируется нашей компанией с середины 2007 года.
Откуда в этом случае взяться исследователям уязвимостей с большим практическим опытом, если их деятельность в России никому не нужна и не приносит им
никаких дивидендов? При этом стоит обратить внимание на тот факт, что на Западе практически у каждой серьезной компании, работающей в области информационной безопасности (ИБ), обязательно есть свой исследовательский центр.
Почему? Ответ опять же на поверхности. Специфика наших компаний, специализирующихся в области ИБ, – ориентация сугубо на внутренний рынок и самое
главное – отсутствие у большинства российских консультантов (назвать их аудиторами не поднимается рука) необходимости в проведении квалифицированного
технологического аудита информационной безопасности, основная цель которого –
поиск уязвимостей в информационной системе компании. Ведь большинство подобных «аудиторов» в РФ – интеграторы. Интегратор по определению совершенно не заинтересован в проведении подобных углубленных технических проверок
и имитации действий реальных злоумышленников – того, что называется активным аудитом. При реализации концепции активного аудита внутренней корпоративной сети компании применяется следующая модель нарушителя: аудитор получает только физический доступ к ресурсам и, не имея логических прав доступа,
начинает искать и реализовывать уязвимости, последовательно проникая в систе12
12
12
12
12

му. Так вот, основной бизнес интегратора – разработка как можно более дорогостоящих решений и последующее их внедрение у заказчика. Наша же практика
проведения активного аудита наглядно показывает (это подтверждается и международной практикой), что подавляющее большинство найденных в процессе
аудита реальных проблем и уязвимостей закрываются практически бесплатно:
установкой обновлений, тонкими настойками ОС и приложений, внедрением соответствующих процедур системы менеджмента ИБ. Очевидно, что такой аудит
категорически противопоказан для интегратора – он просто испортит ему весь
основной интеграционный бизнес. Именно поэтому интеграторы, вместо применения технологии активного аудита, обычно просто используют сканеры уязвимостей
с дополнительным анализом настроек ОС и приложений. При этом понятно, что
для анализа отчета современного сканера уязвимостей навыки квалифицированного аудитора не требуются.
И что в итоге? А в итоге на практике оказывается, что техническим аналитикам, обладающим «хакерскими навыками», то есть специалистам по поиску и реализации уязвимостей, просто негде работать и негде применять эти навыки на
практике «в мирных целях».
Именно поэтому в России такой дефицит интересных практических книг, посвященных практике анализа защищенности, написанных отечественными авторами.
Мне, как автору первой и одной из наиболее популярных за последние 10 лет
в России исследовательской книги по анализу защищенности, очень приятно передавать эстафету моим молодым коллегам из DSecRG. И я рад, что именно наша
компания, Digital Security, имеет возможность быть тем местом, где увлеченные и
талантливые молодые специалисты могут расти и развиваться. А в таланте сомневаться не приходится – уже за первые полгода работы исследовательского центра
DSecRG получил благодарности от таких компаний, как Oracle, SAP, Alcatel и разработчиков таких известных продуктов, как Ruby.
Я уверен, что эта книга, основанная исключительно на практическом опыте
автора из DSecRG, вызовет у вас безусловный интерес, предоставив обширный
материал для размышлений о специфике защищенности систем управления базами данных.
Илья Медведовский, к.т.н.,
директор компании Digital Security

Предисловие от редактора
Предисловие от редактора
Предисловие от редактора
Предисловие от редактора
Предисловие от редактора

Введение

В настоящее время анализ защищенности корпоративных сетей все чаще показывает, что уровень обеспечения информационной безопасности заметно возрос: администраторы своевременно устанавливают системные обновления на рабочие
станции и серверы, стандартные пароли на доступ к активному сетевому оборудованию встречаются все реже, сети сегментируют и разграничивают доступ, парольная политика во многих системах соблюдается. Однако существует еще ряд
проблем, которым до сих пор не уделяется должного внимания. Одна из них – это
защищенность корпоративных систем управления базами данных (СУБД).
Как известно, в корпоративных системах любая важная информация обычно
хранится в базах данных, и конечной целью злоумышленника, как правило, является именно информация, находящаяся в них, которая зачастую важнее, чем права администратора на атакуемом сервере.
В этой книге будет детально рассмотрен вопрос безопасности СУБД Oracle,
как наиболее распространенной среди существующих СУБД. Большинство книг,
в которых уделяется внимание безопасности Oracle, рассматривают в основном
механизмы установки и настройки существующих средств безопасности. Такие
книги по большому счету являются переводами разделов технической документации, отвечающих за безопасность. В них рассматриваются основные вопросы,
связанные с аутентификацией, шифрованием, разграничением доступа, но крайне мало внимания уделяется тому, зачем нужны эти механизмы и как на практике
осуществляется реальное проникновение в базу данных, от которого необходимо
уметь защищаться.
Как известно, чтобы понять, как защититься от злоумышленника, нужно хорошо знать и понимать методы его работы. Данная книга будет, прежде всего, отличаться своим подходом к рассмотрению проблемы. Основной акцент будет сделан
на детальное объяснение практической стороны методов проникновения в СУБД;
будут рассмотрены реальные примеры атак, реализованные автором на практике и
подкрепленные детальным описанием проблемы. При этом речь идет не о простом
перечне уязвимостей, а о системном подходе к вопросу проникновения в СУБД.
Как итог, читатель сможет взглянуть на вопрос безопасности СУБД с точки зрения
злоумышленника, что в итоге  поможет ему настроить адекватную защиту.
О содержании

В первой части книги мы встанем на место злоумышленника, обладающего
минимумом знаний об атакуемом сервере. После вводной главы, рассказывающей
вкратце об архитектуре СУБД и основных ее компонентах (те, кто знаком с этими

14
14
14
14

основами, могут сразу перейти к следующим главам), мы рассмотрим все этапы
проникновения в СУБД, не имея в ней логических прав. Во второй главе мы узнаем о проблемах сетевой безопасности СУБД Oracle и таких ее компонентов, как
служба TNS Listener. После чего займемся вопросом подключения к СУБД, в частности, подбором SID (глава 3). Получив SID, мы сможем подбирать имена пользователей и пароли, о чем будет рассказано в главе 4. В главе 5 будут рассмотрены
альтернативные способы получения доступа к СУБД через уязвимости в сервере
приложений Oracle Application Server. После того как станет ясно, каким образом
можно проникнуть в СУБД, используя различные уязвимости и ошибки конфигурации, описанные в первой части, мы перейдем ко второй части книги.
Во второй части мы возьмем за основу наличие доступа к СУБД с минимальными правами и изучим, какие действия можно совершить в этом случае. Сначала
попробуем повысить свои права в СУБД и научимся писать собственные эксплоиты для повышения привилегий (главы 6, 9). Потом разберемся с уязвимостями
алгоритма шифрования паролей (глава 7), после чего попробуем получить доступ
к командной строке операционной системы и обеспечить себе в ней административные права (глава 8), а под конец научимся оставлять backdoor в СУБД и скрывать свое присутствие от администратора (глава 10).
В итоге, когда читатель поймет основные проблемы, связанные с защищенностью СУБД Oracle, он сможет осознанно и обоснованно применять существующие методы и механизмы защиты, о которых будет рассказано в третьей части
книги. Третья часть начнется с общих советов по обеспечению безопасности
СУБД как от внешних, так и от внутренних нарушителей (глава 11), после чего
мы познакомимся с основными принципами проведения аудита и расследования
инцидентов в Oracle (глава 12). И в заключение познакомимся с существующими
требованиями стандартов безопасности, в частности PCI DSS, и рассмотрим основные моменты настройки СУБД Oracle на соответствие данному стандарту
(глава 13).
Автор надеется, что после прочтения книги читатель не только сможет посмотреть на проблему со стороны злоумышленника и поиному взглянуть на применение механизмов защиты, но и в итоге сам изобрести чтото новое для их совершенствования.
Основные термины и сокращения

Прежде чем мы начнем изучение Oracle, необходимо, чтобы всем были ясны
некоторые основные термины, которые будут встречаться в тексте. Ниже приведен небольшой список основных терминов, которые будут использоваться по
ходу книги.
ОС – операционная система.
ФС – файловая система.
ИС – информационная система. Совокупность объектов, таких как: серверы, рабочие станции и активное оборудование, объединенные локальной
сетью;

Введение
Введение
Введение
Введение
Введение

15
15
15
15

БД (DB) – база данных. Совокупность данных, специально организованных для упрощения их извлечения.
СУБД (DBMS) – система управления базами данных. Oracle – это СУБД.
Схема (Schema) – набор объектов БД, куда входят таблицы, процедуры,
функции, триггеры и пр.
DDL (Data Definition Language) – язык описания данных. Команды этого
языка предназначены для создания, изменения и удаления объектов схемы, а также для предоставления привилегий и назначения ролей, установки опций аудита и добавления комментариев в словарь данных.
DML (Data Manipulation Language) – язык манипулирования данными.
Команды этого языка позволяют строить запросы и оперировать с данными существующих объектов схемы. К DMLкомандам относятся: DELETE,
INSERT, SELECT и UPDATEкоманды.
Процедура – это набор SQLили PL/SQLкоманд, который выполняет
определенную задачу. Процедура может иметь входные параметры, но не
имеет выходных.
Функция – это совокупность SQLили PL/SQLкоманд, которая реализует определенную задачу. Функция отличается от процедуры тем, что возвращает какоелибо значение (процедура ничего не возвращает).
Хранимая процедура – это предопределенный SQLзапрос, сохраненный
в базе  данных. Хранимые процедуры разрабатываются для эффективного
выполнения запросов.
Программный блок – относительно СУБД Oracle это программа, используемая для описания пакета, хранимой процедуры или последовательности.
Транзакция – группа последовательных операций, которая представляет
собой логическую единицу работы с данными. Транзакция может быть выполнена целиком либо успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще,
и тогда она не должна произвести никакого эффекта.
Запрос – это транзакция «только для чтения». Запрос генерируется с помощью команды SELECT. Различие между обычной транзакцией и запросом
состоит в том, что при запросе данные не изменяются.
Триггер – это механизм, позволяющий создавать процедуры, которые будут
автоматически запускаться при выполнении команд INSERT, UPDATE или
DELETE.
Таблица – основная единица хранения данных БД Oracle. Состоит из имени таблицы, строк и столбцов. Каждый столбец также имеет имя и тип данных. Таблицы хранятся в табличных пространствах.
Представление (view) – не хранит никаких данных, оно лишь является результатом некой выборки данных.  С представлениями можно делать те же
операции, что и с таблицами (строить запросы, обновлять, удалять) без
всяких ограничений.

Основные термины и сокращения
Основные термины и сокращения
Основные термины и сокращения
Основные термины и сокращения
Основные термины и сокращения

16
16
16
16

История. Статистика

СУБД Oracle, как одна из самых старых СУБД, присутствующих на рынке,
имеет длинную историю, начавшуюся в 1977 году и продолжающуюся до сих пор.
В 1977 году Ларри Эллисон, Боб Майнер и Эд Оутс основали компанию Software
Development Laboratories (SDL), предшественницу Oracle. В 1979 году SDL сменила имя на Relational Software, Inc. (RSI) и выпустила Oracle v2. Это была первая коммерческая система управления реляционными базами данных на основе
языка запросов SQL. В 1982 году RSI вновь сменила свое имя и стала называться
Oracle Systems; с этого момента началась долгая история уже компании Oracle.
C 15 марта 1986 Oracle Сorporation выходит на биржу, а в 1997 году выходит
версия Oracle 8 (8.0), которая отличалась повышенной надежностью, поддержкой
большего числа пользователей и больших объемов данных.
Oracle 8.0 можно считать самой старой версией СУБД из тех, что могут встретиться в реальной жизни; шанс встретить предыдущие версии на текущий момент
очень низок. Следующие версии СУБД уже часто встречаются в реальных системах, даты их выпуска приведены ниже в таблице.

Хронология выпуска версий СУБД Oracle

Год выпуска
Версия СУБД Oracle

1998
Oracle 8i Release 2 (8.1.6)
2000
Oracle 8i Release 3 (8.1.7)
2001
Oracle 9i Release 1 (9.0.1)
2004
Oracle 10g Release 1 (10.1.0)
2005
Oracle 10g Release 2 (10.2.0.1)

2007
Oracle 11g Release 1 (11.1.0.6)

Поскольку тема безопасности Oracle довольно обширна, для начала был проведен небольшой анализ того, на чем нужно сосредоточить большее внимание,
а именно, какие версии СУБД наиболее распространены на данный момент и на
каких операционных системах чаще устанавливают СУБД Oracle.
В результате проведенного анализа данных аудитов за последние 3 года была
получена небольшая статистика, выявившая, что в 80% компаний так или иначе
использовалась СУБД Oracle. Далее были выявлены наиболее распространенные
версии СУБД Oracle (рис. 11).
Как оказалось, Oracle Database версии 9i до сих пор является самой актуальной, несмотря на то, что версия 10g вышла еще в 2004 году, а недавно уже вышла и
11я версия. Следует отметить, что официальная поддержка версии Oracle 8i прекратилась в декабре 2006 года, и скоро та же участь постигнет и девятую версию.
Это означает, что официальных заплаток на все новые уязвимости, найденные
в этих версиях, выпущено не будет.
Была также составлена статистика по операционным системам, на которые
обычно устанавливается СУБД Oracle. Как выяснилось, большинство СУБД
Oracle было установлено на серверах под управлением ОС Windows и Linux
(рис. 12).

Введение
Введение
Введение
Введение
Введение

17
17
17
17

Исходя из полученной статистики, дальнейший анализ безопасности было
решено сосредоточить на наиболее распространенной на данный момент версии
Oracle 9i, а также на версии 10g, которая уже в ближайшее время должна ее полностью заменить. Хоть в реальных системах на текущий момент СУБД Oracle
11й версии почти не встречается, в книге о ней будет также немало рассказано,
так как рано или поздно она займет свое место на серверах.

Рис. 12. Процентное соотношение ОС, на которые устанавливается СУБД Oracle,
по данным статистики, собранной компанией Digital Security

Рис. 11. Процентное соотношение популярности
различных версий СУБД Oracle

История. Статистика
История. Статистика
История. Статистика
История. Статистика
История. Статистика

ЧАСТЬ I. АНАЛИЗ ЗАЩИЩЕННОСТИ
СУБД ORACLE СНАРУЖИ

Глава 1. Архитектура СУБД

Система управления базами данных (СУБД) Oracle предназначена для одновременного доступа к большим объемам хранимой информации и манипуляции
с ними. В СУБД есть два основных понятия, которые необходимо усвоить для понимания некоторых моментов данной книги, – это база данных и экземпляр. Если
в двух словах, то база данных – это набор файлов в ОС, а экземпляр – процессы и
память, причем одна база данных может быть доступна в нескольких экземплярах, а экземпляр единовременно обеспечивает доступ только к одной базе данных.
Теперь рассмотрим эти понятия подробнее.
1.1. База данных

В базе данных есть два уровня представления данных: физический и логический. Физический уровень включает файлы баз данных, которые хранятся на диске, а логический уровень включает в себя табличное пространство, схемы пользователей. Рассмотрим эти уровни более подробно.

1.1.1. Физический уровень

База данных и экземпляр на физическом уровне представлены шестью типами файлов. К экземпляру относятся файлы параметров, в которых прописываются
его характеристики. Основной файл – это файл init.ora, отвечающий за параметры
инициализации экземпляра, такие как имя базы данных, ссылку на управляющие
файлы и пр. Пример файла инициализации представлен на рис. 1.1.11.

Файлы базы данных
База данных как таковая представлена набором файлов разных типов, в которых собственно хранятся различные данные. Ниже кратко рассказано о том, что
представляют собой эти типы файлов и чем файлы каждого типа могут быть нам
полезны:
Файлы данных. В этих файлах хранятся собственно сами данные в виде
таблиц, индексов, триггеров и прочих объектов. Файлы данных являются
наиболее важными во всей базе данных. В стандартной базе должно присутствовать минимум два файла данных: для системных данных (таблич19
19
19
19
19

ное пространство SYSTEM) и для пользовательских данных (табличное
пространство USER).
В табличном пространстве SYSTEM хранятся пароли всех пользователей
в зашифрованном виде.
Файлы журнала повторного выполнения (redo logs). Файлы журнала повторного выполнения очень важны для базы данных Oracle. В них записываются все транзакции базы данных. Они используются только для восстановления данных в самой базе при сбое экземпляра.
В журналах повторного выполнения можно обнаружить множество критичной информации, о существовании которой рядовой администратор
мог и не задуматься, в том числе и пароли пользователей.
Управляющие файлы. В этих файлах определено местонахождение файлов
данных и другая информация о состоянии базы данных. Управляющие файлы должны быть хорошо защищены. Наиболее важным является файл параметров инициализации экземпляра, потому что без него не удастся запустить
экземпляр. Остальные файлы, такие как LISTENER.ORA, SQLNET.ORA,
PROTOCOL.ORA, NAMES.ORA и пр., связаны с поддержкой сети и также очень важны.

Рис. 1.1.11. Фрагмент инициализационного файла init.ora

База данных
База данных
База данных
База данных
База данных

К покупке доступен более свежий выпуск Перейти