介绍VBA隐藏技术stomping

描述

1.简介

之前我们介绍了VBA脚本文件的重定向,修改文件中的加载结构并将脚本的二进制文件进行伪装,达到宏代码隐藏的目的。该技术具有一定的局限性,只使用脚本重定向技术无法绕过Microsoft OLE分析工具的检测。因此再介绍一种VBA隐藏技术"VBA stomping",stomping 是指破坏 Microsoft Office 文档中的 VBA 源代码,对Microsoft OLE分析工具进行欺骗,干扰其分析结果。

2.OLE分析工具原理

介绍OLE分析工具原理之前,我们使用OLE分析工具"oletools"来分析一份使用了VBA重定向脚本技术的OFFICE文档,该文档内嵌了自动执行弹窗功能的VB脚本。

 

Sub AutoOpen()
MsgBox "Hello World"
End Sub

 

OLE

    我们使用oletools对该文件进行分析,oletools将宏源码完整的还原了出来,因自动运行是敏感操作,oletools标注了IOC。

OLE

    因此,在实现欺骗这类工具前,我们需要了解OLE解析工具是如何将我们的宏代码提取出来的,通过查看oletools的源码,找到宏检测部分,可以发现检测工具是通过搜索"Attribut"这个特征来定位宏的位置。

OLE

    根据该信息,我们打开VBA脚本的二进制文件,然后搜索"Attribut"字符,在该字符附近,我们可以看到VBA宏的源码相关字符,OLE分析工具便是将这些内容进行提取,并展示出来,然后对其中的敏感字符进行匹配,提示IOC。

OLE

3.stomping

    因此我们需要stomping的部分便是VBA二进制脚本中Attribute附近的字符,但是,如果我们破坏了这部分字符,宏代码是否能够正常执行?

    在回答这个问题之前,需要引入P-Code这个知识点,P-code,即Pseudo Code(伪代码),这一概念最早出现在Pascal编译器中,它是为了提供跨平台可移植性而产生的,实现这一编译机制的Pascal编译器被称为"Pascal P Compiler"。

    VBA二进制脚本文件中即包含了源码字符,又包含了P-Code,VBA中的P-Code,其本质是对源码字符的编译压缩,因此实现的功能是相同的,即VBA二进制脚本中存在两份功能一致的代码,只是存在的形式不同,而oletools不会去解析P-Code。

    需要注意的是,执行P-Code的条件的前提条件是编译脚本的VBA版本需要与运行时版本一致,因为不同版本VBA编译的P-Code代码存在差异,解释器无法解析不同版本的P-Code,因此会读取源代码并重新编译当前版本可执行的P-Code。

    如果满足脚本编译环境和执行环境的VBA版本一致,可以修改源码部分,这样oletools解析的结果就是我们修改后的代码,而解释器依旧会执行旧代码,我们将脚本二进制中的源码部分进行修改,修改代码如下。

 

Sub showdata()
   getnum "12345 67890"
End Sub

 

OLE

    修改后,打开文件,可以发现宏执行结果没有改变,证明修改源码部分不会影响宏的执行。

OLE

    接下来,我们使用工具检测一下该文件。发现工具检测出的代码为我们修改后的代码,解析结果与实际执行内容不同,到达欺骗目的,因为没有了自动执行函数AutoOpen,工具没找到IOC指标,认为该文件正常。

OLE

4.总结

由于各种工具对VBA的检测角度不同,单一宏隐藏技术不能不能满足我们的要求,因此在对抗检测工具时,我们需要打出一套组合拳,将文件重定向与VBA stomping相结合,使其无法通过解析源码方式分析脚本,也无法通过找到脚本的二进制文件来提取P-Code。




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分