首页
社区
课程
招聘
[分享] # OneNote 嵌入式文件滥用
发表于: 2023-3-1 11:41 474

[分享] # OneNote 嵌入式文件滥用

2023-3-1 11:41
474

“后宏”时代


 

最近几周,OneNote 受到了媒体的广泛关注,因为威胁行为者在他们的网络钓鱼活动中滥用 OneNote 中的嵌入式文件功能。比如 Didier 的帖子 观察到在野攻击对 OneNote 的滥用。后来 Xavier 的ISC 日记博客中也提到了这一点。后来,在二月初,外网黑客新闻《post-macro-world-sees-rise-in-microsoft》也报道了这一点。

攻击技术


 

在这些网络钓鱼活动中被滥用的 OneNote 功能将嵌入的文件隐藏在图片后面,诱使用户单击图片。如果点击图片,将执行隐藏在下方的文件。这些文件可以是可执行文件、JavaScript 文件、HTML 文件、PowerShell 等。基本上任何类型的文件都可以在执行时执行恶意软件。最近,我们还观察到嵌入了可运行内联 JavaScript 的文件的.chm文件的使用情况。

 

恶意嵌入式 OneNote 文件的图像1

 

恶意嵌入式 OneNote 文件的图像2

OneNote 文件剖析


 

Didier 在博文analyzing-malicious-onenote-documents中描述的较为详细,他描述了 OneNote 文件的外观结构等。我们感兴趣的是,OneNote 文件使用GUID来指示嵌入文件部分的开始。在 OneNote 中表示嵌入文件开始的 GUID 是:{BDE316E7-2665-4511-A4C4-8D4D0B7A9EAC}使用这个工具https://toolslick.com/conversion/data/guid我们可以将 GUID 转换为 HEX 字符串:e716e3bd65261145a4c48d4d0b7a9eac
如果使用 HEX 编辑器,您可以搜索此字符串并找到嵌入文件的确切位置。

 

OneNote 将保留 20 个字节。前 8 个字节用于指示文件的长度,后面的 4 个字节未使用且必须为零,最后 8 个字节保留且也为零。这导致以下十六进制字符串E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00在嵌入文件数据存在之前的头部。

 

当通过 HEX 编辑器查看 OneNote 文件时,可以发现 OneNote 不会尝试加密或压缩任何内容。也就是说,如果你正在查看的.one文件而不是.onepkg,文件.onepkg类似于包含从 OneNote 笔记本导出的文件的 ZIP 文件,可以使用 7zip 打开这些文件。那么可以直接用 HEX 编辑器查看 ( .one) 将显示嵌入文件的内容,如下所示:

 

十六进制编辑器中的 OneNote 文件,显示纯文本嵌入文件

YARA规则


 

创建一个检测规则来捕获所有恶意嵌入文件是不可能的,因为通常脚本没有“magic number”,不像可执行文件具有“MZ”标头。如果有针对性的筛选嵌入PE,那么可以考虑MZ

 

下面参考了一开源筛选过滤yara,该yara不会去找哪些是恶意的,而是筛选哪些是合法的嵌入式onenote文件,可以从https://github.com/DhaeyerWolf/YARA-Rules找到:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rule OneNote_EmbeddedFiles_NoPictures
{
    meta:
        author = "Nicholas Dhaeyer - @DhaeyerWolf"
        date_created = "2023-02-14 - <3"
        date_last_modified = "2023-02-17"
        description = "OneNote files that contain embedded files that are not pictures."
        reference = "https://blog.didierstevens.com/2023/01/22/analyzing-malicious-onenote-documents/"
 
    strings:
        $EmbeddedFileGUID =  { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC }
        $PNG = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 89 50 4E 47 0D 0A 1A 0A }
        $JPG = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 FF D8 FF }
        $JPG20001 = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0C 6A 50 20 20 0D 0A 87 0A }
        $JPG20002 = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 FF 4F FF 51 }
        $BMP = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 42 4D }
        $GIF = { E7 16 E3 BD 65 26 11 45 A4 C4 8D 4D 0B 7A 9E AC ?? ?? ?? ?? ?? ?? ?? ?? 00 00 00 00 00 00 00 00 00 00 00 00 47 49 46 }
 
    condition:
        $EmbeddedFileGUID and (#EmbeddedFileGUID > #PNG + #JPG + #JPG20001 + #JPG20002 + #BMP + #GIF)
}

规则背后的逻辑如下:
YARA 规则将匹配任何具有定义嵌入文件存在于 OneNote 文件中的 GUID 。然后它将计算它找到的 GUID 的数量,如果这大于直接跟在图像文件后的 GUID 数量(此处指定为#PNG + #JPG + #JPG20001 + #JPG20002 + #BMP + #GIF),则意味着存在其他文件。如果不是,则该文件仅包含图像并被认为是安全的。

 

pyOneNote有助于提取嵌入式文件。分析人员或自动化系统可以分析文件并提供更多上下文,以确定提取的文件是否是恶意的。

 

下图展示了一个规则命中malware文件doc.one,Microsoft 将其检测为 Qakbot 植入程序。

 

vt命中结果

 

并且许多这些恶意 OneNote 文件都有一个从目录中插入的嵌入式文件Z:\builder\。我怀疑这是恶意软件生成器工具创建实际恶意文件然后将其插入 OneNote 文件的地方。如果是这种情况,那么这可用于识别这些文件并将其链接到所使用的工具。

通过 OneNote 执行脚本


 

由于我很好奇如果在 OneNote 中执行脚本会发生什么,我创建了一个概念验证 (POC),这是一个可以执行 whoami 命令的小型 .bat 脚本。

 

 

正如上面所观察到的,作为父进程的 OneNote 将cmd.exe /c {OneNoteFilePath}在存储脚本的临时版本的地方执行,这将被执行。
查看文件创建事件时,我们还观察到该文件是在磁盘上创建的:

 

 

路径的 FileCreate 事件:c:\\Users\\Hera\\AppData\\Temp\\OneNote\\16.0\\Exported\\{CCA4A94E-126B-489B-8B23-2B2C160D42AC}\\NT\\0\\whoami.bat

 

作为检测规则,它可以证明检测 OneNote 生成任何常用于脚本执行的工具:'powershell.exe', 'pwsh.exe', 'wscript.exe', 'cscript.exe', 'mshta.exe', 'cmd.exe', 'hh.exe'。此外,在路径下寻找文件创建或执行事件:C:\Users\Hera\AppData\Local\Temp\OneNote\16.0\Exported可能会得到更多的结果。

1
2
DeviceProcessEvents
| where ProcessCommandLine matches regex @".*C:\\Users\\.*\\AppData\\Local\\Temp\\OneNote\\.*\\Exported\\.*"

1
2
DeviceFileEvents
| where FolderPath matches regex @"C:\\Users\\.*\\AppData\\Local\\Temp\\OneNote\\.*\\Exported\\.*"

结论


 

后宏时代,文档传播方式被很多EDR或者AV标记,恶意攻击者正在尝试使用全新的传播malware方式,需要着重留意,虽然微软EDR对该方式拦截率高,但并不是所有人都使用微软的安全产品。

 

更多内容,关注 TIPFactory情报工厂


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//