0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍VBA隐藏技术stomping

蛇矛实验室 来源:蛇矛实验室 2023-06-11 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1.简介

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

2.OLE分析工具原理

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

SubAutoOpen()
MsgBox "Hello World"
End Sub

6064c11a-074a-11ee-962d-dac502259ad0.png

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

607c3afc-074a-11ee-962d-dac502259ad0.png

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

608fe552-074a-11ee-962d-dac502259ad0.png

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

60d63444-074a-11ee-962d-dac502259ad0.png

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解析的结果就是我们修改后的代码,而解释器依旧会执行旧代码,我们将脚本二进制中的源码部分进行修改,修改代码如下。

Subshowdata()
getnum "12345 67890"
End Sub

60fa84f2-074a-11ee-962d-dac502259ad0.png

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

611e1f84-074a-11ee-962d-dac502259ad0.png

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

614674ca-074a-11ee-962d-dac502259ad0.png

4.总结

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




审核编辑:刘清

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

    关注

    2

    文章

    809

    浏览量

    43307
  • VBA
    VBA
    +关注

    关注

    0

    文章

    20

    浏览量

    12268
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

    52099
  • OLE
    OLE
    +关注

    关注

    0

    文章

    14

    浏览量

    11933

原文标题:VBA隐藏技术stomping

文章出处:【微信号:蛇矛实验室,微信公众号:蛇矛实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何实现VBA编译器崩溃

    本篇文章为VBA脚本隐藏技术的最后一篇,将介绍如何在保证VBA脚本正常执行的情况下,使分析人员无法打开编译器。
    发表于 07-15 10:02 1651次阅读
    如何实现<b class='flag-5'>VBA</b>编译器崩溃

    请求ENA VBA援助

    大家好,我正在尝试让VBA应用程序在第二个5071C上运行。 VBA应用程序已在另一台5071C上运行,但我无法在第二台机器上运行它。我收到“Microsoft Forms - 无法加载对象,因为
    发表于 05-17 12:23

    什么是VBA?为什么这么多软件支持VBA

    什么是VBA?什么是VBS?二者有什么不同?为什么这么多软件支持VBA
    发表于 07-02 06:35

    空间域LSB的信息隐藏检测技术研究

    基于图象的信息隐藏检测技术是隐写分析技术的基础,对于保障网络信息安全和提高信息隐藏算法的安全性具有重要意义。本文针对基于空间域图象的LSB 信息伪装的方法,
    发表于 05-26 14:32 25次下载

    VBA程序源代码

    VBA程序源代码
    发表于 02-09 15:16 12次下载

    VBA开发手册

      本章将为你介绍AutoCAD   VBA工程及VBA交互开发环境(VBA IDE)。尽管大部分VBA环境在行为上都是相似的,但Auto
    发表于 08-11 16:00 0次下载

    VBA 基础及与VB的区别

      Visual Basic 的应用程序版(VBA)是Microsoft 公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft 可编程应用软件所共享。在没有VBA
    发表于 08-11 17:03 3715次阅读

    AutoCAD VBA二次开发教程

    AutoCAD VBA二次开发教程,学习二次开发的顶起
    发表于 11-02 16:16 0次下载

    Excel 2010VBA编程与实践

    主要介绍了Excel 2010VBA的编程知识,与部分实际案例。
    发表于 11-20 16:14 0次下载

    Excel VBA程序开发自学宝典

    VBA自学提供了很好的教材,方式简单易懂容易掌握
    发表于 11-20 16:14 0次下载

    VBA数据处理全流程宝典

    学习VBA理想教材
    发表于 05-27 08:00 0次下载

    excel vba代码 示例讲解

    excel vba代码 示例讲解
    发表于 09-07 09:36 25次下载
    excel <b class='flag-5'>vba</b>代码 示例讲解

    密文域可逆信息隐藏技术发展

    隐藏是实现云环境下隐私保护的研究重点之一。针对当前密文域可逆信息隐藏技术技术要求,介绍了该技术
    发表于 12-09 10:28 0次下载
    密文域可逆信息<b class='flag-5'>隐藏</b><b class='flag-5'>技术</b>发展

    基于vba自动批量修改照片大小

    基于vba自动批量修改照片大小
    发表于 02-11 16:35 1次下载

    虹科CANEasy的开发-VBA

    如果想要在CANEasy中实现自动化功能,那么最快的方式就是使用里面的VBA功能。VBA最常见的是在excel和word中被用于开发的宏。在CANEasy中使用的方式和它们也差不多:我们需要在宏内,让变量匹配到软件中的对象,然后用代码去控制它们。
    的头像 发表于 09-27 11:37 1672次阅读
    虹科CANEasy的开发-<b class='flag-5'>VBA</b>篇