
BtleJuice: إطار عمل للرجل في المنتصف (Man-in-the-Middle) لتقنية Bluetooth الذكية (LE)
BtleJuice هو إطار عمل متكامل لتنفيذ هجمات الوسيط (Man-in-the-Middle) على أجهزة Bluetooth الذكية (المعروفة أيضًا باسم Bluetooth Low Energy). يتكون من:
تثبيت BtleJuice سهل للغاية. أولاً، تأكد من أن نظامك يستخدم إصدارًا حديثًا من Node.js (>=4.3.2) و npm. بعد ذلك، تأكد من تثبيت جميع التبعيات المطلوبة:
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
sudo yum install bluez bluez-libs bluez-libs-devel npm
أخيرًا، قم بتثبيت BtleJuice باستخدام npm:
sudo npm install -g btlejuice
إذا سارت الأمور على ما يرام، فإن BtleJuice جاهز للاستخدام!
يتكون BtleJuice من مكونين رئيسيين: وكيل اعتراض ونواة. يجب تشغيل هذين المكونين على جهازين مستقلين لتشغيل محولي Bluetooth 4.0+ في وقت واحد. وكيل BtleJuice لا يعمل داخل حاوية Docker.
قد يساعد استخدام جهاز افتراضي في جعل هذا الإطار يعمل على جهاز كمبيوتر واحد.
من جهازك الافتراضي، قم بتثبيت btlejuice وتأكد من أن محول USB BT4 الخاص بك متاح من الجهاز الافتراضي:
$ sudo hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: 10:02:B5:18:07:AD ACL MTU: 1021:5 SCO MTU: 96:6
DOWN
RX bytes:1433 acl:0 sco:0 events:171 errors:0
TX bytes:30206 acl:0 sco:0 commands:170 errors:0
$ sudo hciconfig hci0 up
ثم تأكد من أن جهازك الافتراضي لديه عنوان IP يمكن الوصول إليه من المضيف.
قم بتشغيل الوكيل في جهازك الافتراضي:
$ sudo btlejuice-proxy
على جهاز المضيف، لا تنسَ إيقاف خدمة Bluetooth والتأكد من بقاء جهاز HCI مفتوحًا/مهيأً:
$ sudo service bluetooth stop
$ sudo hciconfig hci0 up
أخيرًا، قم بتشغيل الأمر التالي على جهاز المضيف:
$ sudo btlejuice -u <عنوان IP للوكيل> -w
يخبر العلامة -w BtleJuice ببدء تشغيل الواجهة الإلكترونية بينما تحدد الخيار -u عنوان IP للوكيل.
واجهة المستخدم الإلكترونية متاحة الآن على http://localhost:8080. لاحظ أنه يمكن تغيير منفذ خادم الويب من خلال سطر الأوامر.
توفر واجهة BtleJuice الإلكترونية في الزاوية العلوية اليمنى مجموعة من الروابط للتحكم في نواة الاعتراض، كما هو موضح أدناه.

أولاً، انقر على زر اختيار هدف وستظهر نافذة حوارية تعرض جميع أجهزة Bluetooth منخفضة الطاقة المتاحة التي تم اكتشافها بواسطة نواة الاعتراض:

انقر نقرًا مزدوجًا على الهدف المطلوب وانتظر حتى تصبح الواجهة جاهزة (سيتغير مظهر زر Bluetooth). بمجرد أن يصبح الجهاز الوهمي جاهزًا، استخدم التطبيق المحمول المرتبط أو جهازًا آخر (اعتمادًا على ما هو متوقع) للاتصال بالجهاز الوهمي. إذا نجح الاتصال، سيظهر حدث متصل على الواجهة الرئيسية.

يتم بعد ذلك عرض جميع عمليات GATT المعترضة مع معرفات الخدمات والخصائص المقابلة، وبالطبع البيانات المرتبطة بها. يتم عرض البيانات افتراضيًا بتنسيق HexII (نسخة من التنسيق الذي صممه Ange Albertini)، ولكن قد ترغب في التبديل من HexII إلى Hex (والعودة) عن طريق النقر على البيانات نفسها. يدعم BtleJuice كلاً من تنسيقي Hex و HexII.
من الممكن إعادة تشغيل أي عملية GATT عن طريق النقر بزر الماوس الأيمن عليها ثم تحديد خيار إعادة تشغيل، كما هو موضح أدناه:


انقر على زر كتابة (أو قراءة) لإعادة تشغيل عملية GATT المقابلة. سيتم تسجيل هذه العملية في الواجهة الرئيسية.
أخيرًا وليس آخرًا، يمكن للواجهة اعتراض أي عملية GATT محليًا أو عالميًا والسماح بتعديل البيانات أثناء التنقل. يمكنك إما استخدام الاعتراض العالمي بالنقر على زر اعتراض في الزاوية العلوية اليمنى أو استخدام القائمة السياقية لتمكين أو تعطيل خطاف على خدمة وخاصية معينة. في أي وقت يتم اعتراض عملية GATT، ستظهر نافذة الحوار التالية:

منذ الإصدار 1.0.6، توفر الواجهة ميزة تصدير البيانات مما يسمح بتصدير قابل للقراءة وتصدير بتنسيق JSON. يتم إنشاء هذه الصادرات بناءً على عمليات GATT المعترضة، ولكنها تتضمن أيضًا معلومات حول الجهاز الهدف. عند النقر على زر تصدير، ستظهر نافذة الحوار التالية:

انقر على زر تصدير في أسفل نافذة الحوار لتنزيل نسخة JSON (أو نصية) من البيانات المعترضة.
يوفر حوار الإعدادات خيارًا واحدًا في الوقت الحالي يسمح بإعادة الاتصال تلقائيًا بالوكيل عند فصل الجهاز الهدف. قد يكون هذا مفيدًا عند التعامل مع الأجهزة التي تكون نشطة لفترة قصيرة من الوقت.

النقر على زر اختيار هدف في الزاوية العلوية اليمنى عندما يكون الوكيل نشطًا سيؤدي إلى إيقافه والسماح باختيار الهدف مرة أخرى.
يمكن أيضًا تثبيت روابط Node.js الخاصة بـ BtleJuice من خلال npm:
$ sudo npm install -g btlejuice-bindings
مزيد من المعلومات حول كيفية استخدام روابط Node.js في وثائق الحزمة.
شكر خاص لـ Slawomir Jasek الذي أشار إلى العديد من حيل noble/bleno لتجنب المشكلات مع التطبيقات المحمولة، وشارك استراتيجيات MITM الخاصة بـ BLE خلال DEF CON 24 =). وهو أيضًا مؤلف Gattacker.
حقوق النشر (c) 2016 Econocom Digital Security
يُمنح الإذن بموجب هذا، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به (يُشار إليها مجتمعة باسم "البرنامج")، للتعامل مع البرنامج دون قيود، بما في ذلك دون حصر حقوق استخدام ونسخ وتعديل ودمج ونشر وتوزيع و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يتلقون البرنامج بالقيام بذلك، بشرط استيفاء الشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وهذا الإذن في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال، لا يكون المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء كانت ناشئة عن عقد أو ضرر أو غير ذلك، تنشأ عن أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى في البرنامج.