加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

借助macOS Dock实现攻击持久化

发布时间:2022-07-11 15:57:30 所属栏目:安全 来源:互联网
导读:一、背景 利用macOS Dock实现攻击持久化 近期,我一直专注于macOS持久化领域,特别选择了一些较低级别用户可以修改的文件,而这些文件可能会影响用户交互。我发现,终端用户经常进行交互的一个位置是Dock。 通过研究,我发现有一个plist负责控制Apple Dock应
   一、背景
 
  利用macOS Dock实现攻击持久化
 
  近期,我一直专注于macOS持久化领域,特别选择了一些较低级别用户可以修改的文件,而这些文件可能会影响用户交互。我发现,终端用户经常进行交互的一个位置是Dock。
 
  通过研究,我发现有一个plist负责控制Apple Dock应用程序的可视化呈现。在这里没有太多突破性内容,因为终端用户经常会通过图形化界面(GUI)来修改这一plist。在查看了plist中的值之后,我想探究是否可以更改这些值,从而使用运行自定义代码的恶意应用程序来替换合法的应用程序。
 
 
  二、攻击方式
 
  2.1 部署
 
  前面已经说过,这种持久化方式需要将恶意应用程序上传到目标。在此过程中,有多种方法可以绕过Gatekeeper保护,允许我们将恶意应用程序上传到目标。这些方法包括:
 
  1、压缩应用程序包,在Mythic代理(Apfell或Poseidon)中使用上传命令,然后在目标计算机中解压缩。
 
  2、压缩应用程序包,在某个位置托管,使用curl下载到目标,然后在目标计算机中解压缩。
 
  3、压缩应用程序包,进行Base64编码,在进行Base64解码后保存到目标上,然后在目标计算机中解压缩。
 
  作为概念验证(PoC),我仅仅是在“自动操作”(Automator)中创建了一个应用程序。PoC应用程序会打开Safari浏览器,这样就避免了终端用户没有感知的情况。然后,它将运行我们的Apfell Payload。
 
  在PoC应用程序中,JXA打开Safari并执行Apfell Payload:
 
  利用macOS Dock实现攻击持久化
 
  为了不让终端用户发觉,我将默认的“自动操作”图标替换为Safari浏览器。当然,如果使用Xcode,还可以创建更复杂的应用程序。
 
  带有Safari浏览器图标的PoC应用程序,我们将其命名为Safari:
 
  利用macOS Dock实现攻击持久化
 
  接下来,我压缩应用程序包,并将其上传到目标。在解压缩到/Users/Shared/之后,我们可以集中精力,在满足前提条件的情况下调用持久化方法。
 
  注意:由于plist的二进制格式,自动实现要求将虚假的应用程序命名为“Google Chrome”或“Safari”,并且位于/Users/Shared/中。我们可以修改Safari64和Chrome64变量,以更改此位置。
 
  2.2 调用持久化
 
  将脚本导入Mythic中的Apfell代理:
 
  利用macOS Dock实现攻击持久化
 
  调用DockPersist函数。该函数接受三个参数:应用程序名称(Safari或Google Chrome)、Bundle ID、是否立即重新加载Dock的选项。
 
  注意:Bundle ID位于Info.plist中,可以使用以下命令来获取:
 
  复制
  /usr/libexec/PlistBuddy -c 'Print CFBundleIdentifier' ~/FakeApp/Safari.app/Contents/Info.plist
  1.
  在Apfell代理中调用DockPersist函数,指定Safari、Bundle ID和是否重新加载Dock的选项:
 
  利用macOS Dock实现攻击持久化
 
  三、检测方法
 
  Crescendo是一个能在主机上迅速捕获事件的绝佳工具。Crescendo可以作为macOS的实时事件查看器,它的一项出色功能就是利用了Apple的终端安全框架(ESF)。ESF可以监视系统事件中是否存在潜在的恶意活动,实际上它是系统扩展框架中的一个API。与Windows相比较,可以将其理解为macOS上一个功能有限的事件追踪(ETW)。
 
  通过Crescendo,我们可以轻松地查看由持久化执行创建的文件和进程事件。
 
  对于不太了解ESF的读者,大家需要了解下面的一些事件会同步到Crescendo:
 
 
 
  首先,plutil将Dock plist转换为XML。XML格式更加易于操作。
 
  Plutil将当前com.apple.dock.plist转换为XML格式:
 
  利用macOS Dock实现攻击持久化
 
  随后,记录了temp9876文件创建和进程创建。
 
  DockPersist.js在/private/tmp/下创建一个随机命名的文件。该脚本会修改plist的XML版本,并将其以随机文件名保存。在这里,temp0wsn4p包含XML格式的恶意plist,因此我们用正确加载Dock所需的二进制格式版本覆盖了此文件。
 
  Plutil将修改后的plist转换回二进制格式:
 
  利用macOS Dock实现攻击持久化
 
  接下来,DockPersist.js在~/Library/Preferences/com.apple.dock.plist中删除现有的plist。
 
  删除当前的com.apple.dock.plist:
 
  利用macOS Dock实现攻击持久化
 
  ESF捕获到这一动作,并将新的恶意plist以二进制格式保存到~/Library/Preferences/com.apple.dock.plist。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读