VBA隐藏技术stomping

news2025/1/12 18:04:11



1.简介

        之前我们介绍了VBA脚本文件的重定向,修改文件中的加载结构并将脚本的二进制文件进行伪装,达到宏代码隐藏的目的,细节请参考上一篇文章"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

图片

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

图片

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

图片

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

图片

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

图片

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

图片

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

图片

4.总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1623755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

http是什么?http的基础知识教程详解(2024-04-24)

1、http的概念 HTTP(超文本传输协议,HyperText Transfer Protocol)是一种用于分布式、协作式、超媒体信息系统的应用层协议。 HTTP 是万维网(WWW)的数据通信的基础,设计目的是确保客户端与服务器之间的通…

乐鑫科技收购创新硬件公司 M5Stack 控股权

乐鑫科技 (688018.SH) 宣布收购 M5Stack(明栈信息科技)的控股权。这一战略举措对于物联网和嵌入式系统领域的两家公司来说都是一个重要的里程碑,也契合了乐鑫和 M5Stack 共同推动 AIoT 技术民主化的愿景。 M5Stack 以其创新的硬件开发方式而闻…

Linux实现文件共享

#nfs-utils、rpcbind 软件包来提供 NFS 共享服务 #客户端创建共享文件夹: nmcli c reload nmcli c up ens160 systemctl stop firewalld systemctl disable firewalld rpm -q nfs-utils rpcbind #查看是否安装 systemctl enable rpcbind systemctl enable nfs…

(八)小案例银行家应用程序-排序-数组排序

排序一直有很多的算法,今天我们仅仅来说JavaScript内置的排序方法 ● 字符串 const owners [Jonas, Zach, Adam, Martha]; console.log(owners.sort()); console.log(owners);但是注意,这个方法会改变原有的数组; ● 我们在试试数字 cons…

港股“AIGC第一股”出门问问,凭借什么产品做到上市?

随着人工智能技术的飞速发展,AIGC(人工智能生成内容)领域逐渐成为资本市场的新宠。在这样的背景下,出门问问(股票代码:2438.HK)作为AIGC领域的先行者,于2024年4月24日正式登陆港交所…

服务器数据恢复—StorNext文件系统下raid5阵列数据恢复案例

服务器数据恢复环境: 昆腾某型号存储,8个存放数据的存储柜1个存放元数据的存储柜。 元数据存储:8组RAID1阵列1组RAID10阵列4个全局热备硬盘。 数据存储:32组RAID5阵列,划分2个存储系统。 服务器故障: 数据…

matplotlib从起点出发(15)_Tutorial_15_blitting

0 位图传输技术与快速渲染 Blitting,即位图传输、块传输技术是栅格图形化中的标准技术。在Matplotlib的上下文中,该技术可用于(大幅度)提高交互式图形的性能。例如,动画和小部件模块在内部使用位图传输。在这里&#…

Element-plus DatePicker 日期选择器【正则校验时间范围】

效果图&#xff1a; 利用element-plus中的form表单验证完成效果。 <el-form-item label"检查计划截止日期&#xff1a;" prop"deadline"><el-date-pickerv-model"form.deadline"value-format"YYYY-MM-DD"style"width: …

计算机网络基础认识

本篇文章是我在B站上看到关于计算机网络的介绍视频收到的启发。本篇文章的内容来自【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 一、物理层 从常理来说&#xff0c;进行连个设备之间的通讯&#xff0c;首先最容易想到的就是使用一根线连接两个设备进行通讯。但是…

基于单片机的空气质量检测系统设计

摘要:随着社会经济的不断发展,人们的生活水平日益提高,健康与养生成为了全民关注的热点话题,空气质量地不断下降也引起了社会的广泛关注,如何了解家居内空气质量的情况也成了亟需解决的问题。在此背景下,本文针对室内空气的质量问题设计了基于单片机的空气质量检测系统,…

js基础知识(2)

一、事件的含义 JavaScript事件是指在文档或者浏览器中发生的一些特定交互瞬间&#xff0c;比如打开某一个网页&#xff0c;浏览器加载完成后会触发load事件&#xff0c;当鼠标悬浮于某一个元素上时会触发hover事件&#xff0c;当鼠标点击某一个元素时会触发click事件等等。 三…

Excel 公式的定义、语法和应用(LOOKUP 函数、HLOOKUP 函数、VLOOKUP 函数;MODE.MULT 函数; ROUND 函数)

一、公式的定义和语法 二、公式的应用 附录 查找Excel公式使用方法的官方工具【强烈推荐&#xff01;&#xff01;&#xff01;】&#xff1a;Excel 函数&#xff08;按字母顺序&#xff09;【微软官网】 excel 函数说明语法LOOKUP 函数在向量或数组中查找值LOOKUP(lookup_va…

【AI相关】《这就是ChatGPT》读书笔记

《这就是ChatGPT》 斯蒂芬沃尔弗拉姆 这本书用了两天就一口气读完了&#xff0c;通篇读完后&#xff0c;这本书主要是介绍了ChatGPT怎么能做到生成内容的一些背后的原理逻辑&#xff0c;总结一下这本书是ChatGPT通过大量的数据&#xff08;这些数据来自网络、书籍等等类似于数据…

09.JAVAEE之网络初识

1.网络 单机时代 >局域网时代 >广域网时代 >移动互联网时代 1.1 局域网LAN 局域网&#xff0c;即 Local Area Network&#xff0c;简称LAN。 Local 即标识了局域网是本地&#xff0c;局部组建的一种私有网络。 局域网内的主机之间能方便的进行网络通信&#xff0…

Activiti——将绘制的流程图存入act数据库并进行流程推进与状态流转

文章目录 前言流程图入库操作 RepositoryService项目结构数据库连接配置文件入库Java测试代码zip 方式进行流程的批量部署 流程启动 RuntimeService待处理任务查看 TaskService流程状态的扭转查询流程定义信息 RepositoryService查询正在执行的流程实例 RuntimeService已部署流…

git简介及安装

Git | Git简介与安装 文章目录 Git | Git简介与安装一、Git简介二、Git安装Linux-centosLinux-ubuntu 一、Git简介 存在需求&#xff1a;对于一个文档&#xff0c;由于编写思路或者当前文档丢失&#xff0c;可能存在想要历史版本的需求&#xff0c;并且需要知道每个版本都修改了…

MySQL主从的应用

说明&#xff1a;本文介绍MySQL主从在实际中的应用。主从搭建和问题参考下面两篇文章&#xff1a; MySQL主从结构搭建 搭建MySQL主从结构时的问题 数据迁移 当我们搭建完MySQL主从&#xff0c;第一步当然是把历史数据导入到主从结构中。有以下两种方式&#xff1a; 开启主从…

Mysql个人总结

前言 又来水字数啦&#xff0c;这次主要讲一下MySQL的常用概念&#xff0c;难点的就必须上项目讲解了&#xff0c;而且比较基础面试基本都会问一些&#xff0c;用的话&#xff0c;不少优化都从这里入手 操作数据库 1、创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名;…

如何设置微信自动回复?教你快速上手!

自动回复对于需要在微信上洽谈业务的人来说&#xff0c;无疑是非常实用的一个功能。 下面就一起来看看微信管理系统的机器人自动回复都有哪些设置吧&#xff01; 1、自动通过好友 只要有新的好友请求发送到你的微信账号&#xff0c;系统会自动通过该请求&#xff0c;无需手动…

rust 卸载重新安装 安装

原因&#xff1a;接触区块链时报错 linking with x86_64-w64-mingw32-gcc failed: exit code: 1 Rust编译需要C环境&#xff0c;如果你没有&#xff0c;Rust也能安装成功&#xff0c;只是无法编译代码 C的编译工具有两个&#xff0c;一个是msvc&#xff0c;也就是visual studi…