Rootkit是一种恶意软件,旨在隐藏其存在以及其它恶意程序,以避免被安全检测工具发现,并保持对受感染系统的控制。这种复杂且隐蔽的威胁通过多种技术手段在操作系统中隐藏其活动,以维持对受感染系统的控制。Rootkit可以是用户态的,通过替换或修改系统工具和库文件来隐藏其存在;也可以是内核级的,通过修改操作系统的核心部分,如内核模块或驱动程序,来实现其隐藏和控制功能。
近日,Elastic Security Lab的研究人员揭露了一款名为PUMAKIT的新型Linux rootkit,它展示了rootkit技术的最新发展。PUMAKIT采用多阶段架构,包括一个名为“cron”的dropper(安装程序),两个内存驻留的可执行文件(“/memfd:tgt”和“/memfd:wpn”),一个名为“PUMA”的LKM(可加载内核模块)rootkit,以及一个名为Kitsune的SO(共享对象)用户空间rootkit。这种结构使得PUMAKIT只有在满足特定条件时才会激活,例如安全启动检查或内核符号可用性,从而最小化其暴露于检测工具的可能性。
PUMAKIT的核心功能包括权限提升、隐藏文件和目录、从系统工具中隐藏自身、反调试措施以及与命令和控制(C2)服务器建立通信。它使用Linux内部函数跟踪器(ftrace)钩住多达18种不同的系统调用和各种内核函数,如“prepare_creds”和“commit_creds”,以改变核心系统行为并实现其目标。
PUMAKIT的隐蔽性通过多种技术实现,包括挂钩系统调用和内核函数来提升权限和隐藏其存在,以及利用Linux的函数跟踪器(ftrace)修改核心系统操作。其组件的内存驻留执行最小化了磁盘上的足迹,进一步增强了其逃避检测的能力。PUMAKIT还采用了独特的方法,例如使用rmdir()系统调用来提升权限,这突出了其在保持持久性和控制方面的创新方法。
PUMAKIT 感染传播链
PUMAKIT是一款复杂的恶意软件,其核心是一个名为“PUMA”的可加载内核模块(LKM)rootkit,该rootkit利用Linux内部函数跟踪器(ftrace)来挂钩18种不同的系统调用和多个内核函数,操纵核心系统行为。PUMAKIT的设计确保它只在满足特定条件时激活,如安全启动检查或内核符号可用性,这些条件通过扫描Linux内核并嵌入dropper中的所有必要文件作为ELF二进制文件来验证。
PUMAKIT的关键功能包括:
在VirusTotal上,Elastic Security Labs的研究人员发现了一个名为cron的可疑二进制文件,该文件最初上传于2024年9月4日,未被任何安全工具检测到,引起了对潜在隐蔽性的怀疑。进一步检查揭示了另一个相关工件/memfd:wpn (deleted),同样未被检测到。
PUMAKIT的多阶段架构从dropper开始,它创建了两个内存驻留的可执行文件:/memfd:tgt (deleted)和/memfd:wpn (deleted)。/memfd:tgt是一个良性的Cron二进制文件,而/memfd:wpn充当rootkit加载器。加载器负责评估系统条件,执行一个临时脚本(/tmp/script.sh),并最终部署LKM rootkit。LKM rootkit包含一个嵌入的SO文件——Kitsune——用于从用户空间与rootkit交互。
LKM rootkit通过使用系统调用表和依赖kallsyms_lookup_name()来解析符号,开始操纵系统行为。与针对5.7及以上内核版本的现代rootkit不同,PUMAKIT不使用kprobes,表明它是为旧内核设计的。LKM rootkit还利用ftrace()挂钩机制来建立其挂钩,有效地拦截系统调用并用自定义挂钩替换它们的处理程序。
在深入研究rootkit时,研究人员在内核对象文件中发现了另一个ELF文件。经过提取,发现这是/lib64/libs.so文件。检查后,遇到了几个引用字符串,如Kitsune PID %ld,表明SO被称为Kitsune。Kitsune可能负责rootkit观察到的某些行为。这些引用与通过LD_PRELOAD操纵用户空间交互的更广泛上下文一致。
参考链接:
https://www.elastic.co/security-labs/declawing-pumakit