hacktricks/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md
2023-08-03 19:12:22 +00:00

6.5 KiB
Raw Blame History

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

页面复制自 https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links

如果你只有应用的IPA文件或者只是在越狱设备上安装的应用通常你无法找到.entitlements文件。这也可能是embedded.mobileprovision文件的情况。不过你应该能够自己从应用二进制文件中提取出entitlements属性列表如在“iOS基本安全测试”章节中所述通过“获取应用二进制文件”一节获得

即使针对加密的二进制文件以下步骤也应该适用。如果由于某种原因不适用你将需要使用Clutch如果与你的iOS版本兼容、frida-ios-dump或类似工具来解密和提取应用。

从应用二进制文件中提取Entitlements Plist

如果你在电脑上有应用的二进制文件一种方法是使用binwalk来提取-e所有XML文件-y=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-qc以静默模式运行一个命令并退出)在应用程序二进制文件上搜索包含"PropertyList"~PropertyList)的所有字符串(izz

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

0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">
...<key>com.apple.security.application-groups</key>\n\t\t<array>
\n\t\t\t<string>group.ph.telegra.Telegraph</string>...

0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n
<dict>\n\t<key>cdhashes</key>...

无论是使用binwalk还是radare2我们都能够提取出相同的两个plist文件。如果我们检查第一个文件0x0015d2a4我们会发现我们能够完全恢复Telegram的原始授权文件

注意:strings命令在这里无法帮助,因为它无法找到这些信息。最好直接在二进制文件上使用带有-a标志的grep命令或者使用radare2izz/rabin2-zz)。

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

$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/
15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
...

使用-A num, --after-context=num标志来显示更多或更少的行。如果您的越狱iOS设备上也安装了这些工具您也可以使用我们上面介绍的工具。

即使应用程序二进制文件仍然加密这种方法也应该有效已经对几个App Store应用进行了测试

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥