首页/安全/取证与溯源速查/脚本样本分析线索

脚本样本分析线索

脚本类样本易读:先看编码方式(-enc、base64、字符串拼接数组),再按解码链还原并逐段标注意图。

取证与溯源速查安全更新于 2026-10-13

脚本样本的分析线索

脚本类样本(PowerShell、VBScript、JavaScript、Shell 等)通常可读性更好,分析重点在于还原混淆链:先看编码方式(整段 base64 编码、字符串拼接成数组、字符大小写与随机注释填充),再按解码链逐层还原,最后逐段标注意图(下载、执行、持久化、反检测)。PowerShell 的 -EncodedCommand 参数接受的是 UTF-16LE 编码后再做 base64 的字符串,按这个规则解码才不会得到乱码。

基本信息

适用平台隔离的分析环境;脚本语言包括 PowerShell、VBScript、JavaScript、Shell 等
线索入口命令行参数(-enc、-nop、-w hidden)、编码字符串、拼接数组、下载调用
解码规则PowerShell -EncodedCommand 为 UTF-16LE 文本的 base64 编码
记录要求每层解码产物都计算哈希并作为样本登记
注意解码与执行都应在只读沙箱进行,避免脚本连接外部地址

典型使用场景

  • 还原被编码的下载执行命令,得到实际载荷地址
  • 分析持久化动作:注册表启动项、计划任务注册、服务创建
  • 识别反检测手法:关闭日志、检测沙箱环境、延时执行
  • 提取脚本中的对外连接地址,用于封禁与情报比对
  • 为报告提供逐段注释的脚本正文,说明每一步意图

提取与解码

提取与解码
# 1) 找到命令行中的编码参数与可疑调用
grep -Eo 'powershell[^\n]{0,200}' script.ps1 | head
# 2) PowerShell -EncodedCommand 解码:UTF-16LE 文本的 base64
base64 -d encoded.txt | iconv -f UTF-16LE -t UTF-8 | head
# 3) 还原字符串拼接:把数组元素与拼接片段拼回完整命令
#    例如 ('do'+'wnl'+'oad') 之类的组合需要人工或脚本还原
# 4) 逐层记录:解码产物单独保存并计算哈希
sha256sum decoded-layer1.ps1 >> layers-hashes.txt
# 5) 关注下载执行与持久化关键字
strings -n 6 decoded-layer1.ps1 | grep -Ei 'download|invoke|schtasks|reg add|startup'

混淆手法与还原

手法特征还原方法
整段编码-enc 参数或长 base64 字符串按 UTF-16LE 规则解码
字符串拼接大量加号与短字符串数组拼接还原后再阅读
字符替换或反转调用替换函数处理字符串按替换规则逆运算
压缩后编码base64 解码得到二进制流进一步按压缩格式解压
注释与换行填充大量无意义注释与空行清理后再分析逻辑
解码在只读沙箱进行,解码产物同样算样本,需要计算哈希并登记,避免后续引用时无法说明来源层级。
注释掉的调试代码不代表实际执行路径:分析结论要基于实际可执行分支,必要时用沙箱验证哪条路径被走到。

易错点

  • 按普通 base64 解码 -EncodedCommand:内容为 UTF-16LE,直接解码会得到乱码并误判为加密
  • 逐层解码时跳步:多层编码嵌套需一层一层记录,跳过中间层会让还原过程无法复核
  • 把解码产物当成原始样本:两者哈希不同,必须分别登记以免引用混乱
  • 在联网环境执行脚本:脚本可能连接外部地址下载下一阶段载荷或回传信息,隔离是前提
  • 把注释与未使用分支当作行为:应基于实际可执行路径描述,必要时用沙箱确认

数据来源与参考

  • PowerShell 文档(-EncodedCommand)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌