Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
RustyInjector — Marc Newlin के कीस्ट्रोक इंजेक्शन प्रमाण-अवधारणा (CVE-2023-45866) का Rust कार्यान्वयन। | Kitploit
उपकरण/GitHubGitHub/xg3nesis/rustyinjector
ब्लूटूथ सुरक्षाशोषणवायरलेस सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHubxg3nesis/rustyinjector

RustyInjector

Marc Newlin के कीस्ट्रोक इंजेक्शन प्रमाण-अवधारणा (CVE-2023-45866) का Rust कार्यान्वयन।

रिपॉजिटरी देखें
111 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

⚠️ अस्वीकरण: केवल अनुसंधान और शैक्षिक उद्देश्यों के लिए
यह प्रोजेक्ट एक प्रूफ ऑफ कॉन्सेप्ट (PoC) है जो ब्लूटूथ कीस्ट्रोक इंजेक्शन को प्रदर्शित करता है, जिसे Rust में पुनः कार्यान्वित किया गया है। यह विशेष रूप से शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए है।

  • इस कोड का उपयोग सिस्टम से समझौता करने के लिए स्पष्ट प्राधिकरण के बिना न करें।
  • इस प्रोजेक्ट का कोई भी अनधिकृत, अवैध या अनैतिक उपयोग सख्त वर्जित है।
  • लेखक इस कोड के दुरुपयोग या इससे होने वाली क्षति के लिए कोई जिम्मेदारी नहीं लेता है।

इस कोड को डाउनलोड, क्लोन या उपयोग करके, आप इसे जिम्मेदारी से और सभी लागू कानूनों और विनियमों के अनुपालन में उपयोग करने के लिए सहमत होते हैं।


🦀 Rusty Injector !

Rust Injector लोगो

Rusty Injector में आपका स्वागत है — यह Marc Newlin के ब्लूटूथ कीस्ट्रोक इंजेक्शन PoC से प्रेरित Rust कार्यान्वयन है, जो CVE-2023-45866, CVE-2024-21306 और CVE-2024-0230 से जुड़ा है।

वर्तमान में, यह रिपॉजिटरी केवल CVE-2023-45866 को लागू करता है, जो Linux ऑपरेटिंग सिस्टम पर BlueZ में कीस्ट्रोक इंजेक्शन की कमजोरियों का शोषण करता है।

नीचे NIST विवरण का स्क्रीनशॉट है, जिसमें CVSS स्कोरिंग शामिल है:

CVE-2023-45866 का NIST विवरण

चित्र 1: CVE-2023-45866 का NIST विवरण।

अन्य CVEs, CVE-2024-21306 और CVE-2024-0230, मेरे द्वारा कार्यान्वित करने की योजना नहीं है, लेकिन योगदान का हार्दिक स्वागत है।

1. यह कैसे काम करता है ?

विवरण में जाने से पहले, मैं आपको NullCon 2024 सम्मेलन में Marc Newlin की प्रस्तुति देखने के लिए प्रोत्साहित करता हूँ, क्योंकि यह इन कमजोरियों की स्पष्ट और गहन व्याख्या प्रदान करती है: Hi, My Name Is keyboard by Marc Newlin.
मैंने एक वीडियो भी उपलब्ध कराया है जो इस कमजोरी को लोकप्रिय बनाता है। आप इसे यहाँ पाएंगे: How a Simple Bluetooth Hack Can Hijack Your Device - Hi, my name is keyboard.

📌 यदि आपको नीचे दिए गए स्पष्टीकरण में कोई लुप्त बिंदु, सरलीकरण के क्षेत्र या संभावित गलतियाँ दिखाई दें, तो कृपया इसे संशोधित करें और एक मर्ज अनुरोध सबमिट करें। मुझे आपके योगदानों की समीक्षा करने और उन्हें रिपॉजिटरी में शामिल करने में खुशी होगी।

चूँकि हमने केवल Linux ऑपरेटिंग सिस्टम के लिए CVE-2023-45866 कमजोरी को कवर किया है, हम केवल BlueZ लाइब्रेरी को लक्षित करने वाले इस विशिष्ट शोषण तक पहुँचने की प्रक्रिया समझाएंगे।

सबसे पहले, आपको यह समझना होगा कि यह कमजोरी केवल Bluetooth BR/EDR पर शोषणीय है क्योंकि यह इस तकनीक पर आधारित HID प्रोफ़ाइल को लक्षित करती है। आप जानते होंगे कि ब्लूटूथ वास्तुकला कार्यान्वयन कई परतों में विभाजित है, जैसे ईथरनेट प्रोटोकॉल के लिए OSI मॉडल, और जैसा कि आप नीचे हमारे योजनाबद्ध में देख सकते हैं।

ब्लूटूथ स्टैक HID

आरेख 1: सरलीकृत Bluetooth BR/EDR (बेसिक रेट - एन्हांस्ड डेटा रेट) स्टैक। स्टैक की सबसे निचली परत समर्पित एंटीना के साथ भौतिक परत का प्रतिनिधित्व करती है, और उच्च स्तर एप्लिकेशन स्तर या उस स्तर को दर्शाता है जिसे हम कभी-कभी ऑपरेटिंग सिस्टम के रूप में नामित कर सकते हैं। जब दो डिवाइस एक-दूसरे के साथ संवाद करना चाहते हैं, तो वे इन विभिन्न परतों से गुज़रते हैं: आउटगोइंग पैकेट के लिए ऊपर से नीचे और आने वाले ब्लूटूथ पैकेट के लिए नीचे से ऊपर।

पूछताछ प्रक्रिया के बाद, एक बार जब डिवाइस यह निर्धारित कर लेते हैं कि वे कनेक्शन स्थापित करना चाहते हैं, तो वे पेयरिंग प्रक्रिया के लिए आगे बढ़ते हैं। यह प्रक्रिया डिवाइसों के बीच आपसी प्रमाणीकरण और एक एन्क्रिप्शन कुंजी की स्थापना को सक्षम बनाती है, जिसका उपयोग संचार को सुरक्षित करने के लिए किया जाता है।

ब्लूटूथ विनिर्देश विभिन्न स्तरों के प्रमाणीकरण और सुरक्षा प्रदान करता है। प्रमाणीकरण के लिए उपयोग किए जाने वाले तंत्र के आधार पर, संचार की सुरक्षा का स्तर भिन्न हो सकता है। डिवाइस अपने पास मौजूद इनपुट और आउटपुट परिधीयों के आधार पर प्रमाणित हो सकते हैं, इस अवधारणा को एसोसिएशन मॉडल कहा जाता है। आपने इसे तब देखा होगा जब दो डिवाइसों को पेयर किया जाता है—जैसे दूसरे डिवाइस पर प्रदर्शित PIN कोड दर्ज करने के लिए कहा जाना।

डिवाइसों की I/O (इनपुट/आउटपुट) क्षमताओं द्वारा निर्धारित चार पेयरिंग एसोसिएशन मॉडल हैं:

  • जस्ट वर्क्स (अप्रमाणित)
  • न्यूमेरिक कम्पेरिजन (प्रमाणित)
  • पासकी एंट्री (प्रमाणित)
  • आउट ऑफ बैंड (प्रमाणित) – पेयरिंग प्रक्रिया को सुविधाजनक बनाने के लिए दूसरी तकनीक पर निर्भर करता है।

नीचे एक तालिका है जो दर्शाती है कि हमारे IoT डिवाइसों की क्षमताओं के आधार पर कौन सा एसोसिएशन मॉडल उपयोग किया जाता है।

ब्लूटूथ एसोसिएशन मॉडल

आरेख 2: ब्लूटूथ कोर विनिर्देश v5.3 - 2.3.5.1 चयन कुंजी पीढ़ी विधि तालिका 2.8: IO क्षमताओं का कुंजी पीढ़ी विधि से मानचित्रण (पृष्ठ 1573) से प्रेरित ब्लूटूथ BR/EDR एसोसिएशन मॉडल दर्शाने वाली तालिका। सुरक्षा मोड और एसोसिएशन मॉडल के बारे में अधिक जानकारी के लिए कृपया Thyrasec द्वारा प्रकाशित इस दिलचस्प ब्लॉग पोस्ट को देखें: Bluetooth Security : Classic & BLE!

मुझे विश्वास है कि आप 'जस्ट वर्क्स' विधि से उत्सुक हैं, जो वास्तव में हमारी कमजोरी है। यहाँ समस्या है: यह विधि उपयोगकर्ता की पुष्टि या बातचीत की आवश्यकता के बिना पेयरिंग स्थापित करती है, जिससे पेयरिंग डिवाइस की प्रामाणिकता को सत्यापित करने का कोई तरीका नहीं बचता है। Linux सिस्टम पर, BlueZ स्टैक, डिफ़ॉल्ट रूप से, NoInputNoOutput के रूप में वर्गीकृत डिवाइसों से आने वाले पेयरिंग अनुरोधों को स्वीकार करता था (पिछड़ी संगतता को सक्षम करने के लिए)। वास्तव में एक "अद्भुत" डिज़ाइन विकल्प, क्या आप सहमत नहीं हैं?

Linux डिफ़ॉल्ट कॉन्फ़िगरेशन अद्यतन

चित्र 2: ब्लूटूथ सुरक्षा को सक्षम करने और CVE-2023-45866 को पैच करने के लिए BlueZ की डिफ़ॉल्ट कॉन्फ़िगरेशन का अद्यतन।

लक्ष्य डिवाइस के साथ पेयर करने के बाद, हमारा सिस्टम L2CAP परत के पोर्ट 1 के माध्यम से सर्विस डिस्कवरी प्रोटोकॉल (SDP) से कनेक्शन स्थापित करता है। जैसा कि आरेख 1 में दिखाया गया है, L2CAP परत निचली और ऊपरी सेवा परतों के बीच एक मध्यस्थ के रूप में कार्य करती है, डेटा पैकेटों का विभाजन, मल्टीप्लेक्सिंग और पुनःसंयोजन प्रदान करती है। SDP कनेक्शन के माध्यम से, हम लक्ष्य डिवाइस पर सभी उपलब्ध सेवाओं की पहचान करते हैं और ह्यूमन इंटरफ़ेस प्रोफ़ाइल (HID) सेवा से कनेक्ट होते हैं। HID प्रोफ़ाइल, जिसका उपयोग ऑपरेटिंग सिस्टम ब्लूटूथ कीबोर्ड और चूहों से इनपुट संसाधित करने के लिए करते हैं, L2CAP परत के पोर्ट 17 (HID नियंत्रण) और 19 (HID इंटरप्ट) के माध्यम से संचालित होती है। HID प्रोफ़ाइल तक पहुँचने के लिए, किसी प्रमाणीकरण की आवश्यकता नहीं है और L2CAP के पोर्ट 17 और 19 से जुड़ा कोई भी डिवाइस HID डिवाइस के रूप में पहचाना जाता है।

एक हमलावर ब्लूटूथ वायरलेस कीबोर्ड की सेवाओं और डिवाइस वर्ग का प्रतिरूपण कर सकता है, 'NoInputNoOutput' क्षमता निर्दिष्ट करके 'जस्ट वर्क्स' एसोसिएशन मॉडल का शोषण कर सकता है, और लक्ष्य डिवाइस में अनधिकृत कीस्ट्रोक इंजेक्ट कर सकता है।

2. इसे कैसे कार्यान्वित किया गया ?

पूरी तरह से ईमानदार होने के लिए, एकमात्र उद्देश्य इस शोषण की अंतर्दृष्टि की गहरी समझ हासिल करने के लिए प्रूफ ऑफ कॉन्सेप्ट को Rust में पुनः कार्यान्वित करना था। यही कारण है कि इस पहले पुनरावृत्ति में, वैश्विक आर्किटेक्चर Marc Newlin के पायथन PoC से प्रेरित था: Github "hi_my_name_is_keyboard"। भविष्य के पुनर्कार्य में, इसे अधिक Rusty तरीके से कार्यान्वित किया जा सकता है।

इस कार्यान्वयन के दौरान उपयोग किए गए क्रेट्स (= Rust लाइब्रेरीज़):

root@kitploit:~
[dependencies]
bluer = { version = "0.17.3", features = ["l2cap", "bluetoothd", "id", "rfcomm"] }
tokio = "1.42.0"
regex = "1.11.1"
clap = { version = "4.5.23", features = ["derive"] }

मेरे प्रोजेक्ट में मुख्य निर्भरता 'BlueR' थी, जो मूल BlueZ C लाइब्रेरी के शीर्ष पर बनाया गया एक Rust API है। आप उनका काम यहाँ देख सकते हैं: GitHub BlueR। मैंने BlueR लाइब्रेरी द्वारा प्रदान किए गए async फ़ंक्शनों का उपयोग सक्षम करने के लिए Tokio को भी एकीकृत किया। इसके अतिरिक्त, मैंने Clap, एक कमांड-लाइन आर्गुमेंट पार्सर, और Regex, एक क्रेट जो Rust में नियमित अभिव्यक्तियों को लागू करता है, का उपयोग किया ताकि 'bt_addr' (ब्लूटूथ पता) के लिए उपयोगकर्ता इनपुट को मान्य किया जा सके।

Marc Newlin के कार्यान्वयन के अवलोकन के बाद, मैंने समान कार्यक्षमता को पुनः उत्पन्न करने के लिए आर्किटेक्चर को कई चरणों में विघटित किया:

  1. उपयोगकर्ता तर्कों को पार्स करें जिनका उपयोग प्राप्त करने के लिए किया जाता है:
    • --iface या -i जो उपयोग करने के लिए ब्लूटूथ इंटरफ़ेस/अडैप्टर को दर्शाता है। यह तर्क वैकल्पिक है; यदि कुछ भी निर्दिष्ट नहीं किया गया है, तो यह डिफ़ॉल्ट तक पहुँचने का प्रयास करेगा।
    • --target या -t जो अनिवार्य है और लक्ष्य का ब्लूटूथ पता निर्दिष्ट करता है।
  2. लक्ष्य डिवाइस के साथ कनेक्शन के दौरान "जस्ट वर्क्स" पेयरिंग विधि तक पहुँचने में सक्षम होने के लिए NoInputNoOutput क्षमताओं वाला एक ब्लूटूथ एजेंट तैनात करें।
  3. HID कीबोर्ड सेवाओं के साथ एक प्रोफ़ाइल पंजीकृत करें और एक कीबोर्ड का प्रतिरूपण करने के लिए वर्ग 0x002540 पंजीकृत करें।
  4. हमारे इनपुट को सही HID बाइट्स में बदलने के लिए सभी एनम और फ़ंक्शन बनाएं जो HID पैकेट में भेजे जाएंगे।
  5. L2CAP परत पर सही पोर्ट (पोर्ट 1 - SDP, पोर्ट 17 - HID नियंत्रण और पोर्ट 19 - HID इंटरप्ट) पर कनेक्शन लॉन्च करें और अवैध कीस्ट्रोक इंजेक्ट करें।

मैंने अपने कोड को जितना संभव हो सके टिप्पणी करने का प्रयास किया है। यदि आप इसके माध्यम से जाते हैं, तो आप आसानी से इन सभी चरणों को पहचान लेंगे। इसे और अधिक सुरुचिपूर्ण बनाने के लिए, अगला कदम इसे और अधिक Rusty बनाना, एक सुंदर समाप्ति जोड़ना और कीबोर्ड स्क्रिप्ट (तैयार पेलोड) को पार्स करने या ग्राफिकल यूज़र इंटरफ़ेस रखने जैसी कई अन्य कार्यक्षमताएँ जोड़ना होगा। एक बार फिर, यह केवल शैक्षिक उद्देश्यों के लिए था, मुझे इस प्रोग्राम के अन्य पुनरावृत्ति पर काम करने का भरोसा नहीं है। लेकिन फिर से, योगदान का हार्दिक स्वागत है। यदि आपके कोई प्रश्न हैं, तो पूछने में संकोच न करें।

3. इसका उपयोग कैसे करें ?

पहली बात ध्यान देने योग्य: यह उपकरण Ubuntu 24.04 पर विकसित और परीक्षण किया गया था।

इस उपकरण का उपयोग करने के लिए, आपको BlueZ द्वारा पंजीकृत डिफ़ॉल्ट HID सेवा को अक्षम करना होगा, ताकि शोषण लॉन्च करते समय इसे पुनः पंजीकृत किया जा सके। इन चरणों का पालन करें:

  • /etc/systemd/system/bluetooth.target.wants/bluetooth.service कॉन्फ़िगरेशन फ़ाइल संपादित करें
  • लाइन को संशोधित करें: ExecStart=/usr/libexec/bluetooth/bluetoothd निम्नलिखित लाइन से: ExecStart=/usr/libexec/bluetooth/bluetoothd --noplugin=input
  • फ़ाइल को संशोधित करने के बाद, आपको परिवर्तनों को लागू करने के लिए systemd कॉन्फ़िगरेशन को पुनः लोड करना होगा और ब्लूटूथ सेवा को पुनरारंभ करना होगा। sudo systemctl daemon-reload sudo systemctl restart bluetooth

अब आपको बस प्रोजेक्ट को खींचना है और इसे cargo build के साथ बनाकर या तर्कों के साथ सीधे चलाकर निष्पादित करना है: cargo run -- -i [BT_INTERFACE] -t [BT_TARGET].

Rusty Injector का कमांड लाइन इंटरफ़ेस

चित्र 3: Rusty Injector का कमांड लाइन इंटरफ़ेस।

यहाँ एक उदाहरण है: cargo run -- -i hci0 -t AA:BB:CC:DD:EE:FF

एक और बात ध्यान देने योग्य है कि यदि आप कोड को संशोधित करना चाहते हैं और Configuration ट्रेट के माध्यम से set_address फ़ंक्शन का उपयोग करना चाहते हैं, तो आपको इसका उपयोग करने में सक्षम होने के लिए bdaddr उपकरण स्थापित करना होगा:

root@kitploit:~
# bluez स्रोत से bdaddr बनाएँ
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/

कृपया ध्यान दें, यदि आप कोई ब्लूटूथ इंटरफ़ेस निर्दिष्ट नहीं करते हैं, तो यह डिफ़ॉल्ट तक पहुँचने का प्रयास करेगा। और स्पष्ट रूप से, अपने Ubuntu ऑपरेटिंग सिस्टम में एक ब्लूटूथ इंटरफ़ेस प्लग करना न भूलें।🙃


मुझे विश्वास है कि मैंने सब कुछ कवर कर लिया है—अब आप Rusty Injector का अधिकतम लाभ उठाने के लिए तैयार हैं! यदि आपको कोई समस्या आती है या आपके पास टिप्पणियाँ या प्रतिक्रिया है, तो बेझिझक एक मुद्दा खोलें। एक अद्भुत अनुभव लें और हैकिंग की शुभकामनाएँ! 🚀

टूल डाउनलोड करें