你刚刚成功设置了Mythic并部署了第一个Apfell载荷,并且完成了一些基础场景。如果还没有,建议先阅读这篇文章(MacOS Redteam 1: Introduction to the Fundamentals of Initial Access with DarwinOps)。本文将更具体地聚焦于DMG和DMG模板。
现在真正的问题是:你如何让那个载荷真正在目标机器上执行?
从版本 0.9.4 开始,DarwinOps 也能帮助你处理投递环节。
为了帮助你实现初始访问,DarwinOps 提供了几个易于使用的 DMG 模板(在 DarwinOps 中称为 profiles,因此本文后续将称之为 profiles)。
这个功能之所以值得关注,有几个原因:
- Gatekeeper 绕过技术
- 现成的、逼真的钓鱼模板
- 模拟当前高级 APT 组织的行为
这些模板采用非混淆的 JSON 格式,只要遵循该格式,你就可以自由编辑。你可以复制、插入符号链接(包括用户文件夹内)。
通过插入功能,结合更改窗口大小和位置以及背景图的能力,可以快速轻松地创建复杂且具有迷惑性的 DMG。
例如,它可以复制一个包含数十个 Excel 文件和一个(恶意)应用程序的 ZIP 压缩包内容——所有这些都只需通过一个 JSON 文件来完成。
Profiles 允许在两种类型的 Gatekeeper 绕过技术之间进行选择:
- “软”方法:利用 Gatekeeper 的逻辑缺陷——通过使用特定程序或文件类型,这些程序或文件自然会触发执行,但由于其性质或软件处理方式而不会被扫描。
- “硬”方法:依赖包含漏洞的第三方应用程序(或原生应用),我们可以利用这些漏洞以更直接的方式绕过 Gatekeeper。
软 Gatekeeper 绕过
目标分析
假设你知道你的目标安装了 Slack。这是一个关键细节——它允许你为投递选择最相关的 DMG 模板。
在这个例子中,我们将使用 DarwinOps 附带的 “Slack Configurator” 配置文件。
你可以使用一个简单的命令生成所需的一切(我们从 Mythic 导入生成的载荷):
./darwin_ops -iapfell.js -G apfell.plist --container slack-configurator.dmg --dmg-profile ./dmg_profiles/slack_configurator_plist.json
此命令会输出一个即用型 DMG,其中包含一个预配置的 .plist 文件,一切就绪:
DarwinOps 自动构建 .plist 文件并处理 DMG 文件的创建。
用户只需要将其拖放到文件夹中,载荷就会就位,无需任何进一步操作即可启动。
目标用户只要一疏忽——他们注销,再登录,然后砰:我们就获得了持久化和自动执行。
硬 Gatekeeper 绕过
如果你的目标仅仅是绕过 Gatekeeper(例如,移除 MOTW/ quarantine 属性),DarwinOps 也为此提供了专门的模板。
./darwin_ops -G test.app -t CALC --container test.dmg --dmg-profile ./dmg_profiles/bp_gt_adobe_connect.json -y
这种场景需要更多点击(2-3 次点击),但提供了更大的灵活性(通过图标伪装格式)。
首先,载荷总是以 .zipx 文件的形式投递。DMG 必须是只读的,因为即使应用程序本身没有 quarantine 标签,如果它位于一个被 quarantine 的 DMG 内部,Gatekeeper 仍会执行其检查。
当目标双击时,会弹出一个 Gatekeeper 弹窗(这是伪装的)——这很正常,即使是经过公证的应用程序也会出现。绕过并非发生在这里。
在上一篇文章中,我们看到了几种不同类型的提示。这里,我们遇到的是最友好的一种——一个由 Apple 签名并公证的应用程序。
然后,他们会看到一个提示框,要求将内容解压到桌面。
一旦 .app 被提取出来,它不再具有 quarantine 属性,这意味着 Gatekeeper 不会被触发。
解压后桌面上的载荷。
结论
这两种方法并非互斥——它们是互补的。以下是一些建议:
- 如果你冒充受害者的 IT 部门,
.plist(软方法)是个不错的选择,因为.plist文件很常用。 - 如果受害者技术知识有限,拖放操作可能比几次点击更容易。
- 如果受害者使用像 Munki 这样的工具,你可以利用拖放方法,通过将文件放到正确的位置来实现提权执行 (
./darwinops --listdmgprofile→ 查看container-drag-and-dropprofile)。
但是,
- 如果你假扮成同事发送软件(例如,Adobe Connect)或修改版的通讯工具,硬绕过方法更合适。
- 如果你想发送一个恶意文件——例如,一个需要签名的 PDF——你应该使用这种方法来嵌入你的虚假 PDF 应用程序 (
./darwinops --listdmgprofile→ 查看docusignprofile)。 - 如果你正在联系一个习惯处理文件或存档的部门,这种方法可能会有效得多。
虽然这只是一个简单的例子,但它展示了 DarwinOps (v0.9.4) 现在如何通过有针对性的模板和内置自动化,使得打包和投递载荷变得更加容易。
这开启了许多创造性的选择——如果你知道目标使用什么,你就可以相应地定制投递机制。
之前,我谈到了 APT 级别。在 MacOS Redteam 3 教程中,我们将看到如何利用一个易受攻击的内部应用程序,创建一个特定的 .dmg 来提升我们的权限,并仅通过简单的拖放操作获得持久化。FINISHED CSD0tFqvECLokhw9aBeRqiAtBdroPKrTJORmTzK0GBgyQjrra1XVpoNHztI+O0CRA4/4LJpPMA/rRdlN6WaJVaS14dUaeTthNT7OF8k8zEE2A2xmpsmIjbe0Hh+TOmOtFc4hSRHHyUSU+d67FstnTQ==