iOS Basic Testing Operations
iOSデバイスの識別とアクセスの概要
iOSデバイスのUDIDを特定する
iOSデバイスを一意に識別するために、UDIDと呼ばれる40桁のシーケンスが使用されます。macOS Catalina以降では、Finderアプリでこれを見つけることができます。iTunesはもはや存在しないためです。デバイスがUSB経由で接続され、Finderで選択されると、その名前の下の詳細をクリックすることでUDIDを含む他の情報が表示されます。
Catalina以前のmacOSバージョンでは、iTunesがUDIDの発見を助けます。詳細な手順はこちらにあります。
コマンドラインツールはUDIDを取得するための代替方法を提供します:
I/Oレジストリエクスプローラーツール
ioreg
を使用する:
ideviceinstaller
をmacOS(およびLinux)で使用する:
system_profiler
の利用:
instruments
を使用してデバイスをリストする:
デバイスシェルへのアクセス
SSHアクセスは、OpenSSHパッケージを脱獄後にインストールすることで有効になり、ssh root@<device_ip_address>
を介して接続できます。デバイスを保護するために、ユーザーroot
とmobile
のデフォルトパスワード(alpine
)を変更することが重要です。
USB経由のSSHは、Wi-Fiがない場合に必要となり、iproxy
を使用してデバイスポートをSSH接続用にマッピングします。この設定により、次のコマンドを実行することでUSB経由でSSHアクセスが可能になります:
オンデバイスシェルアプリケーション、例えば NewTerm 2 は、直接デバイスとのインタラクションを容易にし、特にトラブルシューティングに役立ちます。リバースSSHシェルも、ホストコンピュータからのリモートアクセスのために確立できます。
忘れたパスワードのリセット
忘れたパスワードをデフォルト(alpine
)にリセットするには、/private/etc/master.passwd
ファイルを編集する必要があります。これには、既存のハッシュを root
と mobile
ユーザーエントリの隣にある alpine
のハッシュに置き換えることが含まれます。
データ転送技術
アプリデータファイルの転送
SSHとSCPによるアーカイブと取得: tar
を使用してアプリケーションのデータディレクトリをアーカイブし、その後 scp
を使用して転送するのは簡単です。以下のコマンドは、データディレクトリを .tgz ファイルにアーカイブし、その後デバイスからプルします:
グラフィカルユーザーインターフェースツール
iFunboxとiExplorerの使用: これらのGUIツールは、iOSデバイス上のファイルを管理するのに便利です。しかし、iOS 8.4以降、Appleはデバイスが脱獄されていない限り、これらのツールのアプリケーションサンドボックスへのアクセスを制限しました。
ファイル管理のためのObjectionの使用
Objectionによるインタラクティブシェル: Objectionを起動すると、アプリのBundleディレクトリにアクセスできます。ここから、アプリのDocumentsディレクトリに移動し、ファイルを管理したり、iOSデバイスとの間でファイルをダウンロードおよびアップロードしたりできます。
アプリの取得と抽出
IPAファイルの取得
オーバー・ザ・エア(OTA)配信リンク: OTAを介してテスト用に配布されたアプリは、npmを介してインストールされるITMSサービスアセットダウンローダーツールを使用してダウンロードでき、IPAファイルをローカルに保存します。
アプリバイナリの抽出
IPAから: IPAを解凍して、復号化されたアプリバイナリにアクセスします。
脱獄デバイスから: アプリをインストールし、メモリから復号化されたバイナリを抽出します。
復号化プロセス
手動復号化の概要: iOSアプリバイナリはAppleによってFairPlayを使用して暗号化されています。リバースエンジニアリングを行うには、メモリから復号化されたバイナリをダンプする必要があります。復号化プロセスには、PIEフラグの確認、メモリフラグの調整、暗号化されたセクションの特定、そしてこのセクションを復号化された形式にダンプして置き換えることが含まれます。
PIEフラグの確認と修正:
暗号化セクションの特定とメモリのダンプ:
otool
を使用して暗号化セクションの開始および終了アドレスを特定し、gdbを使用して脱獄したデバイスからメモリをダンプします。
暗号化セクションの上書き:
元のアプリバイナリの暗号化セクションを復号化されたダンプで置き換えます。
復号の最終化: MachOViewのようなツールを使用して、バイナリのメタデータを変更し、cryptid
を0に設定して暗号化がないことを示します。
復号 (自動的に)
frida-ios-dump
frida-ios-dumpツールは、iOSデバイスから自動的にアプリを復号して抽出するために使用されます。最初に、dump.py
を設定してiOSデバイスに接続する必要があり、これはiproxyを介してローカルホストのポート2222を使用するか、デバイスのIPアドレスとポートを直接使用して行うことができます。
デバイスにインストールされているアプリケーションは、次のコマンドでリストできます:
特定のアプリ、例えばTelegramをダンプするには、次のコマンドを使用します:
このコマンドはアプリのダンプを開始し、現在のディレクトリに Telegram.ipa
ファイルを作成します。このプロセスは、未署名または偽署名されたアプリを ios-deploy のようなツールを使用して再インストールできるため、脱獄デバイスに適しています。
flexdecrypt
flexdecrypt ツールは、そのラッパー flexdump とともに、インストールされたアプリケーションからIPAファイルを抽出することを可能にします。デバイス上での flexdecrypt のインストールコマンドには、.deb
パッケージのダウンロードとインストールが含まれます。 flexdump は、以下のコマンドに示すように、アプリをリストおよびダンプするために使用できます。
bagbak
bagbakは、アプリの復号化に脱獄したデバイスを必要とする別のFridaベースのツールです:
r2flutch
r2flutchは、radareとfridaの両方を利用して、アプリの復号化とダンプを行います。詳細はGitHubページで確認できます。
アプリのインストール
サイドロードは、公式App Storeの外でアプリケーションをインストールすることを指します。このプロセスはinstalldデーモンによって処理され、アプリはApple発行の証明書で署名される必要があります。脱獄したデバイスはAppSyncを通じてこれを回避し、偽署名されたIPAパッケージのインストールを可能にします。
サイドロードツール
Cydia Impactor: iOSのIPAファイルやAndroidのAPKファイルを署名してインストールするためのツールです。ガイドやトラブルシューティングはyalujailbreak.netで確認できます。
libimobiledevice: iOSデバイスと通信するためのLinuxおよびmacOS用のライブラリです。USB経由でアプリをインストールするためのideviceinstallerのインストールコマンドと使用例が提供されています。
ipainstaller: このコマンドラインツールは、iOSデバイスに直接アプリをインストールすることを可能にします。
ios-deploy: macOSユーザー向けに、ios-deployはコマンドラインからiOSアプリをインストールします。IPAを解凍し、直接アプリを起動するために
-m
フラグを使用することがプロセスの一部です。Xcode: Xcodeを利用して、Window/Devices and Simulatorsに移動し、アプリをInstalled Appsに追加することでアプリをインストールします。
非iPadデバイスへのアプリケーションインストールの許可
iPhoneやiPod touchデバイスにiPad専用アプリケーションをインストールするには、Info.plistファイル内のUIDeviceFamily値を1に変更する必要があります。ただし、この変更は署名検証チェックのためにIPAファイルの再署名を必要とします。
注意: この方法は、アプリケーションが新しいiPadモデル専用の機能を要求する場合、古いiPhoneやiPod touchを使用していると失敗する可能性があります。
参考文献
Last updated