深入解析Microsoft Word RTF漏洞与防护策略

本文详细分析了Microsoft Word RTF解析漏洞(CVE-2014-1761)的技术细节,包括ASLR绕过机制、ROP攻击链构造,并提供EMET防护配置、文件阻塞策略等实战防护方案与入侵指标(IOC)。

安全公告2953095:防护建议与检测方案

今日微软发布安全公告2953095,通报Microsoft Word中存在一处漏洞。目前我们发现有针对Microsoft Word 2010的有限针对性攻击。本文将讨论缓解措施和临时防御策略,帮助客户在安全更新发布前进行防护,同时提供野外观察到的漏洞利用代码的初步技术细节。

缓解措施与临时解决方案

野外利用程序利用了一个未明确的RTF解析漏洞结合ASLR绕过技术,该技术依赖于可预测内存地址加载的模块。

首先,我们的测试显示EMET默认配置可以阻断野外观察到的利用程序。在此案例中,EMET的"强制ASLR"和反ROP功能有效阻止了攻击。更多关于EMET的信息请访问:http://www.microsoft.com/emet。利用代码似乎针对Word 2010,并深度依赖特定的ASLR绕过技术。我们很高兴在测试中发现,由于Word 2013引入了ASLR强制实施,该利用程序在该版本上会失败(导致崩溃)。

除了EMET缓解措施外,用户还可以通过以下建议的临时解决方案之一来应用更强的保护:

  • 禁用RTF文件打开功能;
  • 在信任中心设置中强制Word始终在保护视图中打开RTF文件。

为便于部署第一个解决方案,我们提供了Fix it自动化工具。该工具使用Office的文件阻止功能,并添加少量注册表键值以防止所有Word版本打开RTF文件。安装Fix it后,打开RTF文件将显示以下消息:

如果阻止RTF文件不可行,企业可以在信任中心设置中强制"在保护视图中打开选定的文件类型"而不是"不打开选定的文件类型"。Office 2010/2013中的"保护视图"模式不允许加载ActiveX控件。这将缓解我们观察到的攻击。启用此解决方案后,Word将提示保护视图金条,但仍允许文档预览。

企业管理员还可以考虑使用Office的信任中心功能来自定义保护,而不是使用Fix it,因为这些设置可以通过GPO管理和部署。更多详情请参考:http://office.microsoft.com/en-us/word-help/what-is-file-block-HA010355927.aspx#_File_Block_settings。

理论上的Outlook攻击向量

通过预览窗格存在理论上的Outlook RTF漏洞攻击向量。预览窗格的功能减少使得此攻击向量极难实施,迄今为止我们从未见过利用此机制的利用程序。

利用程序技术细节

野外检测到的攻击具有局限性且针对性很强。恶意文档旨在触发RTF解析代码中的内存损坏漏洞。攻击者嵌入了一个辅助组件以绕过ASLR,并利用本地RTF编码方案使用面向返回编程(ROP)技术制作ROP小工具。恶意文档的结构和各个块如下图所示。

当内存损坏漏洞被触发时,利用程序获得初始代码执行权限,为绕过DEP和ASLR,它尝试执行ROP链,分配大块可执行内存并将控制权转移给第一段shellcode(蛋猎程序)。此代码随后搜索放置在RTF文档末尾的主shellcode并执行它。

主shellcode的一个特殊之处在于它采用了多个连续的解密层和著名的反调试技巧,如调试标志测试、RDTSC计时检查和跳过钩子的跳转,可能是为了击败自动化沙箱、分析工具和研究人员。shellcode还编程了特殊的基于日期的停用逻辑。实际上,它解析"C:\Windows\SoftwareDistribution\ReportingEvents.log"文件的内容,并扫描机器上安装的所有可用Microsoft更新。如果2014年4月8日之后安装了更新,shellcode将不执行任何额外的恶意操作。这意味着即使在可靠代码执行成功利用后,在此日期之后shellcode可能决定不投放辅助后门有效载荷而直接中止执行。当激活逻辑检测到触发条件时,利用程序在临时文件夹中投放名为’svchost.exe’的后门文件并运行它。投放的后门是用Visual Basic 6编写的通用恶意软件,通过HTTPS通信,并依赖通过WScript.Shell执行多个Windows脚本,可以安装/运行额外的MSI组件。

检测与防御指标

我们提供了良好的IOC(入侵指标)列表,希望促进防御工作,帮助安全厂商和专业人仕防护此特定攻击。文件中当前后门使用的远程C&C服务器使用加密SSL流量,带有可轻松检测的静态自签名证书。

YARA规则 (RTF)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
rule SA2953095_RTF {
    meta:
        description = "MS Security Advisory 2953095"
    strings:
        $badHdr = "{\\rt{"
        $ocxTag = "\\objocx\\"
        $mscomctl = "MSComctlLib."
        $rop = "?\\u-554"
    condition:
        filesize > 100KB and filesize < 500KB and
        $badHdr and $ocxTag and $mscomctl and #rop>8
}

样本哈希

文件名:%TEMP%\svchost.exe
MD5:af63f1dc3bb37e54209139bd7a3680b1
SHA1:77ec5d22e64c17473290fb05ec5125b7a7e02828

C&C服务器与协议

C&C服务器:https://185.12.44.51
端口:443
注意:在端口80上,C&C主机提供模仿"http://www.latamcl.com/“网站内容的网页
GET请求示例:https://185.12.44.51/[随机字母字符].[3字符]?[编码有效载荷]
用户代理字符串:“Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64;2
Uuhgco}%7)1”

C&C SSL证书 (自签名)

颁发者:CN=* O=My Company Ltd S=Berkshire C=NW
有效期开始:2013/1/1 3:33 AM
有效期结束:2014/1/1 3:33 AM
公钥长度:1024位
公钥:UnusedBits = 0
0000 30 81 89 02 81 81 00 dc 72 fc af 8f 51 de 2d 27 00
0010 3e de ad 21 ae 25 11 b6 b0 6e ce 6d 79 e4 d3 81 00
0020 4e 73 11 44 51 63 09 3b 1c e7 79 1f 85 82 94 c1 00
0030 e1 f1 83 b3 1c 6d 53 58 28 07 b5 80 86 30 51 2d 00
0040 78 c0 48 e8 b2 8d fb 84 e1 d1 59 ff d5 4e 1f 8f 00
0050 ff 60 44 56 6b 7b 4d 72 42 d6 da 6a 4c d4 6b 7d 00
0060 f1 68 4d 2c 62 58 53 e7 cd cc a1 a4 a2 7a 29 7d 00
0070 63 eb 42 30 af 24 eb 20 4c 86 f5 9e 6f 48 1c bd 00
0080 28 aa 47 13 4b cc 53 02 03 01 00 01
证书哈希(md5):f0 82 aa f8 16 0e 83 8c 20 d7 95 f0 9d d2 01 57
证书哈希(sha1):df 72 40 fb 9b cd 53 12 eb a5 f9 c2 dd e7 a2 9a 1d c8 f3 55

崩溃指标

故障应用程序名称:WINWORD.EXE,版本:14.0.7113.5001,时间戳:0x52866c04
故障模块名称:unknown,版本:0.0.0.0,时间戳:0x00000000
异常代码:0xc0000005
故障偏移:0x40002???
故障进程ID:n/a
故障应用程序启动时间:n/a
故障应用程序路径:C:\Program Files\Microsoft Office\Office14\WINWORD.EXE
故障模块路径:unknown

注册表指标

添加的注册表键:HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce\Windows Startup Helper="%windir%\system32\wscript.exe %TEMP%[恶意.vbs]”
可能创建的服务名称:“WindowsNetHelper”

  • Chengyun Chu and Elia Florio, MSRC Engineering
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计