
PoC لتسجيل الصوت من جهاز بلوتوث

يحتوي هذا المستودع على تنفيذ لإثبات مفهوم (PoC) لتسجيل وإعادة تشغيل الصوت من جهاز بلوتوث دون علم المستخدم الشرعي.
تم عرض الـ PoC خلال المحاضرة BSAM: Seguridad en Bluetooth في RootedCON 2024 في مدريد.
صُمم لرفع الوعي حول الاستخدام غير الآمن لأجهزة البلوتوث، والحاجة إلى منهجية متسقة لتقييمات الأمن. هذا هو الغرض من BSAM، منهجية تقييم أمان البلوتوث، المنشورة من طرف Tarlogic والمتاحة هنا.
يستغل إثبات المفهوم هذا عدم الامتثال لـ التحكم BSAM-PA-05 ضمن منهجية BSAM. وبالتالي، يتيح الجهاز إجراء الاقتران دون الحاجة إلى تفاعل المستخدم ويعرض وظائفه لأي كيان داخل نطاق الإشارة.
مزيد من المعلومات على مدونتنا.
الكود مكتوب بلغة Python وقد تم اختباره مع Python 3.11.8، لكنه يستخدم بشكل أساسي أدوات متاحة على نطاق واسع في أنظمة Linux.
يستخدم الـ PoC الأدوات التالية:
bluetoothctlbtmgmtpactlparecordpaplayفي توزيعات Arch Linux، يمكن تثبيت bluetoothctl وbtmgmt باستخدام الحزمة bluez-utils، بينما تتوفر pactl وparecord وpaplay في الحزمة libpulse.
لكي يعمل الـ PoC، من الضروري وجود تثبيت فعال لحزمة BlueZ الخاصة بالبلوتوث، والمتاحة في الحزمة bluez لتوزيعات Arch Linux. كما يلزم وجود تثبيت فعال لخادم صوتي متوافق مع PulseAudio، مثل PipeWire، لتسجيل الصوت وتشغيله.
تأكد من أن جهازك قادر على العمل كمصدر صوتي، أي أنه يحتوي على ميكروفون، وأنه قابل للاكتشاف والاتصال عبر البلوتوث.
على سبيل المثال، لكي تكون سماعات الأذن المستخدمة أثناء المحاضرة قابلة للاكتشاف والاتصال، يجب أن تكون خارج علبة الشحن الخاصة بها. افتراضيًا، تُفعّل الميكروفون فقط عند وضعها في أذني المستخدم، على الرغم من إمكانية تعديل هذا الإعداد في تطبيق الإعدادات.
بالإضافة إلى ذلك، تأكد من أن الجهاز غير متصل بالفعل، أو بدلاً من ذلك، أنه يدعم اتصالات متعددة.
أولاً، يجب اكتشاف عنوان الجهاز باستخدام أداة مثل bluetoothctl:
$ bluetoothctl
[bluetooth]# scan on
بمجرد اكتشاف عنوان الجهاز، يمكن للسكربت التعامل مع الباقي:
$ python BlueSpy.py -a <address>
ملاحظة: قد يطلب السكربت أذونات المستخدم المتميز (superuser) لتعديل إعدادات نسختك من BlueZ وإقرانها بالجهاز البعيد.
BlueSpy.py هو السكربت الرئيسي الذي ينفذ كل خطوة من خطوات العملية. ومع ذلك، إذا واجهت مشكلات في أي من المراحل، فقد يكون من المفيد تنفيذها بشكل فردي:
pair.py أداة سطر الأوامر btmgmt لتعديل إعدادات BlueZ الخاصة بك وبدء عملية اقتران مع الجهاز البعيد. الأوامر الدقيقة المستخدمة موجودة في دالة pair داخل core.py.connect.py أداة سطر الأوامر bluetoothctl لبدء فحص سريع (ضروري لـ BlueZ) وإنشاء اتصال بالجهاز. الأوامر الدقيقة المستخدمة موجودة في دالة connect داخل core.py.just_record.py أداتي سطر الأوامر pactl وparecord للبحث عن الجهاز في مصادر الصوت بالنظام (يجب أن يعمل كميكروفون) وبدء جلسة تسجيل. الأوامر الدقيقة المستخدمة موجودة في دالة record داخل core.py.إذا واجهت مشكلات في أي من المراحل، فافحص الأوامر في core.py وحاول تنفيذها في الطرفية (shell). سيوفر هذا مزيدًا من المعلومات حول ما قد يفشل.
إذا كانت لديك أي أسئلة حول كيفية عمل معيار البلوتوث أو كيفية تقييم أمان جهاز بلوتوث، يرجى الرجوع إلى صفحة منهجية BSAM الخاصة بنا:
playbackcore.pypaplay