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

乌龙的CVE-2017-8570样本及背后的狗血

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

所谓的CVE-2017-8570样本
上周360天眼实验室发现了有国外黑客在Github上发布了CVE-2017-8570漏洞的利用代码,但随即删除,以此之后发现了不少标注为CVE-2017-8570的Office恶意样本,比如下面这个VirusTotal上被标记为CVE-2017-8570的样本。

经过360天眼实验室的分析,我们发现相关的利用代码使用的还是老的CVE-2017-0199,而非新的CVE-2017-8570。我们分析如下,供同行参考。
首先解析样本中的ppt\slides\_rels\slide1.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对象:
禁用的CLSID
ProgID
CVE
{3050F4D8-98B5-11CF-BB82-00AA00BDCE0B}
htafile
CVE-2017-0199
{06290BD3-48AA-11D2-8432-006008C3FBFC}
script
CVE-2017-0199
以下栈结构反映了在未打上CVE-2017-0199补丁的环境下样本的执行流程:
0:000> k
ChildEBP RetAddr 
003c2ea4 6c49d2f5 kernel32!CreateProcessW
003c2f2c 6c49d5f7 wshom!CWshShell::CreateShortcut+0x161
003c2f8c 75753e75 wshom!CWshShell::Exec+0x19a
003c2fac 75753cef OLEAUT32!DispCallFunc+0x165
003c303c 6c4a0267 OLEAUT32!CTypeInfo2::Invoke+0x23f
003c306c 6c4967d5 wshom!CDispatch::Invoke+0x5c
003c3098 7005dc18 wshom!CWshEnvRegistry::Invoke+0x29
003c30d8 7005db6c jscript!IDispatchInvoke2+0xf0
003c3114 7005dadf jscript!IDispatchInvoke+0x6a
003c31d4 7005dc6a jscript!InvokeDispatch+0xa9
003c3200 7005d9a8 jscript!VAR::InvokeByName+0x93
003c324c 7005da4f jscript!VAR::InvokeDispName+0x7d
003c3278 7005e4c7 jscript!VAR::InvokeByDispID+0xce
003c3414 70055d7d jscript!CScriptRuntime::Run+0x2b80
003c34fc 70055cdb jscript!ScrFncObj::CallWithFrameOnStack+0xce
003c3544 70055ef1 jscript!ScrFncObj::Call+0x8d
003c35c0 7005620a jscript!CSession::Execute+0x15f
003c360c 70050399 jscript!COleScript::ExecutePendingScripts+0x1bd
003c362c 7301831f jscript!COleScript::SetScriptState+0x98
003c363c 73018464 scrobj!ScriptEngine::Activate+0x1a
003c3654 730199d3 scrobj!ComScriptlet::Inner::StartEngines+0x6e
003c36a4 7301986e scrobj!ComScriptlet::Inner::Init+0x156
003c36b4 7301980b scrobj!ComScriptlet::New+0x3f
003c36d4 730197d0 scrobj!ComScriptletConstructor::CreateScriptletFromNode+0x26
003c36f4 730237e2 scrobj!ComScriptletConstructor::Create+0x4c
003c3714 73024545 scrobj!ComScriptletFactory::CreateScriptlet+0x1b
003c3734 76fcc6fd scrobj!ComScriptletMoniker::BindToObject+0x4d
003c3760 7708440c ole32!BindMoniker+0x64
003c37e8 770c5c07 ole32!wCreateLinkEx+0x9f
003c3848 770c6137 ole32!OleCreateLinkEx+0xaa
003c3884 713a2f10 ole32!OleCreateLink+0x42
WARNING: Stack unwind information not available. Following frames may be wrong.
003c59c4 7124e908 ppcore!DllGetLCID+0x2b3090
003c6a60 710928e4 ppcore!DllGetLCID+0x15ea88
003c6a90 714adb02 ppcore!PPMain+0x2cf6c
该样本其实就是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版本如下:
Microsoft Office 2007 Service Pack 3
Microsoft Office 2010 Service Pack 2 (32-bit editions)
Microsoft Office 2010 Service Pack 2 (64-bit editions)
Microsoft Office 2013 RT Service Pack 1
Microsoft Office 2013 Service Pack 1 (32-bit editions)
Microsoft Office 2013 Service Pack 1 (64-bit editions)
Microsoft Office 2016 (32-bit edition)
Microsoft Office 2016 (64-bit edition)
需要注意的是,微软给出的补丁是严格匹配到Office的大版本的某个ServicePack的,如上微软提供Microsoft Office 2013 Service Pack 1的补丁,而对于一些更早版本的Office(例如Microsoft Office 2013),将不能安装CVE-2017-0199的mso补丁,需要先升级到最新的SP1版本才行。也有就是说,所有不在上面所列的Office版本均无法利用正常打上补丁,还是会受0199漏洞影响,下面就是例子。

[1] [2]  下一页

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