«Эта статья не про сложные взломы или трояны. Речь о том, как невероятно простое действие — украсть не пароль, а его отпечаток — может полностью перевернуть безопасность огромной сети. Всё упирается в один системный файл и протокол, который до сих пор нельзя просто выключить».
Хранение паролей в Windows: SAM и хеши
Windows никогда не хранит пароли пользователей в открытом виде. Вместо этого система оперирует их криптографическими хешами. Главное хранилище этих данных — файл Security Accounts Manager (SAM). Это означает, что операционная система по сути не знает ваш реальный пароль, она лишь умеет проверять соответствие введённых данных сохранённому хешу.
Для вычисления хешей Microsoft использовала собственные, закрытые алгоритмы, которые прошли эволюцию: от слабого LM-hash, уязвимого к быстрому перебору, до более стойкого NTLM-hash. Существование этих хешей в системе и составляет основу угрозы.
NTLM против Kerberos: зачем нужны оба протокола
Для проверки учётных данных Windows использует протоколы семейства New Technology LAN Manager (NTLM). NTLMv2, последняя версия, значительно надёжнее старого NTLMv1, но принципиальная модель осталась.
С появлением доменов Active Directory основным протоколом стал Kerberos, более безопасный и устойчивый к ряду атак. Однако NTLM не исчез и играет роль резервного механизма в ряде критически важных сценариев. Его нельзя отключить полностью без риска сломать работу сети.
| Kerberos (основной протокол в домене) | NTLM (резервный протокол) |
|---|---|
| Требует работы доменного контроллера и синхронизированного времени на всех хостах. | Работает напрямую между клиентом и сервером, не требуя контроллера. |
| Используется для аутентификации по DNS-имени сервера. | Автоматически включается при обращении к серверу по его IP-адресу. |
| Обеспечивает взаимную аутентификацию. | Применяется при межлесных довериях, если не настроено транзитивное доверие Kerberos. |
| Уязвим к атаке «Pass-the-Ticket», но не к «Pass-the-Hash». | Именно использование NTLM делает возможной атаку Pass-the-Hash. |
Суть атаки Pass-the-Hash
Стандартная логика подбора пароля неприменима: хеш — это не зашифрованный пароль, а его однонаправленный отпечаток. Восстановить из него исходную строку невозможно. Атака Pass-the-Hash кардинально меняет подход: злоумышленнику не нужен пароль.
Цель — получить сам хеш (чаще всего NTLM-хеш) с уже скомпрометированной машины. Этот хеш становится универсальным ключом. Система не проверяет, откуда пришёл хеш — от пользователя, вводящего пароль, или от программы-посредника. Она лишь сверяет его со значением в своей базе.
Технически это реализуется через перехват хешей из памяти процесса lsass.exe (Local Security Authority Subsystem Service), который отвечает за аутентификацию. Вредоносный код, получив права администратора или SYSTEM, считывает хеши и затем использует их через WinAPI (например, LsaLogonUser) для входа на другие хосты в сети, где у той же учётной записи есть права.
Mimikatz: инструмент, который изменил правила игры
Mimikatz — это утилита, которая довела концепцию Pass-the-Hash до практической, массово используемой атаки. Её главная функция — извлечение учётных данных прямо из памяти Windows.
Она способна получить не только NTLM-хеши, но и Kerberos-билеты, пароли в открытом виде (при включённой опции WDigest) и данные SSP (Security Support Provider). Это делает её основным инструментом для движения внутри сети после первоначального взлома.
- Репозиторий: https://github.com/gentilkiwi/mimikatz.
- Fileless-атаки: Mimikatz встроен в фреймворк Metasploit как модуль
kiwi. Это позволяет запускать его функции прямо из памяти Meterpreter-сессии, не оставляя следов на диске жертвы.
Именно благодаря простоте использования Mimikatz атаки Pass-the-Hash стали рутинной операцией для злоумышленников всех уровней.