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
unix_mitre_attck_privilege_escalation: PT-CR-486: Unix_Run_Process_Via_Ldso: Запуск процесса и повышение привилегий с помощью динамического компоновщика ld.so vulnerabilities: PT-CR-2078: CVE_2023_4911_GLIBC_Buffer_Overflow: Правило обнаруживает локальное повышение привилегий через переполнение буфера. Атакующие, используя уязвимость CVE-2023-4911, могут запустить SUID-программы для выполнения кода с повышенными привилегиями vulnerabilities: PT-CR-2074: Subrule_CVE_2023_4911_GLIBC_Buffer_Overflow: Сабруль к правилу CVE_2023_4911_GLIBC_Buffer_Overflow. Правило обнаруживает локальное повышение привилегий через переполнение буфера. Атакующие, используя уязвимость CVE-2023-4911, могут запустить SUID-программы для выполнения кода с повышенными привилегиями
Способы обнаружения
ID | DS0022 | Источник и компонент данных | Файл: Создание файла | Описание | Отслеживайте создание файлов по абсолютным путям общих библиотек, таким как указанные в переменных окружения LD_PRELOAD в Linux и DYLD_INSERT_LIBRARIES в macOS. |
---|
ID | DS0017 | Источник и компонент данных | Команда: Выполнение команд | Описание | Отслеживайте выполнение команд с аргументами, которые могут использоваться для изменения переменных и файлов, связанных с загрузкой общих библиотек, таких как LD_PRELOAD в Linux и DYLD_INSERT_LIBRARIES в macOS. |
---|
ID | DS0011 | Источник и компонент данных | Модуль: Загрузка модуля | Описание | Отслеживайте метаданные библиотек, в частности хеш, и сопоставляйте библиотеки, загруженные во время выполнения процесса, с ранее загружавшимися библиотеками, чтобы выявить изменения, не связанные с установкой исправлений или обновлений. |
---|
ID | DS0009 | Источник и компонент данных | Процесс: Создание процесса | Описание | Отслеживайте запуск новых процессов на предмет нетипичного поведения (например, установление сетевого подключения процессом, который обычно этого не делает). |
---|
ID | DS0022 | Источник и компонент данных | Файл: Изменение файла | Описание | Отслеживайте изменения в переменных окружения и файлах, связанных с загрузкой общих библиотек, таких как LD_PRELOAD в Linux и DYLD_INSERT_LIBRARIES в macOS. |
---|
Меры противодействия
ID | M1028 | Название | Изменение конфигурации ОС | Описание | Когда в macOS включена защита целостности системы (SIP), вышеупомянутые переменные окружения игнорируются при выполнении защищенных бинарных файлов. Сторонние приложения также могут использовать Hardened Runtime от Apple, обеспечивая наложение ограничений на эти переменные окружения. Администраторы могут добавить ограничения в приложения, установив биты setuid и (или) setgid, использовать права доступа или включить сегмент __RESTRICT в бинарный файл Mach-O. |
---|
ID | M1038 | Название | Защита от выполнения | Описание | Для реализации этой техники злоумышленники могут использовать новые полезные нагрузки. Выявляйте и блокируйте потенциально вредоносные программы, выполняемые путем перехвата, с помощью решений для контроля приложений, способных блокировать библиотеки, загружаемые легитимными программами. |
---|