diff --git a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md index 2673c5518..7de5191ac 100644 --- a/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md +++ b/src/mobile-pentesting/ios-pentesting/ios-pentesting-without-jailbreak.md @@ -8,7 +8,7 @@ しかし、単にIPAを引き出し、権限で再署名し、デバイスに戻すだけでは簡単ではありません。これはFairPlay保護のためです。アプリの署名が変更されると、DRM(デジタル著作権管理)キーが **無効化され、アプリは動作しなくなります**。 -古い脱獄デバイスを使用すれば、IPAをインストールし、**お気に入りのツールを使用して復号化**(Iridiumやfrida-ios-dumpなど)し、デバイスから引き出すことが可能です。ただし、可能であれば、クライアントに復号化されたIPAを依頼することをお勧めします。 +古い脱獄デバイスを使用すれば、IPAをインストールし、**お気に入りのツールを使用して復号化**(Iridiumやfrida-ios-dumpなど)し、デバイスから引き出すことが可能です。ただし、可能であれば、復号化されたIPAをクライアントにそのまま依頼することをお勧めします。 ## Obtain decrypted IPA @@ -17,7 +17,7 @@ 1. ペンテストするアプリをiPhoneにインストールします。 2. macOS内で[Apple Configurator](https://apps.apple.com/au/app/apple-configurator/id1037126344?mt=12)をインストールして起動します。 3. Macの`Terminal`を開き、`/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps`にcdします。後でこのフォルダにIPAが表示されます。 -4. iOSデバイスが表示されるはずです。ダブルクリックして、上部メニューバーからAdd + → Appsをクリックします。 +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`内にダウンロードされ、そこから取得できます。 @@ -25,7 +25,7 @@ ### Decrypting the app -IPAを復号化するために、インストールします。ただし、古い脱獄iPhoneを持っている場合、アプリケーションが通常最新のバージョンのみをサポートするため、バージョンがサポートされない可能性があります。 +IPAを復号化するために、インストールします。ただし、古い脱獄iPhoneを持っている場合、アプリケーションがサポートするのは通常最新のバージョンのみであるため、バージョンがサポートされない可能性があります。 したがって、インストールするには、IPAを解凍するだけです: ```bash @@ -38,7 +38,7 @@ IPAを再圧縮します: cd unzipped zip -r ../no-min-version.ipa * ``` -次に、例えば以下のコマンドでIPAをインストールします: +次に、例えば次のコマンドでIPAをインストールします: ```bash ideviceinstaller -i no-min-version.ipa -w ``` @@ -46,28 +46,72 @@ ideviceinstaller -i no-min-version.ipa -w インストールが完了したら、Cydia から **Iridium tweak** を使用して復号化された IPA を取得できます。 +### 権限のパッチと再署名 -### エンタイトルメントのパッチと再署名 +`get-task-allow` 権限でアプリケーションを再署名するために、`app-signer`、`codesign`、および `iResign` のようなツールがいくつか利用可能です。`app-signer` は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、**`get-taks-allow` を設定し**、使用する証明書とプロビジョニングプロファイルを指定することが非常に簡単です。 -`get-task-allow` エンタイトルメントでアプリケーションを再署名するために、`app-signer`、`codesign`、および `iResign` のようなツールがいくつか利用可能です。`app-signer` は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、**`get-taks-allow` を設定し**、使用する証明書とプロビジョニングプロファイルを指定することが非常に簡単です。 +証明書と署名プロファイルに関しては、Apple は Xcode を通じてすべてのアカウントに **無料の開発者署名プロファイル** を提供しています。アプリを作成し、1 つを設定してください。その後、`Settings` → `Privacy & Security` に移動し、`Developer Mode` をクリックして **iPhone に開発者アプリを信頼させる** ように設定します。 -証明書と署名プロファイルに関しては、Apple は Xcode を通じてすべてのアカウントに **無料の開発者署名プロファイル** を提供しています。アプリを作成し、1つを設定してください。その後、`Settings` → `Privacy & Security` に移動し、`Developer Mode` をクリックして **iPhone に開発者アプリを信頼させる** ように設定します。 - - -再署名された IPA を使用して、デバイスにインストールしてペンテストを行う準備が整いました: +再署名された IPA を使用して、デバイスにインストールしてペンテストを行う準備が整いました。 ```bash ideviceinstaller -i resigned.ipa -w ``` -### Hook +--- -あなたはfridaやobjectionのような一般的なツールを使用して、アプリを簡単にフックすることができます: +### Developer Modeを有効にする (iOS 16+) + +iOS 16以降、Appleは**Developer Mode**を導入しました。`get_task_allow`を持つバイナリ*または*開発証明書で署名されたバイナリは、デバイスでDeveloper Modeが有効になるまで起動を拒否します。このフラグがオンでない限り、Frida/LLDBをアタッチすることもできません。 + +1. **任意の**開発者署名されたIPAを電話にインストールまたはプッシュします。 +2. **設定 → プライバシーとセキュリティ → Developer Mode**に移動し、オンに切り替えます。 +3. デバイスが再起動します。パスコードを入力した後、Developer Modeを**オンにする**ように求められます。 + +Developer Modeは、無効にするか電話を初期化するまでアクティブなままですので、このステップはデバイスごとに一度だけ実行する必要があります。[Appleのドキュメント](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)がセキュリティの影響を説明しています。 + +### 現代のサイドロードオプション + +現在、脱獄なしでIPAをサイドロードし、再署名を最新の状態に保つための成熟した方法がいくつかあります: + +| ツール | 要件 | 強み | 制限 | +|------|--------------|-----------|-------------| +| **AltStore 2 / SideStore** | IPAを7日ごとに無料の開発プロファイルで再署名するmacOS/Windows/Linuxのコンパニオン | Wi-Fi経由の自動リロード、iOS 17まで動作 | 同じネットワーク上にコンピュータが必要、Appleによる3アプリ制限 | +| **TrollStore 1/2** | CoreTrustバグに脆弱なiOS 14 – 15.4.1のデバイス | *永久的*な署名(7日制限なし);インストール後はコンピュータ不要 | iOS 15.5+ではサポートされていない(バグが修正された) | + +現在のiOSバージョンでのルーチンのペンテストには、Alt/Side-Storeが通常最も実用的な選択肢です。 + +### フック / 動的インスツルメンテーション + +`get_task_allow`で署名され、Developer Modeがオンであれば、脱獄デバイスと同様にアプリをフックできます: ```bash -objection -g [your app bundle ID] explore +# Spawn & attach with objection +objection -g "com.example.target" explore +# Or plain Frida +frida -U -f com.example.target -l my_script.js --no-pause ``` +最近のFridaリリース(>=16)は、ポインタ認証やその他のiOS 17の緩和策を自動的に処理するため、ほとんどの既存のスクリプトはそのまま動作します。 + +### Jailbreakなしの自動動的分析(MobSF) + +[MobSF](https://mobsf.github.io/Mobile-Security-Framework-MobSF/)は、実際のデバイス上で同じ技術(`get_task_allow`)を使用して、開発者署名されたIPAをインストゥルメント化でき、ファイルシステムブラウザ、トラフィックキャプチャ、Fridaコンソールを備えたWeb UIを提供します【turn6view0†L2-L3】。最も簡単な方法は、DockerでMobSFを実行し、USB経由でiPhoneを接続することです: +```bash +docker pull opensecurity/mobile-security-framework-mobsf:latest +docker run -p 8000:8000 --privileged \ +-v /var/run/usbmuxd:/var/run/usbmuxd \ +opensecurity/mobile-security-framework-mobsf:latest +# Browse to http://127.0.0.1:8000 and upload your resigned IPA +``` +MobSFは自動的にバイナリをデプロイし、アプリサンドボックス内にFridaサーバーを有効にし、インタラクティブなレポートを生成します。 + +### iOS 17 & ロックダウンモードの注意点 + +* **ロックダウンモード** (設定 → プライバシーとセキュリティ) は、動的リンカーが署名されていないまたは外部署名された動的ライブラリを読み込むのをブロックします。このモードが有効になっている可能性のあるデバイスをテストする際は、**無効**にしておく必要があります。さもなければ、Frida/objectionセッションはすぐに終了します。 +* ポインタ認証 (PAC) はA12+デバイス全体で強制されます。Frida ≥16はPACストリッピングを透過的に処理します — 新しいメジャーiOSバージョンがリリースされる際は、*frida-server*とPython/CLIツールチェーンの両方を最新の状態に保ってください。 + ## 参考文献 - [https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed](https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed) - +- Apple開発者ドキュメント – デバイスでの開発者モードの有効化: +- モバイルセキュリティフレームワーク (MobSF): {{#include ../../banners/hacktricks-training.md}}