poposjj/dungeonrooms-mod-malware-analysis
GitHub: poposjj/dungeonrooms-mod-malware-analysis
针对伪造 Dungeon Rooms Minecraft 模组的信息窃取与远程控制恶意软件的静态分析报告,提供防御性 IOC 和检测规则。
Stars: 0 | Forks: 0
# 伪造 Dungeon Rooms Mod 的信息窃取与远程控制恶意软件分析
[English summary](README.en.md) | [IOC](iocs/iocs.json) | [YARA 规则](rules/dungeonrooms_fake_mod.yar) | [分析方法](METHODOLOGY.md)
## 安全声明
本仓库不包含恶意 JAR、原生载荷、完整反编译源码或可用于连接攻击基础设施的共享密钥。恶意域名均不制作可点击链接。不要尝试运行、加载或连接这些 IOC。
分析日期:2026-07-18(UTC+8)
分析方式:仅静态分析,未执行样本
## 样本信息
| 项目 | 值 |
|---|---|
| 文件名 | `DungeonRooms-Mod-3.7.1.jar` |
| 文件大小 | 16,970,074 bytes |
| MD5 | `AFE51F990CC741B3B27FA900CA93B486` |
| SHA-1 | `F82EC028D8B0BDC9253AA054D4D4A58F4DC0ACDE` |
| SHA-256 | `D222FAB0B6CE04CF1313691790F919A807D3F9A7052EE760C52B825B236AF1AF` |
| ZIP/JAR 条目数 | 2,068 |
| 解压后大小 | 23,106,071 bytes |
| JAR 签名 | 无 `META-INF/*.SF`、`*.RSA`、`*.DSA` 或 `*.EC` |
| 下载来源 | `hxxps://dungeonroomsmod[.]com/downloads/DungeonRooms-Mod-3.7.1.jar` |
来源信息来自 Windows `Zone.Identifier`:`HostUrl` 指向上述下载地址,`ReferrerUrl` 指向该站首页。出于隐私考虑,原始浏览器截图未收录。
## 为什么可以确认是恶意软件
这不是依据单个可疑字符串得出的判断,而是多组独立证据形成的完整行为链:
1. Fabric 入口点是与真实项目无关的 `com.synpase.Synpase`。
2. 入口类加载 `JNICLoader`,将大量 Kotlin/Java 方法转为原生实现以妨碍反编译。
3. 浏览器模块声明并调用 Cookie、密码、信用卡、自动填充、历史和下载记录提取逻辑。
4. 打包模块创建 ZIP,并将收集结果发送到配置中的外传端点。
5. WebSocket 模块支持打开、写入和关闭远程 Shell。
6. Windows Shell 构造函数直接启动 `cmd.exe`,通过 PTY 将输入输出转发给远端。
7. 下载站宣称存在 Fabric 1.21+ 的 `3.7.1`,而真实项目只有 Forge 1.8.9,最新发布为 `v3.4.1`。
任意一项可能需要上下文解释;这些证据组合在一起,已经排除正常房间识别模组的合理用途。
## 伪装与加载链
样本的 `fabric.mod.json` 声称:
- 模组 ID:`dungeonroomsmod`
- 展示名称:`Dungeon Rooms Mod Fabric`
- 内部版本:`3.4.1`,与文件名 `3.7.1` 自相矛盾
- Minecraft:`>=1.21.1 <=1.21.11`
- Java:`>=21`
- 主入口:`com.synpase.Synpase`
入口类的静态初始化首先调用 `dev.jnic.qmGDiL.JNICLoader.init()`。JAR 中对应的原生数据文件为:
dev/jnic/lib/6b6ca8d9-756e-4a74-9c80-494ece6b070c.dat
size: 11,358,647 bytes
sha256: 4896F0905A717C143B76319B21167AC0711B7C0DB187C004D26A3583C60FD573
JNIC 把核心实现替换为 `native` 方法。它既提高了静态分析成本,也使传统只检查 Java 字节码的模组审查容易漏报。方法名、字段、配置、构造函数和依赖关系仍然暴露了完整能力边界。
## 浏览器数据窃取
### Chromium 与 Firefox
`com.synpase.browrow` 的 Kotlin 元数据和方法接口列出了以下流程:
- 查找 Firefox 与 Chromium 配置目录;
- 结束浏览器进程并复制 SQLite 数据库;
- 获取 Chromium 主密钥;
- 解密 Chromium Cookie 和保存密码;
- 提取 Firefox Cookie、密码、历史、表单历史和下载记录;
- 提取 Chromium 历史、自动填充和信用卡信息;
- 将错误和解密状态发送到外部端点。
样本同时定义了 `Cookie`、`Password`、`CreditCard`、`AutofillEntry`、`HistoryEntry`、`FormHistoryEntry` 和 `DownloadEntry` 数据类。这些对象与上述数据库提取方法一一对应。
### Chrome App-Bound Encryption 绕过
`com.synpase.wowie` 包含更具侵入性的 Windows 浏览器解密流程:
- 创建命名管道;
- 查找已安装浏览器路径;
- 以挂起状态启动浏览器进程;
- 使用 JNA 调用 Windows API;
- 将内嵌 DLL 注入目标进程;
- 发送加密主密钥并接收解密结果;
- 解密 `v20` Cookie、密码和信用卡数据。
类中可见的方法包括 `launchSuspendedProc`、`injectDll`、`sendEncryptedKeyAndReceiveDecrypted`、`extractAccountPasswords` 和 `decryptGcm`。这与绕过 Chromium App-Bound Encryption(ABE)的设计一致。
### 收集结果打包与外传
`com.synpase.thebigzip` 暴露了以下方法:
createZipFile
scanBrowserDataDirectory
createLogPayload
sendLogToEndpoint
execute
配置文件将日志、SSID/主机标识和解密错误发送到同一基础设施。API 共享密钥已从公开证据中删除,因为披露它对防御没有必要。
## 主机信息收集
`com.synpase.Skepta` 保存并上传的字段包括:
- Windows 用户名与桌面名称;
- Minecraft/用户 UUID;
- 公网 IP;
- Java 版本与操作系统版本;
- 一个名为 `collectedToken` 的令牌字段;
- 随机生成的受害者标识。
该模块提供 `executeAndSave`、`getPublicIP`、`sendSSIDToEndpoint` 和 `sendErrorToEndpoint` 等方法,用于主机指纹与受害者跟踪。
## WebSocket 远程控制与 Shell
`com.synpase.Mygah` 使用 `Java-WebSocket` 连接 C2,包含持续重连、加密消息、地理信息解析和多个 Shell 会话管理功能:
connect / scheduleReconnect / safeSend
openShell / closeShell / closeAllShells
ShellSession.write / ShellSession.kill
Windows 上的 `ShellSession` 构造函数选择 `cmd.exe`,以用户主目录为工作目录,通过 `PtyProcessBuilder` 建立终端,并在线程中读取 Shell 输出。非 Windows 平台则尝试 `$SHELL` 或 `/bin/bash`。
因此,该样本不仅窃取现有数据;一旦成功运行,操作者还可以在当前用户权限下交互式执行命令。
## 网络基础设施
| 类型 | IOC | 用途 |
|---|---|---|
| 分发域名 | `dungeonroomsmod.com` | 伪造模组网站和 JAR 下载 |
| C2 域名 | `fabric-api.one` | WebSocket、数据外传和错误回传 |
| WebSocket | `wss://fabric-api.one` | 远程控制通道 |
| HTTP 路径 | `/sendssid` | 主机/受害者标识上报 |
| HTTP 路径 | `/sendlog` | 收集结果上传 |
| HTTP 路径 | `/senderror` | 通用错误回传 |
| HTTP 路径 | `/senderrorabe` | ABE 解密错误回传 |
| HTTP 路径 | `/senderrordpapi` | DPAPI 解密错误回传 |
RDAP 查询结果:
| 域名 | 注册时间(UTC) | 备注 |
|---|---|---|
| `dungeonroomsmod.com` | 2026-02-04 15:41:33 | 比真实 GitHub 项目晚约五年 |
| `fabric-api.one` | 2026-02-21 18:06:06 | 使用 Cloudflare 名称服务器 |
两个域名均由 Cloudflare 代理。解析出的 Cloudflare 共享 IP 不应作为封禁 IOC,否则可能误伤无关网站;应按域名、TLS SNI、DNS 或 HTTP Host 进行检测和阻断。
## 与真实项目的对照
仿冒网站主动链接到 `Quantizr/DungeonRoomsMod`,但其分发物与真实项目不一致。
| 项目 | 仿冒样本 | 官方 `v3.4.1` |
|---|---|---|
| 文件名 | `DungeonRooms-Mod-3.7.1.jar` | `Dungeon_Rooms-3.4.1.jar` |
| 大小 | 16,970,074 bytes | 7,535,838 bytes |
| 加载器 | Fabric | Forge |
| Minecraft | 1.21.1 至 1.21.11 | 1.8.9 |
| 元数据 | `fabric.mod.json` | `mcmod.info` |
| 主包 | `com.synpase` | `io.github.quantizr` |
| SHA-256 | `D222...1AF` | `0E4355...A10` |
| 发布状态 | 官方仓库中不存在 | 2024-03-26 正式发布 |
真实项目:[github.com/Quantizr/DungeonRoomsMod](https://github.com/Quantizr/DungeonRoomsMod)
官方发布:[github.com/Quantizr/DungeonRoomsMod/releases/tag/v3.4.1](https://github.com/Quantizr/DungeonRoomsMod/releases/tag/v3.4.1)
## MITRE ATT&CK 对照
| 技术 | ID | 样本证据 |
|---|---|---|
| User Execution: Malicious File | T1204.002 | 伪装成 Minecraft 模组,等待用户加载 |
| Obfuscated/Compressed Files | T1027 | JNIC 原生化载荷隐藏核心实现 |
| System Information Discovery | T1082 | 收集 OS、Java、桌面与用户信息 |
| Credentials from Password Stores: Web Browsers | T1555.003 | 提取浏览器 Cookie、密码和支付数据 |
| Command and Scripting Interpreter: Windows Command Shell | T1059.003 | 创建远程 `cmd.exe` PTY 会话 |
| Process Injection | T1055 | 挂起进程与 DLL 注入方法 |
| Archive Collected Data | T1560.001 | 创建 ZIP 打包浏览器数据 |
| Application Layer Protocol: Web Protocols | T1071.001 | HTTPS/WSS C2 与外传 |
| Exfiltration Over C2 Channel | T1041 | `/sendlog` 等路径上传收集结果 |
此表描述代码能力,不代表本次静态分析观察到了真实受害主机上的所有行为。
## 受害者处置建议
### 仅下载、从未启动
如果文件只保存在下载目录,从未放入 `mods` 后启动 Minecraft,也没有用 Java 直接打开,通常尚未执行:
1. 删除该 JAR,并清空回收站。
2. 不要再次访问分发域名。
3. 更新并运行可信杀毒软件的完整扫描。
### 已经加载或运行
该样本具有凭据窃取和远程 Shell 能力,应按“主机已失陷”处理:
1. 立即断开受影响设备的网络。
2. 使用另一台干净设备修改主要邮箱、Microsoft/Minecraft、Discord、GitHub、社交媒体和浏览器保存账户的密码。
3. 撤销所有账户会话、应用密码和访问令牌,并启用 MFA。
4. 如果浏览器保存过银行卡,联系发卡机构监控或更换卡片。
5. 保存必要的纯文档后重装操作系统;仅删除 JAR 无法证明远程操作者没有留下其他持久化程序。
6. 在企业环境中保留磁盘、内存、DNS、代理和 EDR 日志,并使用本仓库 IOC 搜索横向影响。
## 检测
- [YARA 规则](rules/dungeonrooms_fake_mod.yar)使用多个 JAR 内路径组合,避免单独匹配 JNA、SQLite 或 PTY4J 这些可能被合法软件使用的依赖。
- [IOC JSON](iocs/iocs.json)适合导入自动化流程。
- [哈希清单](evidence/hashes.csv)区分恶意样本、关键恶意组件和被滥用的第三方组件。
## 分析限制与归因
- 未动态执行样本,因此没有观察实时 C2 协议、服务器响应或落地文件。
- 许多实现被 JNIC 转为原生方法;结论基于可见构造函数、类型、方法接口、配置、依赖关系和完整调用能力链。
- 类名、配置中的用户名或域名注册信息不能单独证明现实身份。本报告不对个人或组织进行归因。
- Windows Defender 在分析主机上不可用,错误为 `0x800106ba`;这不是样本规避 Defender 的证据,也不影响代码级结论。
## 证据目录
- [`evidence/archive-summary.md`](evidence/archive-summary.md):JAR 结构与关键文件
- [`evidence/decompiler-excerpts.md`](evidence/decompiler-excerpts.md):最小化反编译证据
- [`evidence/source-comparison.md`](evidence/source-comparison.md):官方项目与仿冒分发物对照
- [`evidence/api-redacted.json`](evidence/api-redacted.json):脱敏后的 C2 配置
- [`evidence/fabric.mod.json`](evidence/fabric.mod.json):样本 Fabric 元数据
- [`evidence/hashes.csv`](evidence/hashes.csv):样本与内嵌文件哈希
## 负责任披露
本报告用于防御、事件响应和安全研究。仓库没有提供恶意样本下载,也没有尝试登录、控制或干扰攻击者基础设施。若平台、注册商或托管商处理滥用举报,可使用样本 SHA-256、域名、下载 URL 和本报告作为初始证据。
标签:DAST, DNS信息、DNS暴力破解, DNS 反向解析, Homebrew安装, HTTP工具, Minecraft恶意插件, YARA规则, 云安全监控, 入侵指标, 威胁情报, 开发者工具, 恶意软件分析, 防御加固, 静态分析