DVID Writeup 06 - Bluetooth - Characteristics 2

Table des matières :

Si vous n’êtes pas encore familiarisé avec le projet Damn Vulnerable Iot Device (DVID), je vous encourage à lire la page de présentation du projet.

Objectif de ce challenge

Un message confidentiel est stocké sur le firmware mais protégé par un mot de passe. Le but est de fournir une capture d’écran du message confidentiel.


Flash du firmware sur la carte DVID

Tout d’abord, nous allons flasher le firmware sur la carte DVID. Pour ce faire, nous utiliserons avrdude et un programmeur AVR USB. Si vous ne connaissez pas les options de avrdude, je vous encourage à lire la section flashing the board section de la première DVID ERITUPEUP de cette série. Nous allons flasher le firmware sur la carte à l’aide de ce beau script flash.sh :

#!/bin/bash

if [[ ! -d "./DVID/" ]]; then
    git clone https://github.com/vulcainreo/DVID
fi

pushd ./DVID/trainings/bluetooth/characteristics2/
avrdude -F -v -p atmega328p -P /dev/ttyUSB0 -c usbasp -u -U flash:w:characteristics2.ino.with_bootloader.arduino_standard.hex
popd

Maintenant, nous allons connecter la carte DVID à notre ordinateur à l’aide du programmeur AVR USB et démarrer le script. Lorsque la programmation AVR est terminée, la carte électronique doit redémarrer et vous devriez voir ceci :

Boot screen

Résolution du challenge

Dans ce challenge, le périphérique IOT envoie des informations utilisant des caractéristiques Bluetooth sur 0000ffe1. Premièrement, nous devons faire une analyse Bluetooth pour trouver l’appareil. Nous pouvons le faire à l’intérieur de bluetoothctl à l’aide de la commande scan on (et scan off pour arrêter).

bluetoothctl scan

Maintenant que nous avons trouvé le périphérique IoT, nous pouvons nous y connecter en saisissant connect suivi de l’adresse Bluetooth de l’appareil.

bluetoothctl connect

Pour utiliser les caractéristiques Bluetooth, nous devons utiliser un menu spécifique, appelé gatt. Pour y accéder via bluetoothctl, tapez menu gatt pour entrer dans le menu gatt et back pour en sortir. Dans le menu gatt, nous avons accès à de nombreuses fonctionnalités avancées, telles que les attributs d’inscription d’un périphérique, de lecture et d’écriture de données aux services Bluetooth :

bluetoothctl menu gatt

Nous allons maintenant répertorier les attributs proposés par le périphérique Bluetooth à l’aide de la commande list-attributes :

bluetoothctl list-attributes

En regardant l’écran du périphérique DVID, nous pouvons voir un message “Something is leaking on 0000ffe1”, nous allons donc essayer d’interagir avec la caractéristique . Pour ce faire, nous devons sélectionner l’attribut à l’aide de la commande select-attribute <uuid> :

bluetoothctl select-attribute

Nous devons ensuite acquire-write pour se connecter au flux et pouvoir écrire les valeurs des services/caractéristiques :

bluetoothctl acquire write

Nous pouvons maintenant utiliser la commande write pour envoyer des données au service/caractéristique. La syntaxe est write "0xaa 0xbb 0xcc ..." avec les valeurs hexadécimales des données que vous souhaitez envoyer. Par exemple, hello est "0x68 0x65 0x6c 0x6c 0x6f". Par conséquent, la commande finale est write "0x68 0x65 0x6c 0x6c 0x6f" :

bluetoothctl write value

Et le flag apparaît sur l’écran de la carte DVID :

Win

Références