
أداة لجمع المعلومات الاستخباراتية لاختراق Bluetooth
Bluing (المعروفة سابقًا باسم bluescan) هي أداة Bluetooth Intelligence Gathering مكتوبة بشكل أساسي بلغة Python. يمكن أن تساعدنا في التجسس على الهيكل الداخلي لـ Bluetooth، وهو بروتوكول معقد، أو اختراق أجهزة Bluetooth. فيما يلي الميزات الرئيسية للأداة:
تعتمد Bluing جزئيًا على BlueZ، حزمة بروتوكول Bluetooth الرسمية في Linux. لذلك فهي تدعم التشغيل على Linux فقط. يتم استخدام الأمر التالي لتثبيت التبعيات:```sh
sudo apt install python3-pip python3-dev libcairo2-dev libgirepository1.0-dev
libbluetooth-dev libdbus-1-dev bluez-tools python3-cairo-dev
rfkill meson patchelf bluez ubertooth adb python-is-python3
حاليًا، يتم توزيع bluing عبر [PyPI](https://pypi.org/project/bluing/) و **يدعم فقط Python 3.10**. فيما يلي أمر التثبيت:```sh
sudo pip3.10 install bluing
- قال الله: "ليكن ملونًا"، فكان ملونًا.
- ربما ترغب في نظرة عامة سريعة على الأجهزة الموصى بها.
$ bluing --helpأداة جمع معلومات لاختراق البلوتوث
الاستخدام:
bluing [-h | --help]
bluing (-v | --version)
bluing [-i <hci>] --clean BD_ADDR
bluing --flash-micro-bit
bluing <command> [<args>...]
الوسائط:
BD_ADDR عنوان جهاز البلوتوث
الخيارات:
-h, --help طباعة هذه المساعدة والخروج
-v, --version طباعة معلومات الإصدار والخروج
-i <hci> جهاز HCI
--clean تنظيف البيانات المخزنة مؤقتًا لجهاز بعيد
--flash-micro-bit تنزيل البرنامج الثابت المخصص إلى micro:bit
الأوامر:
br نظام المعدل الأساسي، يتضمن امتداد معدل البيانات المحسن (EDR) اختياريًا
le نظام الطاقة المنخفضة
android مكدس بلوتوث أندرويد
spoof التزوير بمعلومات جهاز محلي جديدة
plugin إدارة الإضافات
شغّل `bluing <command> --help` لمزيد من المعلومات حول أمر معين.
br: نظام المعدل الأساسي$ bluing br --helpالاستخدام:
bluing br [-h | --help]
bluing br [-i <hci>] [--inquiry-len=<n>] --inquiry
bluing br [-i <hci>] --sdp BD_ADDR
bluing br [-i <hci>] --local --sdp
bluing br [-i <hci>] --lmp-features BD_ADDR
bluing br [-i <hci>] --local --lmp-features
bluing br [-i <hci>] --stack BD_ADDR
bluing br [-i <hci>] --local --stack
bluing br [-i <hci>] [--inquiry-scan] --mon-incoming-conn
bluing br --org=<name> --timeout=<sec> --sniff-and-guess-bd-addr
الوسائط:
BD_ADDR عنوان جهاز BR/EDR بلوتوث
الخيارات:
-h, --help طباعة هذه المساعدة والخروج
-i <hci> جهاز HCI
--local استهداف جهاز BR/EDR محلي بدلاً من جهاز بعيد
--inquiry اكتشاف وحدات تحكم BR/EDR الأخرى القريبة
--inquiry-len=<n> أقصى مقدار من الوقت (يُضاف إلى --ext-inquiry-len=<n>)
المحدد قبل إيقاف الاستفسار.
الوقت = n * 1.28 ثانية
نطاق الوقت: 1.28 إلى 61.44 ثانية
نطاق n: 0x01 إلى 0x30 [الافتراضي: 8]
--ext-inquiry-len=<n> طول الاستفسار الممتد مُقاسًا بعدد
فتحات النطاق الأساسي.
طول الفاصل = n * 0.625 مللي ثانية (فتحة نطاق أساسي واحدة)
نطاق الوقت: 0 إلى 40.9 ثانية
نطاق n: 0x0000 إلى 0xFFFF [الافتراضي: 0]
--sdp استرجاع المعلومات من قاعدة بيانات SDP لجهاز
BR/EDR بعيد
--lmp-features قراءة ميزات LMP لجهاز BR/EDR بعيد
--stack تحديد نوع مكدس البلوتوث لجهاز BR/EDR بعيد
--mon-incoming-conn طباعة الاتصالات الواردة من أجهزة BR/EDR الأخرى القريبة
--inquiry-scan تمكين فحص الاستفسار
--sniff-and-guess-bd-addr التنصت على SAPs الخاصة بـ BD_ADDRs عبر الهواء، ثم تخمين
العنوان بناءً على اسم المؤسسة. تحتاج إلى
جهاز Ubertooth واحد على الأقل
--org=<name> اسم مؤسسة في ملف OUI.txt
--timeout=<sec> المهلة بالثواني
--inquiry: اكتشاف وحدات تحكم BR/EDR الأخرى القريبة$ sudo bluing br --inquiry[INFO] جاري اكتشاف وحدات تحكم BR/EDR الأخرى القريبة على hci0 لمدة 10.24 ثانية BD_ADDR: B0:C9:52:45:33:13 (GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD) وضع تكرار فحص الصفحة: 1 (R1) محجوز: 0x02 CoD: 0x5a020c فئة الخدمة: 0b1011010000 الهاتفية نقل الكائنات الالتقاط الشبكات فئة الجهاز الرئيسية: 0b00010, هاتف إزاحة الساعة: 0x50D5 RSSI: -61 استجابة الاستفسار الموسعة: الاسم المحلي الكامل: old man phone القائمة الكاملة لـ UUIDs فئة الخدمة 16 بت 0x1105 OBEXObjectPush 0x110a AudioSource 0x110c A/V_RemoteControlTarget 0x110e A/V_RemoteControl 0x1112 Headset - Audio Gateway (AG) 0x1115 PANU 0x1116 NAP 0x111f HandsfreeAudioGateway 0x112d SIM_Access 0x112f Phonebook Access - PSE 0x1200 PnPInformation 0x1132 Message Access Server القائمة الكاملة لـ UUIDs فئة الخدمة 32 بت لا شيء القائمة الكاملة لـ UUIDs فئة الخدمة 128 بت A49EAA15-CB06-495C-9F4F-BB80A90CDF00 00000000-0000-0000-0000-000000000000 ... ... [INFO] جاري طلب أسماء جميع الأجهزة المكتشفة... B0:C9:52:45:33:13 : old man phone ... ...
--sdp: استرجاع المعلومات من قاعدة بيانات SDP لجهاز BR/EDR بعيد$ sudo bluing br --sdp 34:13:46:23:6A:4Dجاري المسح ⠋ عدد سجلات الخدمة: 18 سجل الخدمة 0x0000: ServiceRecordHandle (uint32) 0x0001000d 0x0001: ServiceClassIDList (sequence) 0x1105: OBEXObjectPush 0x0004: ProtocolDescriptorList (sequence) 0x0100: L2CAP 0x0003: RFCOMM القناة: 0x0c 0x0008: OBEX 0x0005: BrowseGroupList (sequence) 0x1002: PublicBrowseRoot 0x0009: BluetoothProfileDescriptorList (sequence) 0x1105: OBEXObjectPush الإصدار v1.2 0x0100: ServiceName (تخمين) (نص) OBEX Object Push 0x0200: GoepL2CapPsm (تخمين) (uint16) 0x1023 0x0303: SupportedFormatsList (تخمين) (sequence) 0x01: vCard 2.1 0x02: vCard 3.0 0x03: vCal 1.0 0x04: iCal 2.0 0xff: أي نوع من الكائنات ... ...
--lmp-features: قراءة ميزات LMP لجهاز BR/EDR بعيد$ sudo bluing br --lmp-features 6A:8D:99:33:56:AEالإصدار الإصدار: مواصفات بلوتوث الأساسية 5.2 (LMP) مواصفات بلوتوث الأساسية 5.2 (LL) اسم الشركة المصنعة: HiSilicon Technologies CO., LIMITED الإصدار الفرعي: 33561 ميزات LMP حزم 3 فتحات: صحيح حزم 5 فتحات: صحيح التشفير: صحيح إزاحة الفتحة: صحيح دقة التوقيت: صحيح تبديل الدور: صحيح وضع الإيقاف المؤقت: خطأ وضع الشم: صحيح المستخدم سابقًا: خطأ طلبات التحكم في الطاقة: صحيح معدل البيانات المُدار بجودة القناة (CQDDR): صحيح ... ... ميزات LMP الموسعة الصفحة 1 الاقتران البسيط الآمن (دعم المضيف): صحيح دعم LE (المضيف): صحيح قدرة متزامنة LE وBR/EDR لنفس الجهاز (المضيف): صحيح الاتصالات الآمنة (دعم المضيف): صحيح الصفحة 2 البث اللاتصالي للتابع - عملية رئيسية: خطأ البث اللاتصالي للتابع - عملية تابعة: خطأ قطار المزامنة: خطأ فحص المزامنة: خطأ حدث HCI_Inquiry_Response_Notification: صحيح ... ...
--mon-incoming-conn: طباعة الاتصالات الواردة من أجهزة BR/EDR الأخرى القريبة$ sudo bluing br --inquiry-scan --mon-incoming-conn[INFO] Inquiry_Scan_Interval: 4096, 2560.0 مللي ثانية Inquiry_Scan_Window: 4096, 2560.0 مللي ثانية [INFO] تم تمكين فحص الاستفسار وفحص الصفحة A0:DE:0F:99:EF:78 وارد CoD: 0x5a020c فئة الخدمة: 0b1011010000 الهاتفية نقل الكائنات الالتقاط الشبكات فئة الجهاز الرئيسية: 0b00010, هاتف نوع الارتباط: 0x01 - ACL ... ...
--sniff-and-guess-bd-addr: التنصت وتخمين BD_ADDRs القريبة عبر الهواء$ bluing br --org='Huawei Device Co., Ltd.' --timeout=600 --sniff-and-guess-bd-addr[INFO] BD_ADDR محتمل لـ ??:??:99:4C:45:C3 24:A7:99:4C:45:C3 [INFO] BD_ADDR محتمل لـ ??:??:E4:2D:69:EE BC:1A:E4:2D:69:EE D0:05:E4:2D:69:EE 30:AA:E4:2D:69:EE [INFO] BD_ADDR محتمل لـ ??:??:15:60:81:7F 64:23:15:60:81:7F D4:74:15:60:81:7F ... ...
le: نظام الطاقة المنخفضة$ bluing le --helpالاستخدام:
bluing le [-h | --help]
bluing le [-i <hci>] [--scan-type=<type>] [--timeout=<sec>] [--sort=<key>] --scan
bluing le [-i <hci>] --pairing-feature [--timeout=<sec>] [--addr-type=<type>] PEER_ADDR
bluing le [-i <hci>] --ll-feature-set [--timeout=<sec>] [--addr-type=<type>] PEER_ADDR
bluing le [-i <hci>] --gatt [--io-cap=<name>] [--addr-type=<type>] PEER_ADDR
bluing le [-i <hci>] --local --gatt
bluing le [-i <hci>] --mon-incoming-conn
bluing le [--device=</dev/tty>] [--channel=<num>] --sniff-adv
الوسائط:
PEER_ADDR عنوان جهاز LE بلوتوث
الخيارات:
-h, --help طباعة هذه المساعدة والخروج
-i <hci> جهاز HCI
--scan اكتشاف أجهزة الإعلان القريبة
--scan-type=<type> نوع المسح المراد تنفيذه. نشط أو سلبي [الافتراضي: نشط]
--sort=<key> فرز الأجهزة المكتشفة حسب المفتاح، يدعم RSSI فقط
حاليًا [الافتراضي: rssi]
--ll-feature-set قراءة مجموعة ميزات LL لجهاز LE بعيد
--pairing-feature طلب ميزة الاقتران لجهاز LE بعيد
--timeout=<sec> مدة مسح LE، ولكن قد لا تكون دقيقة [الافتراضي: 10]
--gatt اكتشاف تسلسل هرمي لملف GATT لجهاز LE بعيد
--io-cap=<name> تعيين قدرة الإدخال/الإخراج للوكيل. القيم المتاحة:
DisplayOnly, DisplayYesNo, KeyboardOnly, NoInputNoOutput,
KeyboardDisplay (KeyboardOnly) [الافتراضي: NoInputNoOutput]
--addr-type=<type> نوع عنوان LE، عام أو عشوائي
--sniff-adv التنصت على وحدة PDU للقناة المادية للإعلان. تحتاج إلى
micro:bit واحد على الأقل (أو جهاز NRF51 آخر مدعوم محدد باستخدام --device)
--channel=<num> قناة الإعلان الفعلية LE، 37 أو 38 أو 39 [الافتراضي: 37,38,39]
--device=</dev/tty> الجهاز المراد استخدامه، مفصول بفواصل (مثل /dev/ttyUSB0,/dev/ttyUSB1,/dev/ttyUSB2)
مطلوب فقط إذا كنت تستخدم أجهزة NRF51 غير micro:bit (مثل Bluefruit)
--scan: اكتشاف أجهزة الإعلان القريبة$ sudo bluing le --scan[تحذير] قد ترغب في تزوير عنوان LE الخاص بك قبل إجراء مسح نشط [INFO] جاري مسح LE نشط على hci0 لمدة 10 ثوانٍ جاري المسح ⠴ ----------------نتائج مسح أجهزة LE---------------- العنوان: 74:A3:4A:D4:78:55 (ZIMI CORPORATION) نوع العنوان: public قابل للاتصال: صحيح RSSI: -68 ديسيبل ملي واط ملف الوصول العام: الأعلام: وضع اكتشاف LE العام BR/EDR غير مدعوم بيانات الخدمة - UUID 16 بت: UUID: 0x95FE البيانات: 9055990701b743e34aa3740e00 المظهر: 0000 مستوى طاقة الإرسال: 0 ديسيبل ملي واط (فقدان المسار 68 ديسيبل ملي واط) الاسم المحلي الكامل: Mesh Mi Switch ... ...
--ll-feature-set: قراءة مجموعة ميزات LL لجهاز LE بعيد$ sudo bluing le --ll-feature-set --addr-type=public 18:D9:8F:77:24:F1[INFO] جاري قراءة مجموعة ميزات LL لـ 18:D9:8F:77:24:F1 على hci0 جاري القراءة ⠼ ميزات LE LL: تشفير LE: صحيح إجراء طلب معلمات الاتصال: خطأ إشارة الرفض الموسعة: خطأ تبادل الميزات الذي بدأه التابع: خطأ اختبار اتصال LE: خطأ تمديد طول حزمة بيانات LE: صحيح خصوصية LL: خطأ سياسات تصفية الماسح الموسعة: خطأ LE 2M PHY: خطأ مؤشر التشكيل المستقر - المرسل: خطأ مؤشر التشكيل المستقر - المستقبل: خطأ ... ...
--pairing-feature: طلب ميزة الاقتران لجهاز LE بعيد$ sudo bluing le --pairing-feature --addr-type=public 18:D9:8F:77:24:F1[INFO] جاري طلب ميزة الاقتران لـ 18:D9:8F:77:24:F1 على hci0 جاري الطلب ⠧ استجابة الاقتران قدرة الإدخال/الإخراج: 0x03 - NoInputNoOutput علم بيانات OOB: 0x00 - غير موجود AuthReq: 0x01 الحد الأقصى لحجم مفتاح التشفير: 16 توزيع مفتاح البادئ: 0x00 EncKey: خطأ IdKey: خطأ SignKey: خطأ LinkKey: خطأ RFU: 0b0000 توزيع مفتاح المستجيب: 0x01 EncKey: صحيح IdKey: خطأ SignKey: خطأ LinkKey: خطأ RFU: 0b0000
--gatt: اكتشاف تسلسل هرمي لملف GATT لجهاز LE بعيد$ sudo bluing le --gatt --addr-type=public 18:D9:8F:77:24:F1----------------GATT Scan Result---------------- Number of services: 6
Service (0x0100 - 0x0112, 7 characteristics) Declaration Handle: 0x0100 Type: 2800 (Primary Service declaration) Value: 1812 (Human Interface Device) Permissions: Read (no authen/author)
<span style="font-weight: bold; color: #ecc179">Characteristic</span> (2 descriptors)
<span style="font-weight: bold; color: #ecc179">Declaration</span>
Handle: 0x010d
Type: 2803 (Characteristic declaration)
Value:
Properties: <span style="font-weight: bold; color: #9fab76">Read, Write Without Response, Write, Notify</span>
Handle: <span style="font-weight: bold; color: #9fab76">0x010e</span>
UUID: <span style="font-weight: bold; color: #9fab76">2A4D</span> (<span style="font-weight: bold; color: #9fab76">Report</span>)
Permissions: Read (no authen/author)
<span style="font-weight: bold; color: #ecc179">Value</span>
Handle: 0x0302
Type: 4A02 (Unknown)
Value: <span style="font-weight: bold; color: #c35956">Read Not Permitted</span>
Permissions: Higher layer specific
<span style="font-weight: bold; color: #ecc179">Descriptor</span>
Handle: <span style="font-weight: bold; color: #9fab76">0x010f</span>
Type: <span style="font-weight: bold; color: #9fab76">2902</span> (<span style="font-weight: bold; color: #ecc179">Client Characteristic Configuration declaration</span>)
Value: <span style="font-weight: bold; color: #9fab76">b'\x00\x00'</span>
Permissions: Read (no authen/author), Write (higher layer specifies authen/author)
--sniff-adv: التنصت على PDU القناة المادية للإعلان$ sudo bluing le --sniff-adv[INFO] Using micro:bit /dev/ttyACM2 on channel 37 [INFO] Using micro:bit /dev/ttyACM1 on channel 38 [INFO] Using micro:bit /dev/ttyACM0 on channel 39 [INFO] micro:bit 38 < Ready -> Start [INFO] micro:bit 37 < Ready -> Start [INFO] micro:bit 39 < Ready -> Start [38] [ADV_NONCONN_IND] random AdvA: 28:7A:88:B2:35:0B [39] [ADV_IND] public AdvA: A4:E4:72:B1:CB:8D [37] [SCAN_REQ] random ScanA: 6A:90:0C:07:3E:14 random AdvA: 7D:9B:A8:5A:F2:81 ... ...
android: مجموعة بلوتوث أندرويد$ bluing android --helpUsage:
bluing android [-h | --help]
bluing android [-t <id>] --collect-btsnoop-log [-o <file>]
Options:
-h, --help Display this help and quit
-t <id> Use android device with given transport id. This option
will be ignored when only one device is available
--collect-btsnoop-log Collect the btsnoop log being generated to a local file,
default ./btsnoop_hci.log
-o <file> Place the output into [default: ./btsnoop_hci.log]
--collect-btsnoop-log: جمع سجل btsnoop الجاري إنشاؤه$ bluing android -t 3 --collect-btsnoop-log -o btsnoop_hci.log; file btsnoop_hci.logbtsnoop_hci.log: BTSnoop version 1, HCI UART (H4)
spoof: التزييف بمعلومات جهاز محلي جديد$ bluing spoof --helpUsage:
bluing spoof [-h | --help]
bluing spoof [-i <hci>] --bd-addr=<BD_ADDR>
bluing spoof [-i <hci>] --cls-of-dev=<num>
bluing spoof --host-name=<name>
bluing spoof [-i <hci>] --alias=<alias>
Options:
-h, --help Print this help and quit
-i <hci> HCI device
--bd-addr=<BD_ADDR> Spoof with a new BD_ADDR
--cls-of-dev=<num> Spoof with a new Class of Device
--host-name=<name> Spoof with a new host name
--alias=<alias> Spoof with a new alias
--bd-addr=<BD_ADDR>: التزييف بعنوان BD_ADDR جديدتعتمد هذه الميزة حاليًا على spooftooph، والذي يمكن تثبيته عن طريق تشغيل sudo apt install spooftooph إذا كنت تستخدمها على Kali Linux. ومع ذلك، إذا كنت تستخدم هذه الميزة على Ubuntu، فستحتاج إلى تجميع وتثبيت spooftooph يدويًا.
$ sudo bluing spoof --bd-addr=AA:BB:CC:DD:EE:FF[WARNING] The original HCI device number may have been changed [INFO] BD_ADDR changed: 11:22:33:44:55:66 -> AA:BB:CC:DD:EE:FF
--cls-of-dev=<num>: التزييف بفئة جهاز جديدة$ sudo bluing spoof --cls-of-dev=0x6c0100No output when successful
--host-name=<name>: التزييف باسم مضيف جديد$ sudo bluing spoof --host-name=BluingNo output when successful
--alias=<alias>: التزييف باسم مستعار جديد لوحدة التحكم$ sudo bluing spoof --alias='Bluing Alias'No output when successful
plugin: إدارة الإضافات$ bluing plugin --helpUsage:
bluing plugin [-h | --help]
bluing plugin <command> [<args>...]
Options:
-h, --help Display this help and quit
Commands:
list List installed plugins
install Install a plugin
uninstall Uninstall a plugin
run Run a plugin
تتطلب العديد من ميزات bluing الوصول إلى محول بلوتوث واحد على الأقل. على الرغم من أنه من الممكن استخدام المحول المدمج مع جهاز Linux الفعلي أو جعل جهاز Linux الافتراضي مخصصًا لمحول الجهاز المضيف، إلا أنه لا يزال من المستحسن استخدام محول بلوتوث USB خارجي لمزيد من الاستقرار، مثل Parani UD100-G03.
يتطلب Bluing على الأقل micro:bit أصلي واحد عند التنصت على PDU القناة المادية للإعلان (le --sniff-adv)، ويوصى باستخدام 3 منها في نفس الوقت. تحتاج هذه الميكروبيتات إلى تشغيل البرامج الثابتة المخصصة التي يوفرها bluing. بعد توصيل الميكروبيتات بـ Linux، يمكن وميض البرامج الثابتة الجاهزة عن طريق تنفيذ الأمر التالي:
bluing --flash-micro-bit
على الرغم من أن استخدامها أقل ملاءمة من micro:bit، إلا أنه يمكن دعم محولات NRF51 الأكثر عمومية والتي يسهل شراؤها. تمت إضافة الدعم للوحات Adafruit Bluefruit LE Friend و BLE400. لاستخدام هذه اللوحات، ستحتاج إلى وميضها باستخدام SWD. لا تدعم هذه الأداة وميض هذه الأجهزة. بالإضافة إلى ذلك، لا تستطيع الأداة التعرف تلقائيًا على هذه الأجهزة. بدلاً من ذلك، يحتاج خيار --devices إلى تحديد المنافذ المتصلة بالكمبيوتر.
عند التنصت وتخمين عناوين BD_ADDR القريبة (br --sniff-and-guess-bd-addr)، يتطلب bluing جهاز Ubertooth One.
rfkill لا يمكنه العثور على hci0فيما يلي رسالة الاستثناء:```txt Exception: Can't find the ID of hci0 in rfkill
قد يكون هذا الاستثناء ناتجًا عن عدم دعم الخيارين `-r` و `-n` في الإصدار القديم من rfkill، على سبيل المثال:
<pre>
$ <span style="font-weight: bold; color: #9fab76">cat</span> /etc/os-release | <span style="font-weight: bold; color: #9fab76">head</span> -n 2
NAME="Ubuntu"
VERSION="16.10 (Yakkety Yak)"
$ <span style="font-weight: bold; color: #9fab76">rfkill</span> --version
rfkill 0.5-1ubuntu3 (Ubuntu)
</pre>
في الوقت الحالي، يمكن لترقية rfkill إلى إصدار أحدث حل المشكلة، مثل:
<pre>
$ <span style="font-weight: bold; color: #9fab76">cat</span> /etc/os-release | <span style="font-weight: bold; color: #9fab76">head</span> -n 2
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
$ <span style="font-weight: bold; color: #9fab76">rfkill</span> --version
rfkill from util-linux 2.38.1
</pre>
### فشل تنفيذ أمر الإدارة `scanend`
فيما يلي رسالة الخطأ:```txt
ERROR: Failed to execute management command 'scanend' (code: 11, error: Rejected)
حاول إعادة تشغيل خدمة بلوتوث لحل المشكلة:
sudo systemctl restart bluetooth.service
... ...