使用加密的OFFICE二进制格式逃避检测
这篇文章由英特尔安全的Haifei Li 和英特尔实验室的Xiaoning Li 发布。
微软OFFICE文档在我们的工作和个人生活中扮演着重要的角色。不幸的是,在过去几年中,我们已经看到了一些针对OFFICE文档的攻击,特别是一些关键的0day攻击。这里有一些比较出色的:
CVE-2014-4114/6352,“Sandworm”0day攻击,在2014年10月被报道。迈克菲实验室提供了对这一漏洞和微软最初失败的补丁的深入的原理分析。
CVE-2014-1761,高度制作的0day攻击,在2014年3月被谷歌发现。请阅读这里,了解为什么我们说它是高度制作的。
CVE-2013-3906,微软OFFICE文档中图形组件的一个0day漏洞。这个0day攻击在2013年10月被迈克菲实验室检测到并被报道。
CVE-2012-0158/1856,MSCOMCTL.OCX中相当老的两个漏洞,但它们被攻击者收藏多年。最终在利用时被发现。
在迈克菲实验室,我们正对OFFICE安全做一些领导性研究,以驱动对检测和保护的改革。最近,我们已经看到针对Sandworm漏洞的攻击利用增多。最重要的是,威胁者已经介绍了一些有趣的检测回避技术,我们希望与安全社区进行分享。
PPSX与PPS
我们已经看到了相当多的Sandworm攻击(CVE-2014-4114)伪装成.pps(幻灯片)格式而不是当前的.ppsx格式,使用了Office Open XML格式,替换了旧的OFFICE二进制格式。这种二进制格式仍然被OFFICE兼容性所支持。因为开放的XML格式是透明的,它是易于解析和理解的第三方应用程序,包括安全产品。因此,大多数安全厂商对于这些使用开放XML格式的文件,并不能检测出CVE-2014-4114漏洞问题。
这是一个不同的故事,.pps文件使用OFFICE二进制格式。即使微软已经发布了规范,格式也不容易理解。因此,安全产品检测出使用这些格式的漏洞利用文件是有难度的。当然,坏人都意识到了这一点,他们已经开始提供CVE-2014-4114的利用,使用.pps格式而不是.ppsx格式。一个例子是前几天ThreatGeek报道
的鱼叉式网络钓鱼攻击。(我们也跟踪了这一攻击)在这次攻击中,该利用被改装成了.pps格式,成功的避免了大多数AV检测。普通PPS与加密的PPS
幸运的是,即使解析二进制格式是困难的,它仍然是一种“普通”格式,这意味着如果有好的签名和泛型模型,恶意字节就不能隐藏。但是利用的作者并不是仅仅转到.pps文件。在迈克菲实验室,我们看到他们现在正对利用进行加密,使它们更难被察觉。
让我们看看一个正常的.pps和一个加密的.pps,看起来像是通过检测样品中我们所发现的普通pps。正如我们在下图中所看到的,密钥字节(字符串“package”)仍然可以被看到,这表明该字节没有加密。
这里是加密的.pps:
在加密的版本中,我们无法找到任何恶意字节。
让我们试着打开PowerPoint来编辑样本。为了避免运行它,我们首先重命名它从.pps到.ppt。
该漏洞利用的作者巧妙的利用了OFFICE的一个功能,允许作者保护文档,在查看或者编辑。在这个例子中,作者用一个密码加密了文件,允许任何人查看但不能编辑。(当我们打开一个.pps文档(幻灯片),我们是真正的“观看”它,这就是为什么利用正常工作没有密码提示。)另一方面,以为内文件不能被编辑,它可以防止安全产品进行内容分析,也可以防止其他人静态分析恶意样本。
我们已经跟踪了威胁活动和加密的OFFICE漏洞一段时间。这里是一个比鱼叉钓鱼更老的例子。MD5值:2E63ED1CDCEBAC556F78F16E8E872786,文件名“Attachment Information(英文版本).pps”,首次出现是在5月12日在VirusTotal 上。截止7月2日,在VirusTotal上仍由于加密而未被检测。
分析加密利用中的恶意代码
在CVE-2014-4114的利用中,这种恶意.pps样本将一个恶意软件放到temp目录并且运行它作为update.dat (9421D13AA5F3ECE0C790A7184B9B10B3)。
文件的主要功能:
Main函数执行几个任务:
将encrypted .exe文件解密到$AppData\Roaming\SearchCache.dll (97FE2A5733D33BDE1F93678B73B062AC)
运行一个新的rundll32.exe进程调用导出的SearchCache.dll (C:\Windows\system32\rundll32.exe $AppData\Roaming \SearchCache.dll”,_flushfile@16 $AppData\Local\Temp\update.dat)中的API_flushfile@16
在导出的API _flushfile@16中,第一个代码块用来逃避检测,然后删除原本的update.dat并且创建一个新的线程来执行其他任务。
新的线程连接到控制服务器,手机本地系统信息,并将数据发送到控制服务器。这个线程同时下载irmon32.dll并且为它未来的恶意行为注册一个服务。详细步骤:
威胁情报
为了帮助我们的同行进行分析,这里放出一些样本的哈希值(MD5):
0BC232549C86D9FA7E4500A801676F02
12F8354C83E9C9C7A785F53883C71CFC
142B50AEAEBE7ABEDA2EC3A05F6559B6
1E479D02DDE72B7BB9DD1335C587986B
209470139EE8760CA1921A234D967E40
3EA3435FC57CECB7AD53AEE0BBE3A31D
4AF0B2073B290E15961146E9714BD811
6360DDC19A858B0CE3DB7D1E07BC742F
710A39FA656981A81577D2EE31B46B18
719A7315449A3AE664291A7E0C124F0A
822F13D2A8AE52836BB94D537A1E3E3C
864EC7ED23523B0DC9C4B46DE3B852D1
8675174A45AABC8407C858D726ABB049
8A6A6ADCDE64420F0D53231AD7A6A927
96432AC95A743AC329DF0D51C724786F
AD2A5B0AF9B3188F42A5A29326CDDB0E
B4F788E76E60F91CF35880F5833C9D27
B86297F429FFBC8AFD67BDDD44CBB867
D57DF8C7BA9F2119660EA1BCE01D8F4A
E5BEF07992F88BCF91173B68AC3EA6BC
E7399EDE401DA1BACB3D2059A45F0763
结论与反应
这些逃避伎俩对于防卫来说是一个真正的挑战。尽管安全始终是一个拉锯战,我们需要保持领先于坏人。这种情况也强调了一个事实,即在今天的网络环境中,没有一个单一的安全产品(无论是基于网络,节点,还是沙箱)可以防止所有的威胁。对于这种威胁,我们的基于沙箱的Advanced Threat Defense 和Host Intrusion Prevention是一个理想的选择。(如果你没有打Sandworm漏洞的补丁,你最好打上它)迈克菲杀毒检测过了我们所讨论的两次活动,包括“普通”和“加密”的漏洞利用文件。
此外
说到OFFICE安全,我们将在今年8月8号在美国拉斯维加斯举行的Black Hat USA 2015安全会议上做一个介绍。我们将介绍一些我们的原创,关于OFFICE中重要的OLE特征的一些前沿研究。我们想帮助社区更好的理解OFFICE OLE的风险并且更好的保护用户。