Открыть сервис

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, а для Guest501.

Функционирование

При загрузке операционной системы подсистема безопасности (Security Reference Monitor) инициализирует SAM, загружая данные из файла реестра в память. Процесс lsass.exe (Local Security Authority Subsystem Service) управляет аутентификацией, обращаясь к SAM для проверки введённых пользователем паролей. Алгоритм работы включает следующие этапы:

  1. Ввод учётных данных — пользователь вводит имя и пароль в окне входа в систему.
  2. Хеширование — введённый пароль преобразуется в хеш (сначала в LM-хеш, затем в NTLM-хеш) с использованием алгоритмов, основанных на DES и MD4.
  3. Сравнение — полученный хеш сравнивается с хешем, хранящимся в SAM. Если значения совпадают, аутентификация считается успешной.
  4. Создание токена доступа — при успешной аутентификации создаётся токен доступа, содержащий 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 →