扫码领资料
获网安教程
来Track安全社区投稿~
赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
简要说明
-
• 当客户端提供的应用未签名或不符合设备要求时,常常会出现问题。 -
• 如果没有 Mac、Xcode,或客户端无法手动签名应用(因为正常签名过程由 App Store 在发布时完成),安装应用会变得困难。 -
• 有多种方法可以在设备上加载未签名或伪签名的应用程序:插件(Tweaks)、侧载平台以及设备上的侧载方式。
引言
在某些情况下,为测试目的安装客户端应用会变得很困难。可能会遇到应用是未签名的,或者需要用户自行签名的情况。因此,应用无法直接部署到设备上。如果没有 MacBook 和 Xcode 的支持,或者客户端在签名应用时遇到问题,安装过程将变得更为复杂。
有几种方法可以用来在越狱或非越狱设备上加载未签名或伪签名的应用程序。本文旨在概述这些方法,并说明每种方法的优缺点。为了便于理解,侧载选项可以分为三类:插件(Tweaks)、侧载平台以及设备上的侧载方式。
iOS 应用是如何签名的
Apple 要求在开发和分发过程中强制进行代码签名。一旦设备上的内核启动,它就控制了哪些用户进程和应用可以在设备上运行。为了确保所有应用都来自已知且受信任的来源(如 App Store),并且未被篡改,iOS 要求所有可执行代码都必须使用 Apple 签发的证书进行签名。这包括设备上预装的应用和第三方应用。
开发者可以通过多种方式将应用分发到设备上进行测试。最常见的是通过 Apple 的 TestFlight 等分发平台提供签名应用。也可以提供预先签名的 iOS App Store 包(IPA 文件)。
什么是侧载?
侧载是指在 Apple 生态系统之外将应用安装到设备上的过程。侧载可以在越狱和非越狱设备上进行。
通常,在收到签名的客户端 IPA 文件后,可以使用如 ideviceinstaller 这样的工具,在越狱测试设备上轻松安装。Ideviceinstaller 使用 libimobiledevice 库,该库允许 iOS 设备与非 Apple 操作系统之间进行通信。
OWASP 提供了一系列易受攻击的移动应用程序,这就是 UnCrackable Apps for Android and iOS。本文使用 iOS 版本的 UnCrackable 系列应用作为演示。
当尝试使用 ideviceinstaller 侧载应用时,会返回如下错误,表明应用未签名,且未找到配置描述文件:
侧载方法
存在多种安装未签名 iOS 应用的方法,每种方法都有不同的前置条件。我们将探讨在越狱设备和非越狱设备上侧载应用的方法。非越狱设备在测试方面通常存在一定的限制,但在特定情况下也可能非常有用。以下列出的方法并不全面,但代表了移动应用测试中最常用的几种技术。
插件(Tweaks)
在越狱的 iOS 设备上,插件(Tweaks)允许自定义系统功能。它们是用 Objective-C 或 Swift 编写的扩展程序,在测试过程中可以提供一些实用功能,例如绕过越狱检测。成功越狱后即可获取这些插件,具体获取方式取决于越狱方法,通常通过第三方包管理器如 Cydia、Sileo 或 Zebra 获取,这些管理器会在设备越狱后安装。下图为 Sileo 包管理器的界面。
插件可以通过在“源”标签页中添加开发者的源(repo)来获取。
AppSync Unified
AppSync Unified(简称 AppSync)是一个插件,允许在 iOS 设备上安装伪签名的 IPA 包。
要求:
-
• 越狱设备:支持 iOS 5 至 iOS 18
AppSync 分为两个独立的动态库:AppSyncUnified-installd
和 AppSyncUnified-FrontBoard
。AppSync Unified 利用 Cydia Substrate 的动态 Hook 函数 MSHookFunction()
来绕过 installd
的签名检查。
如果某个应用拥有有效的签名信息,AppSync Unified 不会对其进行任何修改,而是将信息直接传递给 Apple 原生实现的函数,让应用的安装过程如同系统未被修改过一样继续进行。
但如果应用包含无效的签名信息,AppSync Unified 将生成适当的签名信息并将其传递给系统。
AppSync Unified 90.0 引入了第二个动态库,它会注入到 FrontBoard
和 FrontBoardServices
私有框架中。这是为了绕过在应用运行时执行的一组签名验证,这些验证通常用于控制应用的有效期。
-
• 项目地址:https://github.com/akemin-dayo/AppSync
要获取此插件,需要通过浏览器下载,或使用 scp
将其推送到越狱设备上一个可写的目录(如 /var/tmp
)。请确保下载的版本与设备的架构相匹配。
一旦文件在设备上,就可以使用 dpkg
命令进行安装。
然后,进入包管理器(本例中为 Sileo),即可在设备上查看该插件。
此时即可顺利侧载应用程序,无需再遇到任何问题。
-
• 优点: -
• 无时间限制的签名问题。 -
• IPA 文件可直接加载到设备上。 -
• 无需 Apple 签名。 -
• 支持广泛的 iOS 版本。 -
• 缺点: -
• 需要越狱设备。
侧载平台
也有多种侧载平台可用于安装未签名或自签名的 IPA 文件。这些平台(如 Altstore 和 Sideloadly)使用 Apple 的个人开发配置描述文件方式来执行应用签名与安装过程。由于这两种方法都使用免费的 Apple ID 证书,通过此方法签名并加载的应用有效期仅为 7 天,但这通常足以满足测试期间的使用需求。7 天后,这些应用必须刷新才能继续使用。
Altstore
要求:
一台运行 AltServer 的电脑(Mac 或 Windows)
-
• macOS 10.14(Mojave)或更新版本 -
• Windows 10 或更新版本 -
• 从 Apple 官网下载安装的 iTunes 和 iCloud -
• iOS 12.2 或更高版本的 iOS 设备 -
• Apple ID 账户
Altstore 是一个 iOS 设备的替代应用商店,允许用户无需越狱即可安装非官方 App Store 应用。它使用用户的 Apple ID 来生成代码签名证书,用于侧载应用。Altstore 需要配套程序 AltServer,在 Windows 或 macOS 设备上运行,并通过与 iTunes 和 iCloud 的通信与 Apple 的签名系统交互。
-
• 官方网站:https://altstore.io/
该平台有“3 个应用限制”,即最多同时安装 3 个侧载应用。可通过 MacDirtyCow 漏洞绕过此限制。
Altstore 还提供高级服务(Altstore PAL),该服务仅面向欧盟地区居民,受限于 Apple 的相关政策。
AltStore 的安装说明已在官网详细列出,以下是 Windows 平台的简要安装步骤:
-
• 从 Apple 官网下载安装最新版本的 iTunes 和 iCloud(注意不要从 Microsoft Store 下载)。 -
• 解压 AltInstaller.zip 并运行 Setup.exe。 -
• 在 Windows 任务栏中搜索“AltServer”,右键选择“以管理员身份运行”。如有提示,请允许访问私人网络。AltStore 会以图标形式出现在任务栏。 -
• 打开 iTunes,启用“Wi-Fi 同步”功能。 -
• 点击任务栏右下角的 AltServer 图标,选择“Install AltStore”,然后选择你的 iOS 设备。 -
• 如遇安装或刷新应用失败,可能需要在“病毒和威胁防护设置”中关闭 Windows 的“实时防护”功能。 -
• 输入你的 Apple ID 邮箱地址和密码。这将使 AltServer 能够与 Apple 进行身份验证,并配置你的账户以支持侧载应用。 -
• 等待几秒钟后,AltServer 应该会弹出通知,提示 AltStore 已成功安装到你的设备上。 -
• 在你的 iOS 设备上,前往“设置”->“通用”->“描述文件与设备管理”。点击“信任 [你的 Apple ID]”,然后再次点击“信任”以确认。
一旦目标应用已在设备上,打开 AltStore,点击“加号”,选择你的目标应用。
该应用随后会被加载到设备上。
优点:
-
• 不需要越狱设备。 -
• 支持广泛的 iOS 版本。 -
• 界面友好,易于使用。
缺点:
-
• 应用签名仅有效7天,但可自动刷新。 -
• 有3个应用签名限制(不过可绕过)。 -
• MacDirtyCow 漏洞支持 iOS 14.0 至 16.1.2(不含15.7.2)。 -
• 需要 Apple ID。
Sideloadly
要求:
-
• iOS 设备,支持越狱和非越狱状态,iOS 版本范围为 7 至 18.3。 -
• 有效的 Apple ID 或开发者账号。 -
• Windows 或 macOS 系统。
Sideloadly 是一款 Windows 和 macOS 平台的独立应用,通过 USB 和 Wi-Fi 进行应用侧载。它同样使用 Apple 的开发者配置系统,允许在 iOS 设备上安装应用。与 AltStore 不同的是,Sideloadly 不依赖后台服务器。
-
• 官网:https://sideloadly.io/
该应用要求用户在工具内选择 IPA 文件,文件可以通过 USB 或 Wi-Fi 传输。
应用安装到 Windows 或 macOS 主机后,可按以下步骤安装 IPA 文件:
-
• 打开 Sideloadly。 -
• 使用 USB Lightning 数据线将 iOS 设备连接到电脑。 -
• 将 IPA 文件拖放到工具内或通过工具打开文件。
该应用还提供多个高级选项,如不同的签名模式、动态上传、插件注入和 plist 修改。
选择 IPA 文件后,用户会被提示输入 Apple ID 凭据,应用随后会被加载到目标设备上。
优点:
-
• 不需要越狱设备。 -
• 具备高级签名功能、插件注入、多种签名模式。 -
• 无需后台服务器。
缺点:
-
• 应用签名仅有效 7 天,但可自动刷新。 -
• 3 个应用签名限制。 -
• 需要 Apple ID。
设备端侧载
设备端侧载方法也存在,例如 TrollStore。该方法允许用户直接通过设备本身安装和签名 IPA 文件。
TrollStore
要求:
-
• iOS 设备,运行 iOS 14.0 至 iOS 16.6.1、16.7 RC(20H18)及 17.0。
TrollStore 是一款设备端侧载工具,能够在不需要特定权限(entitlements)的情况下永久签名应用,用于安装永久签名的应用。
-
• 官网:https://trollstore.app/
TrollStore 利用了 CoreTrust 漏洞。此方法依赖于绕过 CoreTrust 的漏洞,允许绕过代码签名检查。原版 TrollStore 利用的是 CoreTrust 根证书验证漏洞,而 TrollStore 2.0.0 及以上版本则利用了 CoreTrust 多签名验证漏洞。
iOS 17.6 和 18.0 引入了新防护,防止非 root 权限的二进制文件启动具有 root 权限的二进制(通过 com.apple.private.persona-mgmt 权限控制)。这意味着即使存在 CoreTrust 漏洞,TrollStore 在这些版本上也可能无法正常工作,因为它依赖 root 帮助程序执行某些任务。
TrollStore 的安装步骤根据设备上的 iOS 版本不同而有所区别,详细流程可参见这里。一般步骤如下:
-
• 通过侧载方法在设备上安装 TrollStore 安装程序(如 TrollInstallerX)。 -
• 在设备上运行该安装程序。 -
• 下载所需的 IPA 文件到设备。 -
• 通过 TrollStore 应用导入 IPA,使用应用内的“加号”图标进行安装。
安装完成的应用随后即可在设备上查看。
优点:
-
• 不需要越狱设备。 -
• 能永久签名 IPA 文件。 -
• 无需后台服务器。
缺点:
-
• 受限于 CoreTrust 漏洞的版本和可用性。 -
• 需要先侧载安装器,才能使用该应用并永久签名及加载 IPA 文件。
结论
本文详细介绍了多种侧载方法,可帮助在接收到未签名或伪签名应用时进行安装。诸如 AppSync 这样的插件提供了简便且高效的方式来安装 IPA 文件,兼容广泛的 iOS 设备,但要求设备必须越狱。
侧载平台则方便用户加载应用,并提供了高级签名功能,但存在签名有效期限制且需要 Apple ID。最后,设备端侧载解决方案则能为越狱和非越狱设备提供永久签名应用的能力。
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):如何在 iOS 上加载未签名或伪签名的应用
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论