T1574.006: Перехват динамического компоновщика
Злоумышленники могут запускать свою полезную нагрузку путем перехвата переменных окружения, которые динамический компоновщик использует для загрузки общих библиотек. На этапе подготовки к выполнению программы динамический компоновщик загружает общие библиотеки по абсолютным путям, указанным в переменных окружения и файлах, например, LD_PRELOAD
в Linux или DYLD_INSERT_LIBRARIES
в macOS. Библиотеки, указанные в переменных окружения, загружаются первыми и имеют приоритет над системными библиотеками с тем же именем. Этими переменными часто пользуются разработчики с целью отладки бинарных файлов без перекомпиляции, устранения конфликтов символов и реализации собственных функций без изменения исходной библиотеки.
В Linux и macOS перехват переменных динамического компоновщика может предоставить доступ к памяти процесса, системным и сетевым ресурсам, а также к повышенным привилегиям. Этот метод также дает возможность избежать обнаружения защитными решениями, поскольку выполнение происходит в контексте легитимного процесса. Злоумышленники могут устанавливать переменные окружения через командную строку, используя команду export
либо функции setenv
или putenv
. Злоумышленники также могут использовать перехват динамического компоновщика (), чтобы экспортировать переменные в оболочку или установить их программным способом посредством более высокоуровневого синтаксиса, такого как os.environ
в Python.
В Linux злоумышленники могут перенастроить порядок поиска библиотек, чтобы вместо легитимных библиотек, запрашиваемых целевой программой, при ее запуске загружались вредоносные с теми же именами. Порядок поиска библиотек настраивается через переменную окружения LD_PRELOAD
или через файл /etc/ld.so.preload
. Библиотеки, указанные в LD_PRELOAD
, загружаются и размещаются в памяти функциями dlopen()
и mmap()
соответственно.
В macOS это работает примерно так же, как в Linux, за исключением того, что динамические библиотеки macOS (dyld) реализованы на более низком уровне. Злоумышленники могут сделать так, чтобы переменная окружения DYLD_INSERT_LIBRARIES
указывала на вредоносные библиотеки, которые содержат имена легитимных библиотек или функций, требуемых целевой программой.
Какие продукты Positive Technologies покрывают технику
Экспертиза MaxPatrol SIEM
vulnerabilities: PT-CR-2074: Subrule_CVE_2023_4911_GLIBC_Buffer_Overflow: Сабруль к правилу CVE_2023_4911_GLIBC_Buffer_Overflow. Правило обнаруживает локальное повышение привилегий через переполнение буфера. Атакующие, используя уязвимость CVE-2023-4911, могут запустить SUID-программы для выполнения кода с повышенными привилегиями
vulnerabilities: PT-CR-2078: CVE_2023_4911_GLIBC_Buffer_Overflow: Правило обнаруживает локальное повышение привилегий через переполнение буфера. Атакующие, используя уязвимость CVE-2023-4911, могут запустить SUID-программы для выполнения кода с повышенными привилегиями
unix_mitre_attck_privilege_escalation: PT-CR-486: Unix_Run_Process_via_ldso: Запуск процесса и повышение привилегий с помощью динамического компоновщика ld.so
Способы обнаружения
ID | DS0011 | Источник и компонент данных | Модуль: Загрузка модуля | Описание | Monitor library metadata, such as a hash, and compare libraries that are loaded at process execution time against previous executions to detect differences that do not correlate with patching or updates. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Создание процесса | Описание | Monitor for newly executed processes for unusual activity (e.g., a process that does not use the network begins to do so). |
---|
ID | DS0017 | Источник и компонент данных | Команда: Выполнение команд | Описание | Monitor executed commands and arguments associated with modifications to variables and files associated with loading shared libraries such as LD_PRELOAD on Linux and DYLD_INSERT_LIBRARIES on macOS. |
---|
ID | DS0022 | Источник и компонент данных | Файл: Изменение файла | Описание | Monitor for changes to environment variables and files associated with loading shared libraries such as LD_PRELOAD on Linux and DYLD_INSERT_LIBRARIES on macOS. |
---|
ID | DS0022 | Источник и компонент данных | Файл: Создание файла | Описание | Monitor for newly constructed files that are added to absolute paths of shared libraries such as LD_PRELOAD on Linux and DYLD_INSERT_LIBRARIES on macOS. |
---|
Меры противодействия
ID | M1028 | Название | Изменение конфигурации ОС | Описание | When System Integrity Protection (SIP) is enabled in macOS, the aforementioned environment variables are ignored when executing protected binaries. Third-party applications can also leverage Apple’s Hardened Runtime, ensuring these environment variables are subject to imposed restrictions. Admins can add restrictions to applications by setting the setuid and/or setgid bits, use entitlements, or have a __RESTRICT segment in the Mach-O binary. |
---|
ID | M1038 | Название | Защита от выполнения | Описание | Adversaries may use new payloads to execute this technique. Identify and block potentially malicious software executed through hijacking by using application control solutions also capable of blocking libraries loaded by legitimate software. |
---|