ОСНОВЫ БЕЗОПАСНОСТИ В
WINDOWS
2000/XP/2003
(безопасное хранение паролей в
Windows
2000/XP)
ВВЕДЕНИЕ
В настоящее время операционные системы
WINDOWS
2000 и WINDOWS
XP
фирмы MICROSOFT,
основанные на ядре
WINDOWS
NT,
получили очень широкое распространение. Процент этих ОС среди всех
Windows-систем
очень велик и продолжает расти, поэтому проблема их безопасности является одним
из важных аспектов современной компьютерной безопасности.
Мы рассмотрим основы безопасности
Windows
2000/XP
и дадим практические советы
по созданию максимально защищённого компьютера под управлением этих ОС.
Хранение паролей в
Windows 2000/XP
Несомненно, самым главным аспектом при анализе безопасности
Windows
2000/XP является сохранность паролей учётных записей с правами Администратора, так как знание
пароля позволяет получить полный доступ к этому компьютеру как локально, так и по
сети, поэтому мы начнём статью с описания того, как
Windows
2000/XP
работает с паролями на вход в систему. Практически всё нижесказанное относится и
к Windows
2003.
Информация об учётных записях пользователей хранится в ветке
“HKEY_LOCAL_MACHINE\SAM”
(SAM
– Security
Account
Manager)
реестра. А так как в
Windows
2000/XP
все ветки реестра «физически» расположены на диске в каталоге %SystemRoot%\System32\Config
в нескольких файлах, то
и эта ветка – не исключение. Она располагается в файле
SAM.
Отметим, что этот файл по умолчанию недоступен для чтения никому, даже Администратору,
но всё-таки, к нему можно получить доступ (каким образом – об этом будет сказано
ниже). К файлу
SAM (а также к остальным файлам без расширений в этой директории –
system,
software
и др.) нет доступа по той
причине, что
Windows 2000/XP используют реестр «на лету» - т.е. при внесении в реестр
изменений они становятся доступны сразу же и перезагрузка не требуется, но для этого
системе надо иметь монопольный доступ к файлам реестра. Напомним, что в операционных
системах реестр хранится в файлах
system.dat
и
user.dat,
которые загружаются однократно при загрузке системы и при изменениях в реестре требуется
перезагрузка компьютера для того, чтобы изменения вступили в силу.
Windows
2000/XP
хранит пароли пользователей не в «явном» виде, а в виде хэшей (hash), т.е. в виде контрольных сумм паролей. Рассмотрим же
хранение паролей пользователей подробнее. Среди сложной структуры
SAM-файла
нам интересна структура, называемая
V-6рок. Она имеет размер 32 байт и содержит в себе хэш пароля локального входа
– NT
Hash
длиной 16 байт, а также хэш, используемый при аутентификации доступа к общим
ресурсам других компьютеров –
LM
Hash,
длиной также 16 байт. Алгоритмы формирования этих хэшей следующие:
ФОРМИРОВАНИЕ
NT HASH
1.
Пароль пользователя
преобразуется в
Unicode-строку.
2.
Генерируется хэш
на основе данной строки с использованием алгоритма
MD4.
3.
Полученный хэш шифруется
алгоритмом
DES,
причём в качестве ключа используется RID (т.е. идентификатор пользователя). Это необходимо для того, чтобы два пользователя
с одинаковыми паролями имели разные хэши. Напомним, что все пользователи имеют разные RID-ы (RID встроенной учётной записи Администратора равен 500, встроенной
учётной записи Гостя равен 501, а все остальные пользователи последовательно получают
RID-ы, равные 1000, 1001, 1002 и т.д.).
ФОРМИРОВАНИЕ
LM HASH
1.
Пароль пользователя
преобразуется в верхний регистр и дополняется нулями до длины 14 байт.
2.
Полученная строка
делится на две половинки по 7 байт и каждая из них по отдельности шифруется алгоритмом
DES,
на выходе которого получаем 8-байтный хэш – в сумме же имеем один хэш длиной 16
байт.
3.
Далее
LM
HASH
дополнительно шифруется так же, как и в шаге 3 формирования
NT
HASH.
Для повышения безопасности хранения
паролей, начиная с 3-его
Service
Pack’a
в Windows
NT
(и во всех последующих
NT-системах,
вплоть до
Windows
2003), полученные хэши дополнительно шифруются ещё одним алгоритмом с помощью утилиты
syskey.
Т.е. к вышеописанным алгоритмам добавляется ещё 4-ый шаг – получение с помощью
syskey
нового хэша от хэша,
полученного на шаге 3.
Рассмотрим методы доступа к
SAM-файлу
и извлечения из него хэшей.
МЕТОДЫ ДОСТУПА К
SAM-ФАЙЛУ И ИЗВЛЕЧЕНИЯ ИЗ НЕГО ХЭШЕЙ
Как уже было сказано, ни прочитать
этот файл, ни отредактировать нет никакой возможности – при попытке чтения этого
файла Windows сообщает
о нарушении совместного доступа, т.к. для системы этот файл всегда открыт и запись
в него производит только сама
Windows.
Однако, получить как данные из
файла, так и доступ к нему, всё-таки можно.
Информацию из него можно извлечь
даже в работающей системе, но только из-под учётной записи Администратора. Здесь
есть два метода получения данных – метод программы
PWDUMP
(который используется в программах
PWDUMP,
LC4,
LC+4
и др.) и метод с использованием планировщика задач (используется в программе
SAMInside).
Метод
PWDUMP
вкратце работает так – программа подключается к системному процессу
LSASS
и с его правами (и его же методами) извлекает хэши из ветки
SAM-реестра, т.е. фактически из
SAM-файла.
Метод же планировщика работает так – по-умолчанию в
Windows
2000/XP
системная утилита
Scheduler
имеет права пользователя
SYSTEM,
т.е. полный доступ к системе. Поэтому, если назначить планировщику задание сохранить
определённую ветку реестра в файл, к примеру, то он в назначенное время сохранит
её на диск. После чего из этого файла извлекаются хэши всех пользователей данного
компьютера.
А что делать, если пароля Администратора
нет и, соответственно, его прав тоже? Тогда злоумышленнику остаётся делать следующее
– если на компьютере установлено несколько Операционных систем, то загружаясь в
любую из них (даже в
Linux)
можно получить доступ к системному диску
Windows 2000/ХР и скопировать
SAM-файл
в другой каталог, чтобы потом, «в спокойной обстановке» загрузить его в нужную программу
для восстановления из него паролей.
Более того, существуют программы,
способные изменять информацию прямо в
SAM-файле,
меняя и добавляя пользователей, а также их пароли (например, программа
Offline
NT
Password
& Registry
Editor).
Правда, для этого также необходимо загружаться в другую ОС и иметь полный доступ
к системному диску
Windows
2000/XP.
Даже если системный диск
Windows
имеет файловую систему
NTFS,
то всё равно можно получить к нему доступ, используя загрузочную дискету, созданную
в программе
NTFSDos
Pro.
Затем, после загрузки с неё, примонтировать нужный
NTFS-раздел и скопировать с него нужные файлы.