微软对外披露两个0day漏洞详情

微软近日对外披露了两个0day漏洞详情,其中一个漏洞存在Adobe阅读器中,可被利用导致任意代码执行;另一个漏洞则允许任意代码在Windows kernel内存中提权执行。

微软称由于该漏洞利用目前还处于初期阶段,且官方都已发布了补丁,建议大家及时进行安装,赶在被大规模利用前修复,未雨绸缪。同时,建议排查初期样本的IOC(文末附修复补丁链接和IOC)。

CVE

CVE-2018-4990

CVE-2018-8120

类型

远程代码执行

本地提权

官方评级

Critical

Important

影响产品

Acrobat DCAcrobat Reader DC

Windows 7Windows Server 2008

POC**样本**

在野攻击

暂无

暂无

修复补丁

这两个漏洞利用样本最早是由ESET分析人员在今年3月发现并报告给了微软,在ESET和微软的共同努力下发现了以上两个0day漏洞。以下漏洞利用分析过程是基于以下样本进行:

SHA-256:4b672deae5c1231ea20ea70b0bf091164ef0b939e2cf4d142d31916a169e8e01

漏洞利用概况

Adobe Acrobatand Reader漏洞存在于PDF文档中,伪装成暗含JavaScript漏洞利用代码的恶意JPEG 2000图像,漏洞利用路径如下图所示:

图1. 漏洞利用流程图

如上图所示,漏洞利用过程分以下阶段:

1.JavaScript枚举堆喷射(heap spray)内存;

2.恶意JPEG 2000图片触发一个越界访问操作;

3.一旦堆喷射枚举越界内存,就会调用访问操作;

4.访问操作导致vftable进程崩溃;

5.已崩溃的vftable进程将代码执行转移至返回导向编程(ROP)链;

6.ROP链将代码执行转移到shellcode;

7.通过反射DLL加载来进行EoP模块加载;

8.PE模块启动已加载完成的Win32k EoP漏洞利用程序;

9.一旦EoP漏洞利用成功,就会在Startup文件夹中释放一个名为.vbs的文件,作为下载其他payloads的PoC恶意软件。

恶意JPEG 2000图片

恶意图片中被嵌入了以下恶意标签,如图:

图2. 恶意JPEG 2000图片

下图所示的CMAP & PCLR标签中均含有恶意值,CMAP数组(0xfd)的长度小于PCLR标记中引用的索引值(0xff),从而导致了越界内存释放漏洞的利用。

图3. CMAP数组的越界索引

结合JavaScript中的堆喷射技术,越界漏洞利用就会导致vftable进程的崩溃。

图4. ROP链中的vftable进程崩溃导致代码执行

JavaScript中的编码包含了shellcode和PE模块。

图5. JavaScript中的shellcode

反射DLL加载进程

Shellcode(以下提到的伪代码)通过反射DLL加载PE模块,这是高级攻击活动里试图在内存中躲避检测时的常用技巧。Shellcode搜索PE初始记录,解析PE分区,并将它们复制到新分配的内存区域,然后将控制权传递给PE模块中的入口点。

图6. 复制PE分区到新分配的内存中

图7. 把控制权传递给已加载的DLL模块中的入口点

Win32k **提权漏洞利用**

Win32k提权(EoP)漏洞利用是从已加载的PE模块中运行,利用新的Windows漏洞CVE-2018-8120对Windows 7 SP1系统进行攻击,Win 10及更新的产品不受该漏洞影响。该漏洞利用NULL页面来传递恶意记录,并将任意数据拷贝至任意内核位置,对于运行Windows 8及更新系统的x64位平台所受影响也相对较小。

图8. EoP漏洞利用流程图

漏洞利用的主要过程如下:

1.漏洞利用根据sgdt指令调用NtAllocateVirtualMemory进程,以便在NULL页面分配虚假的数据结构;

2.把格式错误的MEINFOEX结构传递至SetImeInfoEx Win32k 内核函数;

3.SetImeInfoEx进程获取NULL页面上的虚假数据结构;

4.使用虚假的数据结构把恶意指令拷贝到GDT(全球描述符表)上的+0x1a0中;

5.通过调用FWORD指令来调入虚假的GDT入口指令;

6.成功调用虚假GDT入口指令;

7.这些指令运行从内核模式内存空间的用户模式中分配的shellcode;

8.修改shellcode进程中EPROCESS.Token,获取SYSTEM权限。

格式有误的IMEINFOEX结构结合NULL页面的虚假数据,就可导致GDT入口崩溃,如下图所示:

图9. GDT入口崩溃

已损坏的GDT具有通过调用FWORD指令调用入口运行的实际指令。

图10. 已修复的GDT入口指令

从这些指令返回后,EIP(扩展指令指针)返回具有内核特权的用户空间中的调用者代码,后续代码将通过修改SYSTEM的进程令牌来实现当前进程的提权。

图11. 替换进程令牌指针

可持续性

提权后,漏洞利用代码会在本地Startup文件夹中释放一个.vbs文件,即PoC恶意软件。

图12. 释放.vbs文件到Startup文件夹的代码信息

防御建议

及时部署针对以上0day漏洞的安全补丁:

CVE-2018-4990 | Adobe Acrobatand Reader可用的安全更新 | APSB18-09

https://helpx.adobe.com/security/products/acrobat/apsb18-09.html

CVE-2018-8120 | Win32k提权漏洞

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-8120

如工作环境不需要,则禁用Adobe Acrobat and Acrobat Reader中的JavaScript;

加强终端对利用PDF附件进行鱼叉式钓鱼攻击和其他社工攻击的防范意识。

IoC信息(SHA-256):

d2b7065f7604039d70ec393b4c84751b48902fe33d021886a3a96805cede6475

dd4e4492fecb2f3fe2553e2bcedd44d17ba9bfbd6b8182369f615ae0bd520933

4b672deae5c1231ea20ea70b0bf091164ef0b939e2cf4d142d31916a169e8e01

0608c0d26bdf38e064ab3a4c5c66ff94e4907ccaf98281a104fd99175cdf54a8

*参考来源:Microsoft Cloudblogs,秋雨绸缪编译,转载请注明来自FreeBuf.COM

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2018-07-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

搜索引擎语法

0x00 前言 搜索引擎语法是一个本该经常使用但是却一直被我忽略工具。它可以在很大程度上满足一些特殊需求,比如:渗透时查找网站后台或者上传文件页面等。 目前主要...

317100
来自专栏安恒网络空间安全讲武堂

2018全国大学生软件测试大赛-安恒杯Web测试大赛write up

这里的知识点是当代码中存在$_REQUEST['user_id']里面类似的参数的时候,使用" "、"["、"+"、"."这样的符号的时候回自动转化成"_"从而...

1K20
来自专栏liulun

基于.net开发chrome核心浏览器【七】

这是一个系列的文章,前面六篇文章的地址如下: 基于.net开发chrome核心浏览器【六】 基于.net开发chrome核心浏览器【五】 基于...

56370
来自专栏java达人

Kafka漫游记

我是一条消息,从我被生产者发布到topic的时候,我就清楚自己的使命:被消费者获取消费。但我一直很纳闷,把我直接推送给消费者不就行了,为什么一定要先推送到类似队...

27770
来自专栏FreeBuf

注意了,使用XSS平台的你可能被“偷窥”

故君子之治人也,即以其人之道,还治其人之身。 Par1:你要了解的事 XSS平台: 玩渗透测试的人,对XSS平台应该不会陌生。 最简单的XSS平台,通常可以记录...

41380
来自专栏java达人

Kafka漫游记

我是一条消息,从我被生产者发布到topic的时候,我就清楚自己的使命:被消费者获取消费。但我一直很纳闷,把我直接推送给消费者不就行了,为什么一定要先推送到类似队...

43350
来自专栏13blog.site

小测试

可以在 @RequestMapping 注解里面加上 method=RequestMethod.GET 或者使用 @GetMapping 注解

22210
来自专栏FreeBuf

Windows漏洞利用开发教程Part 5 :返回导向编程(ROP)

本文主要介绍的是Windows软件漏洞的利用开发教程。我花了大量的时间来研究了计算机安全领域Windows漏洞利用开发,希望能和大家分享一下,能帮助到对这方面感...

18230
来自专栏Jaycekon

Python-WXPY实现微信监控报警

概述:   本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序。博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的...

3K80
来自专栏HappenLee的技术杂谈

线性一致性与全序广播------《Designing Data-Intensive Applications》读书笔记12

大多数分布式数据库至少提供了最终一致性,这意味着如果停止对数据库的写操作并等待一段时间,最终所有读请求将返回相同的值。但是,这是一个非常弱的一致性保证,所谓的一...

16520

扫码关注云+社区

领取腾讯云代金券