macOS红队攻防(二):利用DarwinOps DMG模板绕过Gatekeeper

4 阅读5分钟

你已经成功搭建了Mythic C2框架并部署了第一个Apfell植入体,也完成了一些基础场景的演练。如果还没有完成这些,建议先阅读上一篇文章《macOS红队攻防(一):使用DarwinOps实现初始访问的基础知识》。本文将重点聚焦在DMG文件及其模板的应用上。

现在面临的核心问题是:如何让目标机器真正执行你的载荷?

从0.9.4版本开始,DarwinOps也能帮你解决载荷投递的问题。为了实现初始访问,DarwinOps提供了多个易于使用的DMG模板(在DarwinOps中称为profiles,下文将统一使用这个术语)。这个功能非常有价值,主要体现在以下几个方面:

  • Gatekeeper绕过技术
  • 现成的逼真钓鱼模板
  • 模拟当前先进的APT组织

这些配置文件采用非混淆的JSON格式,你可以自由编辑。只要遵循既定格式,你就可以复制文件、创建符号链接(包括指向用户文件夹)。通过插入文件、调整窗口大小和位置以及更换背景图,你可以快速轻松地制作出复杂且足以乱真的DMG文件。

例如,仅凭一个JSON文件,你就可以创建一个DMG,它会自动解压一个包含几十个Excel文件和某个(恶意的)应用程序的ZIP包,而该应用会被用于打开这些Excel文件。

Slack配置器的JSON模板

配置文件允许你在两种Gatekeeper绕过技术中选择:

  1. “软”方法:利用Gatekeeper的逻辑缺陷。通过使用特定的程序或文件类型,这些程序或文件自然触发执行,但由于其自身特性或软件处理方式,不会被扫描
  2. “硬”方法:依赖于存在漏洞的第三方(或原生)应用程序,我们可以利用这些漏洞更直接地绕过Gatekeeper

软性Gatekeeper绕过

目标分析

假设你已经摸清目标安装了Slack。这是一个关键信息——它让你能为此次投递选择最相关的DMG模板

在这个例子中,我们将使用DarwinOps自带的 “Slack Configurator” 配置文件。

Slack Configurator DMG模板预览

你可以使用一条简单的命令生成所需的一切(我们将从Mythic植入体生成的payload导入):

./darwin_ops -i apfell.js -G apfell.plist --container slack-configurator.dmg --dmg-profile ./dmg_profiles/slack_configurator_plist.json

这条命令会输出一个立即可用的DMG文件,其中预配置了.plist文件,一切就绪:

DarwinOps会自动构建.plist文件并处理DMG文件的创建。用户只需将文件拖放到指定文件夹,payload就会就位,并在无需任何额外操作的情况下启动。目标只要一疏忽——他们注销再登录系统,boom:我们就获得了持久化和自动执行权限

硬性Gatekeeper绕过

如果你的目标仅仅是绕过Gatekeeper(例如,移除MOTW/隔离属性),DarwinOps也为此提供了特定模板。

./darwin_ops -G test.app -t CALC --container test.dmg --dmg-profile ./dmg_profiles/bp_gt_adobe_connect.json -y

这种场景需要更多点击(2-3次点击),但提供了更大的灵活性(通过图标伪装格式)。

首先,payload总是以.zipx文件的形式投递。DMG必须设置为只读,因为即使应用程序本身没有隔离标签,如果它位于一个被隔离的DMG内部,Gatekeeper仍然会执行检查

当目标双击时,会弹出一个Gatekeeper弹窗(这是伪装的)——即使是一个经过公证的应用程序,出现弹窗也是正常的。绕过并非发生在此处。

上一篇文章中,我们了解到有几种不同类型的提示。这里我们看到的是最友好的一种——一个经过苹果签名和公证的应用程序。

接着,他们会看到一个弹出窗口,提示将内容解压到桌面

一旦.app被提取出来,它就不再带有隔离属性,这意味着Gatekeeper不会被触发

被解压后桌面上的payload

结论

这两种方法并非互斥,而是互补的。这里有一些建议供参考:

  • 如果你在冒充受害者的IT部门.plist文件(软方法)是个不错的选择,因为.plist文件很常用。

  • 如果受害者技术知识有限拖放操作可能比几次点击更容易成功。

  • 如果受害者使用Munki这类工具,你可以利用拖放方式,通过将文件放到正确的位置来实现高权限执行./darwinops --listdmgprofile → 查看 container-drag-and-drop 配置文件)。

  • 但是,如果你伪装成同事发送软件(例如 Adobe Connect)或修改版的通讯工具,硬绕过方法会更合适

  • 如果你想发送一个恶意文件——例如,一个需要签名的PDF——你应该使用此方法来嵌入你的虚假PDF应用(./darwinops --listdmgprofile → 查看 docusign 配置文件)。

  • 如果你接触的部门习惯于处理文件或压缩包,这种方法可能会有效得多。

虽然这只是一个简单的例子,但它展示了DarwinOps(v0.9.4)如何通过目标化的模板和内建的自动化功能,简化了载荷的打包和投递过程。这开启了诸多创造性的选择——只要你了解目标使用的工具,就能定制相应的投递机制。

前面我提到了APT级别的攻击。在macOS红队攻防第三篇教程中,我们将探讨如何利用存在漏洞的内部应用程序,创建一个特定的.dmg文件来提升权限,并仅通过简单的拖放操作实现持久化。FINISHED CSD0tFqvECLokhw9aBeRqiAtBdroPKrTJORmTzK0GBgyQjrra1XVpoNHztI+O0CRA4/4LJpPMA/rRdlN6WaJVaS14dUaeTthNT7OF8k8zEE2A2xmpsmIjbe0Hh+TOmOtFc4hSRHHyUSU+d67FstnTQ==