Wobfuscator:将部分JavaScript恶意代码转换为WebAssembly以逃避检测

原文标题:Wobfuscator: Obfuscating JavaScript Malware via Opportunistic Translation to WebAssembly

原文作者:Romano A, Lehmann D, Pradel M, et al.

发表会议:Proceedings of the 2022 IEEE Symposium on Security and Privacy (S&P 2022)

原文链接:https://www.software-lab.org/publications/sp2022.pdf

背景

  • WebAssembly(WASM):可以将任何高级语言编写的代码转换为浏览器可理解的机器码的技术,帮助简化编译过程,为用C和C++等语言编写的计算密集型库提供了一个有效的编译目标。

方法

  • Wobfuscator的整体架构如图1所示,输入为一个JavaScript文件,作者将其解析为AST,接下来,该方法识别潜在的转换片段(i)与检测相关的恶意代码和(ii)可以以保留语义的方式转换为WebAssembly的代码(该方法不是通用转换,只针对满足以上两点要求的代码片段)。最后输出转换后的JavaScript代码和多个生成的WebAssembly模块。

  • 在这里插入图片描述

  • 转换规则:作者定义了针对JavaScript不同特性的七个转换规则,如表1所示。七个转换规则可以大致分为三类:混淆数据、混淆函数调用和混淆控制流。

  • 在这里插入图片描述

  • 实例化模块:对于以上七个转换规则,作者开发了两个变体用于同步和异步实例化WebAssembly模块。其中异步实例化可以不受浏览器对模块大小的限制并且可以将生成的模块放在单独的文件中。
  • 应用转换:主要包含三个步骤(a)识别能应用转换的AST节点;(b)通过修改可转换片段根节点的子树重写AST;©向AST根节点添加代码实例化WebAssembly模块。

实验

  • 作者使用Node.js和Typescript实现Wobfuscator,使用数据集如表2所示。

  • 在这里插入图片描述

  • 在Cujo、Zozzle、JaSt、JStap四个流行的静态JavaScript检测器上测试了Wobfuscator的有效性,同时与四种开源的JavaScript混淆工具进行了比较。
    *在这里插入图片描述

*在这里插入图片描述

  • 转换的正确性和运行效率
  • 在这里插入图片描述

局限性

  • Wobfuscator针对基于静态分析的恶意软件检测器可以有效地绕过,但对于基于动态分析的检测器可能不起作用。
  • 该方法只对满足要求的代码片段可以应用转换。
  • 浏览器需要支持WebAssembly。

缓解策略

  • 使用基于动态分析的恶意软件检测:作者提出的方法仍保留了原始的JavaScript恶意行为,动态检测器关注的运行特性不受混淆影响。
  • 基于Wobfuscator提及的转换规则设计检测规则:防御者可以基于对混淆细节的了解,定义相应的规则进行检测。但混淆代码不一定是恶意的,例如保护知识产权,直接将混淆技术分类为恶意可能导致大量误报。
  • 联合分析JavaScript和WebAssembly:联合分析数据和控制流如何在JavaScript和WebAssembly之间流动。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值