Автор работы: Пользователь скрыл имя, 02 Октября 2009 в 19:14, Не определен
В реферате содержится информация о современных методах защиты баз данных.
Что в итоге? В общем, достаточно банальные советы: чтобы обезопаситься от взлома, поставьте все существующие заплатки (как всегда), используйте по возможности для разных задач несколько компьютеров, привыкните чаще менять пароли и делать их большими. Правда, обычно этого никто не делает...
Ну а если вы уверены в своей безопасности – дайте мне свой IP, и я постараюсь проверить ее. Об оплате поговорим потом...
1 Nimda=Admin наоборот. Тонкий намек ;)
2 Так, например, в
организации, где я работаю,
ставили сервер баз данных MS SQL
Server и Active Directory. Чтобы это осуществить,
пришлось дополнительно
3 Так было в MS SQL Server 7. В 2000 уже появилось предупреждение о создании пользователя sa с пустым паролем.
4 Стоит только
оговориться, а "взломан"
ли компьютер? Ведь ничего
P.S.
Уже спустя через довольно
продолжительный для
Взлом паролей в MS SQL Server
Система
парольной защиты пакета SQL Server оказалась
не такой устойчивой, как принято
было считать. Такое открытие сделал
Дэвид Личфилд (David Litchfield), специалист
по компьютерной безопасности из компании
Next Generation Security Software (NGSS), изучив работу
недокументированной функции pwdencrypt(),
отвечающей за хэширование паролей
в SQL Server. Первым делом Личфилд решил
проверить, добавляется ли в хэш
пароля случайный шум, позволяющий
более надежно зашифровать
Сведения
о механизме создания шума уже
облегчают взлом паролей, однако
дальнейшие изыскания показали, что
в система хранения паролей еще
более уязвима. Как оказалось, вводимый
пользователем пароль сначала переводится
в формат unicode, затем к нему добавляется
шум, а после этого осуществляется
хэширование пароля. Однако в SQL Server
хранится не одна, а две версии пароля.
Первая из них зависит от регистра
символов, а вторая состоит исключительно
из символов в верхнем регистре.
При этом к обеим версиям пароля
добавляется одинаковый шум. Таким
образом, зная механизм генерации шума
можно простым перебором слов
подобрать пароль в верхнем регистре
- для этого требуется
Для демонстрации обнаруженной уязвимости Литчфилд написал простую программу на Си, которая вначале хэширует все имеющиеся в ее распоряжении слова, сравнивая ее с хранящимся в SQL Server хэшем пароля в верхнем регистре. На компьютере с процессором Pentium III с частотой 1 ГГц и 256 Мб ОЗУ программа за две секунды перебирает 200 000 слов.
Обзор уязвимостей с наглядными примерами
Стало модным хранить информацию в БД - от сообщений на попсовых форумах до генетических кодов новейших белковых соединений. Понятно, что для хакеров такие базы являются предметом страстного желания и возможностью поправить свое материальное положение. А чтобы встать на защиту СУБД, надо понимать основные приемы ее взломщика.
Несмотря на то что SQL-сервер находится за брандмауэром и принимает подключения только с доверенных машин, стащить важную информацию с него не так уж и сложно. Более того, для этого даже не нужно быть суперхакером, достаточно получить доступ к одному серверу из локальной сети, и данные окажутся в преступных руках. Если, конечно, администратор не уделил серверу особого внимания.
Парольная проблема
Чаще всего взлом СУБД происходит из-за "плохого" пароля или из-за его полного отсутствия. Но даже если он и существует, взломать БД для хакера не составит особого труда. Чтобы ты в полной мере осознал проблему, приведем ряд примеров-взломов (от простого к сложному).
1.
Как-то раз хакер баловался
и сканировал nmap’ом какую-то русскую
подсеть в зоне *.rose.ru, в которой
находились серверы одного
2.
Поздним вечером другой хакер
сканировал на различные
3.
Подобным образом некий хакер
несколько раз проникал на Windows'овские
mysqld. Дело в том, что в ранних
версиях разработчики забили
на аутентификацию в Win32-
Прицел на MySQL
Большинство ценных баз данных хранятся в СУБД под названием MySQL. По правилам безопасности этот демон должен быть установлен на *nix-like-системах на отдельно взятом сервере. Но часто происходит так, что все сервисы (включая mysqld) вертятся на одной машине, обычно ради экономии денег. Отсюда возможности взлома MySQL. Ниже приводим три примера из жизни, чтобы показать проблему наглядно.
Пример 1: Root - спаситель
Рассмотрим один из типичных случаев взлома БД. Однажды некий хакер нашел сервер, на котором крутился бажный mod_php. Через пару часов эксплойт 7350fun предоставил ему шелл-доступ к машине. Быстро залив хороший backdoor, хакер зашел по телнету на порт 31337 ;), затем добил сервер известным эксплойтом для ядерной баги ptrace (не стоит говорить про то, как администраторы патчат ядра) и получил рутовые права.
Помимо
web-сервера, на машине располагался MySQL.
По всем правилам порт 3306 был зафильтрован
файрволом, на сервисе стоял сложный
пароль и запрет на вход с посторонних
машин. Однако mod_php и дырявое ядро
создали все условия для
Пример 2: Поиск пароля
Как-то
раз в аську к некому хакеру
постучался его друг и стал слезно
умолять достать пароль одного недруга
на форум, чтобы отправить несколько
нецензурных сообщений от его
имени. Работа была простая, взломщик даже
нашел баг в www-скрипте, позволяющему
выполнять команды на сервере. Хакер
залил backdoor и забрался в консоль.
К сожалению, на сервере стояла новенькая
FreeBSD, для которой не существует хороших
локальных эксплойтов. Следовательно,
прием с перезапуском mysqld тут
не прокатит. СУБД и web-сервер находились
на одной машине, а хакер был
наделен правами nobody. В таком положении
ему требовалось найти конфиг
от форума, что он успешно сделал
с помощью команды "locate config.inc.php".
В конфигурационном файле находилась
учетная запись на сервис MySQL. Последняя
команда "mysql –uuser –ppassword –e ‘select password
from users where username=’user’’ forum" выдала хакеру
зашифрованный пароль пользователя.
Оставалось только расшифровать пароль
с помощью Md5Inside (http://inattack.ru/program/25
Здесь же уместен другой случай взлома MySQL. Однажды некому хакеру посчастливилось подобрать пароль одного пользователя на раскрученном хостинге. Его права были урезаны по самые уши, даже компилятор не запускался. Тогда хакеру пришло в голову выполнить команду "find / -name *history". И что ты думаешь? Он нашел целых пять читабельных файлов .mysql_history. В них, конечно же, была строчка с паролем доступа в незашифрованном виде. Таким вот образом хакер получил доступ к пяти таблицам MySQL. Правда, информация там не была особо ценной, в основном аккаунты к форуму или к free email-сервису...
Пример 3: Атака эксплойтом
Не
так давно для MySQL появился рабочий
эксплойт. Суть его в том, что пользователь
может отправить сложный
Помимо этого эксплойта, существуют и другие. Однако рассказывать про них не имеет смысла, потому что сейчас ты уже не найдешь дырявые версии. А пару лет назад была возможность не только проникнуть в СУБД, но и выполнять команды на сервере с правами суперпользователя.
Кстати, о командах. Через MySQL невозможно выполнить запрос, который бы интерпретировался каким-либо шеллом. Однако никто не запретит тебе создать файл с произвольными данными, владельцем которого будет пользователь, под которым ты зашел в СУБД. Для этого выполняется нехитрый SQL-запрос: "SELECT * FROM table INTO OUTFILE ‘/home/user/blah.txt’". Если файл blah.txt существует, он успешно перезапишется. В некоторых целях этот трюк может быть очень полезен, особенно если зайти под рутовым аккаунтом.
Атака MS SQL
Вторая по популярности СУБД носит гордое имя MS SQL и используется на многих раскрученных (чаще всего зарубежных) серверах. Несмотря на то, что для этого сервиса вышло целых три сервиспака, баги в творении MicroSoft были, есть и будут :).
Самый первый баг, о котором пишут уже много лет, заключается в недостаточной настройке MS SQL. Действительно, некоторые админы устанавливают сервер, видят, что все работает, и экспортируют ценную БД. Особо одаренные администраторы даже не задумываются, что вход в СУБД через пользователя sa с пустым паролем - не совсем безопасная идея :). Вспоминается случай, когда пару лет назад некий хакер проверял защиту одного зарубежного интернет-магазина, торгующего постерами. На главном сервере была установлена Windows с седьмым MS SQL. Факт отсутствия файрвола очень заинтриговал хакера. Он нашел в интернете клиент isql.exe, с помощью которого осуществляется обращение к СУБД, а затем попробовал залогиниться под пользователем Administrator. Хакера послали куда подальше, но он не стал отчаиваться, а просто сменил логин на sa. И... побывал внутри системы :).
Получить
доступ к MS SQL значит завладеть всей
системой. В отличие отсвоих конкурентов,
разработчики этой СУБД включили некоторые
функции, выполняющие системные
команды. Одна из них называется xp_cmdshell.
Причем в ряде случаев никто не
запрещает выполнять внешние
запросы даже под гостевым логином
(если администратор не уделил должное
внимание настройке СУБД). К примеру,
однажды хакер баловался одним
сканером Windows, определяющим возможность
гостевого входа. Примечательно, что
хакерское творение реализовано
в виде единого bat-файла, который
быстро сканирует заданную подсеть
на наличие гостевого входа в
MS SQL. Чтобы проверить сеть на уязвимость,
необходимо положить в каталог с
файлом scan.bat (www.securitylab.ru/35715.html