MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码

点击蓝字 关注我们

 介绍


日本计算机应急响应团队(JPCERT)分享了在2023年7月检测到的一种新的“PDF中的MalDoc”攻击,该攻击通过将恶意Word文件嵌入PDF中来绕过检测。多数工具识别该文件为PDF,但办公软件程序可以将其作为常规Word文档打开,若文件具有配置的宏,并且Microsoft Office上没有禁用自动执行宏的安全设置,则将运行宏代码。

简述及复现

正如JPCERT原文说的有关MalDoc in PDF的详细信息,“The attacker adds an mht file created in Word and with macro attached after the PDF file object and saves it. ”

在PDF文件结构对象的后面,添加在Word中创建带有宏的mht文件并保存。也就是将这个带有宏的MHT 内容添加到 PDF 的对象结构后面。最终生成出来是一个有效的PDF文件,但也可以在Word程序中打开。该文件作为PDF和Word MHT的组合,可以以两种文件格式进行打开,这种文件称为Polyglots,即是多种不同文件类型的合法形式,以此进行检测规避。


复现之前需要了解下PDF文件结构。可以参考zgao大佬的PDF文件结构分析文章(https://zgao.top/%e6%95%b0%e6%8d%ae%e6%81%a2%e5%a4%8d%e4%b8%83-pdf%e6%96%87%e4%bb%b6%e7%bb%93%e6%9e%84%e5%88%86%e6%9e%90/)。样本(- ef59d7038cfd565fd65bae12588810d5361df938244ebad33b71882dcf683058)中是没有xref表和trailer部分的,显然这不影响该样本文件被识别为PDF文件,但运行就是会提示文件损坏的错误。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


但在复现过程中发现,直接在PDF文件结构内容后追加带有宏的mht文件内容就也是可以的,并且使得该Polyglots能以PDF格式正常打开文件,也能以word程序正常打开。


首先创建带有宏的mht文件,这里写一个弹框的宏代码,另存为MHT文件。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


然后利用python的reportlab库简单创建PDF文件。

from reportlab.pdfgen import canvas  from reportlab.lib.units import mm    pdf_canvas = canvas.Canvas("example.pdf")  pdf_canvas.setTitle("Example PDF")  pdf_canvas.setFont("Helvetica", 12)  pdf_canvas.drawString(50*mm, 250*mm, "Hello, Pdf!")  pdf_canvas.save()


因为PDF数据流stream在以Word程序打开的时候存在编码问题,笔者在Word程序和文件格式转换生成PDF创建出来的PDF文件均无法顺利运行MHT部分,最后用reportlab库创建才成功。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


接着把MHT文件内容直接添加到刚新建的PDF结构内容的后面。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码
MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


双击运行,能看到PDF被正常打开,如果打开方式是用Word程序,则会看到Word MHT也能正常打开,并且单击“启用编辑”以退出受保护的视图,能看到运行了宏代码

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码
MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


这里有个需要注意的地方是,PDF对象的<<>>里面的内容之间不要有换行符隔开,即不要分行,需要手动调整。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


否则在使用Word程序打开的时候会出现解析失败的情况。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


可以把PDF文件后缀改成doc,以便系统用Word程序启动,该文件仍被识别为PDF文件。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码
MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码


该PDF中的MalDoc不会绕过禁用Microsoft Office上自动执行宏的安全设置,在实战过程中还需要结合一定的社工。


利用CS生成恶意宏代码,再次生成恶意Polyglots文件,实际看看查杀情况

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码

简单分析

MHT文件包含的VBA宏,是以ActiveMime格式存储。将上述复现中嵌入的 MHT 与恶意样本中的MHT结构部分进行比较,可以看到恶意样本为了防止被识别检测,把本应为ActiveMime 的部分,改为JPEG,并且下面的Base64 内容被多个“0D0A”间隔,意图混淆“QWN0aXZlTWlt”标识符。

MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码

若有更好的绕过检测方法,欢迎交流研究~

 结语

具体防范措施可以看原文和一些参考文章,都有详细的介绍。

https://blogs.jpcert.or.jp/en/2023/08/maldocinpdf.html

https://blog.didierstevens.com/2023/08/29/quickpost-pdf-activemime-maldocs-yara-rule/

https://thehackernews.com/2023/09/beware-of-maldoc-in-pdf-new-polyglot.html

 申明


本公众号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,

所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法.


原文始发于微信公众号(Desync InfoSec):MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码

版权声明:admin 发表于 2023年9月20日 下午3:12。
转载请注明:MalDoc in PDF,在PDF中隐藏恶意Word文档并执行宏代码 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...