OneNote 作为恶意软件分发新渠道持续增长

目前,Office 文件已经默认禁用宏代码,攻击者开始转向利用其他微软的软件产品来进行恶意 Payload 投递。默认情况下,OneNote 应用也包含在 Office 2019 和 Microsoft 365 软件中,所以 OneNote 文件越来越受到攻击者的青睐。如果有人意外打开恶意 OneNote 文件,就会触发加载恶意 Payload。研究人员发现攻击者在 OneNote 中嵌入恶意脚本或二进制文件,与传统宏代码相比更加灵活。

背景

Microsoft OneNote 是一个数字笔记应用程序,是 Microsoft Office 套件的一部分。OneNote 文件本质上是数字笔记本,其中可以存储各种类型的信息。Microsoft OneNote 还支持用户嵌入外部文件,使用户能够存储视频、图片和可执行文件。当然,微软也阻止某些特定扩展名的嵌入对象,这些扩展名的文件被微软认为是危险的。

攻击者经常通过植入 Payload 来滥用嵌入对象的功能,恶意 OneNote 文件也总是将自身伪装成合法笔记,包含各类图片和按钮。攻击者使用图片来吸引受害者的注意力,攻击者期望毫无戒心的人点击按钮启动恶意 Payload。这种投递方式在 Payload 发送时很受欢迎,利用了人们对合法笔记应用程序的信任。

以下为三种不同类型的恶意 OneNote 文件,包含了不同类型的嵌入图片和按钮。通过将鼠标悬停在虚假按钮上,就可以看到 OneNote 文件中植入的 Payload 位置和类型。

1716881867_665589cbd646fbf62fc30.png!small?1716881867367

示例 OneNote 文件

恶意 OneNote 文件要求受害者点击查看按钮以查看“受保护”的文档,点击后即可执行恶意 VBScript 文件。

1716881885_665589dd5d09313b70837.png!small?1716881885728

示例 OneNote 文件

1716881906_665589f209ad615b80fd4.png!small?1716881906756

示例 OneNote 文件

恶意 OneNote 文件中内嵌虚假按钮,这些按钮引诱受害者执行嵌入的 EXE 文件与 Office 97-2003 文件。

方法论

攻击者主要滥用 OneNote 文件进行恶意 Payload 投递,倾向于嵌入特定类型的 Payload:

  • JavaScript
  • VBScript
  • PowerShell
  • HTML(HTA)

尽管文件类型不同,但这些 Payload 通常表现出了相似的行为。恶意 OneNote 文件的明显特征是存在嵌入对象,尽管良性 OneNote 文件也可以包含嵌入对象,但恶意 OneNote 文件几乎总是包含嵌入对象。

微软官方表示,OneNote 中嵌入的文件以 GUID 进行标记,如 {BDE316E7-2665-4511-A4C4-8D4D0B7A9EAC}。该 GUID 表明存在 FileDataStoreObject 对象,GUID 后紧跟着的是文件的大小。

嵌入的文件在 GUID 的 20 字节后,与定义的大小一样长。如下所示,框一为嵌入对象的 GUID 标记、框二为嵌入对象的大小、框三为实际嵌入的对象。

1716881926_66558a06b71c895087fbf.png!small?1716881926222

嵌入对象

Payload 类型

根据在野攻击统计,攻击者主要使用以下七种类型的文件作为恶意 OneNote 的 Payload:

  • PowerShell
  • VBScript
  • Batch
  • HTA
  • Office 97-2003
  • EXE
  • JavaScript

1716881959_66558a272996d9a276264.png!small?1716881960766

Payload 类型分布

每种 Payload 的平均大小如下所示:

1716881974_66558a36e9ca8eba7d463.png!small?1716881976083

平均文件大小

较大的 Payload 往往功能更强大,但攻击者并不经常使用这么大的文件,这会显著增加 OneNote 文件的大小。攻击者肯定倾向于选择更小的文件尺寸,这样可以在投递过程中减少怀疑。

嵌入图片

恶意 OneNote 文件会使用看起来像按钮的图片引诱受害者启动恶意 Payload,每种文件计算了恶意 OneNote 文件中的图片数量以及中位数。

分析数据集中的六千个样本时,研究人员发现只有三个文件没有内嵌图片,其余 99.9% 的恶意 OneNote 文件中都至少包含一个图片。由于几乎所有文件都包含至少一个图片,可以确认 OneNote 样本主要用于网络钓鱼。

1716882032_66558a70eadf73667642f.png!small?1716882032365

平均图片数量

如上所示,每种 Payload 文件中图片的中位数为两个,攻击者通常会使用虚假按钮和引人注目的图片来增强网络钓鱼活动的可信度。

内嵌 EXE 文件

业界主要关注的是内嵌 PowerShell 或 HTA 的 OneNote 文件,但嵌入 EXE 的 OneNote 文件较少受到关注。

例如从 OneNote 文件(d48bcca19522af9e11d5ce8890fe0b8daa01f93c95e6a338528892e152a4f63c)中提取到 EXE 文件(92d057720eab41e9c6bb684e834da632ff3d79b1d42e027e761d21967291ca50)。其中 GS:60 证实了研究人员的假设,GS:60 指向 PEB 和 ROR 指令。这表明恶意软件正在对函数使用动态地址解析,并使用哈希进行函数识别。

1716882054_66558a866baf4641b257c.png!small?1716882054141

恶意样本

为了了解 Shellcode 并确定动态加载库,通过 x64dbg 进行调试。可以发现,循环中一直重复调用 loc_140004021 函数的一个断点,如下所示:

1716882070_66558a96349b82f66c015.png!small?1716882069923

调试过程

WSAStringToAddressA 函数与 WSASocketW 函数表明,Shellcode 正在通过网络传输数据。

1716882086_66558aa615569ce871bb4.png!small?1716882086281

WSAStringToAddressA 函数

1716882098_66558ab2d3381b44442cc.png!small?1716882099080

WSASpclertW 函数

反向 TCP Shell 是最常见的 Shellcode 类型,在 ws2_32.dll 中设置了断点来确定是否调用了特定函数。发现调用时,拦截传递的参数,通常是 IP 地址与端口号。

1716882113_66558ac1a5cd4dd114866.png!small?1716882114354

ws2_32.dll 函数

不出所料,Shellcode 在 connect 函数调用时停止。对 RDX 寄存器的值进行分析后,可以发现 sockaddr_in 结构体如下所示:

1716882136_66558ad87369b0c0fdad5.png!small?1716882136410

sockaddr_in 结构体

研究人员对结构体内容进行了反解:

1716882149_66558ae5202785daf55bb.png!small?1716882148687

解析代码

解析可知,攻击者正在通过 4444 端口进行回连。

1716882160_66558af01e3a7457a1c33.png!small?1716882159539

解析结果

结论

OneNote 作为新兴攻击媒介,比想象中更受欢迎。除了基于脚本的 Downloader 以外,还可以内嵌可执行的载荷。与其他文件类型相同,攻击者也可以使用其进行横向移动。用户应该考虑阻止 OneNote 文件中特定扩展名的内嵌载荷被执行,防止用户掉入攻击者的陷阱。

参考来源

Unit42

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

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

相关文章

(南京观海微电子)——TFT LCD压合技术

TFT-LCD TFT-LCD open cell后段制程主要指的是将驱动IC和PCB压合至液晶板上,这个制程主要由三个步骤组成: 1.ACF (Anisotropic Conductive Film)的涂布。 在液晶板需要压合驱动IC的地方涂布ACF,ACF又称异方性导电胶膜,特点是上下…

vue3 Elementplus 动态路由菜单不跳转问题

问题描述 vue3 Elementplus 使用component: () > import(/views/${item.componentPath}.vue)加载动态路由菜单不跳转, 报错 Unknown variable dynamic import: …/views/system/user/index.vue at dynamic-import-helper.js:7:96 解决 使用 使用 let modules impor…

IntelliJ IDEA 中显示或隐藏类中的方法

直接上图 左侧找到Project->右键->勾选Show Members即可显示 没有勾选的状态 勾选后的状态

模板初阶【C++】

文章目录 模板的作用模板的原理模板分为两大类——函数模板和类模板函数模板语法函数模板实例化模板函数的方式模板函数的类型转换既有函数模板又有已经实现的函数,会优先调用哪一个? 类模板语法模板类实例化对象模板类的模板参数可以有缺省值类模板中的…

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区

如何获取特定 HIVE 库的元数据信息如其所有分区表和所有分区 1. 问题背景 有时我们需要获取特定 HIVE 库下所有分区表,或者所有分区表的所有分区,以便执行进一步的操作,比如通过 使用 HIVE 命令 MSCK REPAIR TABLE table_name sync partiti…

【计算机毕业设计】194高校学习助手微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

Node.js实现短链接(ShortLink):shortid、epxress让URL更简单

文章目录 一、短链接介绍二、插件介绍1、epxress2、shortid 三、实现方案1、安装依赖:2、实现原理 四、示例代码五、测试生产短链接 一、短链接介绍 短链接是指仅包含一个网址的链接形式,通俗一些就是将一个很长很复杂的的网址变成一个简短易记的链接。…

Android Gradle开发与应用 (一) : Gradle基础

目录 一、什么是Gradle? 1.1 Gradle简介 1.2 Gradle的特点 二、Gradle的安装与配置 2.1 安装Gradle 2.1.1 下载Gradle 2.1.2 解压安装包 2.1.3 配置环境变量 2.1.4 验证安装 2.2 配置Gradle 2.2.1 配置Gradle版本 2.2.2 配置Gradle脚本 三、Gradle的构建文件结构…

TCP数据包长度范围介绍

在TCP协议中,数据被分割成称为TCP数据包(TCP segment)的单元进行传输。 TCP数据包的长度没有固定的范围,它可以根据网络和应用程序的需求而变化。 一般来说,TCP数据包的长度受到以下几个因素的影响: 最大传…

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题,问题现象,问题原因和解决方法都挺直观,但在此过程中发现了一个有趣的 Oracle JDBC 驱…

第三十六章 添加和使用自定义标题元素 - 指定 XData 块中支持的标头元素

文章目录 第三十六章 添加和使用自定义标题元素 - 指定 XData 块中支持的标头元素指定 XData 块中支持的标头元素Details 第三十六章 添加和使用自定义标题元素 - 指定 XData 块中支持的标头元素 指定 XData 块中支持的标头元素 如果使用 SOAP 向导根据给定的 WSDL 创建 Web …

微软Edge浏览器:全面解析与深度探索

一、引言 随着互联网的飞速发展,浏览器作为我们访问网络世界的重要工具,其性能和功能越来越受到用户的关注。微软Edge浏览器自推出以来,凭借其高效的性能、丰富的功能和安全的浏览环境,赢得了众多用户的青睐。本文将全面解析微软…

面试专区|【47道ES67高频题整理(附答案背诵版)】

1.ES5、ES6(ES2015)有什么区别? ES5(ECMAScript 5)和ES6(也称为ECMAScript 2015)是JavaScript语言的两个版本,它们之间有一些重要的区别和改进: let 和 const 关键字: …

Kylin系列:架构和高级功能详解

目录 一、Kylin的架构 1.1 总体架构概述 1.2 数据源 1.3 元数据存储 1.4 构建引擎 1.5 存储引擎 1.6 查询引擎 1.7 用户接口 二、Kylin的高级功能 2.1 多维立方体(Cube) 2.1.1 Cube的定义 2.1.2 Cube的构建 2.2 查询优化 2.3 数据模型和星型模式 2.3.1 数据模…

使用SPI驱动数码管

代码&#xff1a; 7-seg.c /*《AVR专题精选》随书例程3.通信接口使用技巧项目&#xff1a;改进的延时法实现半双工软件串口文件&#xff1a;7seg.c说明&#xff1a;SPI控制数码管驱动文件作者&#xff1a;邵子扬时间&#xff1a;2012年12月15日*/#include <avr/io.h>ex…

Ubuntu:解决github出现 Permission denied (publickey)的问题

因为使用的Ubuntu 长久没有使用&#xff0c;使用下载的时候突然报错&#xff0c;使用ssh key这种方式进行clone &#xff0c;pull github上面的项目&#xff0c;使用 git clone或者git pull origin master出现permission denied (publickey)&#xff0c;原因是因为ssh key过期失…

0 知识的补充

目录 矢量运算 矢量加法 矢量减法 矢量点乘 矢量叉乘 矢量混合积 坐标系 直角坐标系 柱坐标系 球坐标系 ​​​​​​​ 矢量运算 矢量加法 矢量减法 矢量点乘 矢量叉乘 ​​​​​​​ 矢量混合积 坐标系 直角坐标系 柱坐标系 ​​​​​​​ 球坐标系

AcWing算法基础课笔记——求组合数2

求组合数Ⅱ 1万组数据&#xff0c; 1 ≤ b ≤ a ≤ 1 0 5 1 \le b \le a \le 10^5 1≤b≤a≤105&#xff0c;预处理阶乘。时间复杂度 O ( N l o g N ) O(NlogN) O(NlogN) C a b a ! ( b − a ) ! b ! C_a^b \frac{a !}{(b - a)! b!} Cab​(b−a)!b!a!​ 预处理出 i ! i ! i…

力扣148A

文章目录 1. 题目链接2. 题目代码3. 题目总结 1. 题目链接 Insomnia cure 2. 题目代码 #include<iostream> using namespace std; int main(){int dragonDamagedByPan;int dragonDamagedByDoor;int dragonDamagedByheel;int dragonDamagedBythreat;int totalNumberOfDra…

高速缓存存储器(Chche)

为了解决CPU和主存之间速度不匹配的问题&#xff0c;计算机系统中引入了高速缓存&#xff08;Chche&#xff09;的概念。 基本想法&#xff1a;使用速度更快但容量更小、价格更高的SRAM制作一个缓冲存储器&#xff0c;用来存放经常用到的信息&#xff1b;这样一来&#xff0c;…