从UTF-16到%MÃja:~XX,1%:解剖BAT木马的混淆伎俩
字数 1533 2025-08-29 22:41:01
从UTF-16到%MÃja:~XX,1%:BAT木马混淆技术深度剖析
概述
本文详细分析了一种BAT批处理木马的混淆技术,该木马通过精心设计的编码混淆和字符串操作技术来逃避检测。分析过程中涉及了多种编码格式(Unicode字符集、UTF-16编码、UTF-8编码)的特征与区别,以及BAT脚本的特殊语法。
乱码现象分析
工具表现差异
- Notepad++/010Editor:显示为乱码
- Winhex:能正确显示内容
乱码原因
BAT文件头部填充了FF FE两个字节,这是UTF-16 Little Endian编码的字节序标记(BOM)。但实际上文件内容并非UTF-16编码,导致文本编辑器误判编码格式而显示乱码。
字符编码原理
Unicode字符集
- 定义了全球所有字符的唯一编码点
- 为每个字符分配一个数字
- 与具体编码方式(UTF-8、UTF-16等)结合使用
UTF-16编码
- 采用2字节为基本单位表示字符
- 两种字节顺序:
- Little Endian:字节序标记为
FF FE - Big Endian:字节序标记为
FE FF
- Little Endian:字节序标记为
UTF-8编码
- 可变长度编码(1-4字节)
- 可选BOM标记:
EF BB BF - 字符字节数由首字节高位决定:
- 0xxxxxxx:1字节
- 110xxxxx:2字节(第二字节以10开头)
- 1110xxxx:3字节(后两字节以10开头)
- 11110xxx:4字节(后三字节以10开头)
BAT木马解混淆技术
混淆原理
- 使用
FF FE字符标识伪装成UTF-16编码 - 使用
set命令设置环境变量,值为混淆字符串 - 使用
%VAR:~offset,length%语法提取特定字符
环境变量操作示例
set MÃja=8IBOPaM6Yf4S2pGzQTyJ51VvruiHEoeKRZAL3wDsxtjnFg9cdkml@X7UNChqb0W
%MÃja:~48,1% # 从第48个字符开始提取1个字符
解混淆步骤
- 识别所有环境变量定义
- 解析
%VAR:~offset,length%格式的字符串操作 - 替换为实际字符
BAT木马功能分析
1. 搜索并打开PDF文件
- 在Downloads目录搜索.pdf文件
- 找到则用
start命令打开 - 未找到则输出提示
2. 检测杀毒软件
- 检查
AvastUI.exe或avgui.exe进程 - 根据检测结果选择不同下载地址:
- 有杀毒软件:
https://nl-theatre-saver-impact.trycloudflare.com/cam.zip - 无杀毒软件:
https://nl-theatre-saver-impact.trycloudflare.com/bab.zip
- 有杀毒软件:
3. 下载并解压ZIP文件
- 使用PowerShell的
Invoke-WebRequest下载 - 启用TLS 1.2协议
- 解压到
%USERPROFILE%\Downloads\Extracted - 失败则退出
4. 执行Python脚本
- 切换到解压目录
- 依次执行多个Python脚本:
t2rf-an.pyt2rf-as.pyt2rf-hv.pyt2rf-ve.pyt2rf-xw3.pyt2rf-xw5.pyt2rf-ph.py
5. 设置持久化
- 下载启动项文件:
startupppp.batPWS.vbsPWS1.vbs
- 移动到启动目录实现自启动
6. 下载FTSP.zip
- 从特定URL下载
- 解压并清理痕迹
- 设置目录为隐藏属性
防御建议
- 编码识别:对可疑文件检查实际编码格式
- 环境变量监控:警惕异常的环境变量操作
- 下载行为检测:监控异常URL下载
- 启动项审计:定期检查启动目录
- 进程监控:关注异常Python或脚本执行
总结
该BAT木马通过巧妙的编码混淆和字符串操作技术实现了多层混淆,最终下载并执行恶意负载。理解其混淆技术和执行流程有助于更好地检测和防御此类威胁。