Атаки злоумышленников на системы часто позволяют обойти традиционные средства контроля доступа, используя альтернативные средства аутентификации, такие как хэши паролей, билеты Kerberos и маркеры доступа к приложениям. Эта техника, обозначенная как T1550 в системе MITRE ATT&CK, позволяет злоумышленникам перемещаться в среде и получать несанкционированный доступ к целевой системе.
В этой статье представлено подробное описание атаки Передача хеша (Pass-the-Hash, PtH) (T1550.002) как подтехники Использование альтернативных средств аутентификации (Use Alternate Authentication Material).
- Передача хэша (T1550.002)
- Инструменты и методы для выполнения атак типа «Передача хеша»
- Mimikatz
- Шаг 1: кража хэша пароля
- Шаг 2: аутентификация по хэшу украденного пароля
- Шаг 3: Доступ к ресурсам через новую учетную запись пользователя
- Методы обнаружения атаки Pass-the-Hash
- Идентификатор события (Event ID) 1 - Создание процесса.
- Идентификатор события (Event ID) 5 - Процесс завершен.
- Идентификатор события (Event ID) 10 - Доступ к процессу.
- Идентификатор события (Event ID) 4624 - Учетная запись успешно вошла в систему.
- Идентификатор события (Event ID) 4663 - Была предпринята попытка доступа к объекту.
- Идентификатор события (Event ID) 4672 - Новому входу в систему назначены специальные привилегии.
- Идентификатор события (Event ID) 4688 - Создан новый процесс.
Передача хэша (T1550.002)
Pass-the-Hash (PtH) - это атака, основанная на идентификации, которая используется злоумышленниками для получения доступа к дополнительным системам и привилегиям в сети после того, как они уже взломали систему.
В типичном сценарии Pass-the-Hash злоумышленники
- получают первоначальный доступ к целевой сети,
- крадут/сохраняют "хэшированные" учетные данные пользователя,
- используют сброшенные учетные данные для создания новой пользовательской сессии на скомпрометированном узле.
Атака Pass-the-Hash (PtH) отличается от других атак на кражу учетных данных, поскольку она направлена на уязвимость в системном дизайне протокола аутентификации Windows New Technology LAN Manager (NTLM). Этот подход позволяет аутентифицировать удаленную систему, используя предварительно вычисленный хэш пароля действительного пользователя, а не сам пароль в открытом тексте.
Протокол NTLM, который служит методом единой регистрации, использует систему «вызов-ответ» для проверки личности пользователя без запроса его пароля. Когда пользователь входит в систему Windows с помощью NTLM, система генерирует NTLM-хэш пароля пользователя, не применяя технику высаливания, которая обычно повышает безопасность хэшированных паролей, хранящихся на серверах и контроллерах домена.
В результате злоумышленникам не нужно использовать сторонние инструменты для взлома или выполнять трудоемкие операции по взлому, поскольку для успеха атаки PtH не требуется версия пароля в открытом тексте.
Таким образом, если злоумышленник получает NTLM-хэш пароля пользователя с помощью таких средств, как извлечение его из памяти lsass.exe или из файла %systemroot%\system32\config\SAM, перехват его при передаче данных по сети или дамп из резервной копии или образа системы, он может использовать хэшированный пароль, передав его удаленной системе, которая распознает учетную запись скомпрометированного пользователя.
В зависимости от привилегий и уровня доступа скомпрометированного пользователя злоумышленники могут получить полный доступ к системе и успешно провести атаки с боковым перемещением.
Инструменты и методы для выполнения атак типа «Передача хеша»
Атаки Pass-the-Hash (PtH) могут быть выполнены с помощью различных общедоступных инструментов, таких как Mimikatz [1] и evil-winrm [2], а также встроенных команд PowerShell. Злоумышленники часто используют эти инструменты или команды для извлечения хэша из памяти взломанной системы и последующего использования его для получения доступа к другим системам в сети.
В этом блоге мы расскажем о том, как злоумышленники используют Mimikatz для выполнения атаки Pass-the-Hash. Чтобы узнать больше о том, как злоумышленники используют другие инструменты, такие как evil-winrm и PowerShell.
Mimikatz
Использование Mimikatz для атаки Pass-the-Hash состоит из трех основных шагов.
Шаг 1: кража хэша пароля
Чтобы получить список недавно вошедших в систему пользователей и их учетные данные, злоумышленники часто используют модуль sekurlsa в Mimikatz, который использует ряд различных методов для извлечения информации об аутентификации из памяти LSASS, включая разбор структур памяти и использование Windows API. Функция «logonpasswords» этого модуля специально извлекает данные сеанса входа в систему, такие как сохраненные хэши паролей и кэшированные учетные данные. Сюда может входить информация о входе текущего пользователя, а также информация о других пользователях, вошедших на эту же машину.
Обратите внимание, что перед использованием команды sekurlsa::logonpasswords злоумышленникам необходимо выполнить команду privilege::debug, чтобы Mimikatz мог работать правильно. По умолчанию LSASS работает с высокой степенью целостности и защищен от отладки неавторизованными процессами. Однако, включив привилегию отладчика, злоумышленник может обойти эту защиту и получить доступ к памяти LSASS для извлечения данных сеанса входа в систему.
Ниже приведен пример выполнения первого шага.
1 2 3 4 5 6 7 8 9 10 11 12 13 | PS> .\mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" Authentication Id : 0 ; 302247 (00000000:00049ca7) Session : UndefinedLogonType from 0 User Name : Alice Domain : DOMAIN Logon Server : DC1 Logon Time : 12/01/2023 15:13:19 SID : S-1-5-21-3501040295-3816137123-50697657-1109 msv : [00000003] Primary * Username : Alice * Domain : DOMAIN * NTLM : a0c8746a6efc7782c7c19c55185145bf |
Получив этот NTLM-хэш, злоумышленникам пора переходить ко второму этапу.
Важно отметить, что Mimikatz - не единственный способ сброса NTLM-хэшей. Злоумышленники часто используют другие встроенные приложения командной строки или сторонние инструменты, такие как ProcDump и Gsecdump, для дампа учетных данных.
Шаг 2: аутентификация по хэшу украденного пароля
Это основной шаг, на котором злоумышленник передает хэш, чтобы выдать себя за пользователя и получить доступ к удаленной системе.
Команда «sekurlsa::pth» в Mimikatz - это функция, которая облегчает атаки «Передача хэша». Эта техника позволяет злоумышленнику аутентифицироваться на удаленной системе, используя перехваченный NTLM-хэш пароля пользователя, без необходимости использования настоящего пароля. Для выполнения этой команды злоумышленник должен указать только следующие параметры:
- /user: (имя пользователя),
- /domain: (имя домена), и
- /ntlm: (NTLM-хэш пароля пользователя).
Обратите внимание, что пароли Windows не только ограничены протоколом NTLM, но и могут использовать популярные алгоритмы блочного шифрования, такие как AES-128 и AES-256, для хранения паролей. В таких случаях злоумышленникам придется использовать параметры /aes128: или /aes256: вместо /ntlm:.
1 2 3 4 5 6 7 8 | PS> .\mimikatz.exe "sekurlsa::pth /user:Alice /domain:domain.com /ntlm:a0c8746a6efc7782c7c19c55185145bf" user : User domain : domain.com program : cmd.exe impers. : no NTLM : a0c8746a6efc7782c7c19c55185145bf . . . |
Обратите внимание, как легко мы получили доступ к удаленной системе, не зная только имени пользователя и NTLM-хэша пароля жертвы.
Шаг 3: Доступ к ресурсам через новую учетную запись пользователя
На третьем этапе злоумышленник использует полученную учетную запись пользователя для расширения доступа к сети. Например, злоумышленник может использовать утилиту командной строки PsExec для удаленного выполнения кода на другом хосте.
Например, злоумышленник может выполнить следующую команду для запуска процесса «cmd.exe» на удаленной машине с внутренним IP-адресом "192.168.52.145":
1 | psexec.exe \\\192.168.52.144 cmd.exe |
Mimikatz - не единственный способ проведения атаки Pass-the-Hash. Злоумышленники часто используют и PowerShell.
Методы обнаружения атаки Pass-the-Hash
В этом разделе представлен набор идентификаторов событий, которые могут быть использованы для обнаружения возможной атаки Pass-the-Hash. Эти идентификаторы событий генерируются операционной системой Windows и содержат ценную информацию о деятельности системы. Отслеживая эти идентификаторы событий и анализируя поля описания ключей, команды безопасности могут выявлять потенциальные инциденты безопасности и принимать соответствующие меры по снижению риска.
Подробнее: Список идентификаторов событий Sysmon
Идентификатор события (Event ID) 1 - Создание процесса.
Ключевые поля описания: LogonId, ParentProcessId, ParentImage, CurrentDirectory, CommandLine, IntegrityLevel, ParentCommandLine, ParentCommandLine, UtcTime, ProcessId, User, Hashes, Image
Идентификатор события (Event ID) 5 - Процесс завершен.
Ключевые поля описания: UtcTime, ProcessId:, Image
Идентификатор события (Event ID) 10 - Доступ к процессу.
Ключевые поля описания: SourceThreadId, TargetProcessId, GrantedAccess, SourceImage, TargetImage
Идентификатор события (Event ID) 4624 - Учетная запись успешно вошла в систему.
Ключевые поля описания: Имя учетной записи, Домен учетной записи, Идентификатор входа в систему
Идентификатор события (Event ID) 4663 - Была предпринята попытка доступа к объекту.
Ключевые поля описания: Идентификатор процесса, Маска доступа, Домен учетной записи, Имя объекта, Имя процесса, Тип объекта, Идентификатор входа в систему, Идентификатор манипулятора
Идентификатор события (Event ID) 4672 - Новому входу в систему назначены специальные привилегии.
Ключевые поля описания: Идентификатор безопасности, Имя учетной записи, Домен учетной записи
Идентификатор события (Event ID) 4688 - Создан новый процесс.
Ключевые поля описания: Требуемая метка, Домен учетной записи, Имя исходного процесса, Имя нового процесса, Тип эскалации токена, Идентификатор нового процесса, Идентификатор исходного процесса