T1553.003 - Подделка SIP и поставщика доверия

Примеры обнаружения с помощью продуктов "Кода Безопасности":

Техники:  T1553 , T1553.001 , T1553.002 , T1553.003 , T1553.004 , T1553.005 , T1553.006

Злоумышленники могут подделывать компоненты SIP и провайдера доверия, чтобы ввести в заблуждение операционную систему и средства управления приложениями при проведении проверки подлинности подписи. В пользовательском режиме цифровые подписи Windows Authenticode (цит. по: Microsoft Authenticode) используются для проверки происхождения и целостности файла, переменных, которые могут использоваться для установления доверия к подписанному коду (например, драйвер с действительной подписью Microsoft может рассматриваться как безопасный). Процесс проверки подписи осуществляется с помощью функции интерфейса прикладного программирования (API) WinVerifyTrust, (Цитата: Microsoft WinVerifyTrust) которая принимает запрос и координирует работу с соответствующим поставщиком доверия, который отвечает за проверку параметров подписи.(Цитата: SpectorOps Subverting Trust Sept 2017)

Из-за различий в типах исполняемых файлов и соответствующих форматах подписей компания Microsoft создала программные компоненты, называемые пакетами предметного интерфейса (SIPs) (Цитата: EduardosBlog SIPs July 2008), чтобы обеспечить уровень абстракции между функциями API и файлами. SIP отвечают за предоставление API-функциям возможности создавать, извлекать, вычислять и проверять подписи. Уникальные SIP существуют для большинства форматов файлов (Executable, PowerShell, Installer и т. д., а подпись в каталоге обеспечивает всеобъемлющий подход (Цитата: Microsoft Catalog Files and Signatures April 2017)) и идентифицируются глобально уникальными идентификаторами (GUID).(Цитата: SpectorOps Subverting Trust Sept 2017)

Подобно Code Signing, злоумышленники могут использовать эту архитектуру для подрыва контроля доверия и обхода политик безопасности, позволяющих выполнять в системе только легитимно подписанный код. Злоумышленники могут перехватить SIP и компоненты поставщика доверия, чтобы ввести в заблуждение операционную систему и средства контроля приложений, классифицировав вредоносный (или любой) код как подписанный: (Цит. по:SpectorOps Subverting Trust Sept 2017)

* Модификация значений Dll и FuncName реестра в HKLM\SOFTWARE[\WOW6432Node\]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllGetSignedDataMsg\{SIP_GUID}, которые указывают на библиотеку динамических ссылок (DLL), предоставляющую функцию CryptSIPDllGetSignedDataMsg для SIP, которая извлекает закодированный цифровой сертификат из подписанного файла. Указав на злонамеренно созданную DLL с экспортируемой функцией, которая всегда возвращает заведомо хорошее значение подписи (например, подпись Microsoft для переносимых исполняемых файлов), а не реальную подпись файла, злоумышленник может применить приемлемое значение подписи ко всем файлам, использующим этот SIP (цитата: GitHub SIP POC Sept 2017) (хотя, скорее всего, произойдет несоответствие хэша, что сделает подпись недействительной, поскольку хэш, возвращаемый функцией, не будет соответствовать значению, вычисленному из файла).
* Изменение значений Dll и FuncName реестра в HKLM\SOFTWARE\[WOW6432Node\]Microsoft\Cryptography\OID\EncodingType 0\CryptSIPDllVerifyIndirectData\{SIP_GUID}, которые указывают на DLL, предоставляющую функцию CryptSIPDllVerifyIndirectData SIP, которая проверяет вычисленный хэш файла на соответствие подписанному хэш-значению. Указав на злонамеренно созданную DLL с экспортируемой функцией, которая всегда возвращает TRUE (указывая, что проверка прошла успешно), злоумышленник может успешно проверить любой файл (с легитимной подписью), используя этот SIP (цитата: GitHub SIP POC Sept 2017) (с перехватом или без перехвата ранее упомянутой функции CryptSIPDllGetSignedDataMsg). Это значение реестра также может быть перенаправлено на подходящую экспортируемую функцию из уже существующей DLL, что позволяет избежать необходимости размещать и исполнять новый файл на диске.
* Модификация значений реестра DLL и Function в HKLM\SOFTWARE\[WOW6432Node\]Microsoft\Cryptography\Providers\Trust\FinalPolicy\{trust provider GUID}, которые указывают на DLL, предоставляющую функцию FinalPolicy провайдера доверия, где происходит проверка декодированной и разобранной подписи и принимается большинство решений о доверии. Подобно перехвату функции CryptSIPDllVerifyIndirectData в SIP, это значение может быть перенаправлено на подходящую экспортируемую функцию из уже существующей DLL или злонамеренно созданной DLL (хотя реализация провайдера доверия сложна).
* **Примечание:** Вышеуказанные перехваты возможны и без изменения реестра с помощью DLL Search Order Hijacking.

Перехват компонентов SIP или провайдера доверия также может обеспечить постоянное выполнение кода, поскольку эти вредоносные компоненты могут быть вызваны любым приложением, выполняющим подписание кода или проверку подписи.(Цит. по: SpectorOps Subverting Trust Sept 2017)

https://attack.mitre.org/techniques/T1553/003

← Назад

Визуализация смежных техник для T1553.003

Отрасль:
 с подтехниками
Техника

Закрыть