聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

微软在刚刚发布的12月“补丁星期二”中共修复36个漏洞,其中含一个已遭利用的 Windows 0day (CVE-2019-1458)卡巴斯基实验室指出,该漏洞和一个 Chrome 0day  (CVE-2019-13720) 同时被用于Operation  WizardOpium 攻击活动中。

微软将该漏洞称为“Win32k提权漏洞”,指出它可导致攻击者在内核模式中执行命令,也就是说它具有对操作系统的完整访问权限。微软表示:

“当Win32k 组件未能正确处理内存中的对象时,Windows 中就存在提权漏洞。成功利用该漏洞的攻击者可以在内核模式中运行任意代码。攻击能够安装程序;查看、修改或删除数据;或以完整的用户权限创建新账户。要利用这个漏洞,攻击者首先必须登录系统,之后运行可利用该漏洞的特殊构造的应用程序并控制受影响系统。发布的更新通过更正了 Win32k 处理内存对象的方式解决了这个漏洞问题。”

卡巴斯基实验室发布相关报告,奇安信代码卫士翻译如下:

2019年10月,卡巴斯基实验室成功地检测到被用于 Operation WizardOpium 攻击活动中的一个 Chrome 0day (CVE-2019-13720)。我们在调查活动中发现这些攻击活动中还使用了另外一个 0day。谷歌 Chrome 的 exploit 内嵌了一个 0day 提权 (EoP) exploit (CVE-2019-1458),用于获取受感染机器上更高的权限并逃逸 Chrome 进程沙箱。这个 exploit 和由 0day 多产开发员“Volodya”开发的exploit 非常相似。

该 EoPexploit 由两个阶段组成,一个小型 PE 加载器和实际的 exploit。通过易受攻击的 JS 代码在浏览器的渲染器进程中实现读/写原语之后,PEexploit 损坏了内存中的某些指针,目的是将代码执行重定向至 PE 加载器。这样做是为了绕过沙箱限制,因为该 PE exploit 无法只使用原生 WinAPI 函数就启动新进程。

PE 加载器通过实际 exploit 定位内嵌的 DLL 文件并重复和原生 Windows PE 加载器一样的进程:解析 PE 标头、处理导入/导出等。之后,代码执行被重定向至 DLL 的入口点即 DllEntryPoint 函数。该 PE 代码随后创建一个新进程作为 exploit 本身的入口点,而主线程等待其停止。

(攻击中利用的 EoP)

封装该 EoPexploit 的 PE 文件的标头如下:

Wed Jul 10 00:50:48 2019 这个编译时间戳和其它二进制不同,表明它已被使用了一段时间。

我们对 EoPexploit 的详细分析表明,它所使用的漏洞属于 win32k.sys 驱动,而 EoP exploit 就是这个 0day exploit,原因是它适用于最新(修复的)Windows 7 版本甚至适用于一些 Windows 10 的新版本(新的 Windows 10 版本并不受影响,因为它们实现了阻止对可利用代码的正常使用的措施)。

该漏洞本身和windows 切换功能有关(例如使用 Alt-Tab 键组合触发的功能)。这也是为何这个 exploit 的代码使用了一些 WinAPI 调用 (GetKeyState/SetKeyState) 来模拟关键的按键操作。

起初,该exploit 试图通过使用ntdll.dll 的 RtlGetVersion 调用来查找操作系统版本,而 RtlGetVersion 用于查找内存中设置虚假内核 GDI 对象所需的十几个偏移量。同时,它试图通过使用多种广为人知的技术泄露一些内核指针,从而泄露一些内核内存地址 (gSharedInfo、PEB 的 GdiSharedHandleTable) 。之后,它试图通过 CreateAcceleratorTable/DestroyAcceleratorTable 的很多调用创建一个特殊的内存布局,其中堆中存在多个漏洞。之后执行 CreateBitmap 的一堆调用,而它们的地址通过句柄表数组遭泄露。

(触发可利用的代码路径)

随后,通过窗口句柄创建一些弹出窗口并调用未记录的 syscall NtUserMessageCall。另外,它使用任务切换窗口 (#32771) 的类创建一个特殊窗口,它对于触发驱动中的可利用的代码路径而言起着重要作用。在这一步,该 exploit 试图模拟 Alt 键,之后使用 SetBitmapBits的一个调用构造一个 GDI 对象。该对象中包含一个可控制的指针值,在 exploit 向 syscall (NtUserMessageCall) 再次发出未记录调用后,该指针值可被用于内核驱动的代码 (win32k!DrawSwitchWndHilite) 中。这就是它如何获得任意内核读/写原语的过程。

(实现造成任意读/写所需原语)

该原语随后被用于在目标系统上提升权限,方法是使用现有系统驱动进程的令牌值来覆写当前进程 EPROCESS 结构中的一个令牌。

(覆写EPROCESS 令牌结构)

幕后黑手

卡巴斯基在关于Chrome 0day 和该 Windows 0day 的分析文章中并未指出 Operation WizardOpium 组织的身份。不过它在 Chrome 0day 分析文章中表示,“无法和任何已知的威胁行动者之间建立确切的关联”,“和 Lazarus 攻击活动中存在某些非常薄弱的代码相似之处,尽管这种迹象也可能是一种伪旗旗标”,实际上“目标网站的资料和早期的 DarkHotel 攻击之间存在更多的一致之处。”

其它漏洞分析

思科Talos 团队分析了微软发布的其中两个“严重”级别漏洞和三个“重要”级别漏洞,如下:

CVE-2019-1468 是存在于 Windows 字体库中的一个远程代码执行漏洞,是因为该库不正确地处理一些内嵌字体造成的。攻击者可通过使用网页中特殊构造的恶意内嵌字体,之后诱骗用户访问该网页的方式利用该漏洞。或者用户可以在机器上打开特殊构造的字体文件。

CVE-2019-1471 是存在于 Hyper-V 管理程序中的一个远程代码执行漏洞。Hyper-V 有时候未能正确验证guest 操作系统上认证用户的输入。攻击者可通过在 guest OS 上运行特殊构造的应用程序的方式利用该漏洞,从而导致 Hyper-V 主机 OS 在主机操作系统上执行任意代码。

除了上述已遭利用的 0dayCVE-2019-1458 外,思科还分析了其它两个“重要”级别的漏洞。

CVE-2019-1469 是存在于 Windows 中的信息泄露漏洞,当win32k 组件未能提供内核信息时就会触发该漏洞。攻击者能够利用该漏洞获取未初始化的内存和内核内存执行其它攻击。

CVE-2019-1485 是存在于 VBscript 引擎中的一个远程代码执行漏洞。攻击者可利用该漏洞损坏受影响系统的内存,从而在当前用户的上下文中执行任意代码。要触发该漏洞,用户必须在 IE web 浏览器中访问恶意的尤其是特殊构造的网站。攻击者也可在使用IE 渲染引擎的应用程序或微软 Office 文档中嵌入被标记为“初始化安全”的一个 ActiveX 控制,之后诱骗用户打开该文件。

微软修复的其它漏洞还包括:

  • CVE-2019-1332

  • CVE-2019-1400

  • CVE-2019-1453

  • CVE-2019-1461

  • CVE-2019-1462

  • CVE-2019-1463

  • CVE-2019-1464

  • CVE-2019-1465

  • CVE-2019-1466

  • CVE-2019-1467

  • CVE-2019-1470

  • CVE-2019-1472

  • CVE-2019-1474

  • CVE-2019-1476

  • CVE-2019-1477

  • CVE-2019-1478

  • CVE-2019-1480

  • CVE-2019-1481

  • CVE-2019-1483

  • CVE-2019-1484

推荐阅读

谷歌不修用户泪流:已遭利用且影响所有安卓版本的严重 0day 漏洞 StrandHogg 详情遭曝光

两年了火狐仍未修复某 0day,不料又一个新0day出现仨月了

微软补丁星期二修复74个漏洞,含已遭利用的 0day 和神秘漏洞

原文链接

https://securelist.com/windows-0-day-exploit-cve-2019-1458-used-in-operation-wizardopium/95432/

https://blog.talosintelligence.com/2019/12/microsoft-patch-tuesday-dec-2019.html

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点,转载请注明“转自奇安信代码卫士 www.codesafe.cn”

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的产品线。

刚刚修复的Windows 0day和Chrome 0day 已被组合用于 WizardOpium 攻击(详解)相关推荐

  1. 失败的windows系统服务调用readfile():管道已结束?_操作系统之进程详解(一)

    一.进程的概念和特征 进程知识拓扑图 进程的定义 1. 进程是程序的一次执行过程. 2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动. 3.进程是具有独立功能的程序在一个数据集合上运行的过 ...

  2. 全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案(图文详解)

    全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案(图文详解) 参考文章: (1)全网最详细的Windows里Anaconda-Navigator启动后闪退的解决方案 ...

  3. Windows下为有道词典添加词库(图文详解)

    原文地址:LittleStarLord的博客    Windows下为有道词典添加词库(图文详解)http://blog.sina.com.cn/s/blog_6c0267490102wett.htm ...

  4. windows内核开发笔记七:内核开发OVERLAPPED结构体详解

    windows内核开发笔记七:内核开发OVERLAPPED结构体详解 typedef struct _OVERLAPPED {   DWORD Internal;   DWORD InternalHi ...

  5. 在VM虚拟机Windows Server r2上部署安装Microsoft Dynamics CRM 2016 步骤详解(一)

    应公司需求,最近在学微软的Dynamics CRM.在搭建环境的过程中也遇到了一些雷坑,在这里分享一下安装部署过程当中所遇到的一些问题, 安装Microsoft Dynamics CRM 2016的几 ...

  6. Windows下的Jupyter Notebook 安装与自定义启动(图文详解)

    1.Jupyter Notebook 和 pip 为了更加方便地写 Python 代码,还需要安装 Jupyter notebook. 利用 pip 安装 Jupyter notebook. 为什么要 ...

  7. [网络安全自学篇] 四十四.Windows远程桌面服务缺陷(CVE-2019-0708)复现及防御详解

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了木马原理知识,并通过远程服务器IPC $ 漏洞实现木马植入及控制远程服 ...

  8. windows找不到文件gpedit.msc_u盘插入电脑在windows却找不到u盘的解决办法【详解】...

    将u盘插入到电脑的usb插口准备拷材料时却找不到u盘该怎么办?今天IT百科教你解决方案! 如上图所示 ,已将u盘插入到电脑usb插口了,但是打开"我的电脑"时却找不到u盘的盘符是怎 ...

  9. 枚举Windows进程中模块的几种方法-PEB内核结构详解

    1. 引言 在诸多的场景中(例如软件测试,软件安全研究等领域)经常需要分析在目标进程中具体加载了哪些模块(DLL),以及所加载的模块的信息(如模块基地址,映射文件大小等).获取这windows进程加载 ...

最新文章

  1. 省掉1/3的回归测试:Facebook用机器学习自动选择测试策略
  2. 【阿里巴巴】CBU技术部招聘
  3. 智能音箱 之 麦克风参数介绍
  4. 微软开源新字体Cascadia Code,源于Windows Terminal
  5. js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
  6. 如何做好数据质量管理
  7. 程序员编程艺术第二十六章:基于给定的文档生成倒排索引(含源码下载)
  8. JUnit for Android入门1
  9. GBK编码/GBK内码/Big5
  10. 从零开始学统计 03 | 均值,方差,标准差
  11. 【驾驶】高速公路匝道定义
  12. ASP.NET 4.0 尚未在WEB服务器上注册
  13. 计算机网络中型网吧规划设计,中小型网咖网络规划设计开题报告
  14. 融合多头注意力机制的网络恶意流量检测
  15. html怎么给视频加遮罩,详解基于canvas的视频遮罩插件
  16. 设置并访问另一台电脑的共享文件夹
  17. React 高阶组件HOC使用总结
  18. 主题模型分析漏洞趋势
  19. 推荐一些能提升工作幸福度的小工具
  20. 使用canvas画迁徙线并加上动态效果与小飞机图标

热门文章

  1. 开源 免费 java CMS - FreeCMS-数据对象-answer
  2. EF/SQL/新闻中分页应用
  3. Hadoop,MapReduce
  4. c#获取电脑硬件信息参数说明(CPU篇 Win32_Processor)
  5. ios 中如何应对UIScrollView快速滑动(暴力用户,暴力测试)
  6. Myeclipse 操作技巧
  7. pcDuino–voip服务器设置呼叫彩铃
  8. Xcode5打包静态库
  9. Struts2学习笔记(十八) 防止表单重复提交
  10. 12 个有效的提高编程技能的方法