hacktricks/mobile-pentesting/ios-pentesting/extracting-entitlements-from-compiled-application.md
2023-07-07 23:42:27 +00:00

7.8 KiB
Raw Blame History

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

ページはここからコピー https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links

アプリのIPAファイルまたは単にジェイルブレイクされたデバイスにインストールされたアプリしか持っていない場合、通常は.entitlementsファイルを見つけることはできません。これはembedded.mobileprovisionファイルの場合も同様です。それでも、アプリのバイナリから自分でエンタイトルメントプロパティリストを抽出することができるはずです「iOS基本セキュリティテスト」の章、「アプリバイナリの取得」で説明したように、事前に取得したもの

次の手順は、暗号化されたバイナリを対象にしている場合でも機能するはずです。何らかの理由で機能しない場合は、iOSバージョンと互換性のあるClutch、frida-ios-dumpなどを使用してアプリを復号化して抽出する必要があります。

アプリバイナリからエンタイトルメントプリストを抽出する

コンピュータにアプリバイナリがある場合、binwalkを使用してすべての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は、1つのコマンドを実行して終了するための_静かに_オプションを使用して、アプリのバイナリizz内に含まれる「PropertyList」~PropertyList)を含むすべての文字列を検索することもできます。

$ 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で、同じ2つのplistファイルを抽出できました。最初のファイル0x0015d2a4を調査すると、Telegramの元の権限ファイルを完全に回復できました。

注意:stringsコマンドはここでは役に立ちません。バイナリ上で直接grepコマンドを使用するか、radare2izz/rabin2-zz)を使用してください。

ジェイルブレイクされたデバイス上のアプリバイナリにアクセスする場合SSH経由でgrepコマンドを-a, --textフラグすべてのファイルを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フラグを使用して、表示する行数を増減させてみてください。また、jailbroken iOSデバイスにもインストールされている場合、上記で紹介したツールを使用することもできます。

この方法は、アプリのバイナリがまだ暗号化されている場合でも機能するはずですApp Storeのいくつかのアプリでテストされました

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