T1055.001: Внедрение DLL-библиотек
Злоумышленники могут внедрить DLL-библиотеки в процессы с целью обхода защиты, действующей на уровне процессов, а также для повышения уровня своих привилегий. Внедрение DLL — это способ выполнения произвольного кода в адресном пространстве отдельного активного процесса.
Внедрение DLL обычно осуществляется через запись пути к DLL-файлу в виртуальное адресное пространство целевого процесса перед загрузкой DLL посредством запуска нового потока. Запись может быть осуществлена с помощью вызовов нативного API Windows, таких как VirtualAllocEx
и WriteProcessMemory
, после чего поток запускается через вызов CreateRemoteThread
(который вызывает API-функцию LoadLibrary
, отвечающую за загрузку DLL) .
Вариации этого метода, такие как рефлексивное внедрение DLL (запись в процесс саморазмещающейся DLL-библиотеки) и модуль памяти (размещение DLL-библиотеки при записи в процесс), обходят проблему с перемещением адресов и необходимостью задействования дополнительных API для выполнения (поскольку эти методы загружают и выполняют файлы в памяти посредством вызова функции LoadLibrary
вручную).
Еще одна вариация этого метода, известная как перегрузка модуля (Module Stomping или DLL Hollowing), может использоваться для сокрытия внедренного в процесс кода. При использовании этого метода легитимная DLL загружается в удаленный процесс с последующей перезаписью AddressOfEntryPoint
модуля вручную перед запуском нового потока в целевом процессе. Эта вариация позволяет злоумышленникам скрыть вредоносный внедренный код путем его выполнения легитимным DLL-файлом на диске.
Запуск кода в контексте другого процесса может обеспечить доступ к памяти процесса, системным и сетевым ресурсам и, возможно, повышенным привилегиям. Выполнение посредством внедрения DLL также дает возможность избежать обнаружения защитными решениями, поскольку маскируется под легитимный процесс.
Какие продукты Positive Technologies покрывают технику
Экспертиза MaxPatrol SIEM
vulnerabilities: PT-CR-682: CVE_2022_26503_Subrule_1: Неподписанная библиотека загружена в процесс Veeam.EndPoint.Manager vulnerabilities: PT-CR-2314: CVE_2024_21378_Outlook_RCE: Эксплуатация уязвимости CVE-2024-21378 в Outlook. Уязвимость позволяет выполнить произвольный код с помощью форм Outlook vulnerabilities: PT-CR-683: CVE_2022_26503_Subrule_2: Процесс Veeam.EndPoint.Service запустил другой процесс mitre_attck_privilege_escalation: PT-CR-460: DLL_Hijacking: Обнаружена попытка повысить привилегии учетной записи, загрузив вредоносную библиотеку mitre_attck_defense_evasion: PT-CR-454: Dnscmd_AWL_Bypass: Попытка обойти запрет на запуск приложений с помощью встроенной утилиты Microsoft Windows dnscmd.exe (интерфейс командной строки для управления DNS-серверами) mitre_attck_cred_access: PT-CR-768: Intercept_Creds_From_MSTSC: Обнаружена выгрузка учетных данных, использованных в процессе mstsc.exe при RDP подключении mitre_attck_cred_access: PT-CR-770: Lsass_DLL_Injection: Внедрение библиотеки в процесс сервиса проверки подлинности локальной системы безопасности (LSASS). После входа пользователя в систему система создает различные учетные данные и хранит их в памяти процесса LSASS hacking_tools: PT-CR-760: SharpRDPThief_Usage: Обнаружено использование утилиты SharpRDPThief для сохранения учетных данных RDP-сессии hacking_tools: PT-CR-1726: Havoc_Powerpick: В процесс werfault.exe внедрился подозрительный процесс, что может быть признаком использования Havoc для скрытого исполнения команд PowerShell hacking_tools: PT-CR-763: Subrule_Thread_SharpRDPThief_Usage: Обнаружено подключение библиотеки Easyhook.dll к вредоносному процессу и создание им потоков в процессе mstsc.exe hacking_tools: PT-CR-762: Subrule_MSTSC_SharpRDPThief_Usage: Обнаружено внедрение библиотек Easyhook.dll и Easyload.dll в процесс mstsc.exe hacking_tools: PT-CR-754: Cobalt_Strike_Service_Move: Использована техника BOF (ServiceMove) для Cobalt Strike
Способы обнаружения
ID | DS0011 | Источник и компонент данных | Модуль: Загрузка модуля | Описание | Отслеживайте события, связанные с файлами DLL/PE, особенно события создания этих бинарных файлов, а также загрузки DLL в память процессов. Отслеживайте незнакомые DLL и те, которые обычно не загружаются в память процессов. Для мониторинга загрузки DLL в память процессов можно отслеживать события Sysmon с идентификатором 7 (загрузка образа). При отслеживании этого события может генерироваться большое количество ложных срабатываний, поэтому рекомендуется отфильтровывать известные безопасные процессы и загруженные модули. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Вызовы API ОС | Описание | Отслеживание вызовов Windows API, связанных с разными типами внедрения кода, сопряжено с генерацией больших объемов данных. Для эффективной защиты нужно осуществлять сбор данных только при определенных условиях, чтобы выявлять известные вредоносные последовательности вызовов. В противном случае будет трудно выделить вредоносные вызовы API среди множества легитимных. Для этой техники могут использоваться такие вызовы API Windows, как Отслеживайте процедуры удаленного создания потоков, начинающиеся с вызова функции LoadLibraryA или LoadLibraryW. В зависимости от инструмента, он может предоставить дополнительную информацию о строке DLL, являющейся аргументом функции. Если имеется защитное ПО, которое легитимно осуществляет внедрение DLL-библиотек, оно должно быть соответствующим образом внесено в белый список. В Microsoft Windows процессы могут удаленно создавать потоки в других процессах с тем же уровнем привилегий. Эта возможность реализуется с помощью Windows API CreateRemoteThread. Сама ОС Windows и сторонние программы используют эту возможность в легитимных целях. Например, процесс csrss.exe в ОС Windows создает потоки в программах для отправки сигналов зарегистрированным функциям обратного вызова. И злоумышленники, и защитное ПО на узле используют эту функцию внедрения DLL, но для совершенно разных целей. Злоумышленник, скорее всего, будет осуществлять внедрение в программу, чтобы обойти защитные меры или контроль учетных записей пользователей, тогда как защитное ПО обеспечивает таким образом более продвинутый мониторинг вызовов API. Один из самых распространенных способов внедрения DLL — использование API Windows LoadLibrary.
Такое поведение можно обнаружить, отслеживая создание потоков в процессах и сопоставляя точки входа для определения имени функции. Если эта функция — LoadLibraryA или LoadLibraryW, удаленный поток явно намеревается внедрить DLL. В этом случае необходимо проанализировать исходный процесс, и, если он является ожидаемым и доверенным, его можно игнорировать. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Метаданные процесса | Описание | Сопоставляйте диапазоны памяти процессов с известными копиями легитимного модуля, чтобы выявить несоответствия памяти процессов и DLL-файлов на диске. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Обращение к процессу | Описание | Отслеживайте просматриваемые процессы, которые могут внедрять DLL-библиотеки в процессы с целью обхода защиты, действующей на уровне процессов, а также для повышения уровня привилегий. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Изменения в процессе | Описание | Отслеживайте изменения в процессах, которые могут использоваться для внедрения DLL-библиотек в процессы с целью обхода защиты, действующей на уровне процессов, а также для повышения уровня привилегий. Злоумышленники часто используют технику внедрения вредоносных DLL в процессы. Существует несколько способов внедрения, но чаще всего используется встроенная в Windows утилита mavinject.exe, которая выполняет несколько действий за один шаг. Злоумышленники могут переименовать исполняемый файл, поэтому в качестве дополнительной сигнатуры используется аргумент INJECTRUNNING. Для снижения количества ложных срабатываний необходимо использовать список разрешенных приложений. Аналитика 1. Внедрение DLL с помощью Mavinject
|
---|
Меры противодействия
ID | M1040 | Название | Предотвращение некорректного поведения | Описание | В некоторых решениях для обеспечения безопасности конечных точек можно настроить блокирование определенных типов внедрения кода в процессы на основе детектирования распространенных последовательностей действий, характерных для процесса внедрения. |
---|