Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2020-0022 — استغلال كامل ومعلن لثغرة CVE-2020-0022 BlueFrag Android RCE (تم اختباره على Pixel 3 XL) | Kitploit
أدوات/GitHubGitHub/themmokhtar/cve-2020-0022
أمان أندرويدأمن البلوتوثأطر الاستغلالالاستغلالالهندسة العكسيةشيل كودأمن الجوالأمان الأجهزة وإنترنت الأشياءتطوير الحمولاتاستغلال الملفات الثنائية
GitHubthemmokhtar/cve-2020-0022

CVE-2020-0022

228منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

استغلال كامل ومعلن لثغرة CVE-2020-0022 BlueFrag Android RCE (تم اختباره على Pixel 3 XL)

عرض المستودع

CVE-2020-0022

شكر جزيل لـ Insinuator على منشورهم المذهل والكود!

النتائج

تم إكمال جميع الخطوات المذكورة في منشور Insinuator، وأكثر. هذه الكثير من الخطوات لوضعها في ملف README.md، لذا لا تتردد في الاطلاع على المنشور من Insinuator المذكور أعلاه.

الاستغلال كامل حتى النقطة التي:

  1. يتم تسريب عنوان منطقة ذاكرة كبيرة بما يكفي يتحكم فيها المهاجم
  2. يتم تعديل عداد البرنامج ليشير إلى عنوان مخصص
  3. يتم إجراء محاولات إعادة تلقائية إلى درجة تقل فيها احتمالات الفشل بشكل كبير
  4. تم تحسين الكود من حيث وقت قطع الاتصال وسرعة البحث في الذاكرة إلى درجة تؤدي فيها المزيد من التحسينات إلى المساس باستقرار الاستغلال

الاختلافات والتحسينات

يختلف هذا الاستغلال عن تنفيذ Insinuator بالطرق التالية:

  1. مكتوب بلغة C بدلاً من Python (لأني أحب C)
  2. مكتوب بطريقة معيارية، حيث كل وحدة مسؤولة عن مهمة محددة
  3. تم اختباره على Pixel 3 XL يعمل بنظام Android 9 (PQ3A.190801.002، مستوى التصحيح الأمني 2019-08-01) لأن هذا ما كان لدي
  4. يسرب العناوين في libandroid_runtime.so بدلاً من libicuuc.so، لأن ذلك عمل بشكل أفضل على هذا الهاتف/الهدف
  5. يحتوي على سلسلتي JOP مثاليتين منفذتين، واحدة تستدعي execv مباشرة والأخرى تستدعي fork ثم execv
  6. مرفق به نص Ghidra مخصص يقوم بمعالجة ملف libandroid_runtime.so ويستخرج إزاحات الدوال والأدوات (لتسهيل نقل الاستغلال إلى أهداف أخرى)

العرض التوضيحي / لقطات الشاشة

هذا عرض فيديو يوضح الاستغلال وهو يعدل عداد البرنامج ليشير إلى عنوان مخصص: PoC Demo Video

التكرار الأول للسلسلة هو الذي يمكن رؤيته في jop_experiment. هذه السلسلة تستدعي execv مباشرة دون استدعاء fork. يمكن العثور عليها في commit ca28fdf. هذا ما يحدث عند استخدام هذه السلسلة: Execv Chain

التكرار الثاني للسلسلة هو الذي يستدعي fork ثم execv. التفاصيل الكاملة لهذه السلسلة يمكن العثور عليها هنا. هذا ما يحدث عند استخدام هذه السلسلة: Fork Chain

لحسن الحظ، يحتوي Pixel 3 XL على حمايات تمنع عملية البلوتوث من استدعاء fork و/أو execv. من ناحية مشاركة المعرفة أو التباهي، انتهى عملي هنا. إذا كتبت وشاركت أي شيء أكثر تقدمًا، فقد يكون مفيدًا جدًا للقبعات السوداء.

خاتمة الاستغلال

أعتبر هذا الاستغلال كاملاً. التحسينات المستقبلية قد تشمل:

  • كتابة سلسلة JOP لاستدعاء dlsym ثم mprotect لتشغيل شيل كود مخصص
  • جمع وحفظ قاعدة بيانات للإزاحات لأهداف مختلفة
  • اختبار الاستغلالات على أهداف متعددة بهدف العالمية النسبية
  • ربط الاستغلال مع استغلال على مستوى نظام التشغيل للحصول على صلاحيات الجذر (مثل استغلالي السابق CVE-2019-2215)
  • والمزيد...

كل هذه الأمور تحول هذا المشروع من مشروع ممتع لمشاركة المعرفة إلى استغلال للقبعات السوداء يمكن تسليحه، وهنا تنتهي رحلتي، في الوقت الحالي.... إذا كان لديك أي أسئلة، لا تتردد في التواصل.

الاستخدام

لتشغيل الاستغلال، قم بتشغيل:

root@kitploit:~
make build run ARGS="00:00:00:00:00:00" 

حيث 00:00:00:00:00:00 هو عنوان MAC للجهاز الهدف/الضحية. بخلاف make clean، فإن بقية أهداف البناء مفيدة فقط إذا كنت تحاول تعديل أو تحسين أو إعادة تنفيذ الاستغلال، لذلك لا داعي لذكرها بالتفصيل.

التصحيح

  • يمكن العثور على ثنائي gdbserver لنظام أندرويد في مجلد NDK
  • استخدم هذا لتصحيح الهدف (غير موصى به):
root@kitploit:~
# On target
/data/local/tmp/gdbserver 0.0.0.0:1234 --attach $(ps -A | grep -i "com.android.bluetooth" | awk '{print $2}')

# On host
adb forward tcp:1234 tcp:1234
gdb-multiarch -q -x ./gdbinit
  • مباشرة على الهاتف من خلال gdb الخاص بـ termux (موصى به):
root@kitploit:~
# On host
adb push ./gdbinit /data/local/tmp/gdbinit

# On target
su
/data/data/com.termux/files/usr/bin/gdb -q -x /data/local/tmp/gdbinit -p $(ps -A | grep -i "com.android.bluetooth" | awk '{print $2}') 
# OR
/data/data/com.termux/files/usr/bin/gdb -q -p $(ps -A | grep -i "com.android.bluetooth" | awk '{print $2}') 

يمكنك إعادة تشغيل خدمة البلوتوث على جهاز المهاجم في حالة توقفها عن العمل:

root@kitploit:~
sudo systemctl restart bluetooth.service

ملاحظات

يشرح هذا القسم بعض الظواهر التي لوحظت أثناء تطوير هذا الاستغلال:

  • يتم إيقاف SSP (عند إنشاء مقبس HCI) لمنع انتهاء المهلة على الهدف البعيد:

SSP PIN Timeout

  • نقوم برش حزم تنظيف الكومة لتقليل فرصة تعطل الهدف بسبب تجاوز غير مقصود يعدل الجداول الافتراضية لكائن base::MessageLoop المستخدم عبر get_message_loop:

CFI MessageLoop Crash

  • لم يتم شرح هذا جيدًا في منشور insinuator. نحن نسرب عنوان حزمة بمحاولة استهداف قطع malloc بحجم 32 بايت، والتي تتضمن عنصر قائمة مرتبطة واحد لكل عنصر في partial_packets unordered_map. تم اكتشاف هذا باستخدام map_experiment لا يتطابق map_experiment مع ما يتم تسريبه في البرنامج الفعلي، لذا اتبعت نمط insinuator واستخدمت نمطًا آخر (وجدته أيضًا بالتجربة).
نتيجة map_experiment

Map Experiment Result

  • يتسبب التعطل وكتابة PC في تعطل كائن إشارة chrome بنجاح

LibChrome Signal object crash

  • تم محاكاة سلسلة JOP باستخدام jop_experiment. سلسلة JOP الكاملة (الأولى، execv فقط) موضحة في JOP_PLAN.md

JOP Experiment Result

تنزيل الأداة