Атака Pass-the-Hash¶
Pass-the-Hash (PtH, передача хеша) — это метод аутентификации и сетевой атаки, при котором злоумышленник, получив хеш пароля пользователя (обычно NTLM-хеш), использует его для аутентификации на удалённых системах и сервисах без необходимости знать исходный пароль в открытом виде. Атака основана на том, что во многих протоколах (например, NTLM, Kerberos) аутентификация происходит не по самому паролю, а по его криптографическому хешу. PtH эксплуатирует эту особенность, позволяя злоумышленнику, имеющему хеш, выдавать себя за легитимного пользователя.
¶История
Метод Pass-the-Hash был впервые описан и продемонстрирован в конце 1990-х годов. В 1997 году исследователь безопасности Пол Эштон (Paul Ashton) в статье «A Penetration Testing Approach to Windows NT Security» впервые упомянул возможность использования хешей паролей для аутентификации. В 2000 году на конференции Black Hat Briefings исследователи из компании @stake (впоследствии приобретённой Symantec) представили инструмент «pwdump» и продемонстрировали атаку PtH в действии. С тех пор метод стал классическим для внутренних атак в корпоративных сетях Windows, а также для тестирования на проникновение (penetration testing). Развитие инструментов, таких как Metasploit, Mimikatz (разработан Бенджамином Дельпи), и внедрение PtH в различные фреймворки сделали атаку доступной для широкого круга специалистов.
¶Принцип работы
Атака Pass-the-Hash возможна благодаря тому, что в протоколах аутентификации Windows (NTLM и Kerberos) пароль пользователя не передаётся по сети в открытом виде. Вместо этого клиент вычисляет хеш пароля (например, NTLM-хеш) и использует его для создания аутентификационного токена. Если злоумышленник перехватывает или извлекает этот хеш из памяти, он может повторно использовать его для аутентификации на других системах, не зная исходного пароля.
¶Этапы атаки
- Получение хеша. Злоумышленник получает хеш пароля целевого пользователя. Это может быть сделано несколькими способами:
- Извлечение из памяти процесса LSASS (Local Security Authority Subsystem Service) на скомпрометированной системе с помощью инструментов вроде Mimikatz.
- Перехват хеша из сетевого трафика (например, с помощью атаки «человек посередине»).
- Чтение из файла SAM (Security Account Manager) на локальной системе.
- Использование уязвимостей, позволяющих считывать хеши из реестра или дампа памяти.
- Использование хеша. Злоумышленник подставляет полученный хеш в запрос аутентификации на удалённой системе (например, на сервере, файловом ресурсе, контроллере домена). Для этого используются специальные инструменты, которые модифицируют стандартные вызовы Windows API (например,
LogonUserилиNtlmSsp). - Аутентификация. Удалённая система проверяет хеш, сравнивая его с хранящимся в своей базе данных (например, в Active Directory). Если хеш совпадает, аутентификация считается успешной, и злоумышленник получает доступ к ресурсам с правами скомпрометированного пользователя.
¶Ключевые протоколы
- NTLM (NT LAN Manager). Протокол аутентификации, используемый в Windows. В NTLMv1 и NTLMv2 аутентификация основана на хеше пароля. PtH работает напрямую с NTLM-хешами.
- Kerberos. Более современный протокол, используемый в доменах Active Directory. В случае Kerberos атака PtH модифицируется: злоумышленник может использовать хеш для получения билета TGT (Ticket Granting Ticket), который затем используется для аутентификации. Этот вариант называется Overpass-the-Hash или Pass-the-Ticket.
¶Инструменты для реализации
Для проведения атаки Pass-the-Hash существует множество инструментов, как встроенных в операционные системы, так и сторонних:
- Mimikatz — самый известный инструмент для извлечения хешей и выполнения PtH. Позволяет извлекать хеши из памяти LSASS, а также подставлять их в аутентификационные запросы.
- Metasploit Framework — содержит модули для PtH (например,
exploit/windows/smb/psexec_psh). - Impacket — набор скриптов на Python для работы с сетевыми протоколами. Включает
psexec.py,smbexec.py,wmiexec.py, которые поддерживают PtH. - CrackMapExec — инструмент для автоматизации атак на Active Directory, поддерживает PtH.
- PowerShell — с помощью скриптов (например,
Invoke-Mimikatz.ps1) можно выполнять PtH без установки дополнительного ПО.
¶Сценарии использования
Атака Pass-the-Hash наиболее эффективна в следующих сценариях:
- Внутренняя атака в корпоративной сети. Злоумышленник, получивший доступ к одной рабочей станции, может извлечь хеши локальных пользователей и администраторов, а затем использовать их для доступа к другим системам в домене.
- Атака на доменные учётные записи. Если злоумышленник получает хеш учётной записи доменного администратора, он может аутентифицироваться на любом сервере в домене.
- Атака на сервисные учётные записи. Сервисные учётные записи часто имеют высокие привилегии, и их хеши могут быть извлечены из памяти.
- Атака на удалённые рабочие столы (RDP). PtH может быть использована для аутентификации на серверах с включённым RDP, если протокол аутентификации поддерживает хеши.
¶Защита от атаки
Защита от Pass-the-Hash требует комплексного подхода, включающего как технические меры, так и организационные политики:
¶Технические меры
- Использование протокола Kerberos. В доменах Active Directory рекомендуется отключать NTLM, так как Kerberos менее подвержен PtH (хотя и не полностью защищён).
- Включение Credential Guard. Функция Windows, которая изолирует хеши паролей в виртуальной среде, защищённой от чтения обычными процессами.
- Ограничение прав локальных администраторов. Минимизация количества учётных записей с правами администратора на рабочих станциях.
- Использование многофакторной аутентификации (MFA). Даже если хеш скомпрометирован, MFA может предотвратить аутентификацию.
- Обновление операционных систем. Патчи, исправляющие уязвимости, связанные с хранением и передачей хешей.
- Настройка политик блокировки учётных записей. При многократных неудачных попытках аутентификации.
- Мониторинг событий безопасности. Отслеживание событий, связанных с аутентификацией, особенно с использованием NTLM.
¶Организационные меры
- Принцип наименьших привилегий. Пользователи и сервисы должны иметь только те права, которые необходимы для выполнения их задач.
- Регулярная смена паролей. Особенно для учётных записей с высокими привилегиями.
- Обучение сотрудников. Повышение осведомлённости о методах социальной инженерии, которые могут привести к компрометации системы.
- Аудит безопасности. Регулярное тестирование на проникновение для выявления уязвимостей.
¶Примеры в реальной практике
Атака Pass-the-Hash является одной из наиболее распространённых техник, используемых в реальных кибератаках. Например, она активно применялась в атаках с использованием вредоносного ПО WannaCry (2017) и NotPetya (2017), где злоумышленники использовали хеши для распространения по сети. Также PtH является стандартным инструментом в арсенале групп кибершпионажа, таких как APT28 (Fancy Bear) и APT29 (Cozy Bear), которые атакуют государственные и корпоративные сети.
¶Критика и ограничения
Несмотря на свою эффективность, атака Pass-the-Hash имеет ограничения:
- Необходимость доступа к системе. Для извлечения хеша злоумышленник должен сначала получить доступ к системе (например, через уязвимость или социальную инженерию).
- Ограничение по времени. Хеши могут быть изменены после смены пароля или перезагрузки системы.
- Защита Credential Guard. В Windows 10 и более новых версиях Credential Guard может предотвратить извлечение хешей из памяти.
- Не работает с Kerberos без дополнительных шагов. Для аутентификации через Kerberos требуется получить билет TGT, что усложняет атаку.
¶Источники
- Paul Ashton. «A Penetration Testing Approach to Windows NT Security» (1997).
- Benjamin Delpy. «Mimikatz» — документация и исходный код.
- Microsoft. «Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft Techniques» (2015).
- MITRE ATT&CK. «Pass the Hash (T1550.002)» — описание техники.
- SANS Institute. «Pass-the-Hash: A Practical Guide» (2016).
- Национальный центр кибербезопасности Великобритании (NCSC). «Pass the Hash: What it is and how to defend against it».
