Security Account Manager¶
Security Account Manager (SAM) — это компонент операционной системы Microsoft Windows, отвечающий за хранение и управление учётными записями пользователей и групп в локальной базе данных безопасности. SAM представляет собой файл реестра, расположенный в операционной системе, который содержит хеши паролей (в форматах LM и NTLM) и другую учётную информацию, необходимую для аутентификации пользователей на локальном компьютере. В доменных средах, где используется Active Directory, роль SAM выполняет контроллер домена, хранящий данные в базе данных NTDS.dit.
¶История
Механизм SAM был впервые представлен в операционной системе Windows NT 3.1 (1993 год) как часть подсистемы безопасности, разработанной для замены устаревших механизмов аутентификации MS-DOS и Windows 9x. В отличие от предыдущих систем, где пароли хранились в открытом виде или с минимальной защитой, Windows NT внедрила хеширование паролей и централизованное хранение учётных данных в реестре. С выходом Windows 2000 и последующих версий (Windows XP, Windows 7, Windows 10, Windows 11) архитектура SAM оставалась в основе локальной аутентификации, хотя в неё были добавлены улучшения, такие как поддержка более стойких алгоритмов хеширования (NTLMv2) и защита от атак на память.
¶Расположение и структура
Физически база данных SAM хранится в файле реестра %SystemRoot%\system32\config\SAM. Этот файл не имеет расширения и защищён от чтения и записи во время работы системы. Доступ к нему возможен только через системные процессы, работающие в контексте безопасности (например, lsass.exe). В реестре SAM соответствует ветвь HKEY_LOCAL_MACHINE\SAM, которая содержит следующие ключи:
SAM\Domains\Account\Users— информация о каждом пользователе (идентификатор безопасности (SID), имя, хеши паролей, флаги учётной записи).SAM\Domains\Account\Groups— данные о локальных группах.SAM\Domains\Account\Aliases— псевдонимы групп (например, «Администраторы»).SAM\Domains\Builtin— встроенные учётные записи и группы (например,Administrator,Guest).
Каждая учётная запись пользователя представлена подразделом, имя которого соответствует относительному идентификатору (RID) — последней части SID. Например, для встроенной учётной записи Administrator RID равен 500, а для Guest — 501.
¶Функционирование
При загрузке операционной системы подсистема безопасности (Security Reference Monitor) инициализирует SAM, загружая данные из файла реестра в память. Процесс lsass.exe (Local Security Authority Subsystem Service) управляет аутентификацией, обращаясь к SAM для проверки введённых пользователем паролей. Алгоритм работы включает следующие этапы:
- Ввод учётных данных — пользователь вводит имя и пароль в окне входа в систему.
- Хеширование — введённый пароль преобразуется в хеш (сначала в LM-хеш, затем в NTLM-хеш) с использованием алгоритмов, основанных на DES и MD4.
- Сравнение — полученный хеш сравнивается с хешем, хранящимся в SAM. Если значения совпадают, аутентификация считается успешной.
- Создание токена доступа — при успешной аутентификации создаётся токен доступа, содержащий SID пользователя и список групп, в которые он входит. Этот токен используется для проверки прав доступа к ресурсам.
SAM также поддерживает механизм блокировки учётных записей после определённого количества неудачных попыток входа (политика блокировки) и хранение истории паролей для предотвращения повторного использования старых паролей.
¶Безопасность и уязвимости
База данных SAM является критическим компонентом безопасности Windows, и её компрометация может привести к несанкционированному доступу к системе. Основные угрозы и меры защиты включают:
- Хранение хешей — пароли хранятся не в открытом виде, а в виде хешей (LM и NTLM). Однако LM-хеши уязвимы к атакам перебора (brute force) и радужным таблицам, так как они не используют соль и разбивают пароль на две части по 7 символов. В современных версиях Windows (начиная с Windows Vista/Server 2008) создание LM-хешей отключено по умолчанию.
- Атаки на память — инструменты, такие как
mimikatz, могут извлекать хеши паролей из памяти процессаlsass.exe(в том числе в формате NTLM и Kerberos). Для защиты используется технология Credential Guard (начиная с Windows 10/Server 2016), которая изолирует процессlsass.exeв виртуализированной среде. - Офлайн-атаки — злоумышленник, получивший физический доступ к жёсткому диску или образу системы, может скопировать файл SAM и попытаться взломать хеши. Для предотвращения этого используется шифрование диска (BitLocker) и защита реестра с помощью системного шифрования (SYSKEY, начиная с Windows NT 4.0).
- Уязвимости в протоколах — аутентификация через NTLM уязвима к атакам «человек посередине» (pass-the-hash). В современных средах рекомендуется использовать Kerberos или многофакторную аутентификацию.
¶Применение
SAM используется в следующих сценариях:
- Локальная аутентификация — на компьютерах, не входящих в домен Active Directory. Все учётные записи хранятся локально.
- Восстановление паролей — при утере пароля администратора можно загрузить систему с установочного диска и сбросить пароль, отредактировав файл SAM (например, с помощью утилиты
chntpw). - Криминалистика — в компьютерной экспертизе извлечение данных из SAM позволяет восстановить учётные записи и пароли пользователей, что используется при расследовании инцидентов.
- Тестирование на проникновение — специалисты по безопасности используют SAM для проверки стойкости паролей и выявления уязвимостей в конфигурации.
¶Ограничения
В современных версиях Windows (начиная с Windows 10 версии 1809) Microsoft ограничила доступ к SAM для сторонних приложений, работающих в пользовательском режиме. Чтение SAM возможно только из системного контекста (например, через драйверы или при отключённой защите целостности кода). Кроме того, в доменных средах локальная база SAM не используется для аутентификации доменных пользователей — все запросы обрабатываются контроллером домена.
¶Интересные факты
- В Windows NT 4.0 и более ранних версиях SAM могла быть повреждена из-за ошибок в драйверах, что приводило к невозможности входа в систему. В современных версиях предусмотрена автоматическая проверка целостности реестра.
- Хеши LM, хранящиеся в SAM, могут быть расшифрованы с помощью радужных таблиц за несколько секунд, если пароль состоит из букв и цифр. Поэтому Microsoft рекомендует использовать пароли длиной не менее 15 символов, что делает LM-хеширование неэффективным.
- Утилита
SYSKEY(System Key), представленная в Windows NT 4.0 SP3, позволяет дополнительно зашифровать SAM с помощью 128-битного ключа, который хранится либо на диске, либо вводится при загрузке системы. Однако в Windows 10 и 11 эта функция считается устаревшей, так как её защиту можно обойти при физическом доступе к системе.
¶Источники
- Microsoft. «Security Account Manager (SAM)». Документация по Windows.
- Russinovich, M., Solomon, D. «Windows Internals, Part 1» (7th edition). Microsoft Press, 2017.
- «NTLM Security Support Provider». Техническая документация Microsoft.
- «Mimikatz: A Post-Exploitation Tool». Benjamin Delpy.
- «Справочник по безопасности Windows». Microsoft TechNet.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


