macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

申博_新闻事件 申博 42次浏览 已收录 0个评论

概述

我们在此前的文章曾提到过,macOS权限提拔一般是经由历程引诱用户,而不是运用0-day或未修复的破绽来完成的。从红队的角度来看,有一个大概供应协助的当地东西——AppleScript。AppleScript能够轻松、疾速地发生子虚的受权请求,这些请求在用户看起来大概很有说服力。只管这并不是一项新的手艺,但在本文中,我们将探讨一些新鲜的体式格局,能够滥用AppleScript的功用来诳骗用户已在当地体系上信托的特权历程。

什么是具有特权的协助东西?

Mac上的大多数运用顺序都不须要权限提拔就能够实行事情。假如是从Apple的App Store购置的运用顺序,从手艺上来看,它们是不允许提拔权限的。只管如此,偶然运用顺序确切有充足合理的来由,须要猎取比当前登录用户更大的特权。我们依据Apple供应的文档,梳理了几种状况:

1、支配文件的权限,文件的统统权;

2、建立、读取、更新或删除文件;

3、翻开用于TCP或UDP衔接的特权端口;

4、翻开原始Socket;

5、治理历程;

6、读取虚拟内存中的内容;

7、变动体系设置;

8、加载内核扩大。

一般,运用顺序假如须要实行上述恣意功用,一般只是偶然须要实行一次。针对这类状况,在须要实行的当时请求用户受权是有必要的。然则,只管请求用户受权这件事是为了提拔平安性,但假如运用顺序在某些场景中过于频仍请求用户受权实行这些行动,对用户而言会形成一些不方便。用户不喜欢反复涌现的对话框正告,也不喜欢反复屡次输入暗码。

为了处置惩罚这一问题,开发人员提出了特权星散的手艺。经由历程建立功用受限的自力“协助顺序”来实行这些使命,仅在装置时请求用户受权装置这些协助东西。在一样平常运用历程当中,我们大概见过类似于以下的权限请求:

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

协助顺序东西一直会以提拔的权限来运转,然则其功用是有限的。最少从理论上讲,该公欧只能根据父顺序的请求实行特定使命。这些特权协助东西位于当地“Library”(库)文件夹的子文件夹中:

/Library/PrivilegedHelperTools

由于它们仅由来自App Store外部的第三方运用顺序装置,因而只要部份用户会在体系中装置某些软件。但是,有一些异常盛行、被用户普遍运用的macOS软件已运用了这类东西。由于操纵体系并没有移除自力的特权协助东西,因而,我们对一些操纵体系举行排查,很有大概发明个中一些具有特权的协助东西正在运用中。以我的操纵体系为例,我在体系中发明了一些具有特权的协助东西,细致是:

BBEdit;

Carbon Copy Cloner;

Pacifist。

父历程和特权协助东西之间大概会滥用这一信托机制(参考CVE-2019-13013破绽),但这并不是我们本日想要尝试的要领。相反,我们将运用如许的一个现实,即用户异常熟习这些特权历程的父运用顺序,而且会习气性地信托来自它们的受权请求。

为何要运用AppleScript举行诳骗?

有用的社会工程学进击须要依赖于优越的上下文环境。固然,我们能够随时抛出一个子虚的用户警报,但假如想使其更具迷惑性,我们愿望这个警报具有以下的特征:

1、看起来越发实在:包括在警报中运用使人轻易信托的文本、具有迷惑性的标题以及具有相关性的图标。

2、出于使人信托的来由触发:假如一个与营业无关,或许从没有请求过特权的运用顺序触发了用户警报,将会有很大几率引发用户的疑心。因而,以具有特权的协助东西作为目的将异常症结,特别是在我们供应充足实在的细致信息以便用户举行确认,这会增添提醒信息的可信性。

3、在适当的时候触发:比方,能够拔取当前用户正在运用我们试图仿冒成的运用顺序时。

运用AppleScript,上述统统请求都异常轻易完成。下面是一个例子,我们能够尝试运用AppleScript来建立。

这个对话框现实上是异常粗拙的。能够看到,这里没有运用输入用户名和暗码的两个字段。但即使如此,这个对话框也有肯定的迷惑性。个中包括一个有用的标题、一个有用的图标饿一个有用的历程称号,假如用户须要进一步确认,用户会找到响应的具有特权的协助东西。细致而言,用户在考证的历程当中,会发明这个协助东西确切位于本身的/Library/PrivilegedHelperTools文件夹中。用户必需深切发掘,才真正发明我们的敲诈行动。

固然,一些对其疑心的用户很大概会直接按下“作废”键,而不会举行过量的深切发掘。但荣幸的是,运用AppleScript,我们能够使得用户在按下“作废”按钮后杀死父运用顺序,或发生无穷轮回的代码,从而使这一请求看起来更具说服力,而且阻挠目的用户再次点击“作废”键。

然则,无穷次反复的状况大概还会引发用户的疑心,然则杀死父运用顺序并发出适宜的警报来“诠释”这类状况好像更加合理。当用户重新启动父运用顺序,并再次触发我们的受权请求时,用户会更有大概输入暗码,并继承其事情。

为了完成优越的结果,我们还能够针对用户初次尝试输入的暗码弹出毛病提醒,并让用户输入两次。由于输入的内容不会在用户屏幕上显现,因而用户也并不清晰本身是不是在第一次时无意涌现毛病。强迫用户输入两次时,我们能够推断第一次用户的输入是不是准确,并在第二次输入考证经由历程之前,先考证用户暗码。在本文中,我们将不会过量形貌这一手艺细节,此前我们已举行了大批的研讨事情。

建立诳骗剧本

假如我们不熟习AppleScript,或许不相识自Yosemite 10.10以来的macOS最新特征,我们大概会惊奇地发明,能够将Objective-C代码嵌入到剧本当中,并直接挪用Cocoa和Foundation API。这意味着,我们就具有了当地API的统统功用,比方:NSFileManager、NSWorkspace、NSString、NSArray等等。鄙人面的示例中,我运用的是商业版AppleScript编辑器,但它也有免费版本。与内置的Script Editor运用顺序比拟,AppleScript编辑器越发便于作为开发环境运用。

与其他任何剧本或编程言语一样,我们须要“导入”所需运用的框架,在AppleScript中是运用use症结字来完成的。我们能够将以下内容放在剧本的最入手下手部份:

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

怎样竖立更平安的5G收集

在美国家庭中,平均每个家庭有11台联网设备,可见消费者已经为更快、更可靠的5G网络做好了准备。 根据Deloitte近日的报告,互联设备正在主导消费市场,而5G将把这些功能提升到新的水平。美国平均每个家庭拥有11台联网的设备,其中包括7个智能屏幕。报告发现,随着5G的发布,将进一步推动智能手机、新一代娱乐和智能家居的普及。  Deloitte副主席Kevin Westcott表示:“人们喜欢随时保持联系,对于消费者而言,他们感兴趣的是如何使用5G。有了5G,消费者已经充分意识到了该技术的前景,由于连接的增长如此显着,因此消费者对高速和实时连接的5G期望非常高。 ” Deloitte的《连通性和移动趋势》报告发现,消费者已准备好采用5G设备。大多数(67%)的消费者表示,当5G可用时,他们将很有可能升级到兼容5G的智能手机。另有62%的消费者表示,他

这些既能充任快捷体式格局,也能作为AppleScript与ObjectiveC剧本之间的“桥梁”,同时还能够让我们以便利的体式格局接见定名的API,以下所示。

接下来,我们编写一些“处置惩罚顺序”(函数)来遍历PrivilegedHelper东西目次。鄙人图中,左边展示了我们将要编写的处置惩罚顺序,右边是在我的盘算机上返回的示例。

如我们所见,这个处置惩罚顺序只是另一个处置惩罚顺序enumerateFolderContents:的包装器,这个处置惩罚顺序是我们从社区论坛自创而来的。我们来仔细分析一下它的代码,代码部份有一些庞杂:

 

# adapted from a script by Christopher Stone
on enumerateFolderContents:aFolderPath
       set folderItemList to "" as text
       set nsPath to current application's NSString's stringWithString:aFolderPath
       --- Expand Tilde & Symlinks (if any exist) ---
       set nsPath to nsPath's stringByResolvingSymlinksInPath()
       
       --- Get the NSURL ---
       set folderNSURL to current application's |NSURL|'s fileURLWithPath:nsPath
       
       set theURLs to (NSFileManager's defaultManager()'s enumeratorAtURL:folderNSURL includingPropertiesForKeys:{} options:((its NSDirectoryEnumerationSkipsPackageDescendants) + (get its NSDirectoryEnumerationSkipsHiddenFiles)) errorHandler:(missing value))'s allObjects()
       set AppleScript's text item delimiters to linefeed
       try
              set folderItemList to ((theURLs's valueForKey:"path") as list) as text
       end try
       return folderItemList
end enumerateFolderContents:

如今,我们有了具有特权的协助东西的列表,我们须要在途径中提掏出文件名,由于我们愿望在音讯文本中运用这些称号来加强可信度。另外,我们能够从协助东西的二进制文件中找到父运用顺序,并将其显现给用户,同时还须要查找运用顺序对应的图标。

这是我们实行第一个使命的体式格局,下图左边是我们的代码,右边展示了输出内容:

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

如今,我们已有了目的,接下来的事情就是找到父运用顺序。为此,我们将自创Erik Berglund的剧本并举行微调。

在上面的示例中,我们能够看到父运用顺序的Bundle Identifier是“com.barebones.bbedit”。我们能够经由历程多种体式格局从字符串中提取标识符子字符串,比方我们能够运用awk之类的敕令行运用东西(类似于Erik运用的要领),或许运用cut to slice字段。然则,出于效力的斟酌,同时为了防止没必要要地发生更多历程,我选用了Cocoa API的要领。请注重,不管运用哪一种手艺,标识符都不会一直涌如今统一位置,而且大概不会以“com”开头。不过,在我们尝试的统统场景中,它都是紧随在“identifier”以后的。因而,我将其作为主要的分隔符。在这里,须要确保我们的代码斟酌了一些特殊状况,由于空间不足,我在这里将省略毛病搜检的环节。

在上面的代码中,我运用Cocoa API起首在分隔符的恣意一边拆分字符串。我们在第二个子字符串的开头部份找到现实的Bundle Identifier。在这里,须要注重背面的as text。在夹杂AppleScript与Objective C时,我们必需处置惩罚的一个困难时如安在NSString和AppleScript文本之间往返转换。

有了父运用顺序的Bundle Identifier以后,借助NSWorkspace,我们能够找到父运用顺序的途径。我们还将增加一个轮回,以对PrivilegedHelperTools文件夹中的统统项目实行雷同的操纵。

请关注我在这里是怎样将文本转换从bundleID变量中移走的,由于如今依然须要NSString来举行NSWorkspace挪用。文本转换将被耽误,直到在AppleScript挪用中再次须要改字符串,该挪用发生在repeat要领的末端。

至此,我们如今有了每一个具有特权的协助东西的称号及其途径,以及Bundle Identifier和每一个协助东西父运用顺序的途径。有了这些信息,我们就险些具有了受权请求所需的统统。接下来的末了一步,就是从每一个父运用顺序中猎取运用顺序图标。

猎取父运用顺序的图标图象

运用顺序图标一般位于运用顺序包的“Resources”(资本)文件夹中,并具有.icns扩大名。由于我们已具有了运用顺序的途径,因而猎取图标的历程应当异常简朴。

在继承之前,我们起首须要为接下来的事情增加几个“协助处置惩罚顺序”,以保证代码的简约。

另外,在剧本的最上方,我们定义了一些常量。现在,我们将其保存为纯文本格式,但在终究版本中我们能够借助种种要领对其举行殽杂处置惩罚。

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

注重个中的defaultIconStr常量,它供应了我们的默认值。假如要检察其细致内容,能够运用以下敕令来举行挪用:

 

-- let's get the user name from Foundation framework:
       set userName to current application's NSUserName()
       display dialog hlprName & my makeChanges & return & my privString & userName & my allowThis default answer "" with title parentName default button "OK" with icon my software_update_icon as «class furl» with hidden answer

 

这个显现的图标还不错,但另有继承优化的空间,假如运用运用顺序的现实图标,看起来会好许多。图标的称号被定义在运用顺序的Info.plist中。我们能够增加另一个处置惩罚顺序来对其举行抓取:

这是猎取整顿后的图标的代码:

macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限

下面是我们的剧本现在生成的一些示例:

总结

至此,我们发生的受权请求看起来异常具有说服力。在这些请求中,如今已包括了一个实在的运用顺序称号和一个历程称号。假如用户对它们举行深切观察,会发明它们都是正当的。另外,我们另有一个适当的暗码字段,而且在音讯文本中包括用户称号。在这一点上,并没有触发Mojave和Catalina版本中对AppleScript的加强平安机制,因而运用时也无需预先观察受害者盘算机的版本信息。最主要的时,这一历程当中完整不须要任何特权。

如许一来,我们就获得了想要的权限。鄙人一部份的文章中,我们将继承深切探讨怎样捕捉用户输入的暗码、如安在用户盘算机上找到适当的时候来启动诳骗剧本,以及怎样找到适当的运用顺序。我们将研讨怎样采纳雷同的手艺来针对运用kexts和LaunchDaemons的其他特权运用顺序。除此之外,我们将研讨其他AppleScript手艺,以构建具有两个文本字段的加强型对话框,敬请关注我们接下来的文章!

申明:本文中所说起的统统手艺和操纵历程都是完整正当的,且全程未运用任何破绽,文章未涉及到任何破绽的细致信息。仅供平安研讨者与开发人员进修运用,不得用于不法用处。

本文翻译自:https://www.sentinelone.com/blog/macos-red-team-spoofing-privileged-helpers-and-others-to-gain-root/


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明macOS红蓝匹敌:怎样诳骗具有特权的协助东西以猎取root权限
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址