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 | DS0022 | Источник и компонент данных | Файл: Изменение файла | Описание | Периодически сравнивайте зарегистрированные SIP и поставщики доверия (записи реестра и файлы на диске) со стандартными, уделяя особое внимание новым и измененным записям, а также записям, не сделанным Microsoft. Кроме того, проводите анализ данных Autoruns на предмет необычных и аномальных изменений — особое внимание стоит уделять вредоносным файлам, которые могут быть скрыты в каталогах автоматического запуска для обеспечения их постоянного выполнения и закрепления в системе. По умолчанию Autoruns скрывает записи с подписями от Microsoft или Windows, поэтому рекомендуется проследить, чтобы параметры Hide Microsoft Entries и Hide Windows Entries были не активны. |
---|
ID | DS0024 | Источник и компонент данных | Реестр Windows: Изменение ключа реестра Windows | Описание | Включите параметр аудита доступа к глобальным объектам для реестра в политике продвинутого аудита безопасности, чтобы применять глобальный системный список управления доступом (SACL) и аудит событий при модификации значений (под)ключей реестра, связанных с SIP и поставщиками доверия:
Примечание. Применяя данную технику, злоумышленники могут попытаться вручную изменить данные ключи реестра (например, с помощью утилиты regedit) или воспользоваться легитимным процессом регистрации с помощью утилиты regsvr32. Периодически сравнивайте зарегистрированные SIP и поставщики доверия (записи реестра и файлы на диске) со стандартными, уделяя особое внимание новым и измененным записям, а также записям, не сделанным Microsoft. |
---|
ID | DS0011 | Источник и компонент данных | Модуль: Загрузка модуля | Описание | Включите ведение журнала событий CryptoAPI v2 (CAPI) для мониторинга и анализа ошибок, связанных с неудачной проверкой доверия (событие с идентификатором 81; учтите, что эта проверка неэффективна в случае перехвата компонентов поставщика доверия), а также других связанных событий (например, успешных проверок доверия). Журналы событий проверки целостности кода могут содержать индикаторы загрузки вредоносных SIP и поставщиков доверия, так как попытки защищенных процессов загрузить компоненты проверки доверия, созданные злоумышленниками, обычно завершаются отказом (событие с идентификатором 3033) . |
---|
Меры противодействия
ID | M1038 | Название | Защита от выполнения | Описание | Включите решения для контроля приложений, такие как AppLocker и (или) Device Guard, чтобы блокировать загрузку вредоносных библиотек SIP DLL. |
---|
ID | M1024 | Название | Ограничение прав доступа к реестру | Описание | Проследите, чтобы для кустов реестра были установлены надлежащие разрешения, которые не позволяют пользователям изменять ключи, связанные с компонентами SIP и провайдера доверия. Если не предотвратить вредоносные модификации ключей реестра, компоненты могут быть перехвачены для выполнения функций, уже имеющихся на диске. |
---|
ID | M1022 | Название | Ограничение разрешений для файлов и каталогов | Описание | Ограничьте хранение и выполнение библиотек SIP DLL защищенными каталогами, такими как C:\Windows, а не пользовательскими каталогами. |
---|