近期, McAfee 的高级漏洞检测系统( AEDS )检测到了一些有趣的 RTF 文件,这些 RTF 文件在文档中执行“额外”的内容。而通常情况下,这些 word 文档会让用户信任并运行这些“额外”的内容,如下图展示的是当用户点击额外的内容时的画面。
可以看到当用户尝试去执行文档中附带的恶意程序时出现了警告。
由于这里 word 会有提示,所以可以预见对用户不会造成威胁。但我们还是强烈建议用户不要运行任何有附件的文档,因为 故事到这里并没有结束。就像我们使用 AEDS 发现 PDF 中潜在的安全问题 一样,我们已经检测到当打开这类 RTF 文件的一系列可疑(或是“有趣”)的表现:附加的文件会被释放到当前用户的临时文件夹中(比如在 C:/Users/<username>/AppData/Local/Temp)。如下图就是一个特别的 RTF 样本文件释放 reader.exe到了 临时文件夹中。
当 RTF 文件打开时, reader.exe 会被释放到用户的临时文件夹中。
我们发现这种情况会出现在 Windows7 和 8 中,无需安装 Office 软件(使用 WordPad 打开 RTF 文件同样能触发这类漏洞)。但是在 XP 中不能看到这种现象。
文件释放通过“ Package ” Activex 控件。格式类似如下:
“ Package ”控件是被 RTF 所引用的。
注册表中的“ Package ” ActiveX 控件信息如下:
CLSID: {F20DA720-C02F-11CE-927B-0800095AE340}
ProgID: Package
InProcServer32: %SystemRoot%/system32/packager.dll
测试中,我们观察到如下表现:
文件名以及释放的文件内容受控于RTF文件
打开RTF文档即可触发这类情况,无需额外的操作。
如果在临时文件夹中已经存在相同的文件名,恶意软件就会释放<文件>(2).<扩展名>。当前文件不会被重写。
当文件关闭时,释放的文件就会被删除。
这种行为允许任何人打开 RTF 文档时以任意文件名释放一个任意文件到临时文件夹,这个毫无疑问增加了安全顾虑。最好的方法就是在临时文件夹中创建一个独一无二的文件名,例如使用随机文件名或者创建一个程序—在临时文件夹下的指定目录。例如, Adobe Reader 11的 使用目录 acrord32_sbx ( C:/Users/<username>/AppData/Local/Temp/acrord32_sbx)来指定不同的临时文件操作。
由于大多数的应用程序和操作系统经常使用临时文件夹,而我们不知道每个程序如何使用每个临时文件,回答这个问题显然是困难的。但下面列了一些我们的想法:
在某些情况下,只要该文件存在,应用程序从临时文件夹中运行一个可执行文件。当然,在这种情况下,打开RTF文件将会很危险,这个也可以应用于DLL。在真实的环境中,我们希望这种情况尽量少一些。但事实上,大多数程序将会首先创建可执行程序或者DLL(或者如果该文件存在则重写),然后执行之。
DLL预加载问题。一些应用程序可能会在临时文件夹中创建一个可执行文件并且执行它。在这种情况下,当.exe文件存在DLL预加载问题,就会在临时文件夹中寻找那个DLL。如果具有相同文件名的DLL被放置在临时文件夹中,DLL将会被马上加载。
应用程序可能会依赖一些特殊的不存在或者不可执行的文件来执行。当这样一个文件放在临时文件夹中,它可以改变应用程序的表现或者程序的流程,带来不可预知的安全问题。
我们将其称之为临时文件夹访问漏洞。通过其他应用程序的临时文件夹访问的漏洞,攻击者可以在受害者的系统上执行额外的代码。
此类攻击方案一般包括如下几个步骤:
攻击者发送一个RTF文件给受害者。
受害者打开它,一个或者多个特别的文件释放到临时文件夹中。
如果其他程序通过我们所讨论的漏洞方式正在访问临时文件夹,此时恶意代码将会自动执行。文档可能包含一些社会工程的文本来让受害者信任接下来的一些列操作,例如运行合法的程序。
如果受害者都运行这些步骤,漏洞就会成功触发。
因此,要攻击成功,另一个程序存在临时文件访问漏洞是必须的。而有时攻击者可能还会需要和用户交互,有时不会。
这很难说。成功利用该漏洞要求攻击者在攻击前不断的去学习尝试,无论目标是否存在临时文件夹访问漏洞。一个分析的观点认为,通过测试 RTF 样本的方法通常不足以去理解攻击者的企图。例如,一个 RTF 文件释放 reader.exe 至临时文件夹中可能仅仅是一个 ”点击 - 运行 ”的把戏,或者是一个漏洞利用的尝试,如果攻击者知道这个目标正在通过漏洞的方式运行一些程序来访问临时文件夹中的 reader.exe 。
我们已经发现了一些恶意 RTF 释放的有趣的文件名:
CEH.exe
du.sfx.exe
FINCEN~2.EXE
inicio.bat
inv_875867001426_74653003.cpl
pastelyearendguidedm (3).exe
QUICKSHIPPINGDUEINVOICE.exe
Reader.exe
test.vir
高级持续性威胁通常在攻击前会先了解目标。我们建议一些组织注意这个问题,尤其是复杂的有针对性的攻击。
如果用户通过 MS Word 打开 RTF 文件,在工作区通过 Office Kill bit 可以禁用 ”Package”ActiveX 控件。我们发现通过设置如下注册表值可以解决 Office 的这个问题。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office/Common/COM Compatibility/{F20DA720-C02F-11CE-927B-0800095AE340}] "Compatibility Flags"=dword:00000400
但是如果用 WordPad 打开 RTF 文件,那么之前的工作区将不会工作。我们之前谈论过很多基于文档的攻击,最好的防护方法就是不要打开不明来源的文档。当你发觉任何可疑的时候,尽快关闭文档,不要听信文档的任何操作。这些步骤可以降低潜在攻击成功的几率。
调查显示,在 Windows 和 Office 平台下处理这些 RTF 文件时,漏洞不仅仅包括内存破坏或者单一的应用程序,系统;它所包含的内容还有很多,其开发的广度无疑给一些组织和安全公司带来了挑战。
*原文地址: blogs.mcafee ,东二门陈冠希/编译,部分内容有修改,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)