案例中心

  • 首页 i(name 新的二氢吗啡根kit变种在野外未被发现

新的二氢吗啡根kit变种在野外未被发现

2025-02-27 18:21:59

引言

在恶意软体中,代码重用相当普遍,尤其是在那些开发起来较为复杂或难以编写的部分。我们通过跟踪源代码和目标代码,有效检测新恶意软体并追踪现有恶意软体在野生环境中的演变。

Diamorphine 是一款知名的 Linux 核心 Rootkit,支持不同的 Linux 核心版本26x、3x、4x、5x 和 6x以及处理器架构x86、x8664 和 ARM64。简单来说,当该模块加载后,它会变得不可见并隐藏所有以攻击者在编译时选择的魔术前缀开头的文件和文件夹。接著,威胁行为者可以通过发送信号与 Diamorphine 互动,实现以下操作:隐藏/显示任意进程、隐藏/显示内核模块以及提升权限成为 root。

在 2024 年 3 月初,我们发现了一个在野外未被检测到的新 Diamorphine 变体。获得样本后,我查看了 modinfo 部分,注意到它伪装成合法的 xtables Netfilter 模块,并且是为特定的内核版本内核 51917编译的。

通过使用 Radare2 列出函数,我们注意到正在分析的样本包含 Diamorphine 内核 Rootkit例如: modulehide、hackedkill、getsyscalltablebf、findtask、isinvisible 和 moduleshow)。但我们也可以看到模块中有其他功能a、b、c、d、e、f 和 setup,这表明该样本武装了更多的有效载荷。

由于 Diamorphine 是一个知名的开源 Linux 核心 Rootkit,本博文专注于其新实现的功能:

通过向暴露的设备 xxtables 发送消息来停止 Diamorphine。通过魔法数据包执行任意操作系统命令。

插入内核 Rootkit

要插入这个 Diamorphine 变体,我们需要一个内核版本为 51917 的 Linux 操作系统。我们也可以使用 Radare2 查找合适的 Linux 发行版。根据编译器,我们可以看到 Ubuntu 2204 是一个不错的选择。

事实上,我在网上找到一位使用 Ubuntu Jammy 进行此操作的人,这个特定的 Diamorphine 源代码的符号版本部分吻合我们在 VirusTotal 发现的新 Diamorphine 变体的符号版本例如,modulelayout 不匹配该版本,但 unregisterkprobe 仍然匹配。

因此,内核 Rootkit 可以插入具有合适符号版本的 Ubuntu Jammy 发行版中请参考将插入 Diamorphine 变体的内核的 Modulesymvers 文件。

XXTables 根据用户模式与内核模式进行通信的设备

伪装 XTables Netfilter 模块 是一个聪明的主意,因为这样注册 Netfilter 挂钩不会引起怀疑,因为与 Netfilter 的互动是预期的行为。

在 initmodule 函数中,该 Rootkit 创建了一个名为 xxtables 的设备,用于使用户模式与内核模式 Rootkit 进行通信。

遵循 一切皆文件 的理念,该 字符设备结构初始化函数 接收暴露了该 xxtables 设备实现和处理的操作的 file operations structure。出现在 fileoperations 结构中的 “ g ” 函数负责处理 devwrite 操作。

处理 devwrite 操作:g函数

我们可以看到该函数通过 xxtables 设备从用户模式空间读取命令。该记忆体通过 API copyfromuser 复制自设备。

出于安全原因,该 Rootkit 检查从用户模式空间发送的数据是否为空。这个数据结构包含两个字段:数据的长度和指向数据本身的指针。

新的二氢吗啡根kit变种在野外未被发现

最后,如果从用户模式空间发送的输入为字符串 “ exit “,则会调用 Rootkit 的 exit 函数,该函数恢复系统,释放资源并从内存中卸载内核模块。

exit 函数

exit 函数正确地恢复系统并从内核记忆体中卸载 Rootkit。它执行以下操作:

销毁 Rootkit 创建的设备。销毁用于创建该设备的 struct class。删除所创建的 cdev字符设备。反注册 chrdevregion。反注册实现 “ magic packets ” 的 Netfilter 挂钩。最后,替换 systemcalls 表中的指针以恢复原始函数。

魔法数据包

新的 Diamorphine Rootkit 实现了支持 IPv4 和 IPv6 的 “ magic packets ”。因为 协议族 被设置为NFPROTOINET。

该 netfilterhookfunction 依赖于对 a、b、c、d、e 和 f 函数的嵌套调用来处理 magic packets。满足 magic packet 要求的数据包必须包含值 “ whitehat ” 和 “ 2023mn ”,经过 XOR 密钥:0x64 加密。

如果数据包符合要求,则会从中提取任意命令并在感染的计算机上执行。

syscalls 表中的挂钩

这个 是原始 Diamorphine Rootkit 的系统调用挂钩实现:

即使新 Diamorphine 变体中的代码完全相同,但重要的是要强调,它被配置为隐藏包含字符串 “” 的文件和文件夹。

黑洞加速器app

结论

我们经常发现新的 Linux 核心 Rootkit 实施 “ magic packets ”,在野外未被检测到例如:Syslogk、AntiUnhide、Chicken 等等,我们将持续合作,提高对我们客户的保护能力。

在这个新的在野版本的 Diamorphine 中,威胁行为者添加了设备功能,允许从内存中卸载 Rootkit 的内核模块,并实现了 magic packets 功能,使任意命令能在受感染系统中执行。

如何预防感染并保持线上安全

保持系统更新。确保您的互联网连接安全例如使用 虚拟私人网路。避免从不可信来源下载/执行文件。遵守 最低权限原则PoLP。在 Linux 的情况下,请勿在没有必要的情况下使用 root 帐户执行操作。使用强大的网络安全解决方案,例如 Norton、Avast、Avira 或 AVG,以确保防范此类恶意软体。

新 Diamorphine 变体

067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090

IoC 资源库

Diamorphine Linux 核心 Rootkit 的 IoCs、Yara 搜索规则及 VirusTotal 查询都在我们的 IoC 资源库 中。

标签:分析、Linux、恶意软体、Rootkit

分享:XFacebook