Взлом паролей в MS SQL Server

Система парольной защиты пакета SQL Server оказалась не такой устойчивой, как принято было считать. Такое открытие сделал Дэвид Личфилд (David Litchfield), специалист по компьютерной безопасности из компании Next Generation Security Software (NGSS), изучив работу недокументированной функции pwdencrypt(), отвечающей за хэширование паролей в SQL Server.

Система парольной защиты пакета SQL Server оказалась не такой устойчивой, как принято было считать. Такое открытие сделал Дэвид Личфилд (David Litchfield), специалист по компьютерной безопасности из компании Next Generation Security Software (NGSS), изучив работу недокументированной функции pwdencrypt(), отвечающей за хэширование паролей в SQL Server.
Первым делом Личфилд решил проверить, добавляется ли в хэш пароля случайный шум, позволяющий более надежно зашифровать информацию. Для этого он сверил значения, возвращаемые pwdencrypt() от одного и того же пароля (для проверки Личфилд выбрал слово foo), но в разное время. При этом оказалось, что результаты действительно различаются - то есть, к хэшу пароля добавляется случайное значение, которое генерируется в зависимости от времени суток и позволяет замаскировать одинаковые по написанию пароли. Далее Личфилд проанализировал механизм генерации шума, который представляет собой целое число, получаемое в результате объединения двух псевдослучайных чисел, которые, в свою очередь, генерируются, исходя из системного времени.

Сведения о механизме создания шума уже облегчают взлом паролей, однако дальнейшие изыскания показали, что в система хранения паролей еще более уязвима. Как оказалось, вводимый пользователем пароль сначала переводится в формат unicode, затем к нему добавляется шум, а после этого осуществляется хэширование пароля. Однако в SQL Server хранится не одна, а две версии пароля. Первая из них зависит от регистра символов, а вторая состоит исключительно из символов в верхнем регистре. При этом к обеим версиям пароля добавляется одинаковый шум. Таким образом, зная механизм генерации шума можно простым перебором слов подобрать пароль в верхнем регистре - для этого требуется значительно меньше ресурсов, чем при подборе пароля, чувствительного к регистру - после чего подбор последнего становится тривиальной задачей.

Для демонстрации обнаруженной уязвимости Литчфилд написал простую программу на Си, которая вначале хэширует все имеющиеся в ее распоряжении слова, сравнивая ее с хранящимся в SQL Server хэшем пароля в верхнем регистре. На компьютере с процессором Pentium III с частотой 1 ГГц и 256 Мб ОЗУ программа за две секунды перебирает 200 000 слов.


или введите имя

CAPTCHA