Извлечение хэшей паролей из SAM-файла: техники и утилиты
SAM (Security Accounts Manager) — системный компонент операционной системы Windows, отвечающий за хранение данных о локальных учётных записях. Информация об именах пользователей, идентификаторах безопасности (SID) и хэшах их паролей сосредоточена в одноимённом файле реестра по пути HKEY_LOCAL_MACHINE\SAM. Получить прямой доступ к этому хранилищу в работающей системе штатными средствами невозможно — куст заблокирован ядром и защищён от чтения даже для администратора.
Именно поэтому задача извлечения хэшей из SAM-файла стала одной из ключевых в сфере анализа защищённости Windows-инфраструктуры. Существует несколько подходов, различающихся по требуемому уровню привилегий, способу получения образа и применяемому инструментарию. В зависимости от условий задачи выбирают либо работу в живой системе, либо автономный разбор снятых кустов реестра на отдельной машине.
Структура SAM-файла и формат хранения хэшей
SAM-файл представляет собой бинарный куст реестра Windows. Помимо него для расшифровки хэшей требуется куст SYSTEM, содержащий так называемый BootKey (SysKey) — 128-битный ключ, которым зашифрованы записи SAM. Без этого ключа восстановление паролей из дампа возможно лишь ограниченно, поскольку алгоритм шифрования построен именно на связке двух кустов.
Каждая учётная запись описывается структурой V-хэша. В классических версиях Windows применяется LM-хэш (устаревший) и NTLM-хэш — основной рабочий формат, задействованный в NTLM-аутентификации. В современных сборках, начиная с Windows Vista и Windows Server 2008, LM-хэш по умолчанию не вычисляется и сохраняется как пустое значение. Длина строки NTLM-хэша фиксирована и составляет шестнадцать байт, что соответствует 32 шестнадцатеричным символам при выводе на экран.
Подготовка к извлечению: права и методы доступа
Прежде чем запускать утилиты дампа, требуется обеспечить условия, при которых файл SAM становится доступен для чтения. Самый распространённый путь — получение привилегий NT AUTHORITY\SYSTEM, поскольку именно эта учётная запись владеет заблокированным кустом. Повышение привилегий достигается через эксплойты ядра, ошибки в сервисах или в рамках легитимного аудита защищённости.
Второй способ — работа с автономной копией. Для этого выполняется загрузка с внешнего носителя (Linux-дистрибутив или WinPE) и прямое считывание SYSTEM и SAM с диска, минуя блокировку ядра. Применяется и метод теневого копирования через службу VSS: создаётся снимок тома, к которому можно обратиться как к отдельному файлу, и из него извлекается копия реестра без остановки основной системы.
Утилиты для дампа в работающей системе
Исторически первым широко известным инструментом стал pwdump, а затем его развитие — pwdump7 и pwdump8. Эти консольные программы используют недокументированные функции Windows для доступа к памяти процесса LSASS и считывания хэшей напрямую, без копирования файлов реестра. Аналогичный принцип положен в основу fgdump, ориентированного на доменные среды Active Directory.
Отдельную категорию составляют утилиты с расширенной функциональностью. Mimikatz позволяет не только извлечь NTLM-хэши из SAM, но и достать учётные данные в открытом виде, если они остались в памяти после интерактивного входа. LaZagne собирает пароли из множества приложений, включая системные компоненты. Quarks PwDump выделяется компактностью и поддержкой современных ревизий Windows 10 и 11, в том числе сборок с активной UAC-защитой. Все перечисленные программы требуют запуска от имени SYSTEM либо выполняют повышение привилегий через собственные модули.
Автономное извлечение из образа диска
Когда нет возможности запускать код в целевой системе, SAM и SYSTEM снимаются путём простого копирования файлов с диска. В Linux достаточно смонтировать раздел и прочитать Windows/System32/config/SAM и Windows/System32/config/SYSTEM. Дальше подключаются специализированные средства обработки.
Утилита samdump2, входящая в состав дистрибутивов для пентеста, извлекает хэши из связки двух кустов автоматически. SecretsDump из пакета Impacket выполняет ту же задачу, дополнительно работая с NTDS.dit — базой Active Directory. Комплект creddump содержит утилиты pwdump и cachedump, ориентированные на автономный режим. Универсальный загрузочный редактор chntpw позволяет не только получить хэши, но и сбросить пароль локального администратора путём прямой правки реестра, что делает его одним из самых практичных инструментов в арсенале.
Дальнейшая работа с полученными хэшами
Извлечённые NTLM-хэши применяются в двух основных сценариях. Первый — офлайн-восстановление исходного пароля. Для этого задействуются специализированные программы: Hashcat использует мощности видеокарт и поддерживает десятки режимов перебора, John the Ripper — кроссплатформенный инструмент с гибкой системой правил и плагинов. Скорость подбора исчисляется миллиардами вариантов в секунду на современном оборудовании, что делает короткие и словарные пароли уязвимыми за считанные минуты.
Второй сценарий — атака Pass-the-Hash. Метод не требует знания открытого пароля: хэш напрямую используется для аутентификации в SMB, RDP, WinRM и других сетевых службах, поддерживающих NTLM. Инструменты impacket-psexec, wmiexec и evil-winrm позволяют запустить командную оболочку на удалённой машине, передавая только хэш. Поэтому даже сложный пароль не защищает систему, если злоумышленник получил возможность снять дамп SAM. Полноценная защита от подобных атак достигается только за счёт многофакторной аутентификации, Kerberos-only политик и регулярного мониторинга обращений к процессу LSASS со стороны EDR-систем.