iOS Testing Environment
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
プロビジョニングアイデンティティは、Apple開発者アカウントに関連付けられた公開鍵と秘密鍵のコレクションです。アプリに署名するには、99$/年を支払ってApple Developer Programに登録し、プロビジョニングアイデンティティを取得する必要があります。これがないと、物理デバイスでソースコードからアプリケーションを実行することはできません。これを行う別のオプションは、脱獄デバイスを使用することです。
Xcode 7.2以降、Appleは実際のiPhoneでアプリケーションを書いてテストすることを可能にする無料のiOS開発プロビジョニングプロファイルを作成するオプションを提供しています。Xcode --> Preferences --> Accounts --> +(あなたの資格情報で新しいアプリIDを追加)--> 作成したApple IDをクリック --> Manage Certificates --> +(Apple Development)--> Done __次に、iPhoneでアプリケーションを実行するには、まず**iPhoneにコンピュータを信頼させる必要があります。その後、Xcodeからモバイルでアプリケーションを実行しようとできますが、エラーが表示されます。次に、Settings --> General --> Profiles and Device Management --> 信頼されていないプロファイルを選択し、「信頼」**をクリックします。
同じ署名証明書で署名されたアプリケーションは、キーチェーンアイテムのように安全にリソースを共有できます。
プロビジョニングプロファイルは、電話の中の**/Library/MobileDevice/ProvisioningProfiles
**に保存されています。
シミュレーターはエミュレーターとは異なることに注意してください。シミュレーターはデバイスの動作と機能をシミュレートするだけで、実際にはそれらを使用しません。
最初に知っておくべきことは、シミュレーター内でのペンテストは、脱獄デバイスで行うよりもはるかに制限されるということです。
iOSアプリを構築およびサポートするために必要なすべてのツールは、Mac OSでのみ公式にサポートされています。 Appleの事実上のツールは、iOSアプリケーションを作成/デバッグ/計測するためのXcodeです。これを使用して、アプリを構築およびテストするために必要なシミュレーターやさまざまなSDK バージョンをダウンロードできます。 公式アプリストアからXcodeをダウンロードすることを強くお勧めします。他のバージョンにはマルウェアが含まれている可能性があります。
シミュレーターのファイルは/Users/<username>/Library/Developer/CoreSimulator/Devices
にあります。
シミュレーターを開くには、Xcodeを実行し、次に_Xcodeタブ_ --> Open Developer tools --> _Simulator_を押します。 __次の画像で「iPod touch [...]」をクリックすると、テストする他のデバイスを選択できます:
/Users/<username>/Library/Developer/CoreSimulator/Devices
内には、すべてのインストールされたシミュレーターが見つかります。エミュレーターの1つ内で作成されたアプリケーションのファイルにアクセスしたい場合、どのエミュレーターにアプリがインストールされているかを知るのが難しいことがあります。正しいUIDを見つけるための簡単な方法は、シミュレーターでアプリを実行し、次のコマンドを実行することです:
Once you know the UID the apps installed within it can be found in /Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application
しかし、驚くべきことに、ここではアプリケーションを見つけることはできません。/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/
にアクセスする必要があります。
そして、このフォルダーでアプリケーションのパッケージを見つけることができます。
Corelliumは唯一の公開されているiOSエミュレーターです。これは、ユーザーごとのライセンスモデルを持つ企業向けSaaSソリューションであり、トライアルライセンスは提供されていません。
非ジェイルブレイクデバイスでiOSアプリケーションをペンテストする方法についてのブログ記事をチェックしてください: https://dvuln.com/blog/modern-ios-pentesting-no-jailbreak-needed
Appleは、iPhone上で実行されるコードがAppleによって発行された証明書で署名されている必要があると厳格に要求しています。ジェイルブレイキングは、そのような制限やOSによって設けられた他のセキュリティ制御を回避するプロセスです。したがって、デバイスがジェイルブレイクされると、アプリがインストールされているかどうかを確認する整合性チェックがパッチされ、バイパスされます。
Androidとは異なり、iOSではデバイス上で署名されていない/信頼されていないコードを実行するために「開発者モード」に切り替えることはできません。
しばしば比較されますが、Androidのルート化とiOSのジェイルブレイキングは根本的に異なるプロセスです。Androidデバイスのルート化は、su
バイナリをインストールするか、ルート化されたカスタムROMでシステムを置き換えることを含む場合があり、ブートローダーがアンロックされていれば必ずしもエクスプロイトを必要としません。カスタムROMのフラッシュは、ブートローダーをアンロックした後にデバイスのOSを置き換え、時にはエクスプロイトが必要です。
対照的に、iOSデバイスはブートローダーがApple署名のイメージのみをブートする制限のため、カスタムROMをフラッシュすることができません。iOSのジェイルブレイキングは、署名されていないコードを実行するためにAppleのコード署名保護を回避することを目的としており、Appleの継続的なセキュリティ強化によって複雑化しています。
Appleが脆弱性を迅速にパッチするため、iOSのジェイルブレイキングはますます困難になっています。iOSのダウングレードはリリース後の限られた時間内でのみ可能であり、ジェイルブレイキングは時間に敏感な問題です。セキュリティテストに使用されるデバイスは、再ジェイルブレイキングが保証されない限り、更新しない方が良いです。
iOSの更新はチャレンジレスポンスメカニズム(SHSH blobs)によって制御されており、Apple署名のレスポンスに対してのみインストールが許可されます。このメカニズムは「署名ウィンドウ」として知られ、OTAファームウェアパッケージを保存し、後で使用する能力を制限します。IPSW Downloads websiteは、現在の署名ウィンドウを確認するためのリソースです。
テザードジェイルブレイクは、各再起動のためにコンピュータ接続を必要とします。
セミテザードジェイルブレイクは、コンピュータなしで非ジェイルブレイクモードにブートすることを許可します。
セミアンテザードジェイルブレイクは、コンピュータなしで手動で再ジェイルブレイキングを必要とします。
アンテザードジェイルブレイクは、再適用なしで永続的なジェイルブレイクソリューションを提供します。
ジェイルブレイキングツールはiOSのバージョンとデバイスによって異なります。Can I Jailbreak?、The iPhone Wiki、およびReddit Jailbreakなどのリソースは最新の情報を提供します。例としては:
デバイスを変更することにはリスクが伴い、ジェイルブレイキングは慎重に行うべきです。
ジェイルブレイキングはOSによって課せられたサンドボックスを解除し、アプリがファイルシステム全体にアクセスできるようにします。この自由により、未承認のアプリのインストールやより多くのAPIへのアクセスが可能になります。しかし、一般のユーザーにとって、ジェイルブレイキングは推奨されません。セキュリティリスクやデバイスの不安定さがあるためです。
いくつかのアプリケーションは、モバイルがジェイルブレイクされているかどうかを検出し、その場合アプリケーションは実行されません
iOSをジェイルブレイクした後、ファイルとフォルダーが通常インストールされ、これらを検索してデバイスがジェイルブレイクされているかどうかを判断できます。
ジェイルブレイクされたデバイスでは、アプリケーションがサンドボックスの外の新しいファイルに読み書きアクセスを得ます。
一部のAPI 呼び出しは異なる動作をします。
OpenSSHサービスの存在
/bin/sh
を呼び出すと0ではなく1を返します
ジェイルブレイキングを検出する方法についての詳細はこちら。
objectionの ios jailbreak disable
を使用してこの検出を回避しようとすることができます。
objectionの ios jailbreak disable
を使用してこの検出を回避しようとすることができます。
ツールLiberty Lite (https://ryleyangus.com/repo/)をインストールすることもできます。リポジトリが追加されると、アプリは「検索」タブに表示されるはずです。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)