借助macOS Dock实现攻击持久化
近期,我一直专注于macOS持久化领域,特别选择了一些较低级别用户可以修改的文件,而这些文件可能会影响用户交互。我发现,终端用户经常进行交互的一个位置是Dock。 通过研究,我发现有一个plist负责控制Apple Dock应用程序的可视化呈现。在这里没有太多突破性内容,因为终端用户经常会通过图形化界面(GUI)来修改这一plist。在查看了plist中的值之后,我想探究是否可以更改这些值,从而使用运行自定义代码的恶意应用程序来替换合法的应用程序。 这项研究中的一个突破是DockPersist.js,我将其纳入到PersistentJXA项目之中。在我的实现中,将使用恶意应用程序替换Safari或Chrome。我主要研究Safari和Chrome,因为二者很可能会出现在用户的Dock中。但是,这一理论实际上适用于任何应用程序。终端用户在单击Safari或Chrome图标后,就会运行我们的恶意应用程序。这种持久化方式类似于Windows上的快捷方式(.LNK)文件持久化,因为在macOS中,Dock图标通常会作为实际应用程序的快捷方式。 这种持久化方法需要将我们的恶意应用程序上传到目标计算机。我倾向于在Mythic代理中使用上传功能,将应用程序保存到目标上。 在修改plist之后,我们就可以立即重新加载Dock。但是,这会导致终端用户的屏幕出现短暂的闪烁。或者,我们也可以等待用户重新启动后,再让虚假的应用程序出现在Dock中,因为修改后的plist会在重新启动后保持不变。 二、攻击方式 2.1 部署 前面已经说过,这种持久化方式需要将恶意应用程序上传到目标。在此过程中,有多种方法可以绕过Gatekeeper保护,允许我们将恶意应用程序上传到目标。这些方法包括: 1、压缩应用程序包,在Mythic代理(Apfell或Poseidon)中使用上传命令,然后在目标计算机中解压缩。 2、压缩应用程序包,在某个位置托管,使用curl下载到目标,然后在目标计算机中解压缩。 3、压缩应用程序包,进行Base64编码,在进行Base64解码后保存到目标上,然后在目标计算机中解压缩。 作为概念验证(PoC),我仅仅是在“自动操作”(Automator)中创建了一个应用程序。PoC应用程序会打开Safari浏览器,这样就避免了终端用户没有感知的情况。然后,它将运行我们的Apfell Payload。 (编辑:ASP站长网) |