iOS Testing Environment
Apple Developer Program
プロビジョニングID は、Appleの開発者アカウントに関連付けられた公開鍵と秘密鍵のコレクションです。アプリに署名するには、Apple Developer Program に登録して 99ドル/年 を支払う必要があります。これをしないと、ソースコードからアプリケーションを物理デバイスで実行することはできません。これを行う別の方法は、jailbrokenデバイス を使用することです。
Xcode 7.2から、無料のiOS開発プロビジョニングプロファイル を作成するオプションが提供されています。これにより、実際のiPhoneでアプリケーションを書き込んでテストできます。Xcode --> Preferences --> Accounts --> +(新しいAppli IDを資格情報に追加) --> 作成したApple IDをクリック --> Manage Certificates --> +(Apple Development) --> 完了 __その後、iPhoneでアプリケーションを実行するには、まず iPhoneがコンピュータを信頼するように指定する必要があります。 その後、Xcodeから モバイルでアプリケーションを実行 しようとするとエラーが表示されます。そのため、Settings --> General --> Profiles and Device Management に移動し、信頼されていないプロファイルを選択して 「Trust」 をクリックします。
同じ署名証明書で署名されたアプリケーションは、キーチェーンアイテムなどのリソースを安全な方法で共有できます。
プロビジョニングプロファイルは、/Library/MobileDevice/ProvisioningProfiles
内に保存されます。
シミュレータ
シミュレータはエミュレータと同じではありません。シミュレータはデバイスの振る舞いや機能をシミュレートするだけで、実際に使用しません。
シミュレータ
シミュレータ内でのペンテストを実行することは、jailbrokenデバイス で行うよりもはるかに制限されています。
iOSアプリを構築およびサポートするために必要なすべてのツールは、公式にはMac OSのみでサポートされています。 AppleのiOSアプリの作成/デバッグ/インストルメント化のための事実上のツールは Xcode です。これを使用して、アプリを構築および テスト に必要なさまざまな SDKバージョン と シミュレータ をダウンロードできます。 公式のApp Store から Xcode をダウンロードすることを強くお勧めします。他のバージョンにはマルウェアが含まれている可能性があります。
シミュレータファイルは /Users/<username>/Library/Developer/CoreSimulator/Devices
にあります。
シミュレータを開くには、Xcodeを実行し、Xcodeタブ --> Open Developer tools --> Simulator をクリックします。 __次の画像では、「iPod touch [...]」をクリックして、テストする他のデバイスを選択できます:
シミュレータ内のアプリケーション
/Users/<username>/Library/Developer/CoreSimulator/Devices
内には、インストールされたシミュレータ がすべて表示されます。エミュレータ内で作成されたアプリケーションのファイルにアクセスしたい場合、どのエミュレータにアプリがインストールされているか を知るのは難しいかもしれません。正しいUIDを見つけるための迅速な方法は、シミュレータでアプリを実行し、次のコマンドを実行することです:
UIDの取得
UIDを知ると、それにインストールされたアプリは/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ソリューションであり、ユーザーライセンスモデルを採用しており、トライアルライセンスは提供されていません。
Jailbreaking
AppleはiPhoneで実行されるコードがAppleによって発行された証明書で署名されていることを厳密に要求しています。Jailbreakingは、OSによって設定されたその他のセキュリティコントロールや制限を回避するプロセスです。したがって、デバイスがJailbrokenされると、インストールされているアプリをチェックする整合性チェックがパッチされ、バイパスされます。
Androidとは異なり、iOSでは「開発者モード」に切り替えてデバイス上で未署名/信頼されていないコードを実行することはできません。
AndroidのRoot化とiOSのJailbreaking
AndroidのRoot化とiOSのJailbreakingは、しばしば比較されますが、基本的に異なるプロセスです。AndroidデバイスのRoot化には、su
バイナリのインストールやRoot権限のカスタムROMへの置換などが含まれる場合がありますが、ブートローダーがアンロックされている場合は、必ずしもエクスプロイトが必要ではありません。ブートローダーがアンロックされている場合、カスタムROMのフラッシュはデバイスのOSを置き換え、時にはエクスプロイトが必要となります。
一方、iOSデバイスは、ブートローダーがAppleの署名されたイメージのみをブートするように制限されているため、カスタムROMをフラッシュすることはできません。iOSのJailbreakingは、Appleのコード署名保護をバイパスして未署名のコードを実行することを目指し、Appleの継続的なセキュリティ強化によって複雑化されたプロセスです。
Jailbreakingの課題
Appleは脆弱性を迅速にパッチするため、iOSのJailbreakingはますます困難になっています。iOSのダウングレードはリリース後一定期間のみ可能であり、Jailbreakingは時間的に敏感な問題となります。セキュリティテストに使用されるデバイスは、再度Jailbreakingが保証されるまで更新されないようにする必要があります。
iOSのアップデートは、Appleの署名された応答のみにインストールを許可するチャレンジ・レスポンスメカニズム(SHSH blobs)によって制御されています。このメカニズムは、「署名ウィンドウ」として知られ、OTAファームウェアパッケージを保存して後で使用する能力を制限します。IPSW Downloadsウェブサイトは、現在の署名ウィンドウを確認するためのリソースです。
Jailbreakの種類
Tethered jailbreaksは、各再起動時にコンピューター接続が必要です。
Semi-tethered jailbreaksは、コンピューターなしで非Jailbrokenモードに起動できます。
Semi-untethered jailbreaksは、コンピューターを必要とせずに手動で再Jailbreakingが必要です。
Untethered jailbreaksは、再適用が必要なく永続的なJailbreakソリューションを提供します。
Jailbreakingツールとリソース
JailbreakingツールはiOSのバージョンやデバイスによって異なります。Can I Jailbreak?、The iPhone Wiki、Reddit Jailbreakなどのリソースは最新情報を提供しています。例として:
Checkra1nはA7-A11チップデバイス向けです。
Palera1nはCheckm8デバイス(A8-A11)向けで、iOS 15.0-16.5をサポートしています。
Unc0verはiOSのバージョン14.8までをサポートしています。
デバイスの変更にはリスクが伴い、Jailbreakingは慎重にアプローチする必要があります。
Jailbreakingの利点とリスク
Jailbreakingは、OSによるサンドボックスの解除により、アプリが全体のファイルシステムにアクセスできるようになります。この自由により、非承認のアプリのインストールやより多くのAPIへのアクセスが可能となります。ただし、一般ユーザーにとっては、潜在的なセキュリティリスクやデバイスの不安定性のため、Jailbreakingは推奨されません。
Jailbreaking後
pageiOS Basic Testing OperationsJailbreakの検出
いくつかのアプリケーションは、モバイルがJailbrokenされているかどうかを検出しようとします。その場合、アプリケーションは実行されません
iOSをJailbreakした後、通常ファイルやフォルダーがインストールされます。これらを検索してデバイスがJailbrokenされているかどうかを判断できます。
Jailbrokenデバイスでは、アプリケーションがサンドボックス外の新しいファイルに読み書きアクセスを取得します。
一部のAPIコールは異なる動作を示す場合があります。
OpenSSHサービスの存在
/bin/sh
を呼び出すと、0ではなく1が返されます
Jailbreakingの検出方法についての詳細はこちら。
これらの検出を回避するためにobjectionのios jailbreak disable
を使用できます。
Jailbreakの検出回避
これらの検出を回避するためにobjectionの
ios jailbreak disable
を使用できます。ツールLiberty Lite (https://ryleyangus.com/repo/)をインストールすることもできます。リポジトリが追加されると、アプリは「検索」タブに表示されるはずです。
参考文献
Last updated