android-pentest について
android-pentestは、MASTGに沿ってAndroidアプリを評価するセキュリティ担当者向けのワークフロースキルです。静的・動的解析を必要に応じて案内し、検査手順、Fridaスクリプト、構造化レポートの要件を備えています。
主な機能
- 01評価手順と参考資料のオンデマンド読み込み
- 02静的解析とFridaによる動的テスト
- 03ストレージ、通信、アプリコンポーネントの検査
- 04MASTGチェックリストとマッピング
- 05構造化形式での検出事項の整理
活用シーン
- 01AndroidアプリのMASVS評価
- 02SSLピンニング、Root検知、認証のテスト
- 03ローカルデータの抽出と機密情報の確認
- 04エクスポートコンポーネント、ディープリンク、Intentのテスト
MCP 対応
Android Dynamic MCPとMobile MCPを使ったデバイス操作、Fridaテスト、UI操作を案内します。デバイス、ネットワーク、データ抽出、コンポーネントテスト用のMCPツールを記載しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hardw00t/ ai-security-arsenal --skill android-pentestインストール後、Claude Code で/android-pentestを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
checklists/owasp_mastg_full.mdpre_engagement.mdquick_wins.mdreport_items.mdexamples/auth_bypass.mddata_storage_investigation.mdnew_assessment.mdmethodology/auth_testing.mdclient_side_injection.mdcrypto_testing.mddata_storage.mddynamic_analysis.mdnetwork_testing.mdrecon.mdstatic_analysis.mdpayloads/intent_injection.txtpath_traversal.txtsql_injection.txtxss_payloads.txtxxe_payloads.txtreferences/android_security_checklist.mdbounty_patterns_2024_2026.mdfrida_snippets.mdowasp_mobile_top10.mdtroubleshooting.mdreporting/evidence_collector.pyfinding_schema.jsonremediation_db.jsonreport_generator.pyseverity_calculator.py詳細
Android モバイルアプリケーションのペネトレーションテスト
ADB + Frida + Mobile MCP を用いた、MASTG に準拠する Android アセスメントのための薄いルーターです。ワークフロー/方法論/リファレンスファイルは必要に応じて読み込み、スキル全体を事前に暗記しようとしないでください。
使用する場面
- Android アプリのセキュリティアセスメントを新たに開始する
- SSL ピンニング、ルート検出、改ざん防止、または生体認証チェックをバイパスする
- ローカルストレージ(SharedPreferences、DB、ファイル、ログ)を抽出/トリアージする
- エクスポートされたアクティビティ、サービス、プロバイダー、レシーバー、ディープリンクをテストする
- 実行時に暗号、認証、セッション、キーストアをフックする
- コンプライアンスの証跡として、ビルドを OWASP MASVS / MASTG に対応付ける
- 構造化された検出事項と修正ガイダンスを作成する
トリガーフレーズ
「この Android アプリをペンテストして」 • 「APK のセキュリティテストをして」 • 「 の SSL ピンニングをバイパスして」 • 「 からデータを抽出して」 • 「Android の認証をテストして」 • 「Android のインテントをファジングして」 • 「 の MASTG テストをして」 • 「モバイルアプリのセキュリティアセスメント」
このスキルを使用しない場面
- iOS アプリ →
ios-pentest(利用可能な場合)または汎用モバイルスキルを使用する - モバイルバックエンドのサーバー側 API ファジング →
api-security/web-pentestを使用する - IR のための Android マルウェアの逆コンパイル → このペンテストに特化したスキルではなく、
malware-analysisを使用する - サードパーティ SDK のサプライチェーン/SCA →
sca/dependency-auditを使用する - モバイルアプリのクラウドバックエンド →
cloud-pentestを使用する
判断ツリー
Do you have the APK or only package name?
├─ package only → get_app_info + pull_apk (parallel), then branch on protections
└─ APK on disk → static analysis first (jadx, apktool), then dynamic
└─ App runs? → frida_spawn → bypass_ssl → bypass_root → proxy
└─ App crashes on root? → see references/troubleshooting.md (Root detection)
└─ TLS still not decrypted? → workflows/ssl_pinning_bypass.md Methods 2→3
What's the objective?
├─ Full assessment → workflows/complete_assessment.md
├─ SSL pinning only → workflows/ssl_pinning_bypass.md
├─ Auth / session → workflows/auth_testing.md
├─ Deep links / IPC / fuzz → workflows/deeplink_intent_testing.md
├─ Crypto audit → workflows/crypto_analysis.md
└─ Data storage / exfil → workflows/data_exfiltration.md
並列実行のヒント
並行して実行(独立した処理、同一デバイス):
get_app_info+pull_apk+list_exported_componentsdump_databases+dump_shared_prefs+dump_internal_storage+dump_external_storage+get_logcat- 同じ PID を対象とする複数の
frida_run_script呼び出し(crypto_hooks.js ∥ credential_hooks.js ∥ intent_monitor.js) - 静的 APK 分析(逆コンパイル、シークレットスキャン) ∥ 動的ランタイムフック
順次実行が必要:
frida_spawn→frida_bypass_ssl→frida_bypass_root(スクリプトには PID が必要で、アプリの保護初期化が完了する前にアタッチする必要があります)- トラフィックキャプチャまたはネットワークワークフローを開始する前に
setup_proxy - 新しいデバイスでは
setup_proxyの前にinstall_ca_cert capture_traffic_start→ アプリを操作 →capture_traffic_stop
サブエージェントへの委任
- メインエージェントが動的な Frida フックを実行している間に、取得済み APK を対象とする静的分析サブエージェントを起動します(jadx で逆コンパイル → シークレットを grep → マニフェストを確認 → ネイティブライブラリを一覧表示)。報告前に結果を統合します。
- エクスポートされたコンポーネントを多数ファジングする場合は、コンポーネントごとのサブエージェントを起動します。アクティビティ/プロバイダー/サービスの各バッチにエージェントを割り当て、それぞれが専用の Frida PID と logcat フィルターを管理します。これによりフック状態の混在を防げます。
- メインのテストが完了したら、検出事項を
schemas/finding.jsonに正規化し、テンプレートをレンダリングするレポート作成サブエージェントを起動します。
推論予算
- 拡張思考(高):証跡に基づく検出事項のトリアージ、深刻度の分類、CWE/MASTG マッピングの作成、難読化されたクラス向けのカスタム Frida フックの設計、ネイティブな SSL ピンニング経路のリバースエンジニアリング。
- 拡張思考は低/不要:反復的な Frida フックの実行、標準的なダンプ、定型ペイロードのファジング、汎用 SSL バイパスの適用、既知の MCP ツールシーケンスの呼び出し。
- 最初に試す汎用バイパスについてトークンを浪費して考えないでください。まず
frida_bypass_ssl(pid)を実行し、失敗したら次の段階に進みます。
マルチモーダルフック
- UI 操作が必要な認証フロー(生体認証プロンプト、OAuth リダイレクト、MFA 手順)では、Mobile MCP の
get_screen_stateとスクリーンショットを使用します。検出事項のevidence.screenshotとしてスクリーンショットを添付します。 - バイパスが成功した時点(例:生体認証の偽装後に表示される認証済みホーム画面)でスクリーンショットを撮影します。視覚的証跡により、深刻度の根拠が強化されます。
- ディープリンクの再現では、意図しない状態に到達できることを証明するため、遷移先のアクティビティをスクリーンショットに収めます。
構造化出力
すべての検出結果は、schemas/finding.json に対する検証に合格する必要があります。Android 固有の必須フィールド/共通フィールド:
package_name、app_version、target_sdk、device_id、frida_pid、mastg_id、masvs_control、component.{type,class_name,exported}、evidence.{logcat,frida_output,screenshot,pcap}。
ワークフローの索引
| ワークフロー | 場面 |
|---|---|
| workflows/complete_assessment.md | MASTG のエンドツーエンド評価 |
| workflows/ssl_pinning_bypass.md | TLS インターセプトの有効化 |
| workflows/auth_testing.md | ログイン、セッション、生体認証、JWT |
| workflows/deeplink_intent_testing.md | IPC ファジング、ディープリンク、プロバイダー |
| workflows/crypto_analysis.md | 脆弱なアルゴリズム、ハードコードされた鍵、キーストア |
| workflows/data_exfiltration.md | ローカルストレージと logcat の漏えい |
手法の索引
| ドキュメント | 対象範囲 |
|---|---|
| methodology/recon.md | 情報収集、攻撃対象領域マップ |
| methodology/static_analysis.md | APK/smali/シークレットのレビュー |
| methodology/dynamic_analysis.md | ランタイムフック、計測 |
| methodology/network_testing.md | トラフィック、API、TLS 検証 |
| methodology/data_storage.md | ローカルストレージ、DB、ファイル権限 |
| methodology/crypto_testing.md | 暗号化と鍵管理 |
| methodology/auth_testing.md | 認証、セッション、生体認証 |
| methodology/client_side_injection.md | WebView、ディープリンク、プロバイダー |
ペイロードの索引
| ファイル | 用途 |
|---|---|
| payloads/intent_injection.txt | Intent/IPC ファジング用入力 |
| payloads/path_traversal.txt | ファイル/プロバイダーのパストラバーサル |
| payloads/sql_injection.txt | Content Provider の SQLi |
| payloads/xss_payloads.txt | WebView の XSS |
| payloads/xxe_payloads.txt | アプリ内の XML パーサー |
サンプルの索引
| サンプル | シナリオ |
|---|---|
| examples/new_assessment.md | 新しいターゲット向けの開始設計図 |
| examples/data_storage_investigation.md | ローカルの機密データの列挙 |
| examples/auth_bypass.md | 生体認証/セッション/JWT のバイパス |
参考資料の索引
| ドキュメント | 対象範囲 |
|---|---|
| references/owasp_mobile_top10.md | OWASP Mobile Top 10 との対応付け |
| references/android_security_checklist.md | テスト用チェックリスト |
| references/frida_snippets.md | 再利用可能な Frida のワンライナー |
| references/troubleshooting.md | Frida/SSL/root/ADB/SQLCipher の修正方法 |
| references/bounty_patterns_2024_2026.md | 2023 年以降のバウンティ TTP(ディープリンクの乗っ取り/App-Links のバイパス、WebView のディープリンク XSS、保護されていないブロードキャストレシーバーからの情報漏えい) |
チェックリスト
| ファイル | 目的 |
|---|---|
| checklists/owasp_mastg_full.md | MASTG 準拠の完全な確認 |
| checklists/quick_wins.md | 脆弱性の迅速な一斉チェック |
| checklists/pre_engagement.md | セットアップの確認 |
| checklists/report_items.md | レポートの完全性 |
テンプレート
| テンプレート | 目的 |
|---|---|
| templates/finding_template.md | 個別の指摘事項のドキュメント |
| templates/executive_summary.md | 経営層向けサマリー |
| templates/technical_report.md | 技術レポート全文 |
| templates/remediation_guide.md | 開発者向けの修正 |
MCP ツールリファレンス
デバイス操作
| ツール | 目的 |
|---|---|
get_screen_state() | 現在の画面/UI ツリー |
tap_element(x,y) / long_press(x,y) | タップ/長押し |
input_text(text) | フォーカス中のフィールドに入力 |
press_key(keycode) | BACK=4 HOME=3 ENTER=66 |
swipe(x1,y1,x2,y2) | スクロール、パターンロック解除 |
Frida 計装
| ツール | 目的 |
|---|---|
frida_spawn(pkg) / frida_attach(pkg) | 起動またはアタッチ |
frida_run_script(pid, script) | JS フックを読み込み |
frida_bypass_ssl(pid) / frida_bypass_root(pid) | 汎用バイパス |
frida_hook_method(pid, class, method) | 単一メソッドをトレース |
frida_trace_crypto(pid) / frida_dump_credentials(pid) | 定型トレース |
frida_enumerate_classes(pid, pattern) | 難読化されたクラスを特定 |
frida_memory_search(pid, pattern) | プロセスメモリ内のシークレット/キーを検索 |
ネットワーク
| ツール | 目的 |
|---|---|
setup_proxy(device, host, port) / clear_proxy(device) | プロキシの設定 |
install_ca_cert(device, path) | Burp CA を信頼(システムストア) |
capture_traffic_start(pkg) / capture_traffic_stop() | PCAP |
データ抽出
| ツール | 目的 |
|---|---|
dump_databases(pkg) / dump_shared_prefs(pkg) | SQLite と設定 |
dump_internal_storage(pkg) / dump_external_storage(pkg) | ファイル |
get_logcat(pkg) | パッケージでフィルタリングしたログ |
コンポーネント
| ツール | 目的 |
|---|---|
list_exported_components(pkg) | 攻撃対象領域 |
launch_activity(pkg, activity, extras, data_uri) | ディープリンク/インテント |
send_broadcast(action, extras) | ブロードキャストインジェクション |
start_service(pkg, service, extras) | サービスの悪用 |
query_content_provider(uri) | プロバイダーの SQLi/情報漏えい |
fuzz_intent_extra(pkg, comp, key, payloads) | 自動ファジング |
アプリ管理
| ツール | 目的 |
|---|---|
install_apk(path) / uninstall_app(pkg) | デプロイ/削除 |
clear_app_data(pkg) | 初期状態にする |
get_app_info(pkg) | メタデータ、権限、SDK |
list_installed_apps() / pull_apk(pkg) | 検出/抽出 |
Frida スクリプトライブラリ(scripts/)
ssl_pinning_bypass.js、root_bypass.js、crypto_hooks.js、credential_hooks.js、network_hooks.js、biometric_bypass.js、anti_tampering_bypass.js、intent_monitor.js、webview_hooks.js、dynamic_dex_hooks.js、keystore_hooks.js、method_tracer.js。
ツール
| ツール | 目的 | インストール |
|---|---|---|
| ADB | デバイス通信 | apt install adb(Android SDK platform-tools) |
| Frida / frida-tools | 動的計装 | pip install frida-tools(≥16.4) |
| Objection | モバイル探索 | pip install objection |
| apktool | APK の逆コンパイル | apt install apktool(≥2.9) |
| jadx | Java の逆コンパイル | github.com/skylot/jadx releases(≥1.5) |
| Burp Suite | 通信の傍受 | portswigger.net |
| Android Studio | エミュレーター、SDK | developer.android.com |
セットアップスクリプト:setup/setup_pentest_env.sh、setup/setup_physical_device.sh、setup/setup_emulator.py、setup/frida_server_manager.py、setup/burp_cert_installer.sh、setup/check_environment.py。
想定される MCP サーバー:android-pentest(Android Dynamic MCP)、mobile-mcp(UI 用の mobile-next)。~/.claude/mcp.json で設定してください。
関連リソース
Last Validated
2026-04 — minimum versions: Frida ≥16.4, apktool ≥2.9, jadx ≥1.5, Android platform-tools ≥35.