
तीन-चरणीय ब्लूटूथ BDADDR निष्कर्षण, Fast Pair डिवाइसों पर DoS और हाईजैक; CVE-2025-36911 के दायरे से बाहर अनपैच्ड प्रिमिटिव्स (Ubertooth की आवश्यकता नहीं)
ब्लूटूथ BDADDR निष्कर्षण, डिनायल-ऑफ-सर्विस और हाईजैक अनुसंधान उपकरण
© 2026 @Ymsniper — केवल अधिकृत सुरक्षा अनुसंधान के लिए।
Whisper Bully एक तीन-चरणीय ब्लूटूथ सुरक्षा अनुसंधान उपकरण है जो Google Fast Pair (सेवा UUID fe2c) का विज्ञापन करने वाले उपकरणों को लक्षित करता है। यह दो अनपैच्ड आक्रमण प्रिमिटिव प्रदर्शित करता है जो CVE-2025-36911 फर्मवेयर पैच के दायरे से बाहर हैं:
⚠️ यह उपकरण Whisper Pair (Fast Pair GATT) प्रोटोकॉल को लागू नहीं करता। यह कभी भी Key-Based Pairing विशेषता (UUID 1236) या Account Key विशेषता (UUID 1238) पर लेखन नहीं करता। यहाँ वर्णित आक्रमण सतह CVE-2025-36911 पेयरिंग मोड चेक पैच से अलग है और उसके द्वारा संबोधित नहीं की गई है।
https://github.com/user-attachments/assets/67f2bcb6-38ad-4ba0-80c5-36dbb54f3f11
मूल कारण: जब एक BLE कनेक्शन स्थापित होता है, तो Linux BlueZ होस्ट स्टैक LL_CONNECTION_COMPLETE इवेंट को प्रोसेस करता है और डिवाइस के रिज़ॉल्वेबल प्राइवेट एड्रेस (RPA) को उसके स्थायी आइडेंटिटी एड्रेस में रिज़ॉल्व करता है, उसे BlueZ डिवाइस टेबल में कैश करता है। यह किसी भी GATT सेवा इंटरैक्शन से पहले, लिंक लेयर / HCI स्तर पर होता है। कोई Fast Pair प्रोटोकॉल शामिल नहीं होता।
कोड वास्तव में क्या करता है:
fe2c का विज्ञापन करने वाले उपकरणों के लिए सक्रिय BLE स्कैन (BleakScanner) करता है — केवल लक्ष्य पहचान के लिए उपयोग, कोई प्रोटोकॉल इंटरैक्शन नहींBleakClient.connect() के माध्यम से एक साधारण BLE कनेक्शन स्थापित करता है — किसी भी प्रकार का कोई GATT लेखन नहींNoInputNoOutput पर सेट करता हैwb.py की पंक्ति 452)bluetoothctl pair <rpa_addr> चलाता है — मानक ब्लूटूथ SMP पेयरिंग प्रयास, Fast Pair नहींBonded: yes आउटपुट के लिए bluetoothctl stdout की निगरानी करता है, जिसमें बॉन्डेड एड्रेस हो सकता हैbluetoothctl devices कॉल करता है और प्रारंभिक RPA से तुलना करता है — समान डिवाइस नाम लेकिन भिन्न एड्रेस वाली कोई भी प्रविष्टि स्थायी आइडेंटिटी एड्रेस होती है, जिसे BlueZ द्वारा चरण 2 में लीक किया गयापैच इसे क्यों ठीक नहीं करता:
CVE-2025-36911 फर्मवेयर फिक्स एक्सेसरी पर Fast Pair GATT Key-Based Pairing विशेषता हैंडलर में एक पेयरिंग मोड जाँच जोड़ता है। यह उपकरण उस विशेषता पर कभी लेखन नहीं करता। आइडेंटिटी एड्रेस लीक हमलावर के Linux होस्ट पर BlueZ के स्वयं के डिवाइस कैश के माध्यम से होता है — पूरी तरह से एक्सेसरी के फर्मवेयर के बाहर।
मुख्य व्यवहार नोट:
bluetoothctl pair चरण विफल हो या टाइमआउट हो जाएNoInputNoOutput का अर्थ है जस्ट वर्क्स के लिए दोनों ओर से कोई उपयोगकर्ता इंटरैक्शन नहींस्थायी एड्रेस ज्ञात होने के बाद, वैकल्पिक रूप से l2flood के संशोधित संस्करण का उपयोग करके एक निरंतर L2CAP डिनायल-ऑफ-सर्विस निष्पादित करें।
उपकरण में दो मोड उपयोग किए जाते हैं:
-R फ्लैग — EMP मोड (चरण 2 फ्लड)
साइलेंट फायर-एंड-फॉरगेट बर्स्ट-रीकनेक्ट। सभी थ्रेड अपने कनेक्ट → बर्स्ट → फोर्स्ड क्लोज़ चक्रों को सिंक्रोनाइज़ करते हैं ताकि लक्ष्य को स्टैगर्ड L2CAP चैनल शफलिंग के बजाय आवधिक पूर्ण ACL टियरडाउन प्राप्त हो, जिसे वह अवशोषित कर सकता है। हर क्लोज़ पर तत्काल RST टियरडाउन के लिए SO_LINGER {1,0} का उपयोग करता है। सामान्य संचालन के दौरान कोई stdout आउटपुट उत्पन्न नहीं करता — कनेक्ट त्रुटियाँ stderr पर दबा दी जाती हैं और केवल आवधिक रूप से मुद्रित होती हैं।
सामान्य मोड (चरण 3 हाईजैक प्रोब)
बिना -R के उपयोग किया जाता है ताकि यह जाँचा जा सके कि लक्ष्य अभी भी प्रतिक्रिया दे रहा है या नहीं। इस मोड में भी सुधार किया गया — यह अब रीकनेक्ट्स को स्वचालित रूप से संभालता है और जब लक्ष्य प्रतिक्रिया देना बंद कर देता है तो no response from <addr>: id N आउटपुट करता है, जिसे wb.py हाईजैक को ट्रिगर करने के लिए मॉनिटर करता है।
परिणाम: फ्लड सक्रिय रहने पर लक्ष्य डिवाइस सामान्य कनेक्शन प्रयासों के प्रति अनुत्तरदायी हो जाता है। आक्रमण रुकने पर डिवाइस पूरी तरह से ठीक हो जाता है — कोई स्थायी क्षति नहीं।
मल्टीथ्रेड व्यवहार:
मूल कारण: निरंतर L2CAP फ्लड लक्ष्य डिवाइस के ब्लूटूथ स्टैक को क्रैश या रीसेट करने का कारण बनता है। रिकवरी विंडो के दौरान — Fast Pair GATT सेवा के पुनः पंजीकृत होने से पहले और सिक्योरिटी मैनेजर के पूरी तरह से पुनः आरंभ होने से पहले — डिवाइस बिना Fast Pair GATT हैंडशेक की आवश्यकता के NoInputNoOutput से एक मानक SMP जस्ट वर्क्स बॉन्ड स्वीकार करता है, जो सामान्य रूप से बॉन्ड को गेट करता है। परिणामी बॉन्ड स्थायी होता है: यह BT एडाप्टर रीसेट से बच जाता है और bluetoothctl info में Paired: yes / Bonded: yes दिखाता है।
यह CVE-2025-36911 से एक अलग निष्कर्ष क्यों है:
CVE-2025-36911 पैच FP GATT Key-Based Pairing विशेषता हैंडलर में एक पेयरिंग मोड जाँच लागू करता है। चरण 3 उस विशेषता को कभी स्पर्श नहीं करता। बॉन्ड SMP परत पर एक ऐसी विंडो के दौरान स्थापित होता है जहाँ FP GATT सर्वर पुनः आरंभ नहीं हुआ होता, इसलिए Fast Pair सुरक्षा गेट तक कभी पहुँचा ही नहीं जाता। एक पूर्णतः पैच किया गया डिवाइस इसके प्रति संवेदनशील रहता है क्योंकि स्टैक रिकवरी के दौरान पैच को SMP परत में कोई दृश्यता नहीं होती।
कोड वास्तव में क्या करता है:
l2flood -c -1 -t 2) भेजता है कि डिवाइस अनुत्तरदायी है — आउटपुट में no response from <addr>: id N खोजता हैbluetoothctl connect <permanent_addr> चलाता हैNoInputNoOutput / NoInputNoOutput पर बातचीत करता है → जस्ट वर्क्स एसोसिएशन मॉडल → बॉन्ड पूर्ण होता हैbluetoothctl connect एग्जिट कोड 0 लौटाता हैडिवाइस स्थिति के अनुसार सफलता की संभावना:
| डिवाइस स्थिति | अपेक्षित परिणाम |
|---|---|
| फ्लड में सक्रिय / अनुत्तरदायी | उच्चतम सफलता — रिकवरी के दौरान स्टैक अवक्रमित स्थिति में |
| फ्लड से पुनर्प्राप्त हो रहा | उच्च सफलता — अस्थायी SM पुनः-आरंभ विंडो |
| पूर्णतः पुनर्प्राप्त | कम सफलता — सामान्य सुरक्षा बहाल |
| बंद (पावर ऑफ) | विफल |
| | CVE-2025-36911 (WhisperPair) | यह उपकरण | |---|---| | उपयोग किया गया प्रोटोकॉल | Fast Pair GATT KBP (UUID 1236 लेखन) | कोई नहीं — केवल साधारण BLE कनेक्ट | | BDADDR लीक पथ | एन्क्रिप्टेड KBP अधिसूचना (BR/EDR एड्रेस) | LL_CONNECTION_COMPLETE पर BlueZ RPA रिज़ॉल्यूशन | | ऑथ बायपास पथ | FP पेयरिंग मोड जाँच अनुपस्थित | BT स्टैक रिकवरी विंडो के दौरान SMP जस्ट वर्क्स | | 36911 फिक्स द्वारा पैच किया गया? | हाँ | नहीं | | पैच किए गए उपकरणों पर कार्य करता है? | नहीं | हाँ | | CWE | CWE-287 | CWE-200 (चरण 1) + CWE-362/CWE-287 (चरण 3) |
यह एक डिनायल-ऑफ-सर्विस और अनधिकृत पहुँच अनुसंधान उपकरण है।
इस उपकरण का उपयोग उन उपकरणों पर करना जिनके आप स्वामी नहीं हैं या बिना स्पष्ट लिखित प्राधिकरण के, संघीय अपराध है जिसके लिए कंप्यूटर फ्रॉड एंड एब्यूज़ एक्ट (18 U.S.C. § 1030) और अन्य क्षेत्राधिकारों में समकक्ष क़ानूनों के तहत कारावास और जुर्माना हो सकता है।
आप इस उपकरण का उपयोग केवल इन पर कर सकते हैं:
bluetoothctl और रॉ BLE एक्सेस के लिए आवश्यक)bluetoothctl / BlueZ स्थापित और कार्यात्मकl2flood — देखें kovmir/l2floodUbuntu / Debian:
sudo apt update
sudo apt install -y python3 python3-pip libdbus-1-dev libglib2.0-dev bluez
Fedora / RHEL / CentOS:
sudo dnf install -y python3 python3-pip dbus-devel glib2-devel bluez
Arch Linux:
sudo pacman -S python python-pip dbus glib bluez
Alpine Linux:
apk add --no-cache python3 py3-pip dbus-dev glib-dev bluez bluez-openrc
openSUSE:
sudo zypper install -y python3 python3-pip dbus-1-devel glib2-devel bluez
Void Linux:
sudo xbps-install -S python3 python3-pip dbus-devel glib-devel bluez
git clone https://github.com/Ymsniper/Whisper_Bully.git
cd Whisper_Bully
pip3 install -r requirements.txt
# Required for Stage 2/3 only:
make
sudo make install
# Auto-detect and extract all nearby Fast Pair devices
sudo python3 wb.py
# 20 second scan, save results
sudo python3 wb.py -s 20 -o targets.json
# 30 second scan, custom output file
sudo python3 wb.py -s 30 -o extracted.json
नोट: यदि कोई डिवाइस पहले इस उपकरण द्वारा या मैन्युअल रूप से कनेक्ट या पेयर किया गया था, तो BlueZ पहले से ही उसका आइडेंटिटी एड्रेस जानता है। इसे पहले हटा दें ताकि निष्कर्षण साफ़ रूप से चले:
sudo bluetoothctl remove <address>
sudo python3 wb.py -s 20 -o targets.json
# At completion: "Run aggressive L2CAP test... (yes/no)" → yes
# Stage 1 + Stage 2 only
sudo python3 wb.py -s 20 -o targets.json --aggressive
# Stage 1 + Stage 2 + Stage 3
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack
# With duration and thread count
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack -d 120 -t 8
# Flood from extracted targets file for 120 seconds
sudo python3 aggressive_test.py -f targets.json -d 120 -t 4
# Flood a single known address for 60 seconds
sudo python3 aggressive_test.py AA:BB:CC:DD:EE:FF -d 60
# Flood forever (Ctrl+C to stop)
sudo python3 aggressive_test.py AA:BB:CC:DD:EE:FF -f
# Integrated — extract, flood, then hijack
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack -d 120
# Manual standalone hijack on known address
sudo python3 wb.py -H AA:BB:CC:DD:EE:FF
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack -d 120 -t 4
निष्पादन प्रवाह:
targets.json में सहेजें# Terminal 1
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack -i hci0 -d 120 -t 4 &
# Terminal 2
sudo python3 wb.py -s 20 -o targets.json --aggressive --hijack -i hci1 -d 120 -t 4
DoS दबाव को दोगुना करता है और रिकवरी विंडो के दौरान हाईजैक सफलता की संभावना बढ़ाता है।
Fast Pair FE2C सेवा UUID का उपयोग उम्मीदवार लक्ष्यों की पहचान करने के लिए केवल स्कैन फ़िल्टर के रूप में किया जाता है। एक बार BLE कनेक्शन स्थापित हो जाने पर:
LL_CONNECTION_COMPLETE भेजती हैbluetoothctl devices फिर मूल RPA और नव पंजीकृत आइडेंटिटी एड्रेस दोनों दिखाता है — समान डिवाइस नाम, भिन्न एड्रेससमवर्ती रूप से चलने वाला bluetoothctl pair कॉल सफल हो भी सकता है और नहीं भी — पेयर कमांड के पूर्ण या विफल होने तक BDADDR आमतौर पर पहले से ही टेबल में होता है।
l2flood -R)यह संशोधित l2flood इच्छित चरण के आधार पर दो मोड रखता है:
-R फ्लैग — EMP मोड (केवल DoS, कोई हाईजैक नहीं)
चरण 3 पर आगे बढ़े बिना चरण 2 को स्टैंडअलोन चलाते समय उपयोग किया जाता है।
साइलेंट फायर-एंड-फॉरगेट बर्स्ट-रीकनेक्ट — सभी थ्रेड अपने
कनेक्ट → बर्स्ट → फोर्स्ड क्लोज़ चक्रों को सिंक्रोनाइज़ करते हैं ताकि आवधिक पूर्ण ACL
टियरडाउन सुनिश्चित हो सके। सामान्य संचालन के दौरान कोई stdout आउटपुट उत्पन्न नहीं करता।
सामान्य मोड (DoS + हाईजैक प्रोब)
चरण 3 के इच्छित होने पर उपयोग किया जाता है। सामान्य मोड में सुधार किया गया है ताकि
रीकनेक्ट्स को स्वचालित रूप से संभाला जा सके और जब लक्ष्य प्रतिक्रिया देना बंद कर दे तो
no response from <addr>: id N आउटपुट करता है — यह वह संकेत है जिसे wb.py
हाईजैक प्रयास को ट्रिगर करने के लिए मॉनिटर करता है।
परिणामी बॉन्ड एक क्षणिक कनेक्शन नहीं है — यह BlueZ द्वारा संग्रहीत एक पूर्ण SMP बॉन्ड है:
bluetoothctl info <addr> Paired: yes, Bonded: yes, Trusted: no दिखाता हैbluetoothctl power off/on चक्रों से बच जाता है/var/lib/bluetooth/ में संग्रहीत)bluetoothctl के साथ Linux आवश्यककोई डिवाइस नहीं मिला
bluetoothctl कार्य कर रहा है: sudo bluetoothctl list-s 30BLE कनेक्शन विफल / निष्कर्षण विफल
sudo bluetoothctl remove <addr>फ्लड का कोई प्रभाव नहीं
-t 16अनुमति अस्वीकृत
sudo के साथ चलाएंbluetooth समूह में है या रूट के रूप में चलाएंbleak इम्पोर्ट त्रुटि
sudo apt install libdbus-1-dev libglib2.0-devsudo dnf install dbus-devel glib2-develsudo pacman -S dbus glibD-Bus त्रुटियाँ
sudo systemctl start dbus && sudo systemctl start bluetoothMIT. विवरण के लिए LICENSE देखें।
यह उपकरण केवल अधिकृत सुरक्षा परीक्षण और रक्षात्मक अनुसंधान के लिए है। ब्लूटूथ उपकरणों तक अनधिकृत पहुँच अवैध है। केवल उन उपकरणों पर उपयोग करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित अनुमति है। लेखक अनधिकृत या अवैध उपयोग के लिए कोई दायित्व नहीं लेता।
| फ्लैग | विवरण |
|---|
-s, --scan-time | BLE स्कैन अवधि सेकंड में (डिफ़ॉल्ट: 10) |
-o, --output | निकाले गए एड्रेस को JSON फ़ाइल में सहेजें |
--aggressive | संकेत छोड़ें, चरण 2 तुरंत चलाएं (पूर्व लिखित प्राधिकरण आवश्यक) |
-H, --hijack | चरण 2 के बाद चरण 3 हाईजैक का प्रयास करें (--aggressive या इंटरैक्टिव हाँ आवश्यक) |
-d, --duration | फ्लड अवधि सेकंड में (डिफ़ॉल्ट: 60) या हमेशा के लिए f |
-t, --threads | समानांतर L2CAP फ्लड थ्रेड (डिफ़ॉल्ट: CPU संख्या) |
-i, --hci | उपयोग करने के लिए HCI एडाप्टर (जैसे hci0, hci1) |