iOS Extracting Entitlements From Compiled Application

支持 HackTricks

页面摘要 https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary

从应用程序二进制文件中提取权限和移动配置文件

在处理应用程序的 IPA 或已安装的越狱设备上的应用程序时,直接找到 .entitlements 文件或 embedded.mobileprovision 文件可能不可行。然而,权限属性列表仍然可以从应用程序二进制文件中提取,遵循“iOS 基本安全测试”章节中概述的程序,特别是“获取应用程序二进制文件”部分。

即使是加密的二进制文件,也可以采用某些步骤来提取这些文件。如果这些步骤失败,可能需要使用 Clutch(如果与 iOS 版本兼容)、frida-ios-dump 或类似工具来解密和提取应用程序。

从应用程序二进制文件中提取权限 plist

在计算机上访问应用程序二进制文件后,可以使用 binwalk 提取所有 XML 文件。以下命令演示了如何做到这一点:

$ binwalk -e -y=xml ./Telegram\ X

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
1430180       0x15D2A4        XML document, version: "1.0"
1458814       0x16427E        XML document, version: "1.0"

或者,radare2 可以用来安静地运行一个命令并退出,搜索应用程序二进制文件中包含 "PropertyList" 的所有字符串:

$ r2 -qc 'izz~PropertyList' ./Telegram\ X

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...

两种方法,binwalk 和 radare2,都可以提取 plist 文件,检查第一个文件 (0x0015d2a4) 显示成功恢复了 Telegram 的原始权限文件

对于在越狱设备上访问的应用程序二进制文件(例如,通过 SSH),可以使用带有 -a, --text 标志的 grep 命令将所有文件视为 ASCII 文本:

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...

调整 -A num, --after-context=num 标志可以显示更多或更少的行。这种方法即使对于加密的应用程序二进制文件也是可行的,并且已在多个 App Store 应用程序中验证过。前面提到的工具也可以在越狱的 iOS 设备上用于类似的目的。

注意:由于 strings 命令在查找相关信息方面的局限性,不建议直接使用该命令来完成此任务。相反,建议在二进制文件上使用带有 -a 标志的 grep,或利用 radare2 (izz)/rabin2 (-zz) 来获得更有效的结果。

Support HackTricks

Last updated