当前位置: 首页 > news >正文

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

本篇文章主要记录某学校长期未运营维护的程序,被黑客发现了漏洞,但好在学校有全流量设备,抓取到了过程中的流量包
需要你进行上机以及结合流量分析,排查攻击者利用的漏洞以及上传利用成功的木马

文章目录

    • 靶机介绍
    • 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


靶机介绍

背景:完全仿真了某学校长期未运营维护的程序,被黑客发现了漏洞,但好在学校有全流量设备,抓取到了过程中的流量包
需要你进行上机以及结合流量分析,排查攻击者利用的漏洞以及上传利用成功的木马
以及清除掉攻击者上传的挖矿程序以及后门程序,挖矿环境完全还原了真实环境,但不会出网,比较有意义,清除做了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进行扫描:

nmap 192.168.44.0/24

显示结果如下:
在这里插入图片描述

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

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

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

在这里插入图片描述
在这里插入图片描述

随后即可链接成功;

在这里插入图片描述

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

在这里插入图片描述

这里我是用xshell的xftp功能进行传输到本地:
在这里插入图片描述

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

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

也可以使用别的方法:
在这里插入图片描述

然后进行过滤器条件如下,进行筛选带有扫描特征的条件,那么之前讲过,怎么判断扫描特征?
答:短时间内大量访问不存在的文件属于扫描特征,但是由于实战中每个站点"文件不存在"返回状态码不一致,可能是404、403、500、502、405等情况,那么我们可以自行测试

所以访问网站,输入一个不存在的文件,看看文件不存在的状态码是什么?
在这里插入图片描述

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

在这里插入图片描述

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)所以在确定时间范围的情况下,去筛选排除就很有必要;这就是此题的目的

根据题目,输入命令:

ip.addr == 192.168.37.10 and ip.dst == 192.168.37.11 and tcp.port == 55689

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

在这里插入图片描述

在这里插入图片描述

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

/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 关键字特征

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 系统起码有文件上传功能
  • 如何确定可疑访问?
  • 只查看正常状态码或排除非正常状态码后进行排序

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

count () by id.orig_h,status_code,uri|status_code==200 | sort -r count

在这里插入图片描述
然后去wireshark筛选一下:
在这里插入图片描述
可以看到有三条访问记录,进入查看内容:(冰蝎流量)
在这里插入图片描述

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

flag{uploadAvatar}

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

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

在这里插入图片描述

以及账号密码的参数payload:

在这里插入图片描述

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

ip.addr==192.168.37.10&&http.request.uri=="/servlet/user/login" 

得到结果:
在这里插入图片描述
在这里插入图片描述

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

flag{wangyunqing}

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

根据之前的分析,可以知道这个jsp文件,访问的次数最多:
在这里插入图片描述

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会在主机指定文件生成

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

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

也是找到了文件路径:
在这里插入图片描述

直接删除即可:

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即可:

rm -rf miner.jar

在这里插入图片描述

flag{da236fe0cda81bfc03d022799589110e}

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

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

新的PID

在这里插入图片描述

首先排查计划任务:

crontab -l  
ls -la /etc/cron*

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

在这里插入图片描述

随后检查/etc/cron 目录下,没有发现异常:
在这里插入图片描述

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

在这里插入图片描述

#!/bin/bashSOURCE_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; thenexit 0
elseecho "[$(date)] Miner process not found. Taking action..." >> "$LOG_FILE"if [ ! -f "$DEST_FILE" ]; thenecho "[$(date)] Miner file ($DEST_FILE) is missing. Restoring from backup..." >> "$LOG_FILE"cp "$SOURCE_FILE" "$DEST_FILE"chmod +x "$DEST_FILE"fiif [ -f "$DEST_FILE" ]; thennohup java -jar "$DEST_FILE" > /dev/null 2>&1 &echo "[$(date)] Miner process restarted with PID $!." >> "$LOG_FILE"elseecho "[$(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包;

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}

http://www.dtcms.com/a/265095.html

相关文章:

  • Redis 常用五大数据类型
  • 【大模型学习 | MINIGPT-4原理】
  • MacOS 安装brew 国内源【超简洁步骤】
  • 数论基础知识和模板
  • Windows下docker安装
  • 通俗易懂的LangGraph图定义解析
  • Git客户端的创建与常用的提交、拉取、修改、推送等命令
  • 【王阳明代数讲义】谷歌编程智能体Gemini CLI 使用指南、架构详解与核心框架分析
  • 带GPU启动 Docker 容器
  • (转)使用DockerCompose部署微服务
  • 使用OpenCV识别图片相似度评分的应用
  • 洪水填充算法详解
  • 基于IndexTTS的零样本语音合成
  • 人脸活体识别4:Android实现人脸眨眼 张嘴 点头 摇头识别(可实时检测)
  • ESP32-s3摄像头驱动开发实战:从零搭建实时图像显示系统
  • sklearn机器学习概述及API详细使用指南
  • LeetCode Hot 100 滑动窗口 【Java和Golang解法】
  • 90.xilinx复位低电平(一般使用低电平复位)
  • 单链表和双向链表
  • python自动化运维
  • Redis基础(2):Redis常见命令
  • 多模态DeepSeek大模型的本地化部署
  • Colormind:优秀大模型赋能国产求解器,打造自主可控建模平台
  • 数学建模_拟合
  • 【Erdas实验教程】026:遥感图像辐射增强(去条带处理)
  • IDEA2025 Version Control 窗口 local changes显示
  • JavaScript 性能优化实战:减少 DOM 操作引发的重排与重绘
  • 操作系统考试大题-处理机调度算法-详解-2
  • 代码实现特殊的字段的基本功能
  • 用Rust编写的开源支付解决方案——Hyperswitch