引言
在恶意软体中,代码重用相当普遍,尤其是在那些开发起来较为复杂或难以编写的部分。我们通过跟踪源代码和目标代码,有效检测新恶意软体并追踪现有恶意软体在野生环境中的演变。
是一款知名的 Linux 核心
Rootkit,支持不同的 Linux 核心版本( 2.6.x 、 3.x 、 4.x 、 5.x 和 6.x )以及处理器架构(
x86 、 x86_64 和 ARM64
)。简单来说,当该模块加载后,它会变得不可见并隐藏所有以攻击者在编译时选择的魔术前缀开头的文件和文件夹。接著,威胁行为者可以通过发送信号与
Diamorphine 互动,实现以下操作:隐藏/显示任意进程、隐藏/显示内核模块以及提升权限成为 root。
在 2024 年 3 月初,我们发现了一个在野外未被检测到的新 Diamorphine 变体。获得样本后,我查看了 .modinfo部分,注意到它伪装成合法的 ,并且是为特定的内核版本(内核
5.19.17)编译的。
通过使用 列出函数,我们注意到正在分析的样本包含 Diamorphine 内核
Rootkit(例如:
、、、、
和
)。但我们也可以看到模块中有其他功能(
a 、 b 、 c 、 d 、 e 、 f 和 setup ),这表明该样本武装了更多的有效载荷。
由于 Diamorphine 是一个知名的开源 Linux 核心 Rootkit,本博文专注于其新实现的功能:
- 通过向暴露的设备 xx_tables 发送消息来停止 Diamorphine 。
- 通过魔法数据包执行任意操作系统命令。
插入内核 Rootkit
要插入这个 Diamorphine 变体,我们需要一个内核版本为 5.19.17 的 Linux 操作系统。我们也可以使用
查找合适的 Linux 发行版。根据编译器,我们可以看到 是一个不错的选择。
事实上,我在网上找到一位使用 进行此操作的人,这个特定的 Diamorphine
源代码的符号版本部分吻合我们在 VirusTotal 发现的新 Diamorphine 变体的符号版本(例如, module_layout
不匹配该版本,但 unregister_kprobe 仍然匹配)。
因此,内核 Rootkit 可以插入具有合适符号版本的 Ubuntu Jammy 发行版中(请参考将插入 Diamorphine 变体的内核的
文件)。
XX_Tables: 根据用户模式与内核模式进行通信的设备
伪装 是一个聪明的主意,因为这样注册
Netfilter 挂钩不会引起怀疑,因为与 Netfilter 的互动是预期的行为。
在 init_module 函数中,该 Rootkit 创建了一个名为 xx_tables 的设备,用于使用户模式与内核模式 Rootkit进行通信。
遵循 的理念,该
接收暴露了该 xx_tables 设备实现和处理的操作的 。出现在
结构中的 “ g ” 函数负责处理 dev_write 操作。
处理 dev_write 操作:「g」函数
我们可以看到该函数通过 xx_tables 设备从用户模式空间读取命令。该记忆体通过 API __copy_from_user_ 复制自设备。
出于安全原因,该 Rootkit 检查从用户模式空间发送的数据是否为空。这个数据结构包含两个字段:数据的长度和指向数据本身的指针。
最后,如果从用户模式空间发送的输入为字符串 “ exit “,则会调用 Rootkit 的 exit
函数,该函数恢复系统,释放资源并从内存中卸载内核模块。
exit_ 函数
exit 函数正确地恢复系统并从内核记忆体中卸载 Rootkit。它执行以下操作:
- 销毁 Rootkit 创建的设备。
- 销毁用于创建该设备的 。
- 删除所创建的 。
- 反注册 。
- 反注册实现 “ magic packets ” 的 。
- 最后,替换 system_calls 表中的指针以恢复原始函数。
魔法数据包
新的 Diamorphine Rootkit 实现了支持 IPv4 和 IPv6 的 “ magic packets ”。因为
被设置为
。
该 netfilter_hook_function 依赖于对 a 、 b 、 c 、 d 、 e 和 f 函数的嵌套调用来处理
magic packets 。满足 magic packet 要求的数据包必须包含值 “ whitehat ” 和 “ 2023_mn
”,经过 XOR 密钥: 0x64 加密。
如果数据包符合要求,则会从中提取任意命令并在感染的计算机上执行。
syscalls 表中的挂钩
是原始
Diamorphine Rootkit 的系统调用挂钩实现:
即使新 Diamorphine 变体中的代码完全相同,但重要的是要强调,它被配置为隐藏包含字符串 “…” 的文件和文件夹。
结论
我们经常发现新的 Linux 核心 Rootkit 实施 “ magic packets ”,在野外未被检测到(例如:、、
等等),我们将持续合作,提高对我们客户的保护能力。
在这个新的在野版本的 Diamorphine 中,威胁行为者添加了设备功能,允许从内存中卸载 Rootkit 的内核模块,并实现了 magicpackets 功能,使任意命令能在受感染系统中执行。
如何预防感染并保持线上安全
- 保持系统更新。
- 确保您的互联网连接安全(例如使用 )。
- 避免从不可信来源下载/执行文件。
- 遵守 最低权限原则 (PoLP)。在 Linux 的情况下,请勿在没有必要的情况下使用 root 帐户执行操作。
- 使用强大的网络安全解决方案,例如 Norton、Avast、Avira 或 AVG,以确保防范此类恶意软体。
新 Diamorphine 变体
067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090
IoC 资源库
Diamorphine Linux 核心 Rootkit 的 IoCs、Yara 搜索规则及 VirusTotal 查询都在我们的 中。
标签:、、、
分享:XFacebook