本帖最后由 潇湘剑雨 于 2026-2-7 11:33 编辑
## 1. 样本概览
### 样本 A
- 路径: `E:\exe\H_World_Setup_INS.exe`
- 大小: 136,404,291 bytes
- SHA256: `89F8B6CADE1808AFCEA0C700B66BD44802742299812C066298474326B5D0E90F`
- 签名: 显示有签名链(证书主体为“East Money Information Co., Ltd.”),但 **Authenticode 校验为 HashMismatch** (文件内容与签名摘要不匹配,疑似被二次篡改/拼接)。
- 打包/格式: NSIS 安装包 (7-Zip 识别为 `NSIS-3 Unicode`),PE 头部较小,`overlay` 极大 (典型安装包/投递器形态)。
### 样本 B
- 路径: `E:\exe\HalloчWerld精简版-win-2.1.2-x64_patched.exe`
- 大小: 165,312,841 bytes
- SHA256: `3FC9338DB9773F4163E235F537E79EF066B1D10CA4735231A67BA5F8EB8233A2`
- 签名: 显示“Adobe Inc. / Flash Player”证书链,但 **Authenticode 校验为 HashMismatch** (同样是“签了但被改过”的典型伪装)。
- 打包/格式: NSIS 安装包 (`NSIS-2.25`),overlay 极大。
## 2. 投递链/解密机制 (核心结论)
两份样本都是 NSIS 投递器,释放一组看似随机命名的文件到 `$LOCALAPPDATA` / `$APPDATA` 路径,并携带自定义插件 `DcryptDll.dll`。
`DcryptDll.dll` 导出如下函数:
- `Decrypt`
- `HexDecoder`
- `HexEncoder`
- `LoadStr`
- `MD5Hash`
通过对 `DcryptDll.dll` 逆向(静态)确认其 **加解密核心为 RC4**:
- `fcn.10002a32`: RC4 KSA (S 盒初始化/置换)
- `fcn.1000298c`: RC4 PRGA (生成密钥流并 XOR 数据)
NSIS 会生成/释放一个 64 字节的十六进制字符串文件 `$R0` 作为 RC4 key (32 bytes):
- 样本 A key (`E:\analysis\extract\H_World_Setup_INS\$LOCALAPPDATA\$R0`):
`DEE453B5E726685044BDFD2BC0827BD535AAF2B4A6A674A4F5FF697301B54C54`
- 样本 B key (`E:\analysis\extract\HalloWerld\$LOCALAPPDATA\$R0`):
`0FE45912C41BAE5AA24673FA8CF5A33C21F8AFC7B7BF201F1B8EC1857BFE2D6C`
使用该 key 对释放出的若干大文件进行 RC4 解密后,可得到二阶段 PE/NSIS 内容 (见第 3 节)。
说明: 这是典型“安装包投递器 + 自定义解密插件 + 加密载荷”的链路,常见于金融诈骗/木马投递活动;但仅凭静态证据 **无法严谨归因** 为某一特定家族(例如“银狐”),只能说 TTP 相似。
## 3. 解密后的关键载荷
为避免 Defender 直接拦截,我们在 `E:\analysis\rc4_decrypt.py` 中实现了 RC4 流式解密,对部分载荷离线解密。
### 3.1 样本 A 解密产物
- `E:\analysis\decrypted\s1_R1.bin`
- SHA256: `BE5A5E44DDCC8EB6D94FDB484246A4D3A6B41568BEC7EB825AC633B9A27DCD44`
- PE32 GUI,7-Zip 显示内部名 `GameFetchEx.exe`
- 签名: 证书主体为 `SuZhou Snail Digital Technology Co., Ltd`,但 **HashMismatch** (疑似“借用/篡改签名程序”做白利用/绕过)。
- `E:\analysis\decrypted\s1_R4.bin`
- SHA256: `DFFBF02773670E3DC6FAD1E7FDBD746F43721BDEDBFEFC1D1F8A21E61EA23F95`
- PE32 DLL
- 关键导入(节选): `AddVectoredExceptionHandler`, `GetThreadContext`, `SetThreadContext`, `ResumeThread`, `VirtualAlloc`, `VirtualProtect` 等
- 这类 API 组合常用于 loader / 反调试 / 线程上下文修改。
- `E:\analysis\decrypted\s1_R9.bin`
- SHA256: `980756FBF97457C06AD953431D85BAF72BABFE4E1B81898B97D797A792F82E05`
- NSIS-3 Unicode (内嵌二阶段安装包)
- 解包后核心内容是 `app-64.7z`,其中包含 Electron 应用与 `resources\app.asar`。
### 3.2 样本 B 解密产物
- `E:\analysis\decrypted\s2_R1.bin`
- 该文件在落地后被 Defender 判定为恶意并阻止读取 (Get-FileHash/pefile 打开失败)。
- 我们改为对其 **加密态文件** `E:\analysis\extract\HalloWerld\$LOCALAPPDATA\$R1` 解密到内存并解析 PE,得到:
- 解密后 SHA256: `EB0905B8999B945CD022BEF71A31F7BF706E92CA0509F6D4151347B12F397CDA`
- Import DLLs 包含 `WS2_32.dll`, `WININET.dll` (网络能力明显)
- `E:\analysis\decrypted\s2_R4.bin`
- SHA256: `C218C21D68C4B3CC6B95EFF0242BF7E13540A7177B68994336A7440712D8FDDD`
- 与 `s1_R4.bin` 导入特征高度一致 (同类 loader DLL)。
- `E:\analysis\decrypted\s2_R9.bin`
- SHA256 与样本 A 的 `s1_R9.bin` 完全一致 (二阶段 NSIS 相同)。
### 3.3 二阶段 Electron 包
从 `s1_R9.bin` 解包得到的 Electron 主程序:
- `E:\analysis\extract2\app-64\HelloWorld精简版.exe`
- SHA256: `263FFC5DCEAEC65073A8EAE34715F0C73D285CD69AA31480DFE3DF8E24DACB42`
- 未签名
`resources\app.asar`:
- `E:\analysis\extract2\app-64\resources\app.asar`
- SHA256: `F17E1FE963E8756F9A8EAA55ED1C54A0ED550DA86A5FC523A1B2D7F9D9F908D3`
对 `app.asar` 使用 `npx asar extract` 解包到 `E:\analysis\extract2\app-asar` 后,针对 URL/域名的粗检主要命中大量公开站点(规范/文档/第三方服务)。未在当前规则下稳定抽到明确的 C2 域名。
## 4. 发现的可用 IOC
### 4.1 文件哈希 (SHA256)
- 外层投递器:
- `H_World_Setup_INS.exe`: `89F8B6CADE1808AFCEA0C700B66BD44802742299812C066298474326B5D0E90F`
- `HalloчWerld精简版-win-2.1.2-x64_patched.exe`: `3FC9338DB9773F4163E235F537E79EF066B1D10CA4735231A67BA5F8EB8233A2`
- 自定义解密插件:
- 样本 A `DcryptDll.dll`: `0ACB047F854771E2D5F5E7A3A2C8E261C86223988B2B6B00036FE64DF994B537`
- 样本 B `DcryptDll.dll`: `F730D9385BF72EAC5D579BCF1F7E4330F1D239CA1054D4EAD48E9E363D9F4222`
- 二阶段/解密产物:
- `s1_R1.bin (GameFetchEx.exe)`: `BE5A5E44DDCC8EB6D94FDB484246A4D3A6B41568BEC7EB825AC633B9A27DCD44`
- `s1_R4.bin (DLL)`: `DFFBF02773670E3DC6FAD1E7FDBD746F43721BDEDBFEFC1D1F8A21E61EA23F95`
- `s1_R9.bin (NSIS)`: `980756FBF97457C06AD953431D85BAF72BABFE4E1B81898B97D797A792F82E05`
- `s2_R4.bin (DLL)`: `C218C21D68C4B3CC6B95EFF0242BF7E13540A7177B68994336A7440712D8FDDD`
- `s2_R1.bin` (内存解密后): `EB0905B8999B945CD022BEF71A31F7BF706E92CA0509F6D4151347B12F397CDA`
- Electron 主程序/asar:
- `HelloWorld精简版.exe`: `263FFC5DCEAEC65073A8EAE34715F0C73D285CD69AA31480DFE3DF8E24DACB42`
- `app.asar`: `F17E1FE963E8756F9A8EAA55ED1C54A0ED550DA86A5FC523A1B2D7F9D9F908D3`
### 4.2 关键字符串
- 外层样本 A 中可见的可疑域名片段(存在于高熵区域,需结合动态证据确认用途):
- `Jvk-.CN|` (offset 44580847)
- `Wbn.ru` (offset 120484510; 原始字符串含前缀 `6*Wbn.ru`)
补充:
关键发现(core payload / C2 配置)
- s2_R1(RC4 解密后 SHA256 EB0905B8999B945CD022BEF71A31F7BF706E92CA0509F6D4151347B12F397CDA)是 PE32 GUI,导入
WININET.dll + WS2_32.dll,并且 WININET 导入里有一整套 FTP API(InternetConnectA, FtpPutFileA, FtpOpenFileA 等)。
- 它的明文网络配置被“藏”在 Bitmap 资源里(.rsrc 的 type=2, id=175, lang=2052,文件内偏移 0x1f5030 附近),可直接提取
到:
- Server = 58.211.140.3
- port = 21
- downtype = ftp
- 还带 [game] name = 9yin、item0 = trace.log 等字段(疑似按游戏/客户端日志收集并上传)
|