iOS 基本テスト操作
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を提出してハッキングトリックを共有してください。
iOS デバイス識別とアクセスの概要
iOS デバイスの UDID を特定する
iOS デバイスを一意に識別するには、UDID と呼ばれる 40 桁のシーケンスが使用されます。macOS Catalina 以降では、iTunes が存在しないため、Finder アプリ でこれを確認できます。デバイスを USB で接続して Finder で選択し、名前の下の詳細をクリックすると、UDID を含む情報が表示されます。
Catalina より前の macOS では、iTunes で UDID を確認できます。詳しい手順は here を参照してください。
コマンドラインツールでも UDID を取得する代替手段があります:
- I/O Registry Explorer ツール
ioregを使用する:
$ ioreg -p IOUSB -l | grep "USB Serial"
- macOS(および Linux)での
ideviceinstallerの使用:
$ brew install ideviceinstaller
$ idevice_id -l
system_profilerの利用:
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
instrumentsを使ってデバイスを一覧表示する:
$ instruments -s devices
デバイスシェルへのアクセス
SSH access は、post-jailbreak に OpenSSH package をインストールすることで有効になり、ssh root@<device_ip_address> で接続できます。デバイスを保護するため、ユーザー root と mobile のデフォルトパスワード(alpine)は必ず変更してください。
SSH over USB は Wi-Fi が利用できない場合に必要になり、iproxy を使ってデバイスのポートをマッピングして SSH 接続を行います。この設定により、次のコマンドを実行して USB 経由で SSH アクセスが可能になります:
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
On-device shell applications(例: NewTerm 2)はデバイスと直接やり取りすることを容易にし、特にトラブルシューティングに有用です。Reverse SSH shellsはホストコンピュータからのリモートアクセス用に確立することもできます。
Resetting Forgotten Passwords
忘れたパスワードをデフォルト(alpine)に戻すには、/private/etc/master.passwd ファイルの編集が必要です。既存のハッシュを alpine のハッシュに置き換え、root と mobile のユーザーエントリの横に配置します。
Data Transfer Techniques
Transferring App Data Files
Archiving and Retrieval via SSH and SCP: アプリケーションの Data ディレクトリを tar でアーカイブし、scp で転送するのは簡単です。下のコマンドは Data ディレクトリを .tgz ファイルにアーカイブし、それをデバイスから取得します:
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
グラフィカルユーザーインターフェースツール
Using iFunbox and iExplorer: これらのGUIツールはiOSデバイス上のファイル管理に便利です。ただし、iOS 8.4以降、Appleはデバイスがjailbrokenでない限り、これらのツールのアプリケーションサンドボックスへのアクセスを制限しました。
Objectionを使用したファイル管理
Interactive Shell with Objection: objectionを起動するとアプリのBundle directoryにアクセスできます。そこからアプリのDocuments directoryに移動して、iOSデバイスとの間でのダウンロードやアップロードを含むファイル管理を行えます。
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
アプリの取得と抽出
IPAファイルの取得
Over-The-Air (OTA) Distribution Link: OTA経由でテスト配布されたアプリは、ITMS services asset downloader tool を使用してダウンロードできます。このツールは npm でインストールし、IPAファイルをローカルに保存するために使用します。
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
アプリバイナリの抽出
- From an IPA: IPA を unzip して復号済みのアプリバイナリにアクセスする。
- From a Jailbroken Device: Jailbroken Device にアプリをインストールし、メモリから復号済みバイナリを抽出する。
復号プロセス
手動復号の概要: iOS アプリのバイナリは Apple によって FairPlay で暗号化されています。リバースエンジニアリングを行うには、メモリから復号済みバイナリをダンプする必要があります。復号プロセスは、PIE flag の確認、メモリフラグの調整、暗号化されたセクションの特定、そしてそのセクションをダンプして復号済みのものと置き換える、という手順から成ります。
PIE Flag の確認と変更:
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
暗号化されたセクションの特定とメモリのダンプ: otool を使用して暗号化セクションの開始および終了アドレスを特定し、jailbroken デバイスから gdb を使用してメモリをダンプする。
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
暗号化されたセクションの上書き:
元の app binary 内の暗号化されたセクションを decrypted dump で置き換える。
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
Finalizing Decryption: バイナリのメタデータを修正して暗号化が存在しないことを示します。MachOView のようなツールを使用し、cryptid を 0 に設定します。
Decryption (Automatically)
frida-ios-dump
The frida-ios-dump tool is employed for 自動的にアプリを復号・抽出するために iOS デバイスから使用されます。まず、dump.py を iOS デバイスに接続するように設定する必要があり、これは iproxy 経由で localhost のポート 2222 を使用するか、デバイスの IP アドレスとポートを直接指定して行うことができます。
デバイスにインストールされているアプリは、次のコマンドで一覧表示できます:
$ python dump.py -l
Telegram のような特定のアプリを dump するには、次のコマンドを使用します:
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
このコマンドはアプリのダンプを開始し、カレントディレクトリに Telegram.ipa ファイルを作成します。このプロセスは jailbroken デバイスに適しており、unsigned または fake-signed なアプリは ios-deploy のようなツールで再インストールできます。
frida-ipa-extract
jailbroken デバイス向けの Frida ベースの IPA extractor。USB Frida セッションを使用し、より高速な取得のためにオプションで SSH/SFTP を利用します。
- 要件: Python 3.9+,
frida,paramiko, jailbroken device with frida-server (OpenSSH for SSH mode). - セットアップ:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
- 使用法:
python extract.py -U -f com.example.app -o MyApp.ipa
python extract.py -U -f com.example.app -o MyApp.ipa --sandbox --no-resume
python extract.py -H 192.168.100.32 -P 2222 -u root -p password -f com.example.app
- フラグ:
-f <bundle>は spawn/attach(または PID の場合は--pid);-oは出力名を設定します。-Uは USB を使用;-H/-P/-u/-pはfrida-serverの 27042 へ SSH トンネルを開き SFTP でプルします(-Uと併用可)。--sandboxはサンドボックスをダンプ;--no-resumeはセッション切断時のクラッシュやシステムプロセスによる再試行を避けるためアプリをサスペンドしたままにします。 - トラブルシューティング:
Frida attach timed out→-fまたは--no-resumeを使う;script has been destroyed→--no-resumeまたは SSH 転送;No running apps found→ アプリを起動するか spawn してください。
flexdecrypt
The flexdecrypt tool, along with its wrapper flexdump, allows for the extraction of IPA files from installed applications. Installation commands for flexdecrypt on the device include downloading and installing the .deb package. flexdump can be used to list and dump apps, as shown in the commands below:
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list
flexdump dump Twitter.app
bagbak
bagbak、別の Frida-based ツールで、app decryption のために jailbroken device を必要とします:
bagbak --raw Chrome
r2flutch
r2flutchはradareとfridaの両方を利用し、アプリの復号とダンプに用いられます。詳細はGitHub pageを参照してください。
Installing Apps
Sideloadingは公式 App Store の外でアプリをインストールすることを指します。このプロセスはinstalld daemonによって処理され、アプリはApple発行の証明書で署名されている必要があります。Jailbroken devicesはAppSyncを介してこれを回避でき、偽署名されたIPAパッケージのインストールを可能にします。
Sideloading Tools
-
Cydia Impactor: iOSのIPAファイルやAndroidのAPKファイルに署名してインストールするためのツールです。ガイドとトラブルシューティングはyalujailbreak.netで参照できます。
-
libimobiledevice: LinuxとmacOSでiOSデバイスと通信するためのライブラリです。USB経由でアプリをインストールするためのインストールコマンドや ideviceinstaller の使用例が提供されています。
-
ipainstaller: このコマンドラインツールはiOSデバイスへの直接的なアプリインストールを可能にします。
-
ios-deploy: macOSユーザー向けに、ios-deployはコマンドラインからiOSアプリをインストールします。IPAを解凍して、
-mフラグを使って直接アプリを起動する手順が含まれます。 -
Xcode: Xcodeを使用してアプリをインストールするには、Window/Devices and Simulators に移動し、Installed Apps にアプリを追加します。
Allow Application Installation on Non-iPad Devices
iPhoneやiPod touchデバイスでiPad専用アプリをインストールするには、Info.plist ファイル内の UIDeviceFamily の値を 1 に変更する必要があります。ただし、この変更は署名検証のためIPAファイルの再署名を要求します。
Note: この方法は、アプリが新しいiPadモデルに固有の機能を要求し、古いiPhoneやiPod touchではその機能が利用できない場合に失敗する可能性があります。
References
- https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/
- https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/
- frida-ipa-extract
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を提出してハッキングトリックを共有してください。


