Введение
База данных Windows, хранящая пароли пользователей. Управляющий учетными записями безопасности (SAM) — это файл базы данных в Windows XP, Windows Vista, Windows 7, 8.1, 10 и 11, который хранит пароли пользователей. Он может использоваться для аутентификации локальных и удаленных пользователей. Начиная с Windows 2000 SP4, аутентификацию удаленных пользователей выполняет Active Directory. SAM использует криптографические меры для предотвращения доступа неавторизованных пользователей к системе. Пароли пользователей хранятся в хэшированном формате в реестре либо как LM-хэш, либо как NTLM-хэш. Этот файл находится в %SystemRoot%/system32/config/SAM и монтируется в HKLM/SAM, для его просмотра требуются привилегии SYSTEM. В попытке повысить безопасность базы данных SAM от взлома программного обеспечения в автономном режиме, Microsoft представила функцию SYSKEY в Windows NT 4.0. При включенном SYSKEY, копия файла SAM на диске частично зашифрована, так что хэш-значения паролей для всех локальных учетных записей, хранящихся в SAM, шифруются ключом (обычно также называемым "SYSKEY"). Включить ее можно, запустив программу syskey. Начиная с Windows 10 версии 1709, syskey был удален из-за сочетания недостаточной безопасности и злоупотреблений со стороны злоумышленников, которые использовали ее для блокировки доступа пользователей к системам.
The Security Account Manager (SAM) is a database file in Windows XP, Windows Vista, Windows 7, 8.1, 10 and 11 that stores users' passwords. It can be used to authenticate local and remote users. Beginning with Windows 2000 SP4, Active Directory authenticates remote users. SAM uses cryptographic measures to prevent unauthenticated users accessing the system. The user passwords are stored in a hashed format in a registry hive either as an LM hash or as an NTLM hash. This file can be found in %SystemRoot%/system32/config/SAM and is mounted on HKLM/SAM and SYSTEM privileges are required to view it. In an attempt to improve the security of the SAM database against offline software cracking, Microsoft introduced the SYSKEY function in Windows NT 4.0. When SYSKEY is enabled, the on disk copy of the SAM file is partially encrypted, so that the password hash values for all local accounts stored in the SAM are encrypted with a key (usually also referred to as the "SYSKEY"). It can be enabled by running the syskey program. As of Windows 10 version 1709, syskey was removed due to a combination of insecure security and misuse by bad actors to lock users out of systems.
Криптоанализ
В 2012 году было продемонстрировано, что любую возможную 8-символьную перестановку хэша пароля NTLM можно взломать менее чем за 6 часов. В 2019 году это время сократилось примерно до 2,5 часов благодаря использованию более современного оборудования. В случае онлайн-атаки невозможно просто скопировать файл SAM в другое место. Файл SAM нельзя переместить или скопировать во время работы Windows, так как ядро Windows получает и удерживает эксклюзивную блокировку файловой системы для файла SAM и не снимает эту блокировку до тех пор, пока операционная система не будет выключена или не произойдет ошибка, приводящая к "синему экрану смерти". Однако, копию содержимого SAM, находящуюся в памяти, можно получить (дампить) с помощью различных методов (включая pwdump), что делает хэши паролей доступными для оффлайн-атаки перебором.
Удаление хэша LM
LM-хеш — это скомпрометированный протокол, который был заменен на NTLM-хеш. Большинство версий Windows можно настроить для отключения создания и хранения допустимых LM-хешей при смене пароля пользователем. Windows Vista и более поздние версии Windows отключают LM-хеширование по умолчанию. Важно отметить: включение этой настройки не приводит к немедленному удалению LM-хешей из SAM, а добавляет дополнительную проверку при смене пароля, в результате которой вместо LM-хеша в базе данных SAM сохраняется "пустышка". (Это фиктивное значение не связано с паролем пользователя и одинаково для всех учетных записей.)
Связанные атаки
В Windows NT 3.51, NT 4.0 и 2000 была разработана атака для обхода локальной системы аутентификации. Если файл SAM удален с жесткого диска (например, при монтировании тома ОС Windows в другую операционную систему), злоумышленник может войти в систему под любой учетной записью без пароля. Этот недостаток был устранен в Windows XP, которая отображает сообщение об ошибке и выключает компьютер. Однако существуют программные утилиты, которые, используя описанную выше методику – эмулированный виртуальный диск или загрузочную среду (обычно Unix/Linux или другая копия Windows, например, Windows Preinstallation Environment) – монтируют локальный диск, содержащий активный раздел NTFS, и используют запрограммированные процедуры и вызовы функций из выделенных стеков памяти для изоляции файла SAM от структуры каталогов установки системы Windows NT (по умолчанию: %SystemRoot%\system32\config\SAM) и, в зависимости от конкретной используемой утилиты, полностью удаляют хеши паролей, хранящиеся для учетных записей пользователей, или в некоторых случаях напрямую изменяют пароли учетных записей пользователей из этой среды. Такое программное обеспечение может использоваться как для очистки или восстановления паролей учетных записей пользователями, потерявшими или забывшими свои пароли Windows, так и для обхода систем безопасности вредоносным ПО. По сути, пользователь, обладающий достаточными знаниями, опытом и пониманием как инструментов взлома, так и механизмов безопасности ядра Windows NT (а также имеющий оффлайн и непосредственный локальный доступ к целевому компьютеру), получает возможность полностью обойти или удалить пароли учетных записей Windows на целевом компьютере. Недавно Microsoft выпустила утилиту LockSmith, которая входит в состав MSDart. Однако MSDart не является свободно доступным для конечных пользователей. В июле 2021 года стало известно об уязвимости в Windows 10 и Windows 11, позволяющей пользователям с ограниченными правами доступа получать доступ к конфиденциальным файлам базы данных реестра, включая файл SAM.