记一次真实的LKM rootkit 与挖矿病毒的结合应急案例
字数 1462 2025-09-04 23:22:12

LKM Rootkit与挖矿病毒结合的应急响应分析

1. 案例背景

在一次应急响应中,发现客户数十台服务器感染挖矿木马,但常规排查无法直接发现异常进程。最终发现攻击者结合使用了LKM(Loadable Kernel Module) rootkit技术隐藏挖矿进程。

2. Rootkit技术分析

2.1 Diamorphine Rootkit

攻击者使用了GitHub开源的Diamorphine项目:

  • 项目地址:https://github.com/m0nad/Diamorphine
  • 支持内核版本:Linux Kernels 2.6.x/3.x/4.x/5.x/6.x (x86/x86_64和ARM64)

主要功能实现:

  • kill -63 0:切换rootkit自身的隐藏/显示状态
  • kill -31 pid:隐藏或显示指定PID的进程
  • kill -64:提权功能

2.2 Rootkit使用演示

  1. 安装后自动隐藏:安装成功后,rootkit模块自动隐藏
  2. 隐藏用户进程
    kill -31 <PID>  # 隐藏指定进程
    kill -31 <PID>  # 再次执行显示进程
    
  3. 显示rootkit相关文件
    kill -63 0
    

3. 挖矿病毒分析

3.1 病毒特征

  • 主进程伪装为python3,实际为挖矿程序
  • 通过rootkit实现进程隐藏
  • 配置文件路径:config.ini

3.2 配置文件解析

wallet=ZEPHYR2smB5JfBY2WKW8GF3eMvCHE5QeLQBKj77jmJtPhSfJWg9L4PPAiv7kpqQXu29NXKD7iK76CZBXDtpf95rWcAxeE1L81GG44
rigName=node17
email=
pool1=xmr-eu1.nanopool.org
noLog=true
autoUpdate=false
sortPools=false
useSSL=true
protocol=JSON-RPC

关键参数:

  • wallet:矿工钱包地址,疑似属于Zephyr/XMR区块链
  • rigName:矿机标识名称,用于矿池区分设备
  • pool1:主矿池地址(xmr-eu1.nanopool.org)
  • noLog:禁用日志输出
  • useSSL:启用加密通信

3.3 技术实现

  1. 编程语言:实际使用Golang编写,伪装为Python
  2. 并发模型:利用Goroutine实现高并发挖矿
  3. 矿池连接
    • 使用net.ParseIP解析IP地址
    • 通过自定义函数main_poolconnector_ResolveIP解析域名
    • 循环尝试连接所有解析到的IP地址

4. 日志清除工具

攻击者使用了mig-logcleaner工具:

  • 项目地址:https://github.com/infinite-horizon219/mig-logcleaner-resurrected
  • 功能:
    • 清除指定用户的日志记录
    • 清除所有日志记录
    • 清除针对特定主机的日志记录

5. 应急响应步骤

  1. 初步排查

    • 执行top命令未发现异常(但CPU使用率显示99%)
    • 执行kill -63 0显示隐藏文件
    • 执行lsmodrmmod x11移除rootkit模块
  2. 进程分析

    • 发现异常的python3进程
    • 确认其为挖矿程序
  3. 样本分析

    • 提取并分析x11.ko(rootkit模块)
    • 分析挖矿程序配置文件
  4. 清除措施

    • 终止恶意进程
    • 移除rootkit模块
    • 清理相关文件

6. 防御建议

  1. 内核保护

    • 禁用不必要的内核模块加载
    • 使用SELinux或AppArmor
    • 定期更新内核
  2. 监控措施

    • 监控/proc目录异常
    • 检查系统调用表完整性
    • 使用完整性检查工具如AIDE
  3. 挖矿防护

    • 监控异常CPU使用模式
    • 限制对外矿池地址的连接
    • 使用网络流量分析工具
  4. 日志管理

    • 将日志发送到远程服务器
    • 设置日志文件不可变属性
    • 监控日志清除行为

7. 总结

该攻击案例结合了:

  1. LKM rootkit技术实现进程隐藏
  2. 挖矿程序伪装为常见进程
  3. 日志清除工具消除痕迹

防御此类攻击需要多层次的安全防护,特别关注内核级的安全威胁和隐蔽的挖矿活动。

LKM Rootkit与挖矿病毒结合的应急响应分析 1. 案例背景 在一次应急响应中,发现客户数十台服务器感染挖矿木马,但常规排查无法直接发现异常进程。最终发现攻击者结合使用了LKM(Loadable Kernel Module) rootkit技术隐藏挖矿进程。 2. Rootkit技术分析 2.1 Diamorphine Rootkit 攻击者使用了GitHub开源的Diamorphine项目: 项目地址:https://github.com/m0nad/Diamorphine 支持内核版本:Linux Kernels 2.6.x/3.x/4.x/5.x/6.x (x86/x86_ 64和ARM64) 主要功能实现: kill -63 0 :切换rootkit自身的隐藏/显示状态 kill -31 pid :隐藏或显示指定PID的进程 kill -64 :提权功能 2.2 Rootkit使用演示 安装后自动隐藏 :安装成功后,rootkit模块自动隐藏 隐藏用户进程 : 显示rootkit相关文件 : 3. 挖矿病毒分析 3.1 病毒特征 主进程伪装为 python3 ,实际为挖矿程序 通过rootkit实现进程隐藏 配置文件路径: config.ini 3.2 配置文件解析 关键参数: wallet :矿工钱包地址,疑似属于Zephyr/XMR区块链 rigName :矿机标识名称,用于矿池区分设备 pool1 :主矿池地址(xmr-eu1.nanopool.org) noLog :禁用日志输出 useSSL :启用加密通信 3.3 技术实现 编程语言 :实际使用Golang编写,伪装为Python 并发模型 :利用Goroutine实现高并发挖矿 矿池连接 : 使用 net.ParseIP 解析IP地址 通过自定义函数 main_poolconnector_ResolveIP 解析域名 循环尝试连接所有解析到的IP地址 4. 日志清除工具 攻击者使用了mig-logcleaner工具: 项目地址:https://github.com/infinite-horizon219/mig-logcleaner-resurrected 功能: 清除指定用户的日志记录 清除所有日志记录 清除针对特定主机的日志记录 5. 应急响应步骤 初步排查 : 执行 top 命令未发现异常(但CPU使用率显示99%) 执行 kill -63 0 显示隐藏文件 执行 lsmod 和 rmmod x11 移除rootkit模块 进程分析 : 发现异常的 python3 进程 确认其为挖矿程序 样本分析 : 提取并分析 x11.ko (rootkit模块) 分析挖矿程序配置文件 清除措施 : 终止恶意进程 移除rootkit模块 清理相关文件 6. 防御建议 内核保护 : 禁用不必要的内核模块加载 使用SELinux或AppArmor 定期更新内核 监控措施 : 监控 /proc 目录异常 检查系统调用表完整性 使用完整性检查工具如AIDE 挖矿防护 : 监控异常CPU使用模式 限制对外矿池地址的连接 使用网络流量分析工具 日志管理 : 将日志发送到远程服务器 设置日志文件不可变属性 监控日志清除行为 7. 总结 该攻击案例结合了: LKM rootkit技术实现进程隐藏 挖矿程序伪装为常见进程 日志清除工具消除痕迹 防御此类攻击需要多层次的安全防护,特别关注内核级的安全威胁和隐蔽的挖矿活动。