所谓的CVE-2017-8570样本
上周360天眼实验室发现了有国外黑客在Github上发布了CVE-2017-8570漏洞的利用代码,但随即删除,以此之后发现了不少标注为CVE-2017-8570的Office恶意样本,比如下面这个VirusTotal上被标记为CVE-2017-8570的样本。
经过360天眼实验室的分析,我们发现相关的利用代码使用的还是老的CVE-2017-0199,而非新的CVE-2017-8570。我们分析如下,供同行参考。
首先解析样本中的pptslides_relsslide1.xml.rels文件, rId3是一个OLE对象,指向一个外部链接,注意这个字符串 ”script:http//[server]/test.sct” ,其中重要的是”script:”,这里标识了接下来要使用的Moniker(通过MkParseDisplayName()),也就是Script Moniker。
而Script Moniker正是微软4月份的补丁中禁用掉的两个Moniker之一:
2017年4月,修复CVE-2017-0199时禁用了htafile对象和script对象:
以下栈结构反映了在未打上CVE-2017-0199补丁的环境下样本的执行流程:
该样本其实就是CVE-2017-0199的另外一种利用方式(插入htafile或者script),而不是CVE-2017-8570 。
CVE-2017-0199的补丁陷井
对于上面这个所谓的CVE-2017-8570样本(事实上就是CVE-2017-0199)在我们以为打了CVE-2017-0199补丁的机器运行,漏洞竟然可以被触发。经过更深入的分析,我们发现问题出在补丁没打全上。
微软4月份发布的CVE-2017-0199补丁被分成了两个部分,一个是针对Office的补丁(修改MSO.dll),一个是对Windows的补丁(主要修改了ole32.dll),这两个补丁必须都安装才可以保证不受CVE-2017-0199的影响。
红框部分为Office补丁,蓝框部分为Windows系统补丁。
Windows系统补丁大多会被正常安装,但Office的补丁是否能正常安装取决于当前的版本,微软在安全通报中所列的可打补丁的Office版本如下:
经过我们的验证发现,没有在上表列出的版本的Office,不能触发htafile版本的漏洞利用代码, 而script的漏洞利用代码是可以正常触发的,下面是我们在Win7 x86、Office 2013 Pro Plus的环境下,使用Script Moniker的漏洞利用代码成功触发的截图:
需要注意的是,微软给出的补丁是严格匹配到Office的大版本的某个ServicePack的,如上微软提供Microsoft Office 2013 Service Pack 1的补丁,而对于一些更早版本的Office(例如Microsoft Office 2013),将不能安装CVE-2017-0199的mso补丁,需要先升级到最新的SP1版本才行。也有就是说,所有不在上面所列的Office版本均无法利用正常打上补丁,还是会受0199漏洞影响,下面就是例子。
上例Office 2013 Pro Plus没有在微软给出的受影响版本中(补丁给的是Microsoft Office 2013 Service Pack 1),所以不能成功安装mso补丁,只安装了ole部分的补丁,两个补丁缺少一个漏洞可以成功利用。
我们还测试了类似环境下的Office 2007、Offices 2010等未在受影响版本范围内的Office,均可以成功利用,考虑到国内Office盗版横行补丁不全的现状,0199漏洞的影响面非常大而且将长期存在。目前看来这一套使用Script Moniker的漏洞利用比hta的exp适用范围更广,更具威胁性,可以确定将来一段时间内使用这一套漏洞利用的CVE-2017-0199恶意样本将会大量增加。
修复建议
针对在受影响版本的office办公软件安装2017年4月的安全补丁,确保两个补丁都成功安装。对于不在受影响版本范围内的Office,首先应当将Office升级到最新的SP版本,然后将CVE-2017-0199的补丁打上。如果不能升级到指定的Office版本,可以酌情考虑禁用以下注册表项:
注册表项:
参考链接
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-0199 http://justhaifei1.blogspot.kr/2017/07/bypassing-microsofts-cve-2017-0199-patch.html http://bobao.360.cn/learning/detail/3945.html