MaxPatrol SIEM

Выявляет инциденты ИБ, ведущие к нарушению киберустойчивости компании

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, чтобы, избегая обнаружения, выполнять вредоносную полезную нагрузку на компьютере пользователя

Способы обнаружения

IDDS0011Источник и компонент данныхМодуль: Загрузка модуляОписание

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).

IDDS0024Источник и компонент данныхРеестр 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:

  • HKLM\SOFTWARE\Microsoft\Cryptography\OID
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Cryptography\OID
  • HKLM\SOFTWARE\Microsoft\Cryptography\Providers\Trust
  • HKLM\SOFTWARE\WOW6432Node\Microsoft\Cryptography\Providers\Trust

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.

IDDS0022Источник и компонент данныхФайл: Изменение файлаОписание

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.

Меры противодействия

IDM1038НазваниеЗащита от выполненияОписание

Enable application control solutions such as AppLocker and/or Device Guard to block the loading of malicious SIP DLLs.

IDM1024НазваниеОграничение прав доступа к рееструОписание

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.

IDM1022НазваниеОграничение разрешений для файлов и каталоговОписание

Restrict storage and execution of SIP DLLs to protected directories, such as C:\Windows, rather than user directories.