iOS Pentesting without Jailbreak
Reading time: 12 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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
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
- iPhoneにペンテストするアプリをインストールします。
- macOS内でApple Configuratorをインストールして起動します。
- Macの
Terminal
を開き、/Users/[username]/Library/Group\\ Containers/K36BKF7T3D.group.com.apple.configurator/Library/Caches/Assets/TemporaryItems/MobileApps
にcdします。後でこのフォルダにIPAが表示されます。 - iOSデバイスが表示されるはずです。ダブルクリックして、上部メニューバーからAdd + → Appsをクリックします。
- Addをクリックすると、ConfiguratorがAppleからIPAをダウンロードし、デバイスにプッシュしようとします。前に私の推奨に従ってIPAをすでにインストールしている場合、アプリを再インストールするように求めるプロンプトが表示されます。
- 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を解凍するだけです:
unzip redacted.ipa -d unzipped
Info.plist
を確認して、サポートされている最小バージョンを確認し、デバイスがそれより古い場合は、値を変更してサポートされるようにします。
IPAを再圧縮します:
cd unzipped
zip -r ../no-min-version.ipa *
次に、例えば次のコマンドでIPAをインストールします:
ideviceinstaller -i no-min-version.ipa -w
注意してください、invalid signature
エラーを防ぐために Cydia から AppSync Unified tweak が必要になる場合があります。
インストールが完了したら、Cydia から Iridium tweak を使用して復号化された IPA を取得できます。
権限のパッチと再署名
get-task-allow
権限でアプリケーションを再署名するために、app-signer
、codesign
、および iResign
のようなツールがいくつか利用可能です。app-signer
は非常にユーザーフレンドリーなインターフェースを持ち、再署名する IPA ファイルを指定し、get-task-allow
を設定し、使用する証明書とプロビジョニングプロファイルを指定することが非常に簡単です。
証明書と署名プロファイルに関しては、Apple は Xcode を通じてすべてのアカウントに 無料の開発者署名プロファイル を提供しています。アプリを作成し、1つを設定してください。その後、Settings
→ Privacy & Security
に移動し、Developer Mode
をクリックして iPhone に開発者アプリを信頼させる ように設定します。
再署名された IPA を使用して、デバイスにインストールしてペンテストを行う準備が整いました:
ideviceinstaller -i resigned.ipa -w
Developer Modeを有効にする (iOS 16+)
iOS 16以降、AppleはDeveloper Modeを導入しました。get_task_allow
を持つバイナリまたは開発証明書で署名されたバイナリは、デバイスでDeveloper Modeが有効になるまで起動を拒否します。このフラグがオンでない限り、Frida/LLDBをアタッチすることもできません。
- 任意の開発者署名されたIPAを電話にインストールまたはプッシュします。
- 設定 → プライバシーとセキュリティ → Developer Modeに移動し、オンに切り替えます。
- デバイスが再起動します。パスコードを入力した後、Developer Modeをオンにするように求められます。
Developer Modeは、無効にするか電話を初期化するまでアクティブなままであるため、このステップはデバイスごとに一度だけ実行する必要があります。Appleのドキュメントがセキュリティの影響を説明しています。
現代のサイドロードオプション
現在、脱獄なしでサイドロードし、再署名されたIPAを最新の状態に保つための成熟した方法がいくつかあります:
ツール | 要件 | 強み | 制限 |
---|---|---|---|
AltStore 2 / SideStore | macOS/Windows/Linuxのコンパニオンが7日ごとに無料の開発プロファイルでIPAを再署名 | 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がオンであれば、脱獄デバイスと同様にアプリをフックできます:
# 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は、実際のデバイス上で同じ技術(get_task_allow
)を使用して、開発者署名されたIPAをインストゥルメント化でき、ファイルシステムブラウザ、トラフィックキャプチャ、Fridaコンソールを備えたWeb UIを提供します【】。最も簡単な方法は、DockerでMobSFを実行し、USB経由でiPhoneを接続することです:
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
- Apple開発者ドキュメント – デバイスでの開発者モードの有効化: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device
- モバイルセキュリティフレームワーク (MobSF): https://mobsf.github.io/Mobile-Security-Framework-MobSF/
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をサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。