Примеры обнаружения с помощью продуктов "Кода Безопасности":
Техники: T1574 , T1574.001 , T1574.002 , T1574.004 , T1574.005 , T1574.006 , T1574.007 , T1574.008 , T1574.009 , T1574.010 , T1574.011 , T1574.012 , T1574.013 , T1574.014
Злоумышленники могут выполнять собственную вредоносную полезную нагрузку, перехватывая переменные окружения, которые динамический компоновщик использует для загрузки общих библиотек. На этапе подготовки программы к выполнению динамический компоновщик загружает указанные абсолютные пути к общим библиотекам из переменных окружения и файлов, таких как LD_PRELOAD
в Linux или DYLD_INSERT_LIBRARIES
в macOS. Библиотеки, указанные в переменных окружения, загружаются первыми, имея приоритет перед системными библиотеками с тем же именем функции.(Цитата: Man LD.SO)(Цитата: TLDP Shared Libraries)(Цитата: Apple Doco Archive Dynamic Libraries) Эти переменные часто используются разработчиками для отладки двоичных файлов без необходимости перекомпиляции, деконфликтации отображаемых символов и реализации пользовательских функций без изменения исходной библиотеки.(Цитата: Baeldung LD_PRELOAD)
В Linux и macOS перехват переменных динамического компоновщика может предоставить доступ к памяти, системным/сетевым ресурсам и, возможно, повышенным привилегиям процесса-жертвы. Этот метод также может ускользнуть от обнаружения продуктами безопасности, поскольку выполнение маскируется под легитимный процесс. Злоумышленники могут устанавливать переменные окружения через командную строку с помощью команды export
, функции setenv
или putenv
. Злоумышленники также могут использовать Dynamic Linker Hijacking для экспорта переменных в оболочке или задавать переменные программно, используя синтаксис более высокого уровня, например os.environ
в Python.
В Linux злоумышленники могут установить LD_PRELOAD
для указания на вредоносные библиотеки, совпадающие с именами легитимных библиотек, которые запрашиваются программой-жертвой, заставляя операционную систему загружать вредоносный код злоумышленника при выполнении программы-жертвы. LD_PRELOAD
может быть задан с помощью переменной окружения или файла /etc/ld.so.preload
.(Цитата: Man LD.SO)(Цитата: TLDP Shared Libraries) Библиотеки, указанные LD_PRELOAD
, загружаются и отображаются в память с помощью dlopen()
и mmap()
соответственно.(Цитата: Code Injection on Linux and macOS)(Цитата: Uninformed Needle)(Цитата: Phrack halfdead 1997)(Цитата: Brown Exploiting Linkers)
В macOS это поведение концептуально такое же, как и в Linux, отличаясь лишь тем, как реализованы динамические библиотеки macOS (dyld) на более низком уровне.Злоумышленники могут установить переменную окружения DYLD_INSERT_LIBRARIES
, чтобы указать на вредоносные библиотеки, содержащие имена легитимных библиотек или функций, запрашиваемых программой-жертвой.(Цитата: TheEvilBit DYLD_INSERT_LIBRARIES)(Цитата: Timac DYLD_INSERT_LIBRARIES)(Цитата: Gabilondo DYLD_INSERT_LIBRARIES Catalina Bypass)
https://attack.mitre.org/techniques/T1574/006
Визуализация смежных техник для T1574.006
№ | Техника |
---|