如何使用JavaScript混淆来躲避AV
字数 1169 2025-08-18 11:38:23

JavaScript混淆技术分析与反混淆方法

一、恶意JavaScript文件概述

该恶意JavaScript文件采用了多种高级混淆技术来躲避反病毒软件的检测,在VirusTotal平台上58种反病毒解决方案均未能检测到。文件特点:

  • 使用Windows脚本主机系统组件支持运行
  • 文件大小约1MB,远大于常见脚本
  • 脚本内容看似乱码,实则精心设计

二、主要混淆技术分析

1. 非ASCII字符集混淆

脚本主体使用非ASCII码字符集:

  • 混合ASCII和Unicode字符组成长字符串
  • 包含西里尔字符示例:ыNиpsфбm3nxsцвиеKEсыBLQBеnьVWC
  • 变量命名特征:可见变量名在"_"字符之后,如var =[…]_0x5e24

反混淆方法:

  1. 识别并替换变量前缀
  2. 增强代码可读性
  3. 示例反混淆结果:
var A_0x5e24=['fromCharCode','function H2B([string]$s){$H=@();for ($i=0;$i -lt $s.Length;$i+=2){$H+=[Byte]::Parse($s.Substring($i,2),[System.Globalization.NumberStyles]::HexNumber);};return $H;};$_b=(get-itemproperty -path 'HKCU:\SOFTWARE\Microsoft\Run' -name 'Microsoft').Microsoft;

2. ASCII与十六进制混合编码

混淆特征:

  • 代码中包含类似0x270x200x5c的十六进制字符
  • 需要转义并进行ASCII解码

解码对应关系:

  • 0x27 → 单引号(')
  • 0x20 → 空格
  • 0x5c → 反斜杠(\)

反混淆方法:

  1. 识别所有十六进制序列
  2. 转换为对应的ASCII字符
  3. 重建原始代码逻辑

3. 字符串分割与重组

攻击者将关键字符串分割为多个部分:

  • 使用不同编码方式存储各部分
  • 运行时动态重组
  • 示例:用'$'字符和_b变量替换字符'5'

三、Payload提取与分析

1. 可执行文件特征

提取出的Payload特征:

  • 前四个字符为"4D5A"(MZ头,Windows可执行文件标志)
  • 实现持久化感染的注册表键:
    HKCU\SOFTWARE\Microsoft\Run\Microsoft
    

2. 恶意软件类型

分析确认Payload为Remote Access木马变种:

  • 命令控制服务器:networklan[.]asuscomm[.]com
  • 属于RevengeRAT家族

四、反混淆实战步骤

1. 初步处理

  1. 统一字符编码为UTF-8
  2. 识别并标准化变量命名
  3. 提取所有十六进制编码部分

2. 代码重构

  1. 替换所有十六进制序列为对应字符
  2. 合并分割的字符串片段
  3. 重建控制流结构

3. 动态分析

  1. 在隔离环境中运行部分解码代码
  2. 监控注册表和文件系统变化
  3. 捕获网络通信特征

五、防御建议

1. 检测层面

  1. 监控异常大的JavaScript文件
  2. 检测非ASCII字符的异常使用
  3. 建立十六进制编码模式的特征库

2. 防护层面

  1. 限制WSH执行权限
  2. 监控关键注册表键值修改
  3. 实施多层沙箱分析机制

六、总结

该案例展示了现代恶意软件的高级混淆技术:

  1. 多层编码混淆有效规避静态检测
  2. 即使已知恶意软件变种,AV检测率仍可能很低
  3. 需要结合静态分析与动态行为检测
  4. 持续更新反混淆技术对抗新型混淆方法

通过深入分析此类技术,安全研究人员可以:

  • 开发更有效的反混淆工具
  • 改进检测算法
  • 提升对新型攻击的响应能力
JavaScript混淆技术分析与反混淆方法 一、恶意JavaScript文件概述 该恶意JavaScript文件采用了多种高级混淆技术来躲避反病毒软件的检测,在VirusTotal平台上58种反病毒解决方案均未能检测到。文件特点: 使用Windows脚本主机系统组件支持运行 文件大小约1MB,远大于常见脚本 脚本内容看似乱码,实则精心设计 二、主要混淆技术分析 1. 非ASCII字符集混淆 脚本主体使用非ASCII码字符集: 混合ASCII和Unicode字符组成长字符串 包含西里尔字符示例: ыNиpsфбm3nxsцвиеKEсыBLQBеnьVWC 变量命名特征:可见变量名在"_ "字符之后,如 var =[…]_0x5e24 反混淆方法: 识别并替换变量前缀 增强代码可读性 示例反混淆结果: 2. ASCII与十六进制混合编码 混淆特征: 代码中包含类似 0x270x200x5c 的十六进制字符 需要转义并进行ASCII解码 解码对应关系: 0x27 → 单引号(') 0x20 → 空格 0x5c → 反斜杠(\) 反混淆方法: 识别所有十六进制序列 转换为对应的ASCII字符 重建原始代码逻辑 3. 字符串分割与重组 攻击者将关键字符串分割为多个部分: 使用不同编码方式存储各部分 运行时动态重组 示例:用'$'字符和_ b变量替换字符'5' 三、Payload提取与分析 1. 可执行文件特征 提取出的Payload特征: 前四个字符为"4D5A"(MZ头,Windows可执行文件标志) 实现持久化感染的注册表键: 2. 恶意软件类型 分析确认Payload为Remote Access木马变种: 命令控制服务器: networklan[.]asuscomm[.]com 属于RevengeRAT家族 四、反混淆实战步骤 1. 初步处理 统一字符编码为UTF-8 识别并标准化变量命名 提取所有十六进制编码部分 2. 代码重构 替换所有十六进制序列为对应字符 合并分割的字符串片段 重建控制流结构 3. 动态分析 在隔离环境中运行部分解码代码 监控注册表和文件系统变化 捕获网络通信特征 五、防御建议 1. 检测层面 监控异常大的JavaScript文件 检测非ASCII字符的异常使用 建立十六进制编码模式的特征库 2. 防护层面 限制WSH执行权限 监控关键注册表键值修改 实施多层沙箱分析机制 六、总结 该案例展示了现代恶意软件的高级混淆技术: 多层编码混淆有效规避静态检测 即使已知恶意软件变种,AV检测率仍可能很低 需要结合静态分析与动态行为检测 持续更新反混淆技术对抗新型混淆方法 通过深入分析此类技术,安全研究人员可以: 开发更有效的反混淆工具 改进检测算法 提升对新型攻击的响应能力