hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-dirty-nib.md

3.9 KiB
Raw Blame History

macOS Dirty NIB

从零开始学习AWS黑客技术成为专家 htARTEHackTricks 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缓存后的应用程序捆绑包内文件修改来减轻了此漏洞使其失效。