1. 问题背景
网吧客户机桌面(含 Public 桌面)长期存在一批"广告 exe"入口,典型如 C:\Users\Administrator\Desktop\玩传~奇点我.exe(33.6MB)、2026新传奇.exe(114KB)、GG游戏租号.exe(1.6MB)。此前分析(文章 163681231)已定性其为 CPS 引流壳:正规 VS 编译、无驻留进程、无公网 C2;"删不掉"根因是监管客户端内核驱动 blt_amd64.sys/soc.sys 挂钩文件删除操作。
问题在于:样本会换文件名、换后缀出现在不同网吧、不同链接里。同一构建改名重传后,仅凭"看着像"无法确认是否同一文件,每次都要重新逆向。需要一个跨链接、跨网吧的样本留底机制------以 SHA256 为唯一身份,配合编译指纹聚类,命中即引用既有结论。
2. 本次指纹采集环境
本次在 macOS 上对同一批 6 个样本做了一次完整的静态指纹采集与哈希留底,工具为 Detect It Easy v3.21(Mac 版 diec)与 shasum。
3. 谬误溯源
已有分析文章表格写"三个都是 PE32、均未加商业壳(无 VMP/Themida/UPX)......这是正规编译器产物的有力证据"。该表述有两处不严谨:
3.1 壳判定错误
对 玩传~奇点我.exe 用 diec 深度扫描(-d),结果明确为 Protector: VMProtect(new)[DS];该结果在 7-23 旧报告(Windows diec.exe)与本次 Mac diec -d 两次独立检出中一致。文章所称"无 VMP"与两次工具实测矛盾。
3.2 推理链不成立
文章用"编译器指纹正规"证伪"木马自保样本"画像------这本身成立(有 LTCG、绝对 PDB 路径、pogo 优化信息,确为 VS2022 正经编译);但"正规编译"与"外层套 VMProtect"并不互斥:推广商完全可以用 VS2022 编译核心逻辑后整体套 VMP 防篡改。编译指纹不能作为"无壳"证据,壳检测必须依赖专门的保护器识别,而非编译痕迹。
4. 正确结论修正
正确结论应修正为:代码为正规 VS2022 编译产物,但外层存在 VMProtect 虚拟化保护,两者并存。
5. 源码验证
为验证上述结论并建立跨链接、跨网吧的样本留底机制,本次在 macOS arm64 上对同一批 6 个样本做了完整的静态指纹采集与哈希留底。采集命令如下:
bash
diec -d -u -e "样本.exe" # 深度+启发式+熵,识别壳与编译器
shasum -a 256 *.exe # SHA256 留底
判壳阈值:总熵大于 7.5 视为 packed;节熵大于 7.9 且体积占比大视为压缩或加密载荷;diec 输出 Protector: 行即为商业保护器(VMP/Themida 等)。无壳样本如 2026新传奇.exe 总熵 6.25,各节均小于 6.5。
5.1 哈希留底(SHA256)
| 样本 | 大小 | SHA256 |
|---|---|---|
| 玩传~奇点我.exe | 33MB | aa912bc89f1f63bfe6663bc341a5b878b7da5457b1db555e41e4c5d4834baa7d |
| 玩Ξ传う奇请点我.exe | 33MB | fa993c34209047eb9f56d36e91bc74fc8afa0de91a17f8d47a7fae8c7e0c078a |
| GG游戏租号.exe | 1.6MB | c49c18e46aad53a627fafc88ec4c3fd3147179472c5d0c886ed45fd7123c2baa |
| 0氪打金【传奇首选】.exe | 5.8MB | d89eba570772f1caccbf925c54cd3bb4ed741ce4602bc44b2654eaa3fafd490e |
| 一@元租号.exe | 2.4MB | 498d6baa5da8ca5572c79205a762d7bda6633745c48673b5582e452ee6623bc4 |
| 2026新传奇.exe | 112KB | d8e427e002cde9940b15837af1076a4728f3109cd9ecdd79dad26fff1f0aefd4 |
5.2 编译指纹(diec 实测)
| 样本 | 编译器 | 壳/熵 | 备注 |
|---|---|---|---|
| 玩传~奇点我 | MSVC 19.44 VS2022 | VMProtect(new),总熵 7.70 | .data 31.6MB@7.74,libcurl+本地IPC |
| 玩Ξ传う奇请点我 | MSVC 19.44 VS2022 | packed,总熵 7.71 | 同族变体,编译号 35207 |
| GG游戏租号 | MSVC 14.00 VS2005 | packed,熵 7.69 | .rsrc 内嵌PE,WinRAR SFX |
| 0氪打金 | MSVC 14.00 VS2005 | packed,熵 7.99 | .rsrc 5.8MB@7.996 |
| 一@元租号 | MSVC 15.00 VS2008 | packed,熵 7.64 | Overlay 1.8MB@7.997 |
| 2026新传奇 | MSVC 14.00 VS2005 | 无壳,熵 6.25 | 纯跳转器,唯一外联 hao.yxou.com |
5.3 家族聚类
按编译指纹与壳特征可将 6 个样本归为四族:
- VS2022 VMP 系(#1/#2):31.6MB .data + fptable 节 + VMProtect,专业推广。
- VS2005 SFX/资源系(#3/#5):.rsrc 高熵打包。
- VS2005 跳板系(#6):无壳纯跳转。
- VS2008 Overlay 系(#4):尾部附加载荷。
哈希一致即同构建,改名不改变身份。后续遇到新样本,先算 SHA256 命中留底库,再比对编译指纹归族,即可直接引用既有结论,无需重复逆向。
6. 落地结论
6.1 可复用方案
- 哈希留底 :每台网吧、每次采集先执行
shasum -a 256,比对留底清单,命中即同一构建,直接引用既有指纹与定性,不再重复逆向。 - 指纹先于判断:定性顺序为 哈希→编译器/链接器→壳→熵→PDB→网络导入。编译指纹(LTCG+绝对PDB)证明"正规编译",但壳判定必须看 diec 的 Protector 行,两者独立、不可互推。
- 聚类扩面:同一家族变体(如玩传~奇点我/玩Ξ传う奇请点我,仅编译号 35222 vs 35207)共享 31.6MB .data 与 VMProtect 特征,哈希不同但可按节结构+编译器归族,一次分析覆盖全族。
- 留底清单随样本走:存放于样本目录(样本哈希留底清单.md),新增样本随时追加并更新聚类表。
6.2 适用范围
适用于网吧无盘镜像投放的 CPS 引流壳、租号平台客户端等"正规编译+套壳"类样本;对真木马(无PDB、非常规编译器)不适用,后者应走沙箱动态分析。
6.3 三类读者速查
人类开发者 :拿到新文件先 shasum -a 256 file.exe 比对留底;未命中再 diec -d -e file.exe 看编译器与 Protector 行;PDB 路径残留 + LTCG = 正规编译,Protector 行 = 壳,两者分开记录。
对话式 AI:问法:"帮我判断这个 exe 是否属于已留底的广告样本家族";回答要点:比对 SHA256 与留底清单,再核对编译器版本与节结构特征(VMP/.data 31MB/SFX .rsrc/Overlay)聚类。
代码 Agent:
bash
shasum -a 256 *.exe > hashes.txt
diec -d -u -e "样本.exe" | grep -E "Compiler|Protector|Total"
# 命中留底 → 直接引用;未命中 → 追加清单