cUDGk/mc-fake-mod-stealer-analysis

GitHub: cUDGk/mc-fake-mod-stealer-analysis

针对伪装成 Minecraft MOD 的 Egairtigado 家族账号窃取恶意软件的详细技术分析记录,重点剖析了基于以太坊智能合约的 C2 通信机制及无文件攻击技术。

Stars: 0 | Forks: 0

# mc-fake-mod-stealer 分析 ### 对 Discord 上分发的虚假 Minecraft MOD 型账号窃取恶意软件的分析 [![Java](https://img.shields.io/badge/Target-Java%2021-ED8B00?style=flat&logo=openjdk&logoColor=white)](#检体) [![Fabric](https://img.shields.io/badge/Loader-Fabric-DBD0B4?style=flat)](#攻击流程) [![Family](https://img.shields.io/badge/Family-Egairtigado-red?style=flat)](#检体) [![License: MIT](https://img.shields.io/badge/License-MIT-green?style=flat)](LICENSE) **记录于 2026/04/08 捕获的、将 Ethereum 智能合约用作 C2 注册表、注重隐蔽性的 Minecraft 账号窃取器。**
## 概述 2026 年 4 月,获取并分析了 2 个通过 Discord 分发的 **虚假 Minecraft Fabric MOD** 检体的记录。 | 检体 | 分发名称 | 大小 | 检测名称 | |---|---|---|---| | #1 | `MoneyDupeXLimit-1.2.jar` | 97 KB | `Trojan:Win32/Egairtigado!rfn` | | #2 | `Comet-V1.21.jar` | 不明 | `Trojan:Win32/Egairtigado!rfn` | 两者表面上伪装成“Hypixel SkyBlock 金币复制工具”、“Comet 客户端”,实际上会窃取 Microsoft 账号的 **访问令牌** 并执行第二阶段载荷。 其逻辑主体具有以下特征: - 将 C2 URL 存储在 **Ethereum 智能合约** 中,并通过公开的 ETH RPC 17 个节点作为回退途径获取 - 使用 **嵌入的 RSA-2048 公钥 + SHA256** 对获取的 URL 进行签名验证 - 使用 DNS over HTTPS 和完全禁用验证的 TLS 进行 C2 通信 - 在 **内存中动态加载** 第二阶段 Java JAR(无文件) - 通过独立运行和 Fabric MOD 加载 **双模式** 实现持久化 ## 检体 ### MoneyDupeXLimit-1.2.jar | 项目 | 值 | |---|---| | 伪装作者 | `Ranqz` | | 伪装说明 | `RANQZ` | | Fabric mod id | `moneydupex` | | Main-Class | `dev.impl.LayoutService` (用于独立运行) | | Fabric Entrypoint | `dev.impl.SpecRenderer.onInitialize` | | 依赖 | `fabricloader>=0.16.5`, `java>=21` | | 重新打包的资源 | `assets/ref_upper.dat` (72KB 加密) | ### Comet-V1.21.jar 由于 Defender 在写入时立即将其隔离,因此未获取详细信息。`Trojan:Win32/Egairtigado!rfn` 已判定其为同一家族。根据 MS Defender 事件日志: ``` 2026/04/08 14:16:24 ID 1116 Trojan:Win32/Egairtigado!rfn 検出 2026/04/08 14:16:26 ID 1117 検疫成功 (CleaningActionID=3) ユーザー: NT AUTHORITY\SYSTEM (リアルタイム保護) ``` ## 攻击流程 ``` graph TD A[Discord配布の偽MOD jar] --> B[Minecraft mods/ に配置] B --> C[Minecraft 起動] C --> D[Fabric Loader が SpecRenderer.onInitialize 実行] D --> E[Session.getUsername / getUuid / getAccessToken] E --> F[InternalWrapper.openModel JSON で呼び出し] F --> G[RegistrySelector.atomicRange] G --> H[公開ETH RPC 17本フォールバック] H --> I[コントラクト 0x1280a8...41Fbc1 を eth_call] I --> J[戻り値=現C2 URL を RSA-SHA256 検証] J --> K["GET https://<C2>/files/jar/module"] K --> L[第二段階 Module.jar 6.7MB 取得] L --> M[ExampleMixin ClassLoader でメモリ動的ロード] M --> N[dev.majanito.Main.initializeWeedhack 実行] N --> O["POST <C2>/api/delivery/handler
{username, uuid, accessToken, campaign}"] D2[ダブルクリック起動] --> D3[LayoutService.main 実行] D3 --> D4[ProcessBuilder で javaw -jar 自己再起動] D4 --> F ``` ## 主要技术特征 | 类别 | 手段 | 效果 | |---|---|---| | C2 分发 | Ethereum 智能合约 | 无法被取下,可批量分发新 URL | | C2 验证 | RSA-2048 + SHA256 | 防止第三方劫持 C2 | | C2 RPC | 公共 ETH RPC 端点 17 个 | 不会因单个节点被封堵而失效 | | 名称解析 | DNS over HTTPS (Cloudflare/Google/1.1.1.1) | 绕过 OS DNS、hosts、ISP 过滤 | | TLS | 接受所有证书的 `X509TrustManager` | 绕过企业 TLS 检测 | | HTTP | 原生 SSLSocket + SNI 伪装 | 绕过基于 URL 的 IDS/IPS | | 第二阶段 | JarInputStream + 自制 ClassLoader 内存展开 | 不在磁盘上留下痕迹 | | 字符串保护 | XOR (key = 首字节 1 字节) 将十六进制字符串混淆 | 规避静态 strings 分析 | | 伪装 | 文件名、包名与 Fabric example mod 极其相似 | 干扰分析人员理解 | | 双模式 | Main-Class + Fabric Entrypoint | 无论独立启动还是作为 MOD 加载均可执行 | ## 被窃取的信息 已确认(第一阶段): - Minecraft username - Minecraft UUID - **Minecraft access token (JWT)** ← 可立即接管账号 - 运行环境标签 (`Fabric` / `DoubleClick`) - 活动标识 ID (`17c1db77-cc87-4783-88d1-7ceca88d88c5`) 第二阶段 (`dev.majanito.Main.initializeWeedhack`) 之后的实现请参阅[第二阶段分析](docs/second_stage.md)。 ## 相关文档 | 文件 | 内容 | |---|---| | [docs/IOCS.md](docs/IOCS.md) | 全部 IoC(哈希·URL·合约·公钥) | | [docs/technical_analysis.md](docs/technical_analysis.md) | 各类的详细解析 | | [docs/decoded_strings.md](docs/decoded_strings.md) | XOR 解密后的全部混淆字符串 | | [docs/second_stage.md](docs/second_stage.md) | 第二阶段 `Module.jar` 的构成 | | [docs/remediation.md](docs/remediation.md) | 感染时的处置步骤 | | [docs/timeline.md](docs/timeline.md) | 捕获·解析的时间线备忘 | ## 对策(疑似感染时) 1. **使 Minecraft / Microsoft 账号的访问令牌失效** - 在 https://account.live.com/proofs/Manage “从所有设备注销” - 修改密码 + 启用两步验证 2. 停止进程树中 `javaw.exe` 的父进程不是 `Minecraft.exe` 的进程 3. 使用 Defender 进行全盘扫描(已知签名:`Trojan:Win32/Egairtigado!rfn`) 4. 失效浏览器、Discord、加密货币钱包的所有会话 详细步骤请参阅 [docs/remediation.md](docs/remediation.md)。 ## 许可证 MIT License — Copyright (c) 2026 s925s 详情请参阅 [LICENSE](LICENSE)。
标签:Discord, DNS over HTTPS, DNS 反向解析, DoH, Egairtigado, ESC8, Ethereum智能合约, Fabric, IoC, Java 21, JS文件枚举, Microsoft账户, Minecraft, MOD, Prisma Cloud, RSA-2048, SHA256, TLS, XOR混淆, 代理, 代码混淆, 令牌窃取, 伪装, 内存加载, 动态加载, 区块链安全, 威胁情报, 安全助手, 开发者工具, 恶意软件, 文件less, 无文件攻击, 木马分析, 社会工程学, 窃取器, 账号窃取, 防御工具