某指纹浏览器供应链投毒分析:白加黑劫持逆向
本文由AI美化而来
0x00 背景
今日,我打开某指纹浏览器,突然发现卡巴斯基报毒(之前是没有的),我在记录里发现 C:\Users\Public 目录下存在异常文件。经溯源,该文件由“比特浏览器”主进程下发,利用了经典的“白加黑”侧加载技术绕过静态查杀。
0x01 样本指纹
宿主文件 (白):item.exe(原名 xperf.exe,带微软合法数字签名)
加载器 (黑):perfctrl.dll(MD5: f79f75d39f8a521509c0d33f1a6f70d3)
加密载荷:item.log(看似日志,实为高强度加密的二进制数据)
0x02 攻击链路图解
该木马的执行逻辑并非直接运行,而是采用了多层嵌套的隐蔽方式。其核心思想是“夺舍”合法进程的执行流。
侧加载:item.exe 启动时,系统会默认优先加载同目录下的 perfctrl.dll。
执行流接管:perfctrl.dll 入口点 DllMain 被触发。
内存打补丁:木马定位宿主程序内存地址,强行改写汇编指令,将正常执行流弹向恶意函数。
解密并运行:恶意函数读取并解密 item.log 中的 Shellcode。
0x03 核心逆向过程
- 寻找“正大门”:DllMain 的触发
在 IDA 中定位到 DllEntryPoint。由于该 DLL 开启了 /GS 栈保护,入口处首先会执行编译器注入的 __security_init_cookie。随后进入 CRT 启动器,最终调用黑客手写的 sub_180001010。
// 伪代码:DllMain 中的关键逻辑
if ( fdwReason == 1 ) {
DisableThreadLibraryCalls(a1);
FreeConsole(); // 隐藏痕迹
// 定位宿主 item.exe 内存中的特定偏移 (0x8E88)
v2 = GetModuleHandleA(0i64) + 36488;
if ( VirtualProtect(v2, 0xCui64, 0x40u, &flOldProtect) ) {
// 关键:构建 Inline Hook 蹦床 (Trampoline)
*(_WORD *)v2 = -18360; // 汇编:MOV RAX, ...
*(_QWORD *)((char *)v2 + 2) = sub_180001AD0; // 目标劫持函数地址
*((_WORD *)v2 + 5) = -7937; // 汇编:JMP RAX
VirtualProtect(v2, 0xCui64, flOldProtect, &flOldProtect);
}
}
- 解密 Payload:手撕 sub_180001AD0
当宿主程序踩中“蹦床”后,执行流跳入 sub_180001AD0。该函数是整个木马的“解密室”,利用 SSE 指令集加速解密过程。
Payload 路径解密推导:
在代码中观察到如下异或操作:
// 内存中硬编码的魔数
*(_QWORD *)(v8 + 1) = 0x40C2CB5382420F18i64;
// 运行时的异或解密密匙
*(_QWORD *)(v1 + 1) ^= 0x27ADA77DEF277B71ui64;
计算过程:
0x40C2CB5382420F18 ^ 0x27ADA77DEF277B71 = 0x676F6C2E6D657469
转换 ASCII 结果:item.log(以十六进制小端序反向排列)。
这证实了 item.log 根本不是日志,而是木马加密后的主体程序。
3 . 滥用 TLS 隐藏行踪
为了对抗内存扫描,木马大量使用了 Thread Local Storage (TLS) 存储。
// 频繁利用 NtCurrentTeb 获取私有存储空间
v0 = (_DWORD )(((_QWORD )NtCurrentTeb()->ThreadLocalStoragePointer + (unsigned int)TlsIndex) + 12i64);
通过这种方式,解密出来的关键 API 地址和 Payload 数据都被隔离在特定线程的私有空间中,普通的安全审计工具很难直接从全局内存快照中抓取。
0x04 动态行为特征
进程注入:尝试向系统进程 SearchProtocolHost.exe 进行代码注入,以求持久化。
资产掠夺:重点扫描 C:\Users\<User>\AppData 路径,目标涵盖 Chrome、Edge 的 Cookies 及 Login Data,并定向搜寻 .ssh 目录下的 id_rsa 私钥。
阅后即焚:在完成数据外传后,会立即执行 ExitProcess 杀掉宿主进程,消除活跃痕迹。
0x05 处置与防护建议
物理清理:强行结束 item.exe 进程,并 Shift+Delete 彻底删除 C:\Users\Public 下的木马文件。
凭据重置:由于该木马具备 InfoStealer 特征,受灾用户应立即修改全局浏览器保存的密码,并重置密码。
权限防御:限制 C:\Users\Public 目录的可执行权限,可以有效防御此类白加黑木马的低成本落地。
0x06 结语
此次分析展示了供应链攻击中“白加黑”配合 Inline Hook 的成熟套路。木马在代码实现上非常依赖系统底层机制,具有很强的免杀性。