本文分享自天翼云开发者社区《OneNote Embedded 文件滥用检测》,作者:Icecream

攻击技术

在这些网络钓鱼活动中被滥用的OneNote功能是在图片后面隐藏嵌入式文件,诱使用户点击图片。如果图片被点击,它将执行隐藏在下面的文件。这些文件可能是可执行文件、JavaScript文件、HTML文件、PowerShell、.... 基本上任何类型的文件,在执行时都可以执行恶意软件。最近,我们还观察到.chm文件的使用情况,它有一个嵌入的index.html文件,将运行内联的JavaScript。在Windows系统中,这大致上是指执行脚本/文件的以下进程之一:.index.html,'powershell.exe', 'pwsh.exe', 'wscript.exe', 'cscript.exe', 'mshta.exe', 'cmd.exe', 'hh.exe'

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 打开这些文件。 OneNote 文件 ( .one) 将显示嵌入文件的内容,如下所示:

这意味着我们可以在分析这些文件时轻松检查已知的误报,这将我带到下一点,创建检测规则。

YARA规则

创建一个检测规则来捕获所有恶意嵌入文件并不容易,因为通常脚本没有“魔法字节”,不像可执行文件具有著名的“MZ”标头。虽然创建一个看起来像之前观察到的十六进制字符串 + MZ 文件头的 YARA 规则很容易,但这只会标记嵌入式可执行文件。如果这是你的目标,那么这是一个很好的规则,但是我想要一些更灵活的东西,我可以在电子邮件网关上使用它来标记所有潜在的恶意传入 OneNote 文件。

所以我采取了不同的方法。我观察到在 OneNote 文件中嵌入图片(例如:屏幕截图)是很常见的。我没有观察到很多嵌入了其他文件的案例。这导致我创建了一个 YARA 规则,该规则将查看 OneNote 文件,忽略指示图像存在但会在观察到任何其他文件时发出警报的文件部分。因此,我不会寻找恶意文件,而是会忽略已知的合法文件。这个简单的技巧让我能够创建一个高置信度的检测规则,同时不会让分析师因太多误报而超载。

当然每个环境都是不同的,如果你的环境中的 OneNote 文件中嵌入 PDF 文件很常见,你也应该排除那些 PDF 文件。因此,在测试期间建立基线很重要。 下面是这种技术的一个例子。00之后的 '也可以??替换为。??尽管这些字节应始终为空,但如果字节被更改,此规则将不会检测文件。

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),则意味着存在其他文件并且规则火柴。如果不是,则该文件仅包含图像并被认为是安全的。

文件被标记后,分析师仍应查看嵌入的文件。DissectMalware(https://github.com/DissectMalware/pyOneNote)创建了一个惊人的 python 脚本,有助于提取嵌入式文件。分析师或自动化系统可以分析文件并提供更多上下文,以确定提取的文件是否是恶意的。

结论

这篇文章旨在引导您逐步完成创建 YARA 检测规则的过程,该规则可以帮助您防止受到其中一个样本的危害。创建这样的检测规则时应该考虑的是,您必须从一个基线开始,在这个基线中您知道哪些嵌入式文件在您的环境中是常用的。虽然此 YARA 规则可以在“阻止”模式下使用,它会阻止所有与此规则匹配的电子邮件,但建议在“警报”模式下使用此 YARA 规则,其中会为 SOC 团队创建警报,并且电子邮件一直保留到附件分析完成,因为这将最大限度地减少可能的合法文件被阻止的影响。

OneNote Embedded 文件滥用检测的更多相关文章

  1. 利用SHELL脚本实现文件完整性检测程序(1.2版更新)

    一..开发背景 因时势所逼,需要对服务器的文件系统实行监控.虽然linux下有不少入侵检测和防窜改系统,但都比较麻烦,用起来也不是很称手.自己琢磨着也不需要什么多复杂的功能,写个脚本应该就可以满足基本 ...

  2. 文件编码检测.ZC一些资料(包含java的)

    1.IMultiLanguage3 或者 IMultiLanguage2 1.1.怎么判断XML 的编码格式(UTF-8或GB2312等)-CSDN论坛.html(https://bbs.csdn.n ...

  3. 大规模异常滥用检测:基于局部敏感哈希算法——来自Uber Engineering的实践

    uber全球用户每天会产生500万条行程,保证数据的准确性至关重要.如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃圾邮件.虚假账户和付款欺诈等.放大正确的数据 ...

  4. 对 Visual Studio 中的Resharper禁用对某种文件的检测

    原因:在Visual Studio中安装Reshaper后,就会对各种文件进行代码检测,但是因为Reshaper更新的速度不是很及时,所以有时会对Visual Studio中某些新功能误断,导致Cod ...

  5. Linux AIDE(文件完整性检测)

    一.AIDE的概念 AIDE:Advanced Intrusion Detection Environment,是一款入侵检测工具,主要用途是检查文档的完整性.AIDE在本地构造了一个基准的数据库,一 ...

  6. 文件编码检测.ZC

    1.今天(20181101) 发现 g文件中的 xml头 和 文件编码不一致,最后发现 貌似是我搞错了,人家的文件 编码方式写的是对的. 我发现的现象是:XML里面写的是"GBK" ...

  7. Matlab M文件变量检测与传递

    M文件中变量的检测与传递 可变数量的输入输出变量(varargin,vararout): Matlab的输入输出变量数量可变,并具有以下特点: 可变输入输出变量必须在正常变量之后 varargin和v ...

  8. 运维常用shell脚本二(压缩文件、过滤不需要的文件、检测进程)

    一.压缩指定目录下的文件并删除原文件 #!/bin/bashZIP_DAY=7 function zip { local dir=$1 if [ -d $dir ];then local file_n ...

  9. zip格式文件编码检测

    解压后文件名乱码 由于zip格式文件无编码存储的结构,因此解压时无法知道原先的编码. 当解压zip格式文件时使用的编码和原编码不一致时,就可能会出现解压后文件名乱码问题. 猜测编码 基于上述问题,需要 ...

  10. java上传文件类型检测

    在进行文件上传时,特别是向普通用户开放文件上传功能时,需要对上传文件的格式进行控制,以防止黑客将病毒脚本上传.单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成 ...

随机推荐

  1. 第10章 LINQ to XML

    第10章 LINQ to XML 10.1 架构概述--DOM 和 LINQ to XML 的 DOM XML 文档可以用一棵对象树完整的表示,这称为"文档对象模型(document obj ...

  2. rbd常用的配置参数

    本文分享自天翼云开发者社区<rbd常用的配置参数>,作者:l****n rbd的基本介绍 rbd的架构如下图所示: rbd采用CRUSH算法实现数据的随机分布.CRUSH算法,即Contr ...

  3. DeepSeek太火,但老板们别慌,这里有份AI项目开展手册

    关注公众号回复1 获取一线.总监.高管<管理秘籍> 这两天有老板陆续在咨询:到底应该如何基于DeepSeek开展AI项目? 抛开一些偏细节.偏敏感的付费内容,其实有一套方法论倒是可以分享. ...

  4. AGC043E

    抄一下 https://www.luogu.com.cn/article/n32presk,写的非常好. 下面是要把问题转化为一个群论问题. 定义拓扑空间:全集 \(X\) 和它的一个子集族 \(T\ ...

  5. C# 钩子函数使用

    1. 什么是钩子 hook(钩子)是windows提供的一种消息处理机制平台,是指在程序正常运行中接受信息之前预先启动的函数,用来检查和修改传给该程序的信息,(钩子)实际上是一个处理消息的程序段,通过 ...

  6. 发那科机器人R2000iC齿轮箱维修方法步骤归纳

    一.发那科机器人R2000iC齿轮箱常见故障类型及原因 齿轮磨损:长时间的重载工作或润滑不良可能导致齿轮磨损,表现为噪音增大.振动加剧等. 轴承故障:轴承承受了齿轮箱的径向和轴向载荷,其故障可能导致齿 ...

  7. KUKA库卡机器人KR120维修故障参考方案

    随着智能制造的飞速发展,KUKA库卡机器人KR120以其稳定的特点,在自动化生产线上扮演着举足轻重的角色.然而,任何机械设备在长期运行过程中都难免会遇到故障.本文将针对KUKA库卡机器人KR120维修 ...

  8. vue - [04] 配置

    关闭ESLint. 001 || ESLint (1)定义   ESLint是一个插件化的JavaScript代码检查工具.在vue项目中,它可以检查.vue文件中的JavaScript代码(包括脚本 ...

  9. Linux - top相关的快捷键

    q:退出top命令窗口(quit). k:按照进程ID终止(kill)一个进程.例如,你可以输入k,然后输入进程的PID来终止它. r:重新设置进程的优先级.输入r后,你可以输入新的优先级值. f:进 ...

  10. 有关C++程序设计基础的各种考题解答参考汇总

    早先年考研的主考科目正是[算法与数据结构],复习得还算可以.也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考. [1] 原题目地址:https://zhidao.baid ...