新的 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 新增功能

  1. 设备通信机制

    • 创建名为 xx_tables 的字符设备
    • 用于用户空间和内核空间通信
    • 支持通过写入 "exit" 命令卸载 rootkit
  2. 魔术数据包功能

    • 支持 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 设备通信实现

  1. init_module 中创建 xx_tables 设备
  2. 设置文件操作结构体,定义设备支持的操作
  3. "g" 函数处理写入操作:
    • 使用 _copy_from_user 安全复制数据
    • 验证数据结构(长度+指针)
    • 处理 "exit" 命令调用 exit_ 函数

3.3 魔术数据包处理流程

  1. 设置 netfilter 钩子 (NFPROTO_INET)
  2. 嵌套调用 a、b、c、d、e 和 f 函数处理数据包
  3. 检查 XOR 加密的特定字符串
  4. 提取并执行任意命令

4. 检测与防御措施

4.1 检测方法

  1. IoC 检测

    • 文件哈希:067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090
    • 检查 /dev/xx_tables 设备
    • 监控异常 netfilter 钩子
  2. Yara 规则

    • 参考 Avast 提供的 IoC 仓库规则
  3. 行为检测

    • 监控异常内核模块加载
    • 检查系统调用表篡改
    • 分析网络流量中的魔术数据包模式

4.2 防御建议

  1. 系统加固

    • 定期更新操作系统和内核
    • 启用内核模块签名验证
    • 使用安全启动 (Secure Boot)
    • 限制内核模块加载能力
  2. 安全实践

    • 遵循最小权限原则,避免不必要的 root 操作
    • 从可信来源下载软件
    • 上传可疑文件到 VirusTotal 分析
    • 使用知名安全软件(如卡巴斯基、360、火绒)
  3. 网络防护

    • 部署网络入侵检测系统
    • 监控异常网络通信模式
    • 使用 VPN 加密网络流量

5. 应急响应指南

  1. 确认感染

    • 检查系统是否存在 /dev/xx_tables 设备
    • 分析加载的内核模块
    • 检查系统调用表完整性
  2. 清除步骤

    • 通过写入 "exit" 到 /dev/xx_tables 尝试卸载
    • 重启系统进入安全模式
    • 移除可疑内核模块
    • 恢复被篡改的系统文件
  3. 事后加固

    • 更改所有系统凭证
    • 审查系统日志寻找入侵痕迹
    • 更新所有安全补丁

6. 参考资源

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 尝试卸载 重启系统进入安全模式 移除可疑内核模块 恢复被篡改的系统文件 事后加固 : 更改所有系统凭证 审查系统日志寻找入侵痕迹 更新所有安全补丁 6. 参考资源 Avast IoC 仓库 原始文章链接: Decoded Blog 样本哈希:067194bb1a70e9a3d18a6e4252e9a9c881ace13a6a3b741e9f0ec299451c2090