情报背景
近期安全研究员nao_sec发现了一份由白俄罗斯IP提交到VirusTotal平台的恶意Word文档,该文档利用Windows中的0day漏洞进行攻击,并最终在目标机器上远程执行恶意代码,一时在网络上引起轩然大波。文档中所使用的漏洞被称为Follina,微软在后续分配漏洞编号CVE-2022-30190,并发布了漏洞防护指南,本文将对事件中涉及的在野漏洞利用攻击技术进行研判。
组织名称 |
未知 |
战术标签 |
文档钓鱼 |
技术标签 |
CVE-2022-30190、URL Scheme、参数注入 |
情报来源 |
https://twitter.com/nao_sec/status/1530196847679401984 https://www.virustotal.com/gui/file/4a24048f81afbe9fb62e7a6a49adbd1faf41f266b5f9feecdceb567aec096784 |
01 攻击技术分析
漏洞样本滥用了在Microsoft Office将远程HTML页面作为OLE对象插入的功能,文档打开后将访问远程HTML页面并执行其中的代码。攻击者利用js代码将页面重定向,使其访问”ms-msdt:”协议的URL链接,调用本地msdt.exe并传入攻击者构造好的参数,最终执行任意PowerShell代码。
图 攻击流程
在原始样本中,PowerShell命令被通过base64编码保存(通过base64编码后可以执行带有空格的命令),分析其攻击流程如下:
1. 通过cmd.exe杀死msdt.exe进程;
2. 跳转到C:userspublic目录,遍历temp目录及其子目录寻找05-2022-0438.rar文件,并将其另存为1.rar到当前目录下;
3. 在1.rar文件寻找“TVNDRgAAA”字符串头(TVNDRg通过base64解码为MSCF,是cab格式的文件头),并将其保存为1.t文件;
4. 对1.t文件进行base64解码为1.c文件,其本质为cab文件,从中提取rgb.exe文件,并最终执行。
然而在本地测试该漏洞样本时并没有发现rar文件,其来源不得而知。可以猜测的是在rar文件中使用了与往篇攻击技术研判中CVE-2021-40444无cab利用链类似的攻击手法,即通过在rar嵌入其它不影响其本身特性的字符,使得恶意代码被隐藏。
亮点:利用ms-msdt协议触发漏洞的远程执行
MSDT全称为Microsoft Support Diagnostic Tool(支持诊断工具),该工具可以在命令行或自动化脚本中调用故障排除包。ms-msdt是一种URL Scheme,通过ms-msdt可以调用msdt.exe并传递其参数,在注册表中可以查看其执行的命令行:
图 ms-msdt协议执行命令行
msdt.exe作为具备签名的二进制程序并不是首次被用于攻击,最初作为一种LOLBAS手法被用于代理执行:构造特殊的.xml文件以执行二进制,该方式存在不能执行命令行的局限性。
图 msdt.exe命令执行LOLBAS手法
本次攻击事件所构造的攻击链却不存在该限制,攻击者通过构造特定的msdt.exe参数在目标机器执行任意PowerShell命令,分析其执行的过程如下:
攻击者指定msdt.exe运行PCWDiagnostic故障诊断包,该诊断包会调用sdiagnhost.exe执行TS_ProgramCompatibilityWizard.ps1脚本,提取出msdt.exe传递的参数并进行一系列操作,其中较为关键的是IT_BrowseForFile参数:
if(-not($ChoicesAvailable))
{
$selectedProgram = Get-DiagInput -id IT_BrowseForFile
}
else
{
$selectedProgram = Get-DiagInput -id IT_SelectProgram -choice $choices
# If the user chose the option "Not listed" we will ask them to browse for a file
if($selectedProgram -eq "NotListed")
{
$selectedProgram = Get-DiagInput -id IT_BrowseForFile
}
}
...
Test-Selection($selectedProgram)
可以看到脚本从命令行中提取出IT_BrowseForFile参数,并调用Test-Selection函数进行校验:
function Test-Selection([string]$appPath)
{
$testresult = $false
if(($appPath -ne $null) -and -not([String]::IsNullOrEmpty($appPath)))
{
$testresult = test-path -literalpath $appPath
if($testresult)
{
if(-not($type::IsFileProtected($appPath)))
{
$extension = [System.IO.Path]::GetExtension($appPath)
$testresult = ($extension -eq ".exe") -or ($extension -eq ".msi")
}
else
{
$testresult = $false
Set-Variable -name rebrowseText -value $CompatibilityStrings.Text_FILE_PROTECTED -scope global
}
}
}
Set-Variable -name appValid -value $testResult -scope global
}
该函数对参数进行了目录的合法性、文件保护以及后缀名的校验,而攻击者通过目录穿越巧妙地绕过了此校验函数。接下来构造的PowerShell命令会作为”TARGETPATH”参数调用Update-DiagRootCause,最后命令得以执行。
02 总结
此次攻击事件的攻击链中,msdt.exe的参数注入使其可以直接在本地执行任意命令,而通过URL Scheme的调用方式使得代码可以被远程执行,Office存在的不安全因素又为其提供了一个“完美”的触发环境。在整条攻击链中暴露的诸多不安全因素使其危害性巨大,近期又发生了几起利用该漏洞进行文档钓鱼的攻击事件,预测未来一段时间会有更多相关的攻击事件发生,值得安全研究者关注并提高警惕。
绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。
研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。
M01N Team公众号
聚焦高级攻防对抗热点技术
绿盟科技蓝军技术研究战队
官方攻防交流群
网络安全一手资讯
攻防技术答疑解惑
往期推荐
原文始发于微信公众号(M01N Team):攻击技术研判 | CVE-2022-30190 在野利用研判