Взлом парольной защиты операционной системы Windows NT
База данных учетных записей пользователей
Одним из основных компонентов системы безопасности Windows NT является диспетчер учетных записей пользователей. Он обеспечивает взаимодействие других компонентов системы безопасности, приложений и служб Windows NT с базой данных учетных записей пользователей (Security Account Management Database, SAM). Эта база обязательно имеется на каждом компьютере с операционной системой Windows NT. В ней хранится вся информация, используемая для аутентификации пользователей Windows NT при интерактивном входе в систему и при удаленном доступе к ней по компьютерной сети.
База данных SAM представляет собой один из кустов (hive) системного реестра (registry) Windows NT. Этот куст принадлежит ветви (subtree) HKEY_LOCAL_MACHINE и называется SAM. Он располагается в каталоге \winnt_root\System32\Config (winntroot – условное обозначение каталога с системными файлами Windows NT) в отдельном файле, который тоже называется SAM.
Информация в базе данных SAM хранится в основном в двоичном виде. Доступ к ней обычно осуществляется через диспетчер учетных записей. Изменять записи, находящиеся в базе данных SAM, при помощи программ, позволяющих напрямую редактировать реестр Windows NT (REGEDT или REGEDT32), не рекомендуется. По умолчанию этого и нельзя делать, т. к. доступ к базе данных SAM запрещен для всех без исключения категорий пользователей операционной системы Windows NT.
Хранение паролей пользователей
Именно в учетных записях базы данных SAM находится информация о пользовательских именах и паролях, которая необходима для идентификации и аутентификации пользователей при их интерактивном входе в систему. Как и в любой другой современной многопользовательской операционной системе, эта информация хранится в зашифрованном виде. В базе данных SAM каждый пароль пользователя обычно бывает представлен в виде двух 16-байтовых последовательностей, полученных разными методами.
При использовании первого метода строка символов пользовательского пароля хэшируется с помощью функции MD4. В итоге из символьного пароля, введенного пользователем (Длина пароля в Windows NT ограничена 14 символами. Это ограничение накладывается диспетчером учетных записей, который не позволяет вводить пароли длиной более 14 символов), получается 16-байтовая последовательность – хэшированный пароль Windows NT. Данная последовательность затем шифруется по DES-алгоритму (DES-алгоритм является одним из самых распространенных алгоритмов шифровала данных. В США он имеет статус федерального стандарта. Это блочный алгоритм шифрования с симметричным ключом длиной 64 бита, из которых только 56 непосредственно используются при шифровании, а остальные 8 предназначены для контроля четности байтов ключа), и результат шифрования сохраняется в базе данных SAM. При этом в качестве ключа используется так называемый относительный идентификатор пользователя (Relative Identifier, RID), который представляет собой автоматически увеличивающийся порядковый номер учетной записи данного пользователя в базе данных SAM.
Для совместимости с другим программным обеспечением корпорации Microsoft (Windows for Workgroups, Windows 95/98 и Lan Manager) в базе данных SAM хранится также информация о пароле пользователя в стандарте Lan Manager. Для ее формирования используется второй метод. Все буквенные символы исходной строки пользовательского пароля приводятся к верхнему регистру, и, если пароль содержит меньше 14 символов, то он дополняется нулями. Из каждой 7-байтовой половины преобразованного таким образом пароля пользователя отдельно формируется ключ для шифрования фиксированной 8-байтовой последовательности по DES-алгоритму. Полученные в результате две 8-байтовые половины хэшированного пароля Lan Manager еше раз шифруются по DES-алгоритму (при этом в качество ключа используется RID пользователя) и помещаются в базу данных SAM.
Использование пароля
Информация о паролях, занесенная в базу данных SAM, служит для аутентификации пользователей Windows NT. При интерактивном или сетевом входе в систему введенный пользователем пароль сначала хэшируется и шифруется, а затем сравнивается с 16-байтовой последовательностью, записанной в базе данных SAM. Если они совпадают, пользователю разрешается вход в систему.
Обычно в базе данных SAM хранятся в зашифрованном виде оба хэшированных пароля. Однако в некоторых случаях операционная система вычисляет только один из них. Например, если пользователь домена Windows NT изменит свой пароль, работая на компьютере с Windows for Workgroups, то н его учетной записи останется только пароль Lan Manager. А если пользовательский пароль содержит более 14 символов или если эти символы не входят в так называемый набор поставщика оборудования (original equipment manufacturer, OEM), то в базу данных SAM будет занесен только пароль Windows NT.