欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

利用CVE-2018-8373 0day漏洞的攻击与Darkhotel团伙相关的分析

来源:本站整理 作者:佚名 时间:2018-08-18 TAG: 我要投稿

背景
2018年8月15日,网络安全公司趋势科技公开了其在今年7月捕获到的一例在野0day漏洞攻击,该攻击利用了Windows VBScript Engine的代码执行漏洞,经过分析对比发现该0day漏洞和2018年4月360公司首次发现影响IE浏览器并通过Office文档进行攻击的“双杀”漏洞(详见参考[1])使用了多个相同的攻击技术,极有可能是同一团伙所为。
360威胁情报中心第一时间对该0day漏洞进行了分析确认,并通过大数据关联分析确认本次的0day在野攻击与DarkHotel APT组织存在关联。
 
来源
2018年8月15日,趋势科技公开了其在今年7月11日捕获到的一例在野0day漏洞攻击技术分析,该漏洞已于公开的前一天被微软修复,漏洞编号为:CVE-2018-8373。
 
三个“双杀”0day漏洞时间线
CVE-2018-8373其实是今年以来被发现的影响Windows VBScript Engine的第三个漏洞,其中前两个均为360公司的安全研究人员首次发现,这三个漏洞均影响IE浏览器,且可以通过微软Office文档进行攻击。三个“双杀”0day漏洞发现的时间线如下:
CVE
发现时间
修复时间
描述
CVE-2018-8174
2018.4.18
2018.5.8
影响Office和IE的双杀漏洞,在野
CVE-2018-8242
2018.7.10
360安全研究人员发现并上报微软(参考[2])
CVE-2018-8373
2018.7.11
2018.8.14
影响Office和IE的双杀漏洞,在野
 
溯源与关联
获得打码后的IOC
360威胁情报中心通过大数据分析关联首先得到了趋势科技打码后的IOC地址:
http://windows-updater.net/realmuto/wood.php?who=1??????
关联同源0day攻击样本
并发现一个攻击时间和趋势科技发现在野“双杀”0day攻击在同一天的疑似使用该0day攻击的office文档样本,该Offce文档样本中内嵌的域名和趋势科技给出的域名格式一致(http://windows-updater.net/stack/ov.php?w= 1\x00who =1)

确认与DarkHotel关联
得到0day漏洞攻击所使用的域名后我们立即发现,该域名正是360威胁情报中心在今年5月发布的关于DarkHotel APT团伙最新的攻击活动中使用过的域名(详见参考[4]):


在360威胁情报中心威胁平台中输入该域名也会立即关联到DarkHotel:

CVE-2018-8373漏洞分析
如下所示为趋势给出的对应POC触发代码:

如下为该漏洞和今年5月360捕获的CVE-2018-8174的POC对比,CVE-2018-8174主要的漏洞原因在于Class_Terminater中可以对释放的内存对象继续赋值,从而导致释放后重用,而这次的CVE-2018-8373则是类的Propert Get操作中可以修改对应的类成员array的长度,从而导致之后的对象重用:

如下为对应的的POC代码,POC代码很简单,VulClass类中定义了array成员变量,
方法Class_Initialize及Public Default Property Get P。
其中Class_Initialize是VB中一个已经弃用的方法,用于在类创建的时候实现对应的操作,重载后可以在类创建时完成相应的初始化工作,之后被new代替。
Default Property为一个类属性,被Public Default Property Get P重载后,对该类的访问将触发相应的操作,在POC中即执行ReDim Preserve array(1)。
ReDim用于对指定的内存重新分配,其最终在VB引擎中通过SafeArrayRedim函数实现,熟悉VB漏洞的话,可以知道该函数就是之前CVE-2015-6332漏洞的根源:

POC中首先执行该行代码,new的时候对应执行以下函数VBScriptClass::InitializeClass,由于VulClass类中重载了Class_Initialize方法,因此通过vbscript!CScriptEntryPoint::Call派发进入到对应的编码者实现的Class_Initialize方法中:
Set cls = New VulClass

Class_Initialize方法中修改对应的array长度:
Private Sub Class_Initialize
ReDim array(2)
End Sub
可以看到此时生成的Array对象如下所示,其成员变量数为3,对应的pvData为0x0514dfd0:

之后运行以下代码,VB引擎解析以下代码的顺序是从左自右扫描的,因此首先会进行cls.array(2)的操作:
cls.array(2) = cls
此时会调用函数vbscript!AccessArray判断对应array(2)是否可访问,如下所示此时获取对应array的内存对象:

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载