T1553.003: Подмена поставщика доверия и SIP
Злоумышленники могут вмешиваться в работу компонентов SIP и поставщиков доверия, чтобы обойти проверку цифровой подписи, выполняемую системными механизмами и инструментами контроля приложений. В пользовательском режиме Windows цифровые подписи Authenticode используются для проверки источника и целостности файла; подписывание помечает код как доверенный (например, драйвер с действительной подписью Microsoft может считаться безопасным). Проверка подписи осуществляется через функцию API WinVerifyTrust, которая принимает запрос и передает его соответствующему поставщику доверия, который проверяет параметры подписи .
Ввиду многообразия типов исполняемых файлов и соответствующих им форматов подписей Microsoft создала программные компоненты SIP (Subject Interface Package), которые создают уровень абстракции между функциями API и файлами. SIP обеспечивают использование функций API, которые инициируют создание, получение, вычисление и проверку подписей. Уникальные SIP используются для большинства форматов файлов (сценарии PowerShell, исполняемые файлы, установочные файлы и другие, при этом файлы каталогов с цифровой подписью являются универсальным вариантом), а для их идентификации используются глобальные уникальные идентификаторы (GUID) .
Подобно технике Подпись исполняемого кода, злоумышленники могут использовать эту архитектуру, чтобы нарушать работу средств контроля доверия и обходить политики безопасности, которые разрешают запускать только легитимный подписанный код. Злоумышленники могут подменить компоненты SIP и поставщика доверия, чтобы выдать вредоносный (или любой другой) код за подписанный и обойти системные механизмы и инструменты контроля приложений. Для этого они могут использовать следующие методы: .
- Модификация значений реестра
Dll
иFuncName
в ключеHKLM\SOFTWARE[\WOW6432Node]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllGetSignedDataMsg{SIP_GUID}
. Эти значения указывают на DLL-библиотеку, предоставляющую функцию CryptSIPDllGetSignedDataMsg, которая возвращает закодированный цифровой сертификат из подписанного файла. Перенаправление на созданную злоумышленником DLL-библиотеку с экспортируемой функцией, которая всегда возвращает известное допустимое значение подписи (например, подпись Microsoft для исполняемых файлов PE) вместо настоящей подписи файла, позволяет применить допустимое значение подписи ко всем файлам, использующим этот SIP (однако при этом высока вероятность несоответствия хешей, что приведет к аннулированию подписи, поскольку хеш, возвращаемый функцией, не будет совпадать с хешем, вычисленным из файла). - Модификация значений реестра
Dll
иFuncName
в ключеHKLM\SOFTWARE[WOW6432Node]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData{SIP_GUID}
. Эти значения указывают на DLL-библиотеку, предоставляющую функцию CryptSIPDllVerifyIndirectData, которая проверяет, совпадает ли хеш, вычисленный из файла, с хешем подписи. Перенаправление на созданную злоумышленником DLL-библиотеку с экспортируемой функцией, которая всегда возвращает значение TRUE (указывающее на успешное выполнение проверки), позволяет любому файлу (с легитимной подписью), использующему этот SIP, успешно проходить проверку (при этом не обязательно выполняется подмена указанной выше функции CryptSIPDllGetSignedDataMsg). Эти значения реестра также могут указывать на подходящую экспортируемую функцию из уже существующей DLL-библиотеки, что позволит избежать создания на диске нового файла и его выполнения. - Модификация значений реестра
DLL
иFunction
в ключеHKLM\SOFTWARE[WOW6432Node]Microsoft\Cryptography\Providers\Trust\FinalPolicy{trust provider GUID}
. Они указывают на DLL-библиотеку, предоставляющую функцию FinalPolicy поставщика доверия, которая декодирует и анализирует подпись и принимает большинство решений о доверии. Как и при использовании техники подмены функции CryptSIPDllVerifyIndirectData, эти значения реестра могут перенаправлять на подходящую экспортируемую функцию из уже существующей или созданной злоумышленниками вредоносной DLL-библиотеки (хотя подмена поставщика доверия — далеко не самая простая задача). - Примечание. Перечисленные выше способы подмены можно реализовать и без внесения изменений в реестр — с помощью техники Перехват поиска DLL-библиотек.
Подмена поставщика доверия или SIP может обеспечить систематическое выполнение кода, поскольку любое приложение, используемое для подписи кода или проверки подписи, может вызвать эти вредоносные компоненты .
Какие продукты Positive Technologies покрывают технику
Экспертиза MaxPatrol SIEM
mitre_attck_defense_evasion: PT-CR-2106: SIP_and_Trust_Provider_Hijacking: Изменена функция, отвечающая за проверку исполняемых файлов на доверие. Злоумышленники меняют функции CryptSIPDllGetSignedDataMsg, CryptSIPDllVerifyIndirectData и FinalPolicy, чтобы, избегая обнаружения, выполнять вредоносную полезную нагрузку на компьютере пользователя
Способы обнаружения
ID | DS0011 | Источник и компонент данных | Модуль: Загрузка модуля | Описание | Enable CryptoAPI v2 (CAPI) event logging to monitor and analyze error events related to failed trust validation (Event ID 81, though this event can be subverted by hijacked trust provider components) as well as any other provided information events (ex: successful validations). Code Integrity event logging may also provide valuable indicators of malicious SIP or trust provider loads, since protected processes that attempt to load a maliciously-crafted trust validation component will likely fail (Event ID 3033). |
---|
ID | DS0024 | Источник и компонент данных | Реестр Windows: Изменение ключа реестра Windows | Описание | Enable the Registry Global Object Access Auditing setting in the Advanced Security Audit policy to apply a global system access control list (SACL) and event auditing on modifications to Registry values (sub)keys related to SIPs and trust providers:
Note: As part of this technique, adversaries may attempt to manually edit these Registry keys (ex: Regedit) or utilize the legitimate registration process using Regsvr32. Periodically baseline registered SIPs and trust providers (Registry entries and files on disk), specifically looking for new, modified, or non-Microsoft entries. |
---|
ID | DS0022 | Источник и компонент данных | Файл: Изменение файла | Описание | Periodically baseline registered SIPs and trust providers (Registry entries and files on disk), specifically looking for new, modified, or non-Microsoft entries. Also analyze Autoruns data for oddities and anomalies, specifically malicious files attempting persistent execution by hiding within auto-starting locations. Autoruns will hide entries signed by Microsoft or Windows by default, so ensure “Hide Microsoft Entries” and “Hide Windows Entries” are both deselected. |
---|
Меры противодействия
ID | M1038 | Название | Защита от выполнения | Описание | Enable application control solutions such as AppLocker and/or Device Guard to block the loading of malicious SIP DLLs. |
---|
ID | M1024 | Название | Ограничение прав доступа к реестру | Описание | Ensure proper permissions are set for Registry hives to prevent users from modifying keys related to SIP and trust provider components. Components may still be able to be hijacked to suitable functions already present on disk if malicious modifications to Registry keys are not prevented. |
---|
ID | M1022 | Название | Ограничение разрешений для файлов и каталогов | Описание | Restrict storage and execution of SIP DLLs to protected directories, such as C:\Windows, rather than user directories. |
---|