现代 iOS 渗透测试:无需越狱 – My Framer Site


现代 iOS 渗透测试:无需越狱 - My Framer Site

越狱后世界中的渗透测试——一些背景故事

对 Apple iOS 移动应用进行渗透测试曾经非常简单:越狱设备、安装 IPA,然后开始动态破解。但不幸的是,这样的日子似乎很快就要一去不复返了。

如今,苹果不断增强安全功能,而社区支持却不足(至少与 2016 年左右相比),使得越狱已成为过去,尤其是在最新的设备和 iOS 版本上。

这给我们留下了一个迫切的问题和一个难题——当传统方法不再是一种选择时,如何测试应用程序的安全性?

几个月前,我遇到了一件有点棘手的事情。我们被委托对一款移动应用进行黑盒渗透测试,客户除了 App Store URL 之外什么都没给我们。所以,让我们看看如何对这款应用进行渗透测试。

我们要做的第一件事显然是将应用程序安装到我们的设备上。让我们在越狱设备 (iPhone X) 上看看这个应用程序。

现代 iOS 渗透测试:无需越狱 - My Framer Site

不幸的是,我的 iPhone X 似乎太旧了,无法运行该应用程序。所以,让我们看看解决方法。至少这个 iPhone X 受到了漏洞的影响checkm8,所以我应该能够将我的 iPhone X 从 iOS 14.4.1 更新到 iOS 17.2 并对该应用程序进行渗透测试,对吗?

不可能。此设备的最新 iOS 版本最高为 16.7.x。:(

现代 iOS 渗透测试:无需越狱 - My Framer Site

好的,让我们看看我的主要设备 iPhone 14 Pro 上 iOS 17.2+ 的潜在越狱。不幸的是,像大多数人一样,我会让我的设备保持最新状态。正如我所怀疑的那样,这款 iPhone 和软件版本没有可用的越狱。

现代 iOS 渗透测试:无需越狱 - My Framer Site

感觉我已经走进了死胡同,但风险太高,不能就此止步。好吧,现在该怎么办?我们需要渗透测试的应用程序:

  • 不支持我的主要渗透测试设备(iPhone X)

  • 我的个人设备(iPhone 14 Pro)没有越狱

所以我们陷入困境了,对吧?这款应用的安全性是否将一直未经测试?当然不会。

现在有了新的方法,它不依赖越狱,而是利用开发人员用来构建和调试应用程序的工具。这就是渗透测试的创意所在,我们可以利用开发人员的工具来对付安全问题,扭转局势。

在这篇文章中,我将探索一种不同的、更现代的 iOS 渗透测试方法——从获得调试器权限开始,绕过 FairPlay DRM,到将我的非越狱设备变成强大的渗透测试工具。如果你已经准备好突破 iOS 渗透测试的极限,那就让我们开始吧。

新的前进方向——获得调试器权限

首先,这一切都归功于 iOS 应用签名中内置的一项特殊权利,称为get_task_allow。简而言之,使用此权利构建应用意味着外部进程(如调试器)可以附加到您的应用。这意味着其他应用程序可以运行一个名为 的函数task_for_pid(),以您的应用进程 ID 作为参数,以获取应用的任务端口。(https://developer.apple.com/library/archive/technotes/tn2415/_index.html#:~:text=and UIPasteboard sharing.-,get-task-allow,-布尔值)

根据 Apple 文档中的定义,任务端口本质上是一种提供对应用进程访问权限的通信渠道 – 可以将其视为应用“控制室”的钥匙。它使外部实体(如调试器)能够与应用交互并检查应用的内部工作情况。一旦您能够访问应用的任务端口,您就可以执行诸如读取和写入内存、注入或修补线程以及实时修改应用行为等操作。

巧合的是,如果你从技术层面看一下越狱的传统工作方式,你会注意到他们做的第一件事就是task_for_pid()使用( )pid的(进程 ID)运行,这意味着内核的内存可以在运行中修补和修改,从而实现越狱!kernel_task0

但是,如果我们只是对单个应用程序进行渗透测试,实际上没有必要修改整个内核,相反,我们可以get_task_allow在任何设备/ iOS 版本上重新签名该应用程序并获得该单个应用程序的“类似越狱”的状态!

另一个问题——FairPlay DRM

不幸的是,就我的情况而言(可能大多数情况也是如此),这并不像提取 IPA、重新签名并将其刷回设备那么简单。如果你按照这种方式操作,你可能会遇到以下问题。

现代 iOS 渗透测试:无需越狱 - My Framer Site

那么为什么会发生这种情况呢?简单来说,当开发人员将他们的应用程序上传到 App Store(或其他分发方式)时,Apple 会使用一种名为 FairPlay 的数字版权管理 (DRM) 形式加密他们的 IPA。当您从 App Store 下载应用程序时,您会收到一个使用与您的 Apple ID 绑定的密钥加密的应用程序版本,确保它只能在特定环境中解密和执行。

当您重新签名 FairPlay 加密的应用程序时,您实际上是替换了数字签名,从而使 DRM 密钥无效。没有这个,应用程序就无法启动!

幸运的是,从 iOS 应用中删除 FairPlay 加密非常简单。如果您有可以越狱的旧 iOS 设备,那么只需安装 IPA、使用您最喜欢的工具(例如 Iridium 或frida-ios-dump)解密,然后将其从设备上拉回来即可。

不过,说真的,我应该指出,删除 DRM 加密是违法的,我不赞同这种做法。如果您需要解密的 IPA,最好向开发人员索取。但不幸的是,这在大多数情况下是不可能的,要么是由于时间限制,要么是因为开发人员无法甚至不愿意提供。所以,事不宜迟,让我们直接开始删除 FairPlay。

破解 FairPlay DRM – 第一部分:获取 IPA

因此,首先,您必须获取 IPA(如果您已经拥有它,请跳过!)。如果您尝试渗透测试的应用程序只能通过 App Store 获取,那么您的选择就非常有限。但是,有一种方法经过尝试和信任,并且对我来说似乎总是很有效。

在 Mac 上启动Apple Configurator。它是 Apple 的官方应用程序,您可以通过 Mac App Store 获取它(https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)。

打开后,您应该会看到您的 iOS 设备。如果没有,请尝试通过 USB 连接。双击您的设备,然后单击顶部菜单栏中的添加 + →应用。

现代 iOS 渗透测试:无需越狱 - My Framer Site

接下来,在 Mac 上打开终端cd,然后/Users/[username]/Library/Group\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps。IPA 将很快出现在此文件夹中,因此我们暂时将其保持打开状态。

在您的 iPhone 上,确保已安装要进行渗透测试的应用程序。这不是必需的步骤,但它使获取 IPA 变得更加容易,正如您稍后会看到的那样。返回Configurator,您可以搜索要为其获取 IPA 的应用程序。选择它,然后单击右下角的添加。

现代 iOS 渗透测试:无需越狱 - My Framer Site

单击添加后,配置器将从 Apple 下载 IPA,并尝试将其推送到您的设备。如果您之前按照我的建议安装了 IPA,则应该看到以下屏幕。

现代 iOS 渗透测试:无需越狱 - My Framer Site

当配置器卡在这里时,返回到您的终端,运行ls,您应该能够直接从 Apple 找到 .IPA 文件!

现代 iOS 渗透测试:无需越狱 - My Framer Site

继续使用将 IPA 从此目录中复制出来cp,然后我们就可以继续下一步了!

% cp [appname].ipa ~/Desktop/no-jailbreak-required/redacted.ipa

破解 FairPlay DRM – 第 2 部分:解密应用程序

现在您有了 IPA,我们必须解决最初导致我们来到这里的问题。如果该应用程序不是为我的旧越狱设备构建的,我们如何使用越狱设备解密 IPA?幸运的是,您实际上不需要运行该应用程序即可解密!只要您可以安装该应用程序,就可以通过多种调整轻松解密。

那么我们如何安装它呢?很简单,你要做的第一件事就是解压 IPA(因为 IPA 只是花哨的 .ZIP 文件,这是事实)。

% unzip redacted.ipa -d unzipped

在这个unzipped目录中,你会看到一些我们不太关心的东西。我们关心的主要文件是位于Info.plist目录中的文件Payload/[appname].app。此文件规定了应用程序的所有主要配置项,因此我们需要继续使用 Xcode 打开它(因为它是一种特殊类型的.plist,大多数文本编辑器都不支持)。

% cd unzipped/Payload/[appname].app
% open Info.plist (this should open Xcode by default if it is installed)

现在打开它,你应该能够看到应用程序的相当多的配置值。你能找出我们感兴趣的是哪一个吗?😄

现代 iOS 渗透测试:无需越狱 - My Framer Site

继续将其更改为诸如 之类的值10.0,然后保存文件。当然,在大多数情况下,该应用程序可能无法在较旧的 iOS 版本上运行,因为开发人员通常会出于充分的理由设置最低版本(例如,该应用程序依赖于较新的 API)。但是,正如我们前面提到的,它实际上不需要能够运行。记下包标识符,因为您稍后会需要它!

首先,我们要打包刚刚编辑的应用程序包。由于 IPA 只是精美的 ZIP 文件,因此这部分实际上非常简单。您只需将我们之前创建的目录zip根目录中的所有文件放入一个带有扩展名的新文件中,如下所示。unzipped.ipa

% cd unzipped
% zip -r ../no-min-version.ipa *
% cd ..

现代 iOS 渗透测试:无需越狱 - My Framer Site

现在您拥有了没有最低版本要求的 IPA,下一步就是将其安装在越狱设备上。由于 IPA 未签名,您需要从 Cydia 安装AppSync Unified调整以防止出现任何“无效签名”错误。(有关安装 AppSync Unified 的说明,请查看此处:https: //github.com/akemin-dayo/AppSync/blob/master/README.md#how-do-i-install-appsync-unified-on-my-jailbroken-ios-device)。

要安装 IPA,我们将使用ideviceinstaller(https://github.com/libimobiledevice/ideviceinstaller)和以下命令:

% ideviceinstaller -i no-min-version.ipa -w
现代 iOS 渗透测试:无需越狱 - My Framer Site

如果一切顺利,您应该会看到应用程序图标出现在 iPhone 的主屏幕上!启动它不会有任何作用,因为它会立即崩溃,但现在我们可以使用Iridium插件(可从Cydia获得)来转储解密的 IPA!为此,请安装插件,然后从主屏幕打开Iridium应用程序。您应该会看到设备上安装的应用程序列表。点击您想要解密的应用程序,然后点击立即解密。

现代 iOS 渗透测试:无需越狱 - My Framer Site

当该过程完成并创建了解密的 IPA 后,屏幕右下角会出现一个橙色圆圈图标。点击此图标将打开共享菜单,您可以通过AirDrop 将解密的 IPA 发送回 Mac。

现代 iOS 渗透测试:无需越狱 - My Framer Site

为了便于阅读,我将把它复制回no-jailbreak-required我一直使用的文件夹decrypted.ipa。

通过 Xcode 准备签名证书

如果您以前没有使用过 Xcode,因此没有任何签名配置文件,那么设置它们非常容易,因为 Apple 通过 Xcode 为所有帐户提供免费的开发人员签名配置文件。如果您已完成所有设置,您可以直接跳到下一部分 🙂。

要在您的系统上设置签名配置文件,您需要做的第一件事是启动 Xcode,然后单击“创建新项目… ”。在打开的下一页上,选择iOS,选择App,然后点击下一步。

现代 iOS 渗透测试:无需越狱 - My Framer Site

在下一个屏幕上,将您的组织标识符和产品名称配置为您选择的任何内容。如果您在Team旁边看到“添加帐户… ” ,则需要单击该按钮以登录您的 Apple ID。不用担心,因为您不需要付费开发者帐户。任何 Apple ID 都可以。配置完成后,选择您的Team,单击Next创建您的项目。

现代 iOS 渗透测试:无需越狱 - My Framer Site

如果一切顺利,您将看到如下屏幕。最后,要配置您的签名配置文件,并设置您的 iPhone 以安装开发者应用程序,请单击 Xcode 窗口左上角的大播放图标!

现代 iOS 渗透测试:无需越狱 - My Framer Site

如果这是你第一次使用 Xcode,系统可能会提示你在 iPhone 上启用开发者模式才能继续。操作非常简单,只需导航至设置 → 隐私和安全,然后单击底部的开发者模式。系统将提示你重启 iPhone 才能继续。

现代 iOS 渗透测试:无需越狱 - My Framer Site

重启 iPhone 后,返回 Xcode 并再次单击左上角的播放按钮。如果一切顺利,您应该会看到应用程序在 iPhone 上启动,这意味着我们所有的签名证书都在正确的位置!我应该注意,您不必每次重新签名应用程序时都进行此设置,这只是为了设置签名证书并让您的 iPhone 准备好运行开发者应用程序。

越狱 2.0 –  Resigning with get-task-allow

现在我们已经为 iOS 设备设置了开发者模式,并获得了没有 FairPlay DRM 的解密 IPA,我们可以采取最后的关键一步。我们将get-task-allow在重新签名应用程序时启用授权,授予我们应用程序沙盒的调试器权限。剩下的就是在启用此授权的情况下重新签名应用程序并将其安装在我们的 iPhone 上!

在签名应用程序方面,您有相当多的工具可供选择,例如ios-app-signer、codesign和iResign。对于此演示,我们将使用ios-app-signer(https://github.com/DanTheMan827/ios-app-signer)。我非常喜欢这个工具,因为它的 GUI 非常用户友好,甚至还有自动检测所有已安装签名配置文件的额外好处。

下载iOS App Signer后继续打开,你应该看到如下界面。

现代 iOS 渗透测试:无需越狱 - My Framer Site

为了使用调试权限重新签名我们的应用程序,您需要使用以下选项配置iOS App Signer :

  • 输入文件:选择decrypted.ipa我们之前复制的文件

  • 签名证书:确保选择了“Apple Development”证书(这应该是唯一的选项)

  • 配置文件:选择包含您之前在 Xcode 中创建的新应用程序包 ID 的“iOS 团队配置文件”

  • 没有 get-task-allow:确保未勾选此项!!⚠️

完成所有操作后,您可以按“开始”,然后该工具将开始重新签名您的 IPA。为了演示,我将把重新签名的 IPA 保存为resigned.ipa。该过程完成后,您可以继续将其安装在普通 iPhone 上!我将继续使用ideviceinstalleragain 来执行此操作。

% ideviceinstaller -i resigned.ipa -w

现代 iOS 渗透测试:无需越狱 - My Framer Site

越狱 2.0 — 上钩时间到了!

现在,我们已经在运行最新 iOS 的 iPhone 14 Pro 上安装了可调试的应用程序,让我们使用一些传统的渗透测试工具与该应用程序进行交互!首先,让我们继续使用objection(https://github.com/sensepost/objection)启动该应用程序,这是我最喜欢的 iOS 渗透测试工具之一。

由于 Frida(https://frida.re)最近进行了更新,Objection 所依赖的框架,您无需任何特殊参数或设置即可运行您的工具。例如,要使用 Objection,我只需运行以下命令(在越狱设备上也一样)。

% objection -g [your app bundle ID] explore

现代 iOS 渗透测试:无需越狱 - My Framer Site

就这样!我们成功挂载到了应用程序中。现在我们有一个伪越狱环境,但与这个单个应用程序的沙盒隔离。让我们通过运行pwd检查当前目录并ls查看应用程序沙盒内的文件来确认我们的执行。

现代 iOS 渗透测试:无需越狱 - My Framer Site

因此,我们简单回顾一下:

  • 从 Apple 下载官方 IPA

  • 删除了 FairPlay DRM

  • 修补 IPA 以包含get-task-allow权利

  • …并且绕过了传统越狱的需要!

更好的是,您已经熟悉的大多数工具都可以与这种新方法无缝协作,通常不需要额外的设置或解决方法。

这种新方法不仅与 Apple 日益严格的安全措施保持同步,还为在可能不再可行的环境中进行测试开辟了新的可能性。随着 iOS(以及整个移动测试)不断发展,我们的方法也必须不断发展。工具已经存在 – 现在我们要做的就是为它们找到新的、有创意的用途。


感谢您抽出

现代 iOS 渗透测试:无需越狱 - My Framer Site

.

现代 iOS 渗透测试:无需越狱 - My Framer Site

.

现代 iOS 渗透测试:无需越狱 - My Framer Site

来阅读本文

现代 iOS 渗透测试:无需越狱 - My Framer Site

点它,分享点赞在看都在这里

原文始发于微信公众号(Ots安全):现代 iOS 渗透测试:无需越狱 – My Framer Site

版权声明:admin 发表于 2024年10月4日 下午1:48。
转载请注明:现代 iOS 渗透测试:无需越狱 – My Framer Site | CTF导航

相关文章