使用 Binary Refinery 从 Office 文件中提取恶意负载

admin 2025年1月28日02:39:25评论7 views字数 2001阅读6分40秒阅读模式

大家好!
在本文中,我将介绍如何使用 Binary Refinery 工具提取恶意 Office 文档的有效负载。

在此示例中,我选择了具有 SHA256 哈希的文件:

59ed41388826fed419cc3b18d28707491a4fa51309935c4fa016e53c6f2f94bc

Alexandre Borges 已经在他的博客中提供了一个很好的有效载荷提取解决方案,但我想亲自动手了解 Binary Refinery,从而展示我实现目标的步骤。

因此,本文的目的不是做出新的发现,而是展示如何在实际场景中使用 Binary Refinery。本文末尾添加了各种来源。

首先,Binary Refinery 允许我们计算所提供文件的 SHA256 哈希值。使用 emit 和 sha256 单位的组合,其中 emit 显示所提供文件的全部内容。此内容通过管道传输到 sha256 并用于哈希计算。

emit.exe file.docx | sha256.exe -t
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
计算 SHA256 校验和

接下来,我们可以使用 peek 单元来提取有关文件的一些预览信息,例如熵、文件头(魔术)和大小:

emit.exe file.docx | peek -m -l 0
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
元信息

由于我们正在处理 Office 文档,因此我们可以使用以下命令来显示 Office 文档的内容列表:

emit.exe file.docx | xtdoc.exe -l
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
恶意文档的内容

要获取有关包含的 VBA 宏的更多信息并在之后提取它们,我们可以使用单位 xtvba

emit.exe file.docx | xtvba.exe -l
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
包含 VBA 宏的元素列表

以下命令

emit.exe file.docx | xtvba.exe

可用于提取所有 VBA 宏。也可以附加特定路径,以仅提取该特定的 VBA 宏。

使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
提取的 VBA 宏(截取)

尽管 Binary Refinery 提供了多个单元来自动对 VBA 脚本进行模糊处理,但我决定自己执行此步骤:

使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
去混淆的 VBA 脚本

基本上,此脚本通过在分隔符 '!' 处从 'UserForm1' 拆分四个文本框的内容来创建一个可执行文件。每个元素或十进制数都通过 CByte() 函数转换为一个字节。之后,文件保存到 'UserForm2.TextBox1' 中文本指定的特定目录中,然后重命名或移动到 'UserForm2.TextBox2' 中包含的位置。最后,放置的文件在隐藏窗口中运行。

由于本文主要关注有效负载的提取,而不是对 Office 文档的功能进行更全面的分析,因此我仅简单介绍其他信息:

emit.exe file.docx | xtdoc.exe Macros/UserForm2/* | carve printable | peek -W 48

使用此命令,我们能够查看 UserForm2/* 的内容并雕刻可打印的字符串。

使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载

我们能够从 UserForm2 中看到文本框的内容。因此,例如,有效负载将保存在 C:UsersPublicPictureswinword.con 中,然后移动到 C:UsersPublicPictureswinword.exe。

为了提取四个文本框(用于有效负载)的内容,我使用了以下命令。peek 单元周围的括号 [ ] 用于显示从 carve 单元收集的每个结果。否则,将仅显示第一个结果。

emit.exe file.docx | xtdoc.exe Macros/UserForm1/* | carve --longest --take 4 printable [| peek ]
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
四个文本框的内容

VBA 脚本连接内容并删除 '!'。这也可以通过 Binary Refinery 来实现:

emit.exe file.docx | xtdoc.exe Macros/UserForm1/* | carve --longest --take 4 printable | repl ! " " | pack | peek -W 48
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
解码内容

上面的命令获取四个最长的可打印数据 blob 并将其通过管道传输到 repl 单元。此商品将每次出现的 '!' 替换为 ' ',并将内容传输到包装单元。Pack 会自动将数字常量解码为其二进制表示形式。例如,前两个数字常量 77 和 90 被解码为 4D 5A,这是 PE 文件的特征魔术字节。然后使用 peek 来显示整个转换。

有趣的是,如果我们去掉 repl 单元,结果是一样的:

使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载

Binary Refinery 允许我们将内容转储到磁盘以供进一步分析:

λ emit.exe file.docx | xtdoc.exe Macros/UserForm1/* | carve --longest --take 4 printable | pack | dump extractedPayload

λ emit.exe extractedPayload | sha256.exe -t
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
dumped payload (倾倒的有效负载)
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载
使用 Binary Refinery 从 Office 文件中提取恶意负载使用 Binary Refinery 从 Office 文件中提取恶意负载

原文始发于微信公众号(安全狗的自我修养):使用 Binary Refinery 从 Office 文件中提取恶意负载

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月28日02:39:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用 Binary Refinery 从 Office 文件中提取恶意负载https://cn-sec.com/archives/3680146.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息