赛前必读!关于PowerShell代码反混淆的相关研究
Invoke-Deobfuscation: AST-Based and Semantics-Preserving Deobfuscation for PowerShell Scripts查看来源

DataCon2022正在火热报名中!大赛将结合行业热点安全问题,通过涉网犯罪分析、网络流量分析、域名体系安全、软件安全、物联网安全五大赛道构建不同场景,全面、深度考察选手利用新技术方法解决安全问题的能力。
赛前,为帮助大家了解最新研究成果,我们将定期分享相关优秀论文,助力各位参赛选手取得更好成绩。本期推荐的是关于“PowerShell代码反混淆”的相关研究,是“软件安全”赛道的挑战内容之一。这篇文章可以说是“赛前必读”了。
【20221123第四期分享】
今天我们跟大家分享的是来自奇安信星图实验室投稿并发表在DSN 2022上的关于PowerShell代码反混淆的相关研究论文——“Invoke-Deobfuscation: AST-Based and Semantics-Preserving Deobfuscation for PowerShell Scripts”,该项工作由奇安信星图实验室研究人员与中科院信工所团队合作完成,作者分别为:柴华君、应凌云、段海新、查达仁。
PowerShell脚本由于功能强大、易于编写和混淆、Windows系统默认自带等特点,被攻击者大量应用于攻击活动中,成为当前网络攻击检测和防御工作的一大挑战。这项研究工作提出了一项针对PowerShell脚本的自动化反混淆方法,并实现了名为Invoke-Deobfuscation的反混淆工具。该工具能够有效地处理空白字符插入等字符随机化混淆、逆序和拼接等各种字符串相关混淆、Base64等各种编码方式混淆等十多种混淆方式,对目前绝大多数的PowerShell混淆技术都有很好的还原效果。为了全面地评估工具的效果,作者从真实的网络环境中收集了超过200万个PowerShell脚本,从中筛选出了39,713个不同家族、结构各异的恶意PowerShell脚本。作者从中挑选了部分脚本来比较Invoke-Deobfuscation和前人反混淆工具的效果,实验结果表明Invoke-Deobfuscation在反混淆能力,反混淆的效率、反混淆前后脚本的行为一致性以及去混淆程度几方面都明显优于其他工具,可以更好地帮助安全人员分析PowerShell的恶意混淆脚本。
混淆不仅能够改变脚本原有的文本特征,而且可以改变其抽象语法树(AST)结构和Token表示。目前的杀毒软件多基于深度学习模型来对脚本进行恶意检测,而混淆对于脚本特征的破坏使得混淆后的恶意样本可以有效规避杀软的检测。
前人的反混淆工作多依赖正则表达式来定位匹配脚本中的混淆片段,其忽略了PowerShell的句法规则以至于经常匹配到不合法的语句片段。预定义规则和直接执行是两类常见的反混淆手段,预定义规则只能针对部分简单的混淆技术,不具备鲁棒性。而上下文缺失的问题,使得直接执行的方法无法处理包含变量的混淆语句。
作者针对前人工作中存在的不足,提出了基于AST的语义保持的反混淆工具—Invoke-Deobfuscation。它利用混淆语句往往可以通过执行还原为字符串的特点,提取了PowerShell脚本的AST上可还原节点对应的语句片段,并使用变量追踪补全混淆片段的上下文,然后通过直接执行得到反混淆结果。
Invoke-Deobfuscation主要分为3个模块:
- 词法解析 通过对PowerShell脚本进行词法解析得到一系列Token,并逆序遍历每一个Token。对于Token中存在的大小写随机、别名等混淆,作者使用规范的Token来替代混淆Token,最终得到一个Token上没有混淆的PowerShell脚本。
- 基于AST的还原模块 如上图,利用AST上可还原节点来识别定位可能的混淆语句片段,并利用变量追踪记录出现在脚本中每一个变量的值及作用域。对于提取到的混淆语句片段,作者尝试通过直接执行的方法得到其还原结果,并将成功还原的语句替换AST中对应节点的内容。作者使用后序遍历处理AST上的节点,当遍历到根节点时,其对应的内容即为最终的还原结果。
- 重命名和重排版 作者将脚本中随机命名的函数名和变量名用规范化命名替换,并去除脚本中随机插入的白空格,通过重新排版的方式让反混淆结果更加易读。
- 各个模块的实际反混淆效果如下图所示:
- 为了全面地评估工具的效果,作者从真实的网络环境中收集了超过200万个PowerShell脚本,从中筛选出了39,713个不同家族、结构各异的恶意PowerShell脚本。作者从中挑选了部分脚本来比较Invoke-Deobfuscation和前人反混淆工具的效果,并分别从反混淆能力、反混淆效率、行为一致性和混淆缓解4个方面与前人的工作进行了对比。实验结果表明,Invoke-Deobfuscation在各个方面表现都明显优于其他工具。
- Invoke-Deobfuscation几乎可以处理所有目前常见的混淆技术。在混淆缓解程度方面,经过Invoke-Deobfuscation处理得到的反混淆样本,其混淆评分相对于原样本有显著的降低,总体下降比例达到了46%。Invoke-Deobfuscation反混淆得到的结果还原了大量的关键信息,并且均保持了与原样本相同的行为,有助于安全分析人员分析代码意图和行为。
- END
报名时间:11月1日-11月29日
竞赛时间:12月1日-12月10日
报名链接:
https://datacon.qianxin.com/datacon2022
QQ交流群:962067583
欢迎大家进群交流👇
注册报名、赛题答疑等问题可咨询管理员