MoD
( off
)
* (
06:17 08-08-2011
)
Пусть тема и старовата, но все же напишу небольшой ФАК по данной теме. Вдруг кому пригодится.
[цит] MoD
( off
)
* (
06:18 08-08-2011
)
Информация об учетных записях пользователей хранится в ветке "HKEY_LOCAL_MACHINE\SAM" (SAM - Security Account Manager) реестра. А так как в Windows XP все ветки реестра "физически" расположены на диске в каталоге %SystemRoot%\System32\Config в нескольких файлах, то и эта ветка - не исключение. Она располагается в файле SAM.
[цит] MoD
( off
)
* (
06:20 08-08-2011
)
Отмечу, что этот файл по умолчанию недоступен для чтения никому, даже Администратору, но все-таки к нему можно получить доступ. К файлу SAM (а также к остальным файлам без расширений в этой директории) нет доступа по той причине, что Windows XP используют реестр "на лету" - т.е. при внесении в реестр изменений они становятся доступны сразу же и перезагрузка компьютера не требуется.
[цит]
[ред.
MoD
08-08-2011 в 06:22] MoD
( off
)
* (
06:21 08-08-2011
)
Windows XP хранит пароли пользователей не в "явном" виде, а в виде хэшей (hash), т.е. в виде "контрольных сумм" паролей. Среди сложной структуры SAM-файла нам интересна структура, называемая V-блок. Она имеет размер 32 байта и содержит в себе хэш пароля для локального входа - NT Hash длиной 16 байт, а также хэш, используемый при аутентификации доступа к общим ресурсам других компьютеров - LanMan Hash или просто LM Hash, длиной 16 байт
[цит] MoD
( off
)
* (
06:22 08-08-2011
)
Алгоритмы формирования этих хэшей следующие:
[цит] MoD
( off
)
* (
06:28 08-08-2011
)
Формирование NT Hash:
1. Пароль пользователя преобразуется в Unicode-строку.
2. Генерируется хэш на основе данной строки с использованием алгоритма MD4.
[цит] MoD
( off
)
* (
06:28 08-08-2011
)
3. Полученный хэш шифруется алгоритмом DES, причем в качестве ключа используется RID (идентификатор пользователя). Это необходимо для того, чтобы два пользователя с одинаковыми паролями имели разные хэши. Напомню, что все пользователи имеют разные RID-ы (RID встроенной учетной записи Администратора равен 500, встроенной учетной записи Гостя равен 501, а все остальные пользователи последовательно получают RID-ы, равные 1000, 1001 и т.д.).
[цит] MoD
( off
)
* (
06:28 08-08-2011
)
Формирование LM Hash:
1. Пароль пользователя преобразуется в верхний регистр и дополняется нулями до длины 14 байт.
2. Полученная строка делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом DES, на выходе которого получаем 8-байтный хэш - в сумме же имеем один хэш длиной 16 байт.
3. Далее LM Hash дополнительно шифруется так же, как и в шаге 3 формирования NT Hash.
[цит] MoD
( off
)
* (
06:29 08-08-2011
)
Для повышения безопасности хранения паролей, начиная с 3-го Service Pack'a в Windows NT (и во всех последующих NT-системах, вплоть до Windows 2003), полученные хэши дополнительно шифруются еще одним алгоритмом с помощью утилиты syskey. Т.е. к вышеописанным алгоритмам добавляется еще 4-й шаг - получение с помощью syskey нового хэша от хэша, полученного на шаге 3.
[цит] MoD
( off
)
* (
06:29 08-08-2011
)
А сейчас мы рассмотрим методы доступа к SAM-файлу и извлечения из него хэшей.
Как уже было сказано, ни прочитать этот файл, ни отредактировать нет никакой возможности - при попытке чтения этого файла Windows сообщает о нарушении совместного доступа, т.к. для системы этот файл всегда открыт и запись в него производит только сама Windows.
[цит]