analyzing-ios-app-security-with-objection について
ObjectionとFridaを使ってiOSアプリを実行時に評価するスキルです。許可を得たペネトレーションテスター向けに、ソースコードなしでアプリデータ、ネットワーク制御、認証、プラットフォーム動作を調べます。
主な機能
- 01アプリのキーチェーンとサンドボックスデータの確認
- 02SSLピンニングとネットワーク動作のテスト
- 03認証と認可の検証
- 04脱獄検知とバイナリ保護の確認
- 05メソッドフックとアプリ動作の監視
- 06URLスキームとプラットフォーム連携の評価
活用シーン
- 01許可されたペネトレーションテストでのiOSアプリ評価
- 02アプリの保存データやメモリ内の機密情報確認
- 03SSLピンニングなどクライアント側制御のテスト
- 04ソースコードなしでの実行時動作の観察
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill analyzing-ios-app-security-with-objectionインストール後、Claude Code で/analyzing-ios-app-security-with-objectionを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEassets/template.mdreferences/api-reference.mdstandards.mdworkflows.mdscripts/agent.pyprocess.py詳細
Objection を使用した iOS アプリのセキュリティ分析
使用する場面
以下の場合にこのスキルを使用します。
- 許可を得た侵入テストで、iOS アプリケーションのランタイムセキュリティ評価を行う
- iOS のキーチェーン、ファイルシステム、メモリを調査し、機密データの露出を確認する
- セキュリティテスト中に、クライアント側のセキュリティ制御(SSL ピンニング、ジェイルブレイク検知)を回避する
- ソースコードにアクセスせずに、実行時の iOS アプリの動作を評価する
明示的な許可なく、本番環境のデバイスでこのスキルを使用しないでください。Objection はアプリのランタイムの動作を変更し、セキュリティ監視が作動する可能性があります。
前提条件
- pip を備えた Python 3.10 以降
- Objection がインストール済みであること:
pip install objection - Frida がインストール済みであること:
pip install frida-tools - 対象の iOS デバイス(Frida サーバーを備えたジェイルブレイク済みデバイス、または再パッケージ化した IPA を使用する非ジェイルブレイクデバイス)
- 非ジェイルブレイクデバイスの場合:
objection patchipaを使用して IPA に Frida ガジェットを注入します - iOS のテストには macOS を推奨します(Xcode、ideviceinstaller)
- 対象デバイスへの USB 接続、またはネットワーク経由の Frida サーバー
ワークフロー
ステップ 1:テスト環境を準備する
ジェイルブレイク済みデバイスの場合:
# Install Frida server on device via Cydia/Sileo
# SSH to device and start Frida server
ssh root@<device_ip> "/usr/sbin/frida-server -D"
# Verify Frida connectivity
frida-ps -U # List processes on USB-connected device
非ジェイルブレイクデバイスの場合(許可を得たテスト):
# Patch IPA with Frida gadget
objection patchipa --source target.ipa --codesign-signature "Apple Development: [email protected]"
# Install patched IPA
ideviceinstaller -i target-patched.ipa
ステップ 2:Objection を対象アプリにアタッチする
# Attach to running app by bundle ID
objection --gadget "com.target.app" explore
# Or spawn the app fresh
objection --gadget "com.target.app" explore --startup-command "ios hooking list classes"
アタッチすると、Objection によってランタイム調査用のインタラクティブな REPL が提供されます。
ステップ 3:データストレージのセキュリティを評価する(MASVS-STORAGE)
# Dump iOS Keychain items accessible to the app
ios keychain dump
# List files in app sandbox
ios plist cat Info.plist
env # Show app environment paths
# Inspect NSUserDefaults for sensitive data
ios nsuserdefaults get
# List SQLite databases
sqlite connect app_data.db
sqlite execute query "SELECT * FROM credentials"
# Check for sensitive data in pasteboard
ios pasteboard monitor
ステップ 4:ネットワークセキュリティを評価する(MASVS-NETWORK)
# Disable SSL/TLS certificate pinning
ios sslpinning disable
# Verify pinning is bypassed by observing traffic in Burp Suite proxy
# Monitor network-related class method calls
ios hooking watch class NSURLSession
ios hooking watch class NSURLConnection
ステップ 5:認証と認可を調査する(MASVS-AUTH)
# List all Objective-C classes
ios hooking list classes
# Search for authentication-related classes
ios hooking search classes Auth
ios hooking search classes Login
ios hooking search classes Token
# Hook authentication methods to observe parameters
ios hooking watch method "+[AuthManager validateToken:]" --dump-args --dump-return
# Monitor biometric authentication calls
ios hooking watch class LAContext
ステップ 6:バイナリ保護を評価する(MASVS-RESILIENCE)
# Check jailbreak detection implementation
ios jailbreak disable
# Simulate jailbreak detection bypass
ios jailbreak simulate
# List loaded frameworks and libraries
memory list modules
# Search memory for sensitive strings
memory search "password" --string
memory search "api_key" --string
memory search "Bearer" --string
# Dump specific memory regions
memory dump all dump_output/
ステップ 7:プラットフォームとの連携を確認する(MASVS-PLATFORM)
# List URL schemes registered by the app
ios info binary
ios bundles list_frameworks
# Hook URL scheme handlers
ios hooking watch method "-[AppDelegate application:openURL:options:]" --dump-args
# Monitor clipboard access
ios pasteboard monitor
# Check for custom keyboard restrictions
ios hooking search classes UITextField
主な概念
| 用語 | 定義 |
|---|---|
| Objection | Frida を基盤とするモバイル調査ツールキットです。一般的なセキュリティテスト作業向けのスクリプトがあらかじめ用意されています |
| Frida ガジェット | ジェイルブレイクせずに Frida による計測を可能にするため、アプリプロセスに注入される共有ライブラリです |
| キーチェーン | iOS の安全な認証情報ストレージシステムです。Objection は、対象アプリのキーチェーンアクセスグループからアクセス可能な項目をダンプできます |
| SSL ピンニングの回避 | HTTPS トラフィックのプロキシ傍受を可能にするため、証明書検証ロジックをランタイムで変更することです |
| メソッドフッキング | ランタイムで Objective-C/Swift のメソッド呼び出しを傍受し、引数や戻り値を確認して動作を変更することです |
ツールとシステム
- Objection:コマンドがあらかじめ用意された、Frida を活用する高水準のモバイルセキュリティ調査ツールキットです
- Frida:ネイティブアプリのプロセスへの JavaScript 注入を可能にする動的計測フレームワークです
- Frida-tools:frida-ps、frida-trace、frida-discover などを含む、Frida 用の CLI ユーティリティです
- ideviceinstaller:USB 経由で iOS アプリをインストール、管理するためのクロスプラットフォームツールです
- Burp Suite:SSL ピンニングを回避した後にトラフィックを傍受する HTTP プロキシです
よくある落とし穴
- アタッチ時にアプリがクラッシュする:Frida 検知を実装しているアプリもあります。アプリのライフサイクルの早い段階でアンチ Frida チェックをフックするには、
--startup-commandを使用してください。 - キーチェーンアクセスの範囲:Objection がダンプできるのは、アプリのアクセスグループ内にあるキーチェーン項目のみです。システムのキーチェーン項目には、別途ジェイルブレイクレベルのツールが必要です。
- Swift の名前修飾:Swift のメソッド名はランタイムで修飾されています。grep と
ios hooking list classesを使用して、修飾が解除された名前を探してください。 - 変更が永続化されない:Objection による変更はすべてランタイム限定であり、アプリの再起動時にリセットされます。調査結果はすぐに記録してください。
コメント
Markdown 対応