记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除

0x01 前言

原文:https://github.com/JY-666-YINZI/Linux-schoolncident-response/blob/main/%E8%AE%B0%E4%B8%80%E6%AC%A1%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94%E5%AE%9E%E6%88%98%EF%BC%9A%E4%BB%8E%E6%9C%AA%E7%9F%A5%20Java%20%E6%8C%96%E7%9F%BF%E6%9C%A8%E9%A9%AC%E5%88%B0%E6%8C%81%E4%B9%85%E5%8C%96%E5%90%8E%E9%97%A8%E6%B8%85%E9%99%A4.md

在安全运维过程中,突发服务器 CPU 飙升异常。本文将以 PDCERF(准备-检测-抑制-根除-恢复-跟踪) 应急响应模型为指导,记录一次在极端不出网环境(无法使用 <font style="color:rgba(0, 0, 0, 0.55);">apt</font><font style="color:rgba(0, 0, 0, 0.55);">lsof</font> 等常用工具)下,从发现异常、定位溯源到彻底根除 Java 挖矿木马及隐藏守护进程的实战过程。

0x02 应急响应挑战与限制

环境痛点: 目标主机处于内网不出网环境,无法通过包管理器安装 <font style="color:rgba(0, 0, 0, 0.55);">apt</font><font style="color:rgba(0, 0, 0, 0.55);">lsof</font><font style="color:rgba(0, 0, 0, 0.55);">netstat</font> 等网络与进程分析利器。

在缺乏自动化工具的情况下,我们需要充分利用 Linux 原生命令(如 <font style="color:rgba(0, 0, 0, 0.55);">ps</font><font style="color:rgba(0, 0, 0, 0.55);">cat</font><font style="color:rgba(0, 0, 0, 0.55);">crontab</font>)进行手工对齐与排查。

0x03 D – 检测与分析阶段 (Detection)

1. 异常进程排查

排查发现系统 CPU 占有率异常高。由于无法使用常规工具,通过 <font style="color:rgba(0, 0, 0, 0.55);">ps</font> 命令组合查看后台进程,锁定嫌疑对象:

Bash

ps -ef | grep java

分析发现: 引起 CPU 飙升的不是系统常规服务,而是一个由 <font style="color:rgba(0, 0, 0, 0.55);">java</font> 运行的异常程序,成功定位到对应的文件详细信息与进程 PID。

图片[1]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

由于这个不出网导致这个环境问题(不能拉aptlsof这些关键命令包)

ps -ef看后台进程也能看到对应的文件所在。 来查找这个PID对应的进程的文件详细信息(替换品)

图片[2]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

2. 静态样本分析

初步发现可疑文件位于 <font style="color:rgba(0, 0, 0, 0.55);">/tmp/miner.jar</font>

  • 读取文件内容尝试:

Bash

cat /tmp/miner.jar
  • 溯源手段: 在条件允许的情况下,可将该 <font style="color:rgba(0, 0, 0, 0.55);">jar</font> 包导出并上传至微步在线沙箱或相关威胁情报平台进行 MD5/沙箱检测,进一步确认其挖矿木马属性。

cat /tmp/miner.jar 探查这个文件的内容

可以放在“微步”上来确定一下。

图片[3]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

0x04 C & E – 抑制与根除阶段 (Containment & Eradication)

1. 初次清理与“守护进程”对抗

首先尝试对表面文件和进程进行清理:

  • 删除木马文件:
rm -rf /tmp/miner.jar

结果:删除成功。

rm -rf /tmp/miner.jar 删除该文件

删除成功

图片[4]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

  • 强制杀掉异常进程(假设当时 PID 为 519):
kill -9 519

结果:进程被杀掉后瞬间“复活”,虽然删除了 _<font style="color:rgba(0, 0, 0, 0.55);">/tmp/miner.jar</font>_,但系统内又拉起了新的 Java 挖矿进程,且进程 PID 发生了变化。

核心诊断: 系统内必然存在守护进程或**定时任务(Cron Job)**在持续监控并强制拉起该挖矿程序。

kill -9 519 杀掉该进程,发现这个进程又“活了过来”删除成功,但是PID变了。

说明可能存在”守护进程“,进行完这些步骤后下面要查看“计划任务 /etc/crontab中的*;以及/usr/cron*这两个地方的计划任务

图片[5]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

2. 阻断执行源

为了防止木马持续消耗系统资源并作为临时抑制手段,直接切断其 JDK 执行环境(注意:此操作需评估对业务 Java 环境的影响):

# 删除木马依赖的 java 执行文件
rm -rf /usr/lib/jvm/java-11-openjdk-amd64/bin/java

# 验证文件是否彻底删除
cat /usr/lib/jvm/java-11-openjdk-amd64/bin/java

# 再次强制杀掉新生成的挖矿 PID(如 70473)
kill -9 70473

结果:杀掉进程后,CPU 占有率高的 Java 异常进程消失,指标恢复正常。

0xz5 E – 深层漏洞与持久化后门根除 (Eradication)

虽然 CPU 降了下来,但为了防止黑客留有隐藏的计划任务在特定时间再次生成文件,必须对系统级和用户级的持久化后门进行地毯式排查。

1. 系统级计划任务排查

检查系统核心定时任务配置文件及目录:

Bash

# 检查系统级总任务配置
cat /etc/crontab

# 检查各类定时目录(每小时、每天、每周等)
ls -la /etc/cron*

排查结果:_<font style="color:rgba(0, 0, 0, 0.55);">cat /etc/crontab</font>_ 及 _<font style="color:rgba(0, 0, 0, 0.55);">cron.hourly</font>_ 等目录中仅发现系统原生合规进程,未见异常,继续转换排查方向。

  1. cat /etc/crontab

发现了一个都是系统进程,没有那么换个地方查探

图片[6]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

  1. ls -la /etc/cron*

查看这个地方的计划任务。

图片[7]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

依旧是从每分钟开始排查,发现有两个但是都是系统文件,可以往下探查一波。

探查每小时的hourly:发现也是系统文件。

2. 用户级计划任务排查(突破口)

攻击者常利用防守方忽视用户级计划任务的侥幸心理进行权限维持。

Bash

# 查看当前用户的计划任务
crontab -l

关键发现:成功发现一条指向异常隐藏脚本的恶意定时任务!

**crontab -l **查看用户级(attacker可能会利用我们忽略用户级计划任务的侥幸心理)

图片[8]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

然后我们可以** cat /usr/share/.per/persistence.sh查看**

图片[9]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

也可以直接下载下来拿给 ai/微步上查看。

图片[10]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

分析出来确实是恶意挖矿文件。

图片[11]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

3. 后门脚本与备份木马溯源

顺藤摸瓜,深度分析恶意定时任务指向的后门脚本:

# 查看后门持久化脚本内容
cat /usr/share/.per/persistence.sh

代码审计结论: > 1. 该 <font style="color:rgba(0, 0, 0, 0.55);">.sh</font> 脚本具备自动下载/拉起挖矿程序的功能。

2. 审计代码发现,黑客除了 <font style="color:rgba(0, 0, 0, 0.55);">/tmp/miner.jar</font> 外,还在系统深处隐藏了一个备份木马文件,路径为:<font style="color:rgba(0, 0, 0, 0.55);">/usr/share/.miner/miner.jar</font>

审计代码可以发现还有个隐藏的备份:usr/share/.miner/miner.jar

图片[12]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

接着探查:

4. 彻底斩草除根

定位到所有隐藏备份与后门脚本后,执行最终清理:

rm -rf /usr/share/.miner/miner.jar 删除这个备份文件

删除 rm -rf /usr/share/.per/persistence.sh

图片[13]李白你好-实战攻防记一次应急响应实战:从未知 Java 挖矿木马到持久化后门清除李白你好-实战攻防李白你好

没报错也没再生成删除成功。(但是其实要隔几分钟再看,万一还有守护进程,不过经过排查没有其他可疑文件与计划任务)

Bash

# 1. 删除隐藏的挖矿木马备份文件
rm -rf /usr/share/.miner/miner.jar

# 2. 删除用于权限维持的恶意持久化持久脚本
rm -rf /usr/share/.per/persistence.sh

# 3. 清理 crontab 中的恶意配置项
crontab -e
 

验证反馈:命令执行未报错。静置观察数分钟并持续监控系统进程与文件状态,未发现恶意文件再生或异常进程复活,持久化后门被成功根除。

0x06 R & F – 恢复与总结跟踪 (Recovery & Follow-up)

1. 靶场 Flag 提交汇总(结合流量审计与网络发现)

在完成主机层的病毒清理后,结合网络流量审计及 Web 站点漏洞关联,梳理出本次事件的核心要素与靶场得分点:

  • 扫描特征分析: 统计流量中存在 Web 扫描特征的 IP 数量,并筛选出显式使用 NMAP 扫描特征的源 IP。
  • 攻击路径溯源: * 时间线限制: 准确定位到 <font style="color:rgba(0, 0, 0, 0.55);">2025.6.22 17:03:27</font> 由 IP <font style="color:rgba(0, 0, 0, 0.55);">192.168.37.10</font> 通过端口 <font style="color:rgba(0, 0, 0, 0.55);">55689</font> 访问的异常 URL 路径,以 <font style="color:rgba(0, 0, 0, 0.55);">flag{...}</font> 形式提交。
    • 漏洞利用点: 审计 Web 站点流量,确定攻击者是通过特定的 漏洞文件名接口 成功入侵并控制主机的。
    • 身份凭证: 查明攻击者在前台注册并利用漏洞的 恶意注册用户名
  • 战果验证(Flag 提交):
    • 木马确认: 提交攻击者控制成功时上传的木马文件名,以及后续上传的挖矿木马在流量中暴露的矿池地址
    • Flag 1(Web木马清除): 清除 Web 侧上传的木马后,查看并提交 <font style="color:rgba(0, 0, 0, 0.55);">/var/flag/1/flag</font>
    • Flag 2(挖矿木马清除): 清除主机 <font style="color:rgba(0, 0, 0, 0.55);">/tmp/miner.jar</font> 后,查看并提交 <font style="color:rgba(0, 0, 0, 0.55);">/var/flag/2/flag</font>
    • 持久化后门路径: 提交定时更新挖矿程序的后门路径 <font style="color:rgba(0, 0, 0, 0.55);">/usr/share/.per/persistence.sh</font>
    • Flag 3(后门彻底清除): 彻底清除上述后门及备份文件后,查看并提交 <font style="color:rgba(0, 0, 0, 0.55);">/var/flag/3/flag</font>

2. 安全加固建议(Follow-up)

  1. 修复 Web 漏洞: 立即修复涉事 Web 站点被攻击者利用的注册/文件接口漏洞,防止二次入侵。
  2. 基线安全加固: 严格限制 Web 运行组件(如 Tomcat/Jboss 等)的执行权限,禁止以 root 高权限运行。
  3. 权限最小化: 定期审计系统 <font style="color:rgba(0, 0, 0, 0.55);">crontab</font> 计划任务,对 <font style="color:rgba(0, 0, 0, 0.55);">/tmp</font><font style="color:rgba(0, 0, 0, 0.55);">/usr/share</font> 等敏感目录设置严格的权限控制或部署文件完整性监控(如 AIDE)。
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容