学校服务器挖矿排查与应急响应专业通关笔记
一、题目信息
本题是一个典型的应急响应场景。题目给出流量包hacker2025.pcap以及目标服务器的 SSH 登录权限,要求结合网络侧和主机侧证据,还原攻击链,清除 Webshell、挖矿程序和持久化后门,并提取各步骤对应的 Flag。
从整体难度看,这道题覆盖了扫描识别、攻击入口定位、上传落点追踪、主机排查、恶意进程处置和持久化清除几个常见环节,解题过程比较完整,适合作为 Web 入侵后应急响应的综合练习。
| 项目 | 内容 |
|---|---|
| 场景类型 | 应急响应 / 挖矿排查 |
| 目标主机 | 192.168.37.11 |
| 已知材料 | hacker2025.pcap、服务器 SSH 权限 |
| 排查目标 | 漏洞入口、上传木马、挖矿程序、矿池地址、持久化后门 |
二、整体解题思路
这道题建议按“先网络、后主机”的顺序处理。先从流量包中识别扫描者、攻击时间点、上传接口和恶意文件落点,再登录服务器清理木马、停止挖矿进程、删除持久化脚本,最后读取题目给定的 flag 文件完成提交。
流量分析阶段的重点在于找出真正的攻击者,以及确认攻击利用链条;主机排查阶段的重点则是把攻击者已经投放到目标机器上的恶意样本和恢复机制都清干净。两部分结合起来,才能把整条入侵路径串完整。
三、流量分析阶段
1. 识别存在扫描行为的来源 IP
先对流量包中的 HTTP 请求做源地址统计:
tshark-rhacker2025.pcap-Y"http.request"-Tfields-eip.src|sort|uniq-c|sort-nr统计后可以看到,有一批源地址对常见目录和接口进行了高频探测,请求量明显异常。按题目要求筛出存在扫描 Web 特征的地址,总数为29。
| 题目点 | 结果 |
|---|---|
| 存在扫描特征的 IP 数量 | flag{29} |
2. 识别使用 Nmap 扫描的来源 IP
继续从 HTTP 请求头中检索带有 Nmap 特征的流量:
tshark-rhacker2025.pcap-Y"http.user_agent contains Nmap"-Tfields-eip.src|sort|uniq可以直接锁定来源地址:
192.168.37.4| 题目点 | 结果 |
|---|---|
| 使用 Nmap 扫描的 IP | flag{192.168.37.4} |
3. 定位攻击发生时的目标 URL
题目给定了精确时间点以及源地址192.168.37.10的源端口55689,因此可以直接围绕这组条件过滤 HTTP 请求:
tshark-rhacker2025.pcap-Y"ip.src == 192.168.37.10 && tcp.srcport == 55689 && http.request"-Tfields-ehttp.request.uri过滤结果指向头像上传接口,说明攻击流量在这里完成了恶意文件投放:
/servlet/user/uploadAvatar继续结合后续访问记录,可以确认题目要求提交的并不是接口本身,而是上传后的访问路径:
/uploads/06853c4f-8b05-4949-90ae-9adc49f27a94.jsp| 题目点 | 结果 |
|---|---|
| 指定时间点访问路径 | flag{/uploads/06853c4f-8b05-4949-90ae-9adc49f27a94.jsp} |
4. 还原攻击利用链
继续分析192.168.37.10相关的 HTTP POST 请求,可以把攻击链补全。攻击者首先通过某个普通注册流程创建了账号,随后利用头像上传接口完成任意文件上传,并在成功上传后访问 JSP 木马,形成稳定落点。
从相关请求参数中可以提取到注册用户名:
wangyunqing结合上传接口返回值与后续访问记录,可以确认最终成功落地的 Webshell 文件名为:
70b86b64-ce15-46bf-8095-4764809e2ee5.jsp因此这几个题目点可以一并确认。
| 题目点 | 结果 |
|---|---|
| 利用的漏洞接口 | flag{uploadAvatar} |
| 攻击者注册用户名 | flag{wangyunqing} |
| 最终上传成功的木马文件名 | flag{70b86b64-ce15-46bf-8095-4764809e2ee5.jsp} |
四、主机排查阶段
1. 清除上传的 JSP Webshell
流量侧已经确认恶意文件位于上传目录,接下来登录服务器,进入 Tomcat 对应的 Web 目录,删除攻击者落地的 JSP 文件:
rm-f/var/lib/tomcat9/webapps/ROOT/uploads/70b86b64-002dce15-002d46bf-002d8095-002d4764809e2ee5.jspcat/var/flag/1/flag删除完成后读取第一处 flag 文件,得到结果:
| 题目点 | 结果 |
|---|---|
| 清除 Webshell 后获得的 Flag1 | flag{1979c46c2af37dc62a4b05881e816995} |
2. 定位并清除挖矿程序
进入主机侧后,很容易通过top、ps等命令看到高 CPU 占用的 Java 进程。题目给出的样本是:
java -jar /tmp/miner.jar要确认矿池地址,可以对该 JAR 包做字符串提取:
strings /tmp/miner.jar|grep-E'(stratum|pool|tcp://)'可以得到矿池地址:
pool.minexmr.com:4444随后终止进程并删除恶意文件:
pkill-f"java -jar /tmp/miner.jar"rm-f/tmp/miner.jarcat/var/flag/2/flag| 题目点 | 结果 |
|---|---|
| 矿池地址 | flag{pool.minexmr.com:4444} |
| 清除挖矿程序后的 Flag2 | flag{da236fe0cda81bfc03d022799589110e} |
3. 清除持久化后门
挖矿程序被删除之后,还需要继续查是否存在自动恢复机制。最常见的就是计划任务,因此优先检查当前用户的 crontab:
crontab-l题目中的可疑计划任务为:
* * * * * /usr/share/.per/persistence.sh这条任务会定时执行/usr/share/.per/persistence.sh,而脚本会检查/tmp/miner.jar是否存在,并从/usr/share/.miner/miner.jar重新恢复样本。这说明攻击者不仅投放了挖矿程序,还做了最基本的持久化恢复。
处理方式就是同时删掉计划任务、持久化脚本目录和备份样本目录:
crontab-rrm-rf/usr/share/.perrm-rf/usr/share/.minercat/var/flag/3/flag| 题目点 | 结果 |
|---|---|
| 持久化脚本路径 | flag{/usr/share/.per/persistence.sh} |
| 清除持久化后的 Flag3 | flag{27bd067769b51ed71f899c7a6f08af2c} |
五、完整答案汇总
| 步骤 | 答案 |
|---|---|
| 步骤1 | flag{29} |
| 步骤2 | flag{/uploads/06853c4f-8b05-4949-90ae-9adc49f27a94.jsp} |
| 步骤3 | flag{192.168.37.4} |
| 步骤4 | flag{uploadAvatar} |
| 步骤5 | flag{wangyunqing} |
| 步骤6 | flag{70b86b64-ce15-46bf-8095-4764809e2ee5.jsp} |
| 步骤7 | flag{1979c46c2af37dc62a4b05881e816995} |
| 步骤8 | flag{pool.minexmr.com:4444} |
| 步骤9 | flag{da236fe0cda81bfc03d022799589110e} |
| 步骤10 | flag{/usr/share/.per/persistence.sh} |
| 步骤11 | flag{27bd067769b51ed71f899c7a6f08af2c} |
六、总结
这道题的核心价值在于把一次比较完整的入侵后处置流程串了起来。网络侧负责回答“谁打进来的、从哪打进来的、上传了什么”,主机侧负责回答“恶意文件在哪、挖矿程序如何运行、攻击者如何维持存活”。如果只做其中一半,结论都不会完整。
从应急响应角度看,这题可以总结出三个重点。第一,流量包里要优先锁定攻击者和利用入口,不然主机上的恶意文件很难和具体攻击行为对应起来。第二,主机排查时不要只盯着木马本体,像挖矿任务这种场景,真正麻烦的往往是恢复脚本和备份副本。第三,清理动作要成组进行,进程、样本、计划任务、恢复目录缺一不可,否则很容易出现“删了又起”的情况。
如果把这道题放到真实环境里,后续还应该继续检查 Web 日志、Tomcat 历史部署记录、登录日志、可疑外联和其他持久化点,例如 systemd、开机启动项、用户级计划任务等,以确认攻击范围没有超出题目里展示的部分。