iOS Pentesting without Jailbreak

Reading time: 7 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

Main idea

entitlement get_task_allow で署名されたアプリケーションは、初期アプリケーションのプロセスIDを引数として task_for_pid() という関数を実行することを許可し、その上でタスクポートを取得(制御し、メモリにアクセスできるようにする)します。

しかし、単にIPAを引き出し、権限で再署名し、デバイスに戻すだけでは簡単ではありません。これはFairPlay保護のためです。アプリの署名が変更されると、DRM(デジタル著作権管理)キーが 無効化され、アプリは動作しなくなります

古い脱獄デバイスを使用すれば、IPAをインストールし、お気に入りのツールを使用して復号化(Iridiumやfrida-ios-dumpなど)し、デバイスから引き出すことが可能です。ただし、可能であれば、クライアントに復号化されたIPAを依頼することをお勧めします。

Obtain decrypted IPA

Get it from Apple

  1. ペンテストするアプリをiPhoneにインストールします。
  2. macOS内でApple Configuratorをインストールして起動します。
  3. MacのTerminalを開き、/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileAppsにcdします。後でこのフォルダにIPAが表示されます。
  4. iOSデバイスが表示されるはずです。ダブルクリックして、上部メニューバーからAdd + → Appsをクリックします。
  5. Addをクリックすると、ConfiguratorがAppleからIPAをダウンロードし、デバイスにプッシュしようとします。前に私の推奨に従ってIPAをすでにインストールしている場合、アプリを再インストールするように求めるプロンプトが表示されます。
  6. IPAは/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps内にダウンロードされ、そこから取得できます。

このプロセスに関する詳細情報はhttps://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-neededを確認してください。

Decrypting the app

IPAを復号化するために、インストールします。ただし、古い脱獄iPhoneを持っている場合、アプリケーションが通常最新のバージョンのみをサポートするため、バージョンがサポートされない可能性があります。

したがって、インストールするには、IPAを解凍するだけです:

bash
unzip redacted.ipa -d unzipped

Info.plistを確認して、サポートされている最小バージョンを確認し、デバイスがそれより古い場合は、値を変更してサポートされるようにします。

IPAを再圧縮します:

bash
cd unzipped
zip -r ../no-min-version.ipa *

次に、例えば以下のコマンドでIPAをインストールします:

bash
ideviceinstaller -i no-min-version.ipa -w

注意してください、invalid signature エラーを防ぐために Cydia から AppSync Unified tweak が必要になる場合があります。

インストールが完了したら、Cydia から Iridium tweak を使用して復号化された IPA を取得できます。

エンタイトルメントのパッチと再署名

get-task-allow エンタイトルメントでアプリケーションを再署名するために、app-signercodesign、および iResign のようなツールがいくつか利用可能です。app-signer は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、get-taks-allow を設定し、使用する証明書とプロビジョニングプロファイルを指定することが非常に簡単です。

証明書と署名プロファイルに関しては、Apple は Xcode を通じてすべてのアカウントに 無料の開発者署名プロファイル を提供しています。アプリを作成し、1つを設定してください。その後、SettingsPrivacy & Security に移動し、Developer Mode をクリックして iPhone に開発者アプリを信頼させる ように設定します。

再署名された IPA を使用して、デバイスにインストールしてペンテストを行う準備が整いました:

bash
ideviceinstaller -i resigned.ipa -w

Hook

あなたはfridaやobjectionのような一般的なツールを使用して、アプリを簡単にフックすることができます:

bash
objection -g [your app bundle ID] explore

参考文献

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする