从编译的应用程序中提取权限

Reading time: 5 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 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文件。以下命令演示了如何做到这一点:

bash
$ 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" 的所有字符串:

bash
$ 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 文本:

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

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

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

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks