背景

2020年1月14日，微软正式宣告Windows 7系统停止更新。在Windows 7正式停服关键时间节点的第二天，即2020年1月15日，360安全大脑在全球范围内就捕获了首例同时利用IE浏览器和火狐浏览器两个0day漏洞进行的复合攻击，由于是全球首家捕获，我们将其命名为“双星”0day漏洞攻击。

“双星”0day漏洞的细节已第一时间分别报告给了微软和Mozilla，在通过短暂的沟通后，微软和Mozilla官方都确认了0day漏洞，此次漏洞影响最新版本的火狐浏览器和IE浏览器及使用了相关浏览器内核的应用程序，同时官方为漏洞分别分配了CVE-2019-17026（火狐浏览器）和CVE-2020-0674（IE浏览器）两个漏洞编号。通过360高级威胁应对团队的分析溯源判定，“双星”0day漏洞是被活跃近十余年的半岛APT组织Darkhotel(APT-C-06)所利用，主要针对我国商贸相关的政府机构进行攻击。

攻击流程分析

我们发现“双星”0day漏洞的攻击是利用office漏洞文档、网页挂马和WPAD本地提权的多种攻击方式进行的复杂组合攻击。完整的攻击流程如下：

以IE x86为例：

IE加载JS-1漏洞利用成功，获得代码执行权限，第一次执行JS-1中的shellcode。 Shellcode利用winhttp API（winHttpOpen和WinHttpGetProxyForUrl） 触发WPAD服务的运行。 WPAD服务运行后从远程加载JS-1，再次运行脚本中的shellcode，shellcode通过判断进程名是否为svchost来判断是否在服务中被运行。 Shellcode从远程下载后续文件，并获取当前系统版本来决定是否需要使用DCOM提权，win7下的WPAD服务具有system权限， 不需要使用提权，win10下的WPAD服务为local Service，则利用bits服务来提权，最后运行下载的后续文件。

攻击细节分析

双星漏洞网页会判断当前浏览器为IE还是Firefox，操作系统为32位还是64位，然后加载相应的exploit攻击代码。

攻击者可以直接利用双星漏洞进行网页挂马攻击，有意思的是我们发现了一例Office漏洞文档触发的双星漏洞，是默认打开IE浏览器进行攻击。

初始攻击使用了office公式编辑器漏洞（CVE-2017-11882），攻击者根据目标精心制作了诱饵文档。

当受害者打开漏洞文档触发漏洞后，恶意代码会启动公式编辑器，利用公式编辑器进程再打开IE浏览器访问恶意网页触发“双星”漏洞。

其中的IE浏览器漏洞（CVE-2020-0674）是IE Jscript引擎中的一个UAF漏洞, 我们提取了部分漏洞代码，由于漏洞代码中Array对象的Sort函数回调参数没有被加入GC追踪链中，所以攻击者可以在回调中释放仍然被引用的对象，最终导致UAF漏洞可以执行任意代码。

IE浏览器漏洞成功利用后，会执行shellcode，首先会判断当前进程是否为svchost.exe。

如果shellcode是在IE进程中执行，即第一次执行该shellcode时，shellcode会调用winHttpOpen和WinHttpGetProxyForUrl来触发WPAD服务加载远程的pac文件执行，这个文件实际上还是包含CVE-2020-0674漏洞的js脚本。

当shellcode得到第二次执行，发现当前进程名为svchost.exe，已经成功从浏览器进程跨越到WPAD服务进程时，就开始执行另外一个流程，下载远程的木马文件释放到temp目录下并执行该程序。

最终的木马程序会接受固定URL地址的C&C命令，在受害者计算机中执行任意操作。

修复建议

目前火狐浏览器已经发布了Firefox 72.0.1 and Firefox ESR 68.4.1，我们建议所有的火狐浏览器用户更新到最新版本。

针对Windows系统的用户，我们建议Windows 10系统用户尽快更新2020年2月份的微软安全补丁，而Windows 7系统用户可以使用360 Win7盾甲产品阻止“双星”0day漏洞攻击。

参考

https://www.mozilla.org/en-US/security/advisories/mfsa2020-03/

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0674