Elastic Security Lab的研究人员发现了一个新的可加载内核模块(LKM)rootkit,称为PUMAKIT,支持先进的逃避机制。PUMAKIT具有多阶段设计,包括一个dropper、内存驻留的可执行文件和一个rootkit。它利用一个名为“PUMA”的LKM rootkit,使用ftrace钩子来修改核心系统功能。该恶意软件钩住18个系统调用和几个内核函数,使用ftrace()来隐藏文件、目录和rootkit本身,同时避免调试尝试。开发人员专注于隐蔽部署,该恶意软件仅在特定条件下激活,例如安全启动检查或内核符号可用性,并将ELF二进制文件嵌入其dropper中。
“PUMAKIT是一种复杂的恶意软件,最初在VirusTotal的例行威胁猎取中被发现,并以其二进制文件中发现的开发者嵌入字符串命名。”Elastic Security Lab发布的报告中写道。“内核模块的关键功能包括权限提升、隐藏文件和目录、将自己隐藏于系统工具、防调试措施,以及与命令和控制(C2)服务器建立通信。”
PUMAKIT的LKM rootkit使用系统调用表来操控系统行为,依赖于kallsyms_lookup_name()进行符号解析。与针对5.7及以上内核版本的rootkit不同,PUMAKIT的rootkit组件不使用kprobes,这表明它是为较老的内核设计的。
“这一选择具有重要意义,因为在5.7版内核之前,kallsyms_lookup_name()被导出,可以被模块轻松利用,即使没有合适的许可证。”报告继续说道。“2020年2月,内核开发人员讨论取消导出kallsyms_lookup_name(),以防止未经授权或恶意模块的滥用。一种常见的策略是添加假的MODULE_LICENSE("GPL")声明来规避许可检查,允许这些模块访问未导出的内核函数。LKM rootkit展示了这种行为。”
PUMAKIT的内核模块中的rmdir_hook()函数拦截rmdir()系统调用来操作目录操作。恶意软件用它进行权限提升和基于结构化输入模式检索配置细节。钩子处理嵌入在系统调用中的命令和参数,以“zarya”开头,后跟命令和参数字符。这种结构化系统增强了控制和隐藏。
以下是钩子处理的命令列表:
Elastic Security开发了一个YARA签名来检测PUMAKIT组件,包括dropper(cron)、rootkit加载器(/memfd:wpn)、LKM rootkit和Kitsune共享对象文件。
“PUMAKIT是一个复杂且隐蔽的威胁,使用了高级技术如系统调用钩子、内存驻留执行和独特的权限提升方法。其多架构设计突显了针对Linux系统的恶意软件日益增长的复杂性。”报告总结道。
原文始发于微信公众号(黑猫安全):PUMAKIT 是一种使用先进隐蔽机制的复杂 Rootkit
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论