DVID Writeup 06 - Bluetooth - Characteristics 2
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 :
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).
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.
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 :
Nous allons maintenant répertorier les attributs proposés par le périphérique Bluetooth à l’aide de la commande 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>
:
Nous devons ensuite acquire-write
pour se connecter au flux et pouvoir écrire les valeurs des services/caractéristiques :
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"
:
Et le flag apparaît sur l’écran de la carte DVID :
Références
- DVID Project on Github : https://github.com/Vulcainreo/DVID
- DVID Project site : http://dvid.eu/