Mobile Application Security について
OWASP MASVS と MASTG に基づき、Android・iOS アプリの評価を支援する Claude スキルです。静的解析、動的テスト、不審アプリのトリアージを案内し、自所有または明示的に許可されたアプリのみを対象とします。
主な機能
- 01APK と IPA の静的解析
- 02ストレージと鍵保護の確認
- 03通信と証明書ピンニングの検証
- 04Frida と objection による動的テスト支援
- 05プラットフォーム連携と改ざん対策の確認
- 06不審な APK のマルウェアトリアージ
活用シーン
- 01Android のマニフェスト、コンポーネント、ハードコードされた秘密情報の確認
- 02iOS アプリの設定と機密データ保存の評価
- 03テスト端末での TLS と実行時動作の検証
- 04不審な APK の権限と潜在的な兆候の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ masriyan/ claude-code-cybersecurity-skill --skill mobile-application-securityインストール後、Claude Code で/mobile-application-securityを入力して読み込まれたか確認します。
同梱ファイルexamples/example_usage.mdscripts/apk_analyzer.py
詳細
モバイルアプリケーションセキュリティ
目的
Claude が Android および iOS アプリケーションのセキュリティを OWASP MASVS(Mobile Application Security Verification Standard)に照らして評価し、OWASP MASTG(Mobile Application Security Testing Guide)のテストを実行できるようにします。Claude は APK/IPA の成果物に対する静的解析を行い、動的インストルメンテーション(Frida/objection)を案内し、安全なストレージ、通信、プラットフォーム連携の制御を確認し、悪意のある可能性があるモバイルアプリをトリアージします。
認可が必要です:所有している、または評価する明示的な認可を得ているアプリケーションのみをテストしてください。サードパーティ製アプリの逆コンパイルや改変は、ライセンスや法律に違反する可能性があります。開始前に書面で範囲を確認してください。
起動条件
次の内容についてユーザーから質問された場合に、このスキルが起動します。
- Android(APK/AAB)または iOS(IPA)アプリケーションのセキュリティテスト
- OWASP MASVS/MASTG の検証、またはモバイルペンテストのチェックリスト
- モバイルアプリの逆コンパイル、リバースエンジニアリング、静的解析
- 安全でないデータストレージ、ハードコードされたシークレット、キーストア/キーチェーンの確認
- 証明書ピンニング、SSL バイパス、モバイル TLS/通信セキュリティ
- Frida/objection による動的インストルメンテーション、またはランタイムフック
AndroidManifest.xml、エクスポートされたコンポーネント、ディープリンク、Info.plistの確認- モバイルマルウェアの解析、または不審な APK のトリアージ
- ルート化/脱獄の検出、改ざん、またはリバースエンジニアリング対策
前提条件
pip install requests pyaxmlparser
追加機能(任意):
apktool— APK のデコード/再ビルドjadx— Dalvik → Java デコンパイラーapkid— パッカー/難読化ツール/コンパイラーのフィンガープリンティングfrida/objection— 動的インストルメンテーションmobsf(MobSF)— 自動静的・動的解析プラットフォーム- Android SDK platform-tools(
adb)、unzip、openssl
主な機能
1. APK の静的解析
APK の解析を依頼された場合:
- 展開とデコード —
apktool d app.apkを実行し、AndroidManifest.xml、classes*.dex、resources.arsc、ネイティブライブラリ(lib/)、アセットを抽出します。 - マニフェストの確認 — 次の項目にフラグを立てます。
android:debuggable="true"、android:allowBackup="true"- 権限のないエクスポート済みコンポーネント(
exported="true"が設定された、または intent-filter により暗黙的にエクスポートされたactivity/service/receiver/provider) usesCleartextTraffic="true"/制限の緩いnetwork_security_config- 危険または過剰な権限、弱い
protectionLevelのカスタム権限 - ディープリンク/
android:autoVerify(アプリリンクの乗っ取り)、エクスポート済みContentProviderのパス
- シークレットの探索 — デコードしたソース、リソース、アセットをスキャンし、API キー、トークン、秘密鍵、クラウド認証情報、ハードコードされた暗号鍵/IV、バックエンド URL を探します。
- 逆コンパイル —
jadxで Java に変換し、認証、暗号、WebView(addJavascriptInterface、setJavaScriptEnabled、信頼できない入力を使ったloadUrl)、SQL を確認します。 - ネイティブコードとパッキング —
apkidでパッカー/難読化ツールを調べ、lib/*/*.soの JNI エントリーポイントとハードコードされたデータを確認します。 - 署名 — 署名方式(v1/v2/v3)、デバッグ証明書の使用、完全性を検証します。
自動化された初回チェックには scripts/apk_analyzer.py を使用します。
2. iOS(IPA)の静的解析
IPA の解析を依頼された場合:
- IPA を解凍し、
Payload/<App>.app/を探します。 Info.plist—NSAppTransportSecurityの例外(NSAllowsArbitraryLoads)、URL スキーム、UIFileSharingEnabled、権限の使用理由を確認します。- バイナリの確認 — 暗号化(
cryptid)、PIE、スタックカナリア、ARC を確認し、otool/class-dumpでハードニングの欠如を検出します。 - シークレットの探索 —
stringsとリソースのスキャンでキー、エンドポイント、トークンを探します。 - データストレージ —
NSUserDefaults、Core Data、Keychain のアクセシビリティクラス(kSecAttrAccessibleAlwaysは避けます)、保存時の plist データを確認します。 - 埋め込みプロビジョニングプロファイル — エンタイトルメント、アドホック配布とエンタープライズ配布の別を確認します。
3. 安全でないデータ保存(MASVS-STORAGE)
機密データが保存時にどこへ格納されるかを確認します。
- Android:SharedPreferences、SQLite、内部/外部ファイル、ログ、WebView のキャッシュ、クリップボード。機密情報には Keystore によって保護された鍵が使用されていることを確認します。
- iOS:Keychain(適切なアクセシビリティ設定)、NSUserDefaults/plist に秘密情報がないこと、アプリのスナップショット/バックアップに機密データがないことを確認します。
- PII、トークン、認証情報が平文、またはアプリから導出した鍵で保存されている場合は指摘します。
4. ネットワークと転送(MASVS-NETWORK)
- すべての通信で TLS が使用され、平文通信へのフォールバックがないことを確認します。
- 証明書/公開鍵のピンニングが実装され、検証されていることを確認します。テスト時の objection/Frida によるバイパス方法を記録します。
- 中間者プロキシ(Burp/mitmproxy)で API トラフィックを調査し、Web と同じ API の不備をテストします(→ Skill 09):IDOR、不適切な認証、マスアサインメント。
5. 動的解析とインストルメンテーション
ルート化/ジェイルブレイク済みのテストデバイスまたはエミュレーターで、実行時テストを実施します。
- objection による簡単な確認:
android sslpinning disable、android root disable、キーストア/Keychain のダンプ、アクティビティの一覧表示、エクスポートされたコンポーネントの起動。 - Frida で暗号 API、認証チェック、ルート化/ジェイルブレイク検知のバイパスをフックし、機密性の高いメソッド呼び出しをトレースします。
- 使用中のファイルシステムと logcat を監視し、データ漏えいを確認します。
6. プラットフォーム連携と改ざん対策(MASVS-PLATFORM / RESILIENCE)
- IPC:エクスポートされたコンポーネント、インテント処理、
ContentProviderの権限、カスタム URL スキーム/ディープリンクの検証を確認します。 - WebView:不要な場合は JS を無効にします。信頼できないコンテンツに、特権を持つ JS インターフェースを決して公開しないでください。
- レジリエンス(多層防御であり、それ自体は脆弱性ではありません):ルート化/ジェイルブレイク検知、デバッグ対策、フック対策、コード難読化、整合性チェック。
7. モバイルマルウェアのトリアージ
不審な APK については、apkid によるパッキングの確認、要求された権限と申告された機能の比較、アクセシビリティサービスの悪用、SMS/ダイヤラー/オーバーレイの権限(バンキング型トロイの木馬の兆候)、文字列内の C2 URL、動的コード読み込み(DexClassLoader)を調査します。確認済みの IOC は → Skill 06 に、より詳細な RE は → Skill 04/05 に引き継ぎます。
出力基準
# Mobile App Security Assessment — [App / Package]
Date: [Date] | Platform: [Android/iOS] | Version: [x.y.z] | Analyst: [Name]
## Executive Summary
[Posture, count by severity, top risks]
## MASVS Coverage
| Category | Result | Notes |
|----------|--------|-------|
| STORAGE | Fail | Token in SharedPreferences plaintext |
| CRYPTO | Pass | ... |
| NETWORK | Partial | No pinning |
| PLATFORM | ... |
| CODE / RESILIENCE | ... |
## Findings
### [M-01] Hardcoded API Key in resources (High)
- MASTG-TEST ref / MASVS-STORAGE
- Evidence: res/values/strings.xml:api_key=...
- Impact / Remediation: [rotate, move to backend, ...]
## Recommendations (Prioritized)
スクリプトリファレンス
apk_analyzer.py
# Static triage of an APK: manifest flags, permissions, exported components, secrets
python scripts/apk_analyzer.py --apk app.apk --output apk_report.json
# Secret-scan the decoded sources too (point at an apktool/jadx output dir)
python scripts/apk_analyzer.py --apk app.apk --sources ./jadx_out --output apk_report.json
スキル連携
| 次のステップ | 条件 | 対象スキル |
|---|---|---|
| バックエンド API テスト | アプリが REST/GraphQL API と通信する | → Skill 09 |
| より詳細なネイティブ/バイナリ RE | .so/難読化されたロジック | → Skill 04 |
| マルウェアの分類 | 不審な/パッキングされた APK | → Skill 05 |
| IOC の相関分析 | C2/悪意のあるインフラが見つかった | → Skill 06 |
| 暗号実装のレビュー | アプリに独自の暗号処理がある | → Skill 13 |