Аналитики Elastic Security обнаружили новый руткит для Linux под названием Pumakit. Малварь использует повышение привилегий, чтобы скрывать свое присутствие в системах жертв.
Исходно исследователи выявили Pumakit в подозрительном бинарнике (cron), загруженном на VirusTotal 4 сентября 2024 года. Пока неизвестно, кто стоит за этим вредоносом и на кого он нацелен.
Эксперты рассказывают, что Pumakit представляет собой набор из нескольких компонентов, включая дроппер, исполняемые файлы, находящиеся в памяти, руткит в виде модуля ядра и SO-руткит (shared object) для пользовательского пространства.
Малварь использует многоступенчатый процесс заражения, начинающийся с дроппера cron, который выполняет встроенные полезные нагрузки (/memfd:tgt и /memfd:wpn) из памяти. Пейлоад /memfd:wpn, выполняющийся в дочернем процессе, проводит проверку окружения, манипулирует образами ядра и в итоге развертывает LKM-модуль руткита (puma.ko) в ядре системы.
В LKM-руткит встроен Kitsune SO (lib64/libs.so), выступающий в роли userland-руткита, который внедряется в процессы с помощью LD_PRELOAD для перехвата системных вызовов на пользовательском уровне.
По словам исследователей, малварь эксплуатирует функцию kallsyms_lookup_name() для манипулирования поведением системы. Это указывает на то, что руткит был разработан только для ядер Linux до версии 5.7, так как более новые версии больше не экспортируют эту функцию.
«Способность LKM-руткита манипулировать поведением системы начинается с использования таблицы syscall и опирается на kallsyms_lookup_name() для разрешения символов, — объясняют исследователи. — В отличие от современных руткитов, нацеленных на ядра версий 5.7 и выше, этот руткит не использует kprobes, что указывает на то, что он предназначен для старых ядер».
Pumakit использует хуки для 18 системных вызовов и ряда функций ядра с помощью ftrace, чтобы добиться повышения привилегий, выполнения команд и получить возможность скрывать процессы. Если работа хуков прерывается, руткит инициализирует их заново, гарантируя, что вредоносные изменения не будут отменены, а модуль не будет выгружен.
Отдельно отмечается, что руткит способен скрывать свое присутствие от логов ядра, системных инструментов и антивирусов, а также может скрыть определенные файлы в каталоге и объекты из списков процессов.
При этом userland-руткит Kitsune SO работает в связке с Puma. Он перехватывает системные вызовы пользовательского уровня и изменяет поведение таких программ, как ls, ps, netstat, top, htop и cat, чтобы скрыть файлы, процессы и сетевые соединения, связанные с руткитом.
Кроме того, он способен динамически спрятать любые другие файлы и каталоги (на основе заданных злоумышленником критериев) и делать вредоносные бинарники полностью «невидимыми» для пользователей и администраторов.
Помимо индикаторов компрометации специалисты Elastic Security приложили к своему отчету правило YARA, помогающее обнаруживать атаки Pumakit.