新的 Diamorphine rootkit 变体在野外被发现
字数 1730 2025-08-19 12:40:31
Diamorphine Rootkit 变体分析与防御指南
1. Diamorphine Rootkit 概述
Diamorphine 是一个知名的 Linux 内核 rootkit,具有以下特性:
- 支持多个 Linux 内核版本:2.6.x、3.x、4.x、5.x 和 6.x
- 支持多种处理器架构:x86、x86_64 和 ARM64
- 主要功能:
- 隐藏特定前缀开头的文件和文件夹
- 通过信号交互执行操作:
- 隐藏/显示任意进程
- 隐藏/显示内核模块
- 提升权限至 root 用户
2. 新变体技术分析
2.1 伪装技术
- 伪装成合法的 x_tables Netfilter 模块
- 针对特定内核版本编译(内核 5.19.17)
- 使用 Ubuntu 22.04 LTS (Jammy) 作为目标环境
2.2 新增功能
-
设备通信机制:
- 创建名为
xx_tables的字符设备 - 用于用户空间和内核空间通信
- 支持通过写入 "exit" 命令卸载 rootkit
- 创建名为
-
魔术数据包功能:
- 支持 IPv4 和 IPv6 (NFPROTO_INET)
- 使用 XOR 密钥 0x64 加密特定字符串("whitehat" 和 "2023_mn")
- 符合条件的数据包可执行任意命令
2.3 关键函数分析
module_hide- 隐藏模块hacked_kill- 处理信号交互get_syscall_table_bf- 获取系统调用表find_task- 查找任务is_invisible- 检查隐藏状态module_show- 显示模块exit_- 卸载清理函数
3. 部署与运行机制
3.1 部署要求
- 内核版本:5.19.17
- 推荐发行版:Ubuntu 22.04 LTS
- 依赖内核符号匹配(Module.symvers)
3.2 设备通信实现
- 在
init_module中创建xx_tables设备 - 设置文件操作结构体,定义设备支持的操作
- "g" 函数处理写入操作:
- 使用
_copy_from_user安全复制数据 - 验证数据结构(长度+指针)
- 处理 "exit" 命令调用
exit_函数
- 使用
3.3 魔术数据包处理流程
- 设置 netfilter 钩子 (NFPROTO_INET)
- 嵌套调用 a、b、c、d、e 和 f 函数处理数据包
- 检查 XOR 加密的特定字符串
- 提取并执行任意命令
4. 检测与防御措施
4.1 检测方法
-
IoC 检测:
- 文件哈希:067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090
- 检查
/dev/xx_tables设备 - 监控异常 netfilter 钩子
-
Yara 规则:
- 参考 Avast 提供的 IoC 仓库规则
-
行为检测:
- 监控异常内核模块加载
- 检查系统调用表篡改
- 分析网络流量中的魔术数据包模式
4.2 防御建议
-
系统加固:
- 定期更新操作系统和内核
- 启用内核模块签名验证
- 使用安全启动 (Secure Boot)
- 限制内核模块加载能力
-
安全实践:
- 遵循最小权限原则,避免不必要的 root 操作
- 从可信来源下载软件
- 上传可疑文件到 VirusTotal 分析
- 使用知名安全软件(如卡巴斯基、360、火绒)
-
网络防护:
- 部署网络入侵检测系统
- 监控异常网络通信模式
- 使用 VPN 加密网络流量
5. 应急响应指南
-
确认感染:
- 检查系统是否存在
/dev/xx_tables设备 - 分析加载的内核模块
- 检查系统调用表完整性
- 检查系统是否存在
-
清除步骤:
- 通过写入 "exit" 到
/dev/xx_tables尝试卸载 - 重启系统进入安全模式
- 移除可疑内核模块
- 恢复被篡改的系统文件
- 通过写入 "exit" 到
-
事后加固:
- 更改所有系统凭证
- 审查系统日志寻找入侵痕迹
- 更新所有安全补丁
6. 参考资源
- Avast IoC 仓库
- 原始文章链接:Decoded Blog
- 样本哈希:067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090