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

看我如何利用Mac官方AppStore中的应用程序获取root权限

来源:本站整理 作者:佚名 时间:2019-07-10 TAG: 我要投稿

一、前言
在本篇文章中,“Objective by the Sea”的演讲者Csaba Fitzl撰写了一篇有趣的方法,通过官方Mac AppStore中的应用程序来获取root权限。
他的研究最开始是在“Objective by the Sea”v2.0中提出的,演讲时展示的PPT请参考这里。

二、背景
这篇文章主要讲述了我的研究过程,我想展示一下我是如何在快速的研究过程中发现问题的,我最终在macOS中发现了一个本地权限提升漏洞。除了成功发现的漏洞之外,我还想讨论我在研究过程中遇到的所有障碍和失败,尽管人们通常不会谈论这一些,但我认为,当我们试图创造(或利用)某些东西时,这是所有人的一个必经之路。
三、macOS上的Dylib劫持
3.1 基础概念
在整个研究过程中,我都试图在特定应用程序中找到dylib劫持漏洞,在这里我不能透露具体的应用程序名称。最终,我没有在那个特定的应用程序中发现漏洞,但在许多其他的应用程序中发现了这类漏洞。
如果各位读者还不熟悉macOS上的dylib劫持,可以阅读:
1. Patrick Wardle的文章:病毒的子弹 – OSX上的Dylib劫持
2. DEF CON 23演讲:OSX上的DLL劫持
我推荐大家优先观看演讲,因为这是一位非常出色的演讲者,并且会以非常友好的方式来解释这个主题,可以帮助大家掌握所有的细节。
我们简而言之,存在两种类型的dylib劫持:
1. dylib弱加载:在这种情况下,操作系统将使用LC_LOAD_WEAK_DYLIB函数,如果没有找到dylib,应用程序仍然会运行,并且不会报错。因此,如果有一个应用程序使用此方法引用dylib,并且dylib实际上不存在,那么我们可以利用这一点。
2. 运行路径依赖(rpath)dylib:在这种情况下,dylib会使用@rpath前缀引用,它将指向mach-o文件的当前运行位置,并尝试根据此搜索路径查找dylib。如果我们不知道安装后的应用程序会在哪里结束,那么这是一种非常好的方式。开发人员可以指定多个搜索路径,如果第一个或者第一对不存在,那么就可以将恶意dylib放在相应位置,因为加载器会按照顺序搜索这些路径。在逻辑上,这类似于Windows中的经典DLL劫持。
3.2 寻找易受攻击的应用
这一过程比较困难,需要我们下载Patrick的“Dylib Hijack Scanner”(DHS,Dylib劫持扫描器)工具,运行扫描并等待。除此之外,还有一个命令行版本的工具,也是由Patrick编写的。
在演示中,我将使用Tresorit应用程序作为示例,因为他们已经修复了漏洞,并且他们的反映非常及时,在报告漏洞后的几天内就修复了这一问题。我不会在这里提及所有的应用程序,但大家如果看到应用程序的清单,一定会为其数量之多而惊讶。

从上图中可以看出,dylib劫持漏洞与Tresorit的FinderExtension有关:
/Applications/Tresorit.app
/Contents/MacOS/TresoritExtension.app
/Contents/PlugIns/FinderExtension.appex
/Contents/MacOS/FinderExtension
我们可以在这里放置(恶意的)dylib UtilsMac:
rpath漏洞:/Applications/Tresorit.app
/Contents/MacOS/TresoritExtension.app/Contents/PlugIns/FinderExtension.appex
/Contents/Frameworks/UtilsMac.framework/Versions/A/UtilsMac
DHS只会向我们展示第一个劫持的dylib,但实际上可能会有更多。要检查其他位置,可以在终端中将DYLD_PRINT_RPATHS变量设置为1,即可查看到加载程序尝试加载哪些dylib。如我们所见,有两个可能被劫持的dylib:
$ export DYLD_PRINT_RPATHS="1"
 
$ /Applications/Tresorit.app/Contents/MacOS/TresoritExtension.app
 /Contents/PlugIns/FinderExtension.appex/Contents/MacOS/FinderExtension
 
RPATH failed to expanding  @rpath/UtilsMac.framework/Versions/A/UtilsMac to:
/Applications/Tresorit.app/Contents/MacOS/TresoritExtension.app
 /Contents/PlugIns/FinderExtension.appex/Contents/MacOS
 /../Frameworks/UtilsMac.framework/Versions/A/UtilsMac
 
RPATH successful expansion of @rpath/UtilsMac.framework/Versions/A/UtilsMac to:
/Applications/Tresorit.app/Contents/MacOS/TresoritExtension.app/Contents/PlugIns
 /FinderExtension.appex/Contents/MacOS
 /../../../../Frameworks/UtilsMac.framework/Versions/A/UtilsMac
 
RPATH failed to expanding @rpath/MMWormhole.framework/Versions/A/MMWormhole to:
/Applications/Tresorit.app/Contents/MacOS/TresoritExtension.app/Contents/PlugIns
 /FinderExtension.appex/Contents/MacOS/
 ../Frameworks/MMWormhole.framework/Versions/A/MMWormhole
 
RPATH successful expansion of @rpath/MMWormhole.framework/Versions/A/MMWormhole to:
/Applications/Tresorit.app/Contents/MacOS/TresoritExtension.app/Contents/PlugIns
 /FinderExtension.appex/Contents/MacOS
 /../../../../Frameworks/MMWormhole.framework/Versions/A/MMWormhole
 
Illegal instruction: 4
此外,最好仔细检查APP是否使用了库验证选项(flag = 0x200)进行编译。如果以这种方式编译应用程序,就意味着即使dylib可能被劫持,操作系统也只会加载由操作系统

[1] [2] [3] [4] [5] [6]  下一页

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