macOS Dirty NIB

从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)

支持HackTricks的其他方式:

**有关该技术的更多详细信息,请查看原始帖子:https://blog.xpnsec.com/dirtynib/**。**以下是摘要:

NIB文件是苹果开发生态系统的一部分,用于定义应用程序中的UI元素及其交互。它们包含诸如窗口和按钮之类的序列化对象,并在运行时加载。尽管它们仍在使用中,但苹果现在倡导使用Storyboards来更全面地可视化UI流程。

NIB文件的安全问题

需要注意的是NIB文件可能存在安全风险。它们有可能执行任意命令,而对应用程序中NIB文件的更改不会阻止Gatekeeper执行该应用程序,构成重大威胁。

Dirty NIB注入过程

创建和设置NIB文件

  1. 初始设置

  • 使用XCode创建一个新的NIB文件。

  • 向界面添加一个对象,并将其类设置为NSAppleScript

  • 通过用户定义的运行时属性配置初始source属性。

  1. 代码执行小工具

  • 该设置便于按需运行AppleScript。

  • 集成一个按钮来激活Apple Script对象,特别触发executeAndReturnError:选择器。

  1. 测试

  • 用于测试目的的简单Apple Script:

set theDialogText to "PWND"
display dialog theDialogText
  • 在XCode调试器中运行并单击按钮进行测试。

针对应用程序的攻击(示例:Pages)

  1. 准备

  • 将目标应用程序(例如Pages)复制到一个单独的目录中(例如/tmp/)。

  • 启动应用程序以规避Gatekeeper问题并缓存它。

  1. 覆盖NIB文件

  • 用精心制作的DirtyNIB文件替换现有的NIB文件(例如About Panel NIB)。

  1. 执行

  • 通过与应用程序交互(例如选择About菜单项)来触发执行。

概念验证:访问用户数据

  • 修改AppleScript以访问和提取用户数据,例如照片,而无需用户同意。

代码示例:恶意.xib文件

处理启动约束

  • 启动约束阻止应用程序从意外位置(例如/tmp)执行。

  • 可以识别未受启动约束保护的应用程序,并针对它们进行NIB文件注入。

其他macOS保护措施

从macOS Sonoma开始,限制了App捆绑包内部的修改。但是,早期的方法涉及:

  1. 将应用程序复制到不同位置(例如/tmp/)。

  2. 重命名应用程序捆绑包中的目录以绕过初始保护。

  3. 运行应用程序以向Gatekeeper注册后,修改应用程序捆绑包(例如用Dirty.nib替换MainMenu.nib)。

  4. 将目录重新命名并重新运行应用程序以执行注入的NIB文件。

注意:最近的macOS更新通过防止Gatekeeper缓存后的应用程序捆绑包内文件修改来减轻了此漏洞,使其失效。

最后更新于