iOS Basic Testing Operations
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
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を起動すると、アプリのBundleディレクトリにアクセスできます。ここから、アプリのDocumentsディレクトリに移動し、ファイルを管理することができ、iOSデバイスへのダウンロードやアップロードも行えます。
オーバー・ザ・エア(OTA)配信リンク: OTA経由でテストのために配布されたアプリは、npmを介してインストールされるITMSサービスアセットダウンローダーツールを使用してダウンロードでき、IPAファイルをローカルに保存します。
IPAから: IPAを解凍して、復号化されたアプリバイナリにアクセスします。
脱獄デバイスから: アプリをインストールし、メモリから復号化されたバイナリを抽出します。
手動復号化の概要: iOSアプリバイナリはAppleによってFairPlayを使用して暗号化されています。リバースエンジニアリングを行うには、メモリから復号化されたバイナリをダンプする必要があります。復号化プロセスには、PIEフラグの確認、メモリフラグの調整、暗号化されたセクションの特定、そしてこのセクションを復号化された形式にダンプして置き換えることが含まれます。
PIEフラグの確認と修正:
暗号化セクションの特定とメモリのダンプ:
otool
を使用して暗号化セクションの開始アドレスと終了アドレスを特定し、gdbを使用して脱獄したデバイスからメモリをダンプします。
暗号化セクションの上書き:
元のアプリバイナリの暗号化されたセクションを復号化されたダンプで置き換えます。
復号の最終化: MachOViewのようなツールを使用して、バイナリのメタデータを変更し、cryptid
を0に設定して暗号化がないことを示します。
frida-ios-dumpツールは、iOSデバイスから自動的にアプリを復号および抽出するために使用されます。最初に、dump.py
を設定してiOSデバイスに接続する必要があり、これはiproxyを介してローカルホストのポート2222を使用するか、デバイスのIPアドレスとポートを直接使用して行うことができます。
デバイスにインストールされているアプリケーションは、次のコマンドでリストできます:
特定のアプリ、例えばTelegramをダンプするには、次のコマンドを使用します:
このコマンドはアプリのダンプを開始し、現在のディレクトリに Telegram.ipa
ファイルを作成します。このプロセスは、未署名または偽署名のアプリを再インストールできるため、脱獄デバイスに適しています。ツールとしては ios-deploy を使用します。
flexdecrypt ツールは、そのラッパー flexdump と共に、インストールされたアプリケーションからIPAファイルを抽出することを可能にします。デバイス上での flexdecrypt のインストールコマンドには、.deb
パッケージのダウンロードとインストールが含まれます。flexdump は、以下のコマンドに示すように、アプリをリストおよびダンプするために使用できます。
bagbakは、アプリの復号化に脱獄したデバイスを必要とする別のFridaベースのツールです:
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に追加することでアプリをインストールします。
iPhoneやiPod touchデバイスにiPad専用アプリケーションをインストールするには、Info.plistファイル内のUIDeviceFamily値を1に変更する必要があります。ただし、この変更は署名検証チェックのためにIPAファイルの再署名を必要とします。
注意: この方法は、アプリケーションが新しいiPadモデル専用の機能を要求する場合、古いiPhoneやiPod touchを使用していると失敗する可能性があります。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)