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规则, 云安全监控, 入侵指标, 威胁情报, 开发者工具, 恶意软件分析, 防御加固, 静态分析