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

漏洞原因

Zoom 5.1.2及之前版本尝试加载了一个名为 shcore.dll 的系统库文件来辅助设置显示 Dpi,但是这个库文件在 Win7 System32 下默认没有(在Win7旗舰版和专业版上进行了检索,确认在默认状态下没有此DLL),在 Win10 System32 下可以找到(经调研,发现此系统库确实自 Win8.1才开始引入),给 DLL 劫持提供了机会。

分析过程

2.1 分析方法

Zoom 在国区已经暂停个人用户注册使用,启动软件后只能停留在 Zoom 的登录界面环节,故采用静态逆向分析程序文件的方式尝试挖掘程序的潜在漏洞。

公开资料显示 Zoom 自5.1.3版本起对曝光的问题进行了修复,这里采用对两个邻近版本的程序文件做差异比较的方法来推导存在问题的代码块。

2.2 分析对象

  • Zoom 5.1.2 (28642.0705)

  • Zoom 5.1.3 (28656.0709)

2.3 分析工具

  • IDA 7.2

  • bindiff 5

  • ghidra 9.0.2

  • duplicate cleaner pro 4

2.4 分析操作及结果

1

文件去重

首先将两个版本的 Zoom 先后安装到系统中,并在User\XXX\AppData\Roaming\Zoom\ 路径下提取到各自展开的程序文件,再用 duplicate cleaner 基于文件 hash 将两个版本中内容完全相同的部分进行剔除。

2

差异分析

在IDA中启用 bindiff 插件对两个版本中bin目录下的同名 .exe 和 .dll 文件逐个进行比对,发现存在函数代码变动的文件如下:

通过 ghidra 提供的逆向功能辅助查看DuiLib.dll下四个方法的代码,发现主要改动是将旧版中的 LoadLibraryW(L”Shcore.dll”) 接口调用改为LoadLibraryExW(L”Shcore.dll”,0x0, 0x800),其余部分一致:

在IDA中对比分析 Zoom.exe 如下,可以看到 sub_4022EA 函数的变化只是新增了一条 SetDllDirectoryW() 接口调用,其余功能代码保持一致:

在 IDA 中对比分析 DllSafeCheck.dll 如下,可以看到 sub_10002430 函数的变化只是新增了一条 SetDllDirectoryW() 接口调用,其余功能代码保持一致:

由上面两处细节调整可以推断出新版中主要是进一步明确了 DLL 的加载路径,但是受影响的 DLL 文件没有直接体现出来,不过在尝试在检索 DuiLib.dll 中所使用到的 Shcore.dll 库文件时发现了异常,这个 Shcore.dll 并未在 Zoom客户端中一起打包,说明应该是由系统提供的功能,在 Win10 中检索此文件得到结果如下:

但尝试检索 Win7 旗舰版和专业版的 System32 目录时均未见到此文件(SysWow64下也没有):

(旗舰版检索结果)

(专业版检索结果)

经调研得知,shcore.dll 库文件在 Win 7系统中确实不存在,自 Win 8.1 起成为系统库函数标配,并且在Zoom中确实对 GetDpiForMonitor 接口有调用,封装在自定义的 DuiLib.dll 库中:

  • https://stackoverflow.com/questions/37058349/shcore-dll-on-windows-7-does-it-exist

  • https://docs.microsoft.com/zh-cn/windows/win32/api/shellscalingapi/nf-shellscalingapi-getdpiformonitor?redirectedfrom=MSDN

3

小结

由于 Zoom 目前禁止国区个人用户登录使用,针对 Win 7 的 shcore.dll 劫持操作复现暂无法进行,但是根据静态逆向分析的结果与公开资料描述的问题来看,很大可能上是因为 Zoom 在代码中使用了win8.1及以后版本才有的系统库,导致在 Win7 系统上可以进行DLL劫持攻击,考虑到资料演示中针对的是视频功能,逆向分析中 Dpi 设置也与画面显示密切相关,基本上可以推断演示视频中的操作应该是在 Win7 系统上植入了攻击者自定义的 shcore.dll 库并重写了其中被调用的方法,然后在视频功能中进行点击触发。

参考链接:

https://www.bleepingcomputer.com/news/security/zoom-fixes-zero-day-rce-bug-affecting-windows-7-more-updates-soon/

推荐阅读

CVE-2020-11945 Squid未授权整数溢出分析

CVE-2020-0688 Exchange 远程代码执行分析

CVE-2020-0601漏洞详细分析

CVE-2019-11477:Linux 内核中TCP协议栈整数溢出漏洞详细分析

题图:Pixabay License

转载请注明“转自奇安信代码卫士 www.codesafe.cn”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

 点个 “在看” ,加油鸭~

Zoom 5.1.2及旧版本在 Win7 上的 DLL 劫持漏洞分析相关推荐

  1. pip更新后怎么还是旧版本_DNF更新后谋略战阵容搭配分析,PVE与PVP怎么取舍呢?...

    又经过了几天的奋战,相信DNF小伙伴们已经顺利通关剧情,解锁了试炼.黑市.排位内容了. ●本阶段活力与资源分配 首先明确一下收益的问题,目前大家基本还是处在一个资源累积阶段(只是五星无强化或强化不高) ...

  2. 对于ANDROID 5.0及其以上版本WIFI图标上显示感叹号的原因分析及解决方法

    这里我指的是WIFI可正常连接网络使用的前提下,手机状态栏WIF图标上仍出现感叹号的情况. 原因: 从 Android 5.0 开始,当安卓系统连接网络时,系统会向Google的某个特定的网址(htt ...

  3. Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?

    文章目录 前言 一.网上没"升级 Eclipse"相关资料吗? 1.1.相关资料很少,我也生气 1.2.升级新版本与在线升级插件傻傻搞不清 二.版本升级准备 2.1.Eclipse ...

  4. Chrome用户不喜新版:宁用其他浏览器也不要用旧版本

    Chrome用户不喜新版:宁用其他浏览器也不要用旧版本 庆祝发布十周年,谷歌在今年九月推出的Chrome 69版本中用户界面发生重大调整,不仅带来圆角的标签.全新的色板和全新的图标,而且也重新设计了菜 ...

  5. 安装旧版本插件_iOS 应用降级插件,支持任意版本升降

    软件版本越来越高,功能越来越来越多,升级过后发现还是简简单单的老版本好用怎么办? 对于iOS用户来说,这还真不好办.在App Store下载的应用都是当前的最新版,安装方式也不像安卓系统需要先下载安装 ...

  6. 如何安装旧版本的 R 包

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 我们在安装 R 包的时候,经常会发现某个最新的包与当前 R 的版本不兼容. > inst ...

  7. 导入旧版本Android项目时的“Unable to resolve target ‘android

    在Ecplise + ATD + Android SDK的开发中,导入旧版本的Android项目时,往往会出现类似的如下错误 Error:Unable to resolve target 'andro ...

  8. ASP.NET 5 DNX SDK删除旧版本

    ASP.NET 5各种升级后旧版本的DNX不会删除,想删除旧版本的DNX,可以通过以下命令完成 首先打开CMD或者Powershell 1.先输入dnvm看看命令中是否有uninstall 2.如果没 ...

  9. 苹果ipa签名工具免越狱下载_苹果iphone免越狱使用iTunes 一键下载旧版本app

    所需工具:iTunes 12.6.3 和苹果旧版APP下载V1.3(后台回复1077获取) 适用系统:win 哈喽大家好,欢迎来到蜜蜂科技f app更新了,更新后功能的缺失,操作步骤的繁琐,容易闪退卡 ...

最新文章

  1. 杭州市全国计算机等级考试报名时间,浙江省杭州市2017年3月全国计算机等级考试报名时间及方式...
  2. Silverlight 2 DispatcherTimer和通过XAML创建UI元素
  3. Windows计算机功能Java源码
  4. 操作系统:电脑的回收站的秘密你知道吗?
  5. .NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?
  6. c盘users的用户名怎么改_做完这几个操作,我从C盘中清理了30G垃圾文件
  7. Vmware由于centos升级内核不可运行(C header files matching your running kernel were not found)的解决方案...
  8. Matlab数据插值-内插、外插
  9. TP-Link发布网格路由器Deco M5
  10. python_day3
  11. 微信小程序多位验证码/密码输入框
  12. 让VSCode字体性感起来
  13. python鼠标自动点击脚本_用Python实现鼠标自动点击
  14. 【vue】vue中如何实现SPA 单页面应用_09
  15. 泛函分析复习笔记(二)线性算子与线性泛函
  16. 保存网页图片的八种方法
  17. 如何把视频压缩到最小?请看详细步骤
  18. android远程主机强迫关闭了一个现有的连接,远程主机强迫关闭了一个现有的连接解决方法...
  19. 【疑难解决】H265编码流媒体播放器EasyPlayer.js播放HLS H265视频流,遇到黑屏如何排查?
  20. ev3和python哪个好_python+lego ev3的心得总结 随时更新

热门文章

  1. js基础--javascript基础概念之函数
  2. 数据结构之二叉树_二叉排序树(严蔚敏C语言版)
  3. 上海市XXX区信息委门户网站集成项目总结
  4. 使用nlite制作集成驱动windows安装光盘及实践心得
  5. 谷歌发布GPhone 创始人亲自上阵
  6. Mac(不限于)中几个有内涵的工具
  7. [20171124]xxd与通配符.txt
  8. 《Scala机器学习》一一
  9. 任丽萍跟我赌200块钱的
  10. c# winform窗体边框风格的设计