macOS 应用程序通过Apple开发人员工具创建自签名并插入自定义后门

阅读量    32097 | 评论 1   稿费 180

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

 

前言

本文将介绍Empire payload嵌入可信的PKG安装程序所需的步骤,并使用苹果自己的开发工具来帮助完成任务并绕过GateKeeper!

通常在红队中,你可能会发现自己需要创建一个可行的安装程序来支持鱼叉式网络钓鱼(Spear phishing),它不仅模拟真正的软件,而且安装一个有效的应用程序以避免怀疑。

 

了解开发者证书

macOS Developer ID installer用于签名PKG文件,以帮助绕过Gatekeeper本身。从理论上讲,要绕过Gatekeeper,你所需要的只是一个可工作的经过了正确签名的PKG文件。通过命令行工作且找到正确的证书可能很麻烦,而且时间也很长。上面突出显示的蓝色文本说明了在签署你的后台应用程序时使用的正确的MacOS“Developer ID Installer”证书。

 

Empire

Empire github地址:https://github.com/EmpireProject/Empire

下面的摘录解释PKG安装程序结构以及如何用以下Empire创建payload:

PKG文件是OSX安装包,可用于部署新应用程序或更新。了解包目录结构的概述可以看这里。在三个包文件结构中,带有安装文件的包是达到我们目的最佳格式。PKG安装程序的内容包括Payload, Scripts, Bom (Bill-Of-Materials/材料清单)和PkgInfo文件。Payload文件是一个cpio压缩文件,由希望复制到文件系统的文件/应用程序组成。脚本文件也是一个cpio压缩文件,由安装前或安装后bash脚本组成。安装前脚本在安装过程开始时执行。而安装后脚本则在安装过程结束时执行。Bom文件详细说明了包的内容。要将其武器化,我们最好使用Empire应用程序包作为payload,并让安装后脚本执行应用程序。但是,我们可以将Empire启动程序存储在安装后脚本中,并将应用程序用作诱饵,从而将其混在一起。这里有一个很好的教程,可以在Linux上为OSX创建一个包安装程序。Empire将这整个过程自动化了!让我们简要回顾一下stager选项:

资料地址:https://www.xorrior.com/new-empire-osx-launchers/

 

将PackageMaker应用于后门应用程序

PackageMaker的功能允许“受信任的”Apple开发人员将两个PKG安装程序合并到一个文件中,或者将.app和PKG安装程序文件合并到一个统一的、签名的Mac OS PKG文件中。我们可以添加我们的Payload,改进安装程序本身的外观和感觉,并使用一个好的GUI完成大部分繁重的工作。

下面的示例仅用于演示目的。我们将解压我们下载的一个合法的1Password PKG安装程序,并通过Empire payload将其作为后门:

# pkgutil --expand 1Password-7.0.4.pkg 1Password-expanded/
# pushd 1Password-expanded/
# ls 
Bom  PackageInfo Payload  Scripts
# tar xvf Payload |cpio -id
# -- snip --
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Resources/Info.plist
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Modules
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Modules/OnePasswordUI.swiftmodule
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Modules/OnePasswordUI.swiftmodule/x86_64.swiftdoc
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Modules/OnePasswordUI.swiftmodule/x86_64.swiftmodule
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/A/Modules/module.modulemap
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Versions/Current
x ./1Password 7.app/Contents/Frameworks/OnePasswordUI.framework/Modules
x ./1Password 7.app/Contents/Frameworks/libswiftsimd.dylib
x ./1Password 7.app/Contents/Info.plist
x ./1Password 7.app/Contents/PkgInfo
-- snip --
# ls
1Password 7.app Bom  PackageInfo Payload  Scripts

现在,我们可以获取我们的1Password.app文件和.pkg Empire payload,并将它们与PackageMaker合并,创建我们的后端1Password安装程序,该安装程序绕过GateKeeper,执行我们的Payload并安装1Password。

通过使用有效的开发者证书,使用Empire创建一个包,并用PackageMaker签署Payload,我们就可以绕过Gatekeeper,在不引起怀疑的情况下轻松弹出一个shell。接下来的步骤是持久化post-exploitation。黑客行动愉快!

 

修复

在公司环境中,不允许在Mac上执行第三方开发人员程序,并且在执行下载的任何内容时,始终遵循最佳安全实践。像TaskExplorer这样的程序可以帮助确保所有安装的软件都是合法的。


https://objective-see.com/products/taskexplorer.html

 

更多工作

https://www.okta.com/security-blog/2018/06/issues-around-third-party-apple-code-signing-checks/

如上面的文章所示,有可能滥用第三方开发人员证书机制本身使虚假应用程序看起来像Apple本身而不是合法的开发人员。将这两个攻击向量结合起来将使PKG文件与合法的Apple PKG安装程序无法区分。

 

参考

https://objective-see.com/products.html

 

审核人:yiwang   编辑:边边

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多