
Mon téléphone est bluetooth, mon ordinateur portable est bluetooth, ma toute nouvelle voiture supporte le bluetooth, mais qu'est ce que c'est que ce bluetooth ? Le bluetooth est présent dans de plus en plus de domaines, mais n'est pas ou peu connu du grand public. Pourtant cette norme de communication sans fil pose énormément de problèmes de sécurité, et d'intégrité. Dans ce topic, nous allons voir comment fonctionne cette norme ainsi que les problèmes de sécurité rencontrés.
Présentation
Le Bluetooth est né du regroupement des fabricants Ericsson, qui est l'initiateur de ce projet,d'IBM, d'Intel, de Nokia et de Toshiba. Le bluetooth a été créé afin de mettre en relation de nombreux périphériques sans fil.
Actuellement, plus de 3000 marques font partie du Bluetooth Spécial Interest Group, dont Microsoft, 3com, Motorola... L'expansion et la réussite du bluetooth ont permis de voir ses compétences s'accroître. Ce type de connexion est maintenant, non seulement dans l'informatique, mais dans la téléphonie, l'automobile et presque tous les systèmes possédant de l'informatique embarquée.
Norme et Fonctionalité
Le bluetooth est cependant limité à 8 connexions simultanées, à partir du même composant. la communication établie, est du type Maître-Esclave. Un maître avoir un ou plusieurs esclaves. Deux esclaves peuvent communiquer entre eux seulement en passant par leur maître commun. Pour augmenter le nombre de périphériques connectés ensemble, on peut alors relier plusieurs maîtres, qui partageront leurs esclaves. On appelle ce type de réseau, un picoréseau.
Pour communiquer, le bluetooth utilise les fréquences de la bande 2400 - 2483,5 MHz. Mais durant une communication, la fréquence varie plusieurs fois par seconde. La vitesse maximale de transfert est 1Mb/s ce qui est peu mais suffisant pour l'usage qui lui est réservé.
Fonctionnement
Pour Fonctionner, le bluetooth utilise deux types de connexions :
Connexion Synchrone : ce type de connexion permet les débits descendants et montants égaux, de 432Kb/s permanent.
Un maître peut donc avoir trois connexions synchrones établie en même temps. Elle est bien adaptée pour les picoréseaux, l'échange entre maîtres se fait à la même vitesse dans les deux sens. Bien que la connexion, une fois établie, soit permanente, des pertes de données sont possibles, et dues à des erreurs de décodage. Dans le cas d'une erreur, le maître ou l'esclave ayant reçu le paquet erroné renvoie à son maître un paquet indiquant l'erreur. Puis le maître envoie le paquet de nouveau. Cette protection contre les erreurs d'envoi est efficace, mais incompatible avec des connexions faisant transporter la voix. En effet, si lors de votre conversation, un paquet est mal envoyé, votre interlocuteur recevra votre phrase coupée. Puis dans la phrase suivante, il recevra la syllabe ou le mot manquant.
Connexion Asynchrone : cette connexion asynchrone permet des débits de 721Kb/s dans un sens et 57Kb/s dans l'autre sens. Elle est utilisée principalement pour la navigation internet où l'on sait que la reception est souvent plus importante que l'envoi. De même, pour une connexion asynchrone est parfaitement adapté. La plupart du temps, l'imprimante reçoit les informations de l'ordinateur.
Schéma Connexion réseau Bluetooth

Etablissement de la Communication
l'établissement d'une connexion bluetooth peut s'effectuer de différentes manières au niveau sécurité.
l'établissement d'une connexion bluetooth peut s'effectuer de différentes manières au niveau sécurité.
Etapes de Sécurité
Dès lors que deux modules veulent entrer en contact, la sécurité du réseau doit s'établir. En premier lieu une Init Key est générée, puis une Link Key. Pour la suite, le type de sécurité employé est différent selon la communication que l'on veut établir. Dans le cas d'un communication entre notre module et plusieurs autres, on utilise la Master Key. Pour une communication de type Point to Point, d'un module à un autre, on utilisera alors une Unit/Combination Key. Une fois ces clefs générées, elles sont échangées dans le cas d'une Master Key, car la Combination Key est générée par les deux modules. La clef Init Key n'est plus utilisable à partir de ce moment, on peut donc l'effacer. Pour finir, les deux modules utilisent des Encryption Key qui leur permettront de coder les données envoyés.
Nous venons de voir succintement comment se déroulait l'ensemble des étapes d'une communication sécurisée avec la norme Bluetooth. Détaillons maintenant ces procédés.
Création Des Link Keys
Parmi les Link Keys, ont retrouve les combination keys, unit keys master keys et initialization keys, cela dépend de l'application désirée.
Init Key : au démarrage d'un échange de données entre plusieurs modules bluetooth, nous avons vu qu'une init Key est créée. Le module maître du réseau envoie en clair sur le réseau un nombre aléatoire de 128 bits, RAND, à l'autre module. Puis, à l'aide des codes pin et de leur longueur, chaque module utilise l'algorithme E22 pour calculer avec sa Key Init de 128 bits. Une fois l'Init Key transmise à l'autre module, elle peut être effacée du module.
Unit Key : la clef Unit est définie à chaque allumage d'un module bluetooth. Elle est donc unique, et stockée dans la mémoire interne du module. Elle est générée à partir de l'algorithme E21, qui nécessite deux paramètres. Un nombre aléatoire de 128bits, et la BD_ADDR de 128bits aussi, génereront l'Unit Key de 128bits. L'utilisation de l'Unit Key dépend de la nature du module (maître ou esclave) que l'on utilise. La clef Unit Key générée par le maître du réseau sera utilisée comme Link Key pour tous les modules. Chaque communication entre un maître et un esclave est bien indépendante des autres, et pourtant la même clef est utilisée.
Master & Initiation Key :


Combination Key : une fois les Unit Key générées, les modules présents sur le réseau vont générer leur Combination Key. Cette clef ne voyage pas sur le réseau. Chaque module va générer un nombre Rand aléatoire, puis à l'aide l'algorithme E21 comme pour la Unit Key.
Master Key : cette clef a un but bien précis et n'est pas utilisée tout le temps d'une connexion bluetooth. Elle sert à remplacer la Combination Key et l'Unit Key dans le cas d'une connexion de type broadcast. Elle est générée par le maître avec l'algorithme E22, qui nécessite deux nombres de 128bits chacun. Un troisième nombres de 128bits est utilisé, mais il n'est généré que par le maître, qui doit le communiquer indépendamment à tous ses esclaves. Ce nombre doit être envoyé chiffré, le maître utilise la Link Key, et celle-ci n'a pas été définie, se reporte sur l'Init Key. Ceci pour chaque module de son réseau, donc avec un chiffrement chacun.
Unit & Combination Key :


Encryption Key


Authentification
Cette étape est forcément très importante pour le réseau puisqu'elle confirme qu'un module fait bien partie dudit réseau et que celui-ci pourra communiquer. Cette authentification se déroule dans les deux sens, c'est à dire que le maître doit identifier l'esclave et inversement. Pour cela, le module qui doit s'authentifier auprès de l'autre reçoit du vérifieur un nombre aléatoire, envoyé en clair sur le réseau. Puis les deux modules génèrent, à partir de l'algorithme E1, un nombre SRES. L'algorithme E1 utilise un nombre aléatoire, une Link Key et une adresse BD_ADDR du module qui doit s'authentifier. Si les nombres SRES du vérifiant et du vérifié sont les mêmes, alors l'authentification échoue, un délai s'instaure avant un prochain essai. A chaque essai échoué, le délai est augmenté jusqu'au maximum défini par l'application. De plus, une fois les SRES vérifiées, l'algorithme E1 génère une clef, l'Authenticad Ciphering Offset, qui pourra servir par la suite pour des échanges chiffrés.
L'attaquant sait donc où aller et quoi récupérer

Le Cryptage
Cette étape fait suite à l'authentification dès que deux modules savent qu'ils sont bien en communication avec les modules désirés. Il vont chiffrer les communication pour des raisons évidentes de sécurité. Cette étape ne se déroule pas comme la précédente. Ici, la différence entre le module maître et esclave est importante. L'algorithme utilisé est l'E3, qui nécessite un nombre aléatoire RAND généré par le maître, l'adresse BD_ADDR du maître, l'horloge du maître (clock) et la COF qui provient de l'authentification, plus précisément de l'ACO. Cette clef de cryptage est générée à chaque demande de chiffrement.
Le chiffrement est à jour pour chaque paquet de données envoyé sur le réseau, grâce à l'horloge du maître.
Maintenant que vous savez comment fonctionne un réseau de module bluetooth, et sa sécurité, entrons dans le vif du sujet avec les problèmes de sécurité rencontrés. Toutes ces attaques sont très simple à mettre en oeuvre. C'est pourquoi il faut systématiquement désactiver le bluetooth de votre téléphone lorsque vous ne l'utilisez pas. En effet, un simple ordinateur portable muni d'une clef bluetooth permet à un attaquant, armé des logiciels d'attaque disponibles sur internet, de mener toutes celle-ci...
Mais comme nous allons le voir, la technique du blooover permet même de récupérer des informations sur votre mobile bluetooth sans ordinateur portable, juste avec un téléphone totalement anodin. Seul un programme en JAVA, blooover.jar, et un téléphone supportant MIDP 2.0 et JSR-82 seront nécessaires. Des programmes comme BTClass ou le scanner redfang d'@Stake vous seront bien utiles. Ces programmes sont libres de droits et disponibles sur internet.
LE BLUE JACKING
Le Bluejacking est une technique qui permet à n'importe qui se trouvant dans la zone couverte par une liaison bluetooth d'envoyer des messages aux autres terminaux inclus dans la zone. Pour éviter ce type de problème, il faut configurer votre terminal bluetooth sur "non détectable". Le problème vient ici du fait que la majorité des téléphones portables équipés de la technologie bluetooth sont, par défaut, réglés sur "détectable" ce qui les rend faillibles.
LE BLUEBUGGING
Sûrement la plus grosse attaque disponible contre les modules téléphoniques disposant du bluetooth, car un attaquant a accès à votres téléphone ainsi qu'à toutes les commande AT de votre terminal. En fait, il est possible d'appeler à partir de votre téléphones, d'envoyer et lire des SMS, d'ajouter des contacts au répertoire, et le meilleur pour la fin, d'écouter les conversations téléphoniques. Ce bug permet à un attaquant d'entammer un appel téléphonique vers le numéro de son choix, ou d'écouter toutes les conversations de sa victime. De plus, la possibilité d'envoi de SMS, permet de connaître le numéro de téléphone de la victime, car je vous le rappelle, il n'est pas nécessaire que l'attaquant conaisse votre numéro pour que vous vous fassiez attaquer. Une autre possiblité de cette attaque est de voir les numéros appelés par la victime et de les remplacer. L'attaquant peut aussi se connecter à internet via le téléphone piraté, puis envoyer de façon anonyme toutes sortes de mails ou de programmes, voire de virus.
Cependant l'attaquant est confroté a une contrainte physique. Le bluetooth utilise en effet la classe d'energie 2, ce qui fait qu'un réseau bluetooth ne s'étend que sur un dizaine de mètres. Pourtant, en août 2004, une équipe a réussi à utiliser un réseau bluetooth et à exploiter des failles sur une longue distance. A 1700m de la cible, avec du matériel très sommaire, composé d'un ordinateur portable, d'un dongle usb bluetooth modifié, d'une petite antenne portative et bien sûr d'un téléphone bluetooth.
LE BLUESNARFFING
Cette attaque découverte en 2003 est probablement la plus connue des failles bluetooth. Elle permet à un attaquant de se connecter de manière invisible sur un réseau bluetooth, et de s'octroyer les droits necéssaires pour récupérer de nombreuses informations d'un mobile. Pour utiliser cette faille, l'attaquant se sert de la couche OBEX et du profil OPP. Ce profil est activé par défaut sur de nombreux téléphones afin de faciliter les échanges avec d'autres types de modules bluetooth. Grâce à OBEX, l'attaquant peut utiliser les commandes Connect, Disconnect, Put, Get, Abort & SetPath sur le module de la victime et ainsi lire et récupérer des fichiers dont l'attaquant connaît le et l'emplacement. Le problème est que ces fichiers ont des emplacements définis et connus. Les exemples ci-dessous ne sont valides que pour les téléphones Ericsson et ne montrent que les fichiers qui sont utilisables avec les commandes PUT & GET, soit les plus dangeureuses dans ce cas d'accès aux fichiers.
BLUEPRINTING
Le but de cette technique est de pouvoir récupérer un maximum d'informations sur le matériel utilisé par les usagers. En effet, elle permet de récupérer l'équivalent de l'adresse MAC de nos cartes réseaux. Cette adresse est composée de 6 bytes, les trois premiers correspondent au fabricant. Pour les trois bytes suivants, les rangées ne sont pas encore totalement connues, ce qui ne permet pas de connaître précisément tous les modèles, cependant le scanner crée par @Stake, redfang, fonctionne bien.
De plus, les modules bluetooth sont équipés du Service Discovery Protocol Records qui permet à un autre module bluetooth d'interroger un module pour connaître les services présents et comment les utiliser. Ces fonctionnalités peuvent être répertoriées puis utilisées pour reconnaître le type de matériel employé.
BLUESMACK
Cette faille correspond au DoS de nos PC. Elle consiste à envoyer énormément de requêtes à un seul module. Dans le cas du bluetooth, la faille se situe dans la couche L2CAP qui permet à un module de demander un écho à un autre. Le principe est le même que pour l'ICMP ping sur les ordinateurs. On peut aussi pinger un module bluetooth à partir d'un ordinateur portable sous linux avec la couche Bluez (Official Linux Bluetooth Protocol Stack), et avec le programme l2ping. Le but d'un DoS dans le cadre d'un réseau bluetooth n'est pas de saturer ce réseau mais d'épuiser les batteries de la cible. En effet, le grand nombre de requêtes et de réponses demande beaucoup d'énergie pour envoyer en permanence ces informations.
BLOOOVER
La majorité des gens pense que pour attaquer un module Bluetooth, il faut être dans la courte portée du réseau bluetooth avec son ordinateur, ce qui peut paraître suspect en extérieur. Seulement, une application JAVA a été développée pour fonctionner sur les téléphone de type bluetooth, afin d'avoir les mêmes capacités. Qui alors va se méfier de tous les téléphones proches de lui ? Cependant, cet outil libre de téléchargement est limité dans les fonctions utilisables afin qu'aucune personne ne soit victime d'individus malintentionnés. Pour fonctionner, cette application ne nécessite qu'un téléphone à la norme J2ME - MIDP2.0 avec l'API bluetooth JSR-82.
BT AUDIT
La norme bluetooth se base sur deux protocoles principaux : L2CAP et RFCOMM. Pour Communiquer, ces deux protocoles utilisent des ports, de la même manière que le TCP/IP, UDP/IP. On se dit tout de suite, si j'ai des ports, j'ai des services associés, donc je peux scanner. En effet, les équivalents des ports du L2CAP sont numérotés de 1 à 65 535 en ne tenant compte que des nombres impairs et les ports du RFCOMM de 1 à 30. Ces "ports" dans la couche L2CAP sont appelés PSMs (Protocol Service Multiplexers). Deux scanners de ports existent déja, un pour chaque protocole, PSM_SCAN et RFCOMM_SCAN. Ces deux programmes ne font que lister et donner l'état de ports, ouvert ou non.
BTSCAN
Pour ne pas attaquer son propre matériel il fallait trouver une methode pour ne pas s'auto-bluesnarfer. La solution est de se faire passer pour quelque choses d'autre. Le BTSCAN permet de modifier la Bluetooth Device Class de votre module pour vous faire passer pour ce que vous désirez : Ordinateur, imprimante, ...
BLUESPAM
Le bluespam, comme son nom l'indique concerne le spam de module Spam. Nous n'aborderons pas ici le sujet du spam massif, mais du spam, pour le défi technique de quelques modules. Le bluespam recherche tous les modules bluetooth joiqnables dans sa zone d'un dizaine de mètres, et essaie d'envoyer un message. Si un module du réseau supporte l'OBEX, alors il recevra ce message. On peut en plus avec un palm définir ce que l'on souhaite envoyer, un fichier par exemple. On peut aussi s'en servir comme défense en Spam Back, si quekqu'un vous envoie un message par ce moyen, vous lui renvoyez immédiatement un message par le même moyen.
BLUESNARF ++
Cette attaque est relativement récente. Ce n'est qu'une variante améliorée du bluesnarf. Elle utilise toujours la commande GET à cause de l'OBEX, et l'utilise pour mettre un serveur OBEX FTP. De cette manière, l'attaquant peut voir tous les fichiers. La commande "ls" indique les fichiers présents dans le ver la doc sur chacun des modules pour connaître les noms et emplacements des fichiers. De plus, avec ce serveur, l'attaquant à tous les droits : d'écriture, de lecture, d'execution et, le plus dangereux, d'effacement dans le cas d'un carte mémoire.
HELLOMOTO
Cette attaque, comme son nom l'indique, a été découverte sur un téléphone de la marque Motorola. Dans les téléphones Motorola équipés du bluetooth, une faille permet d'acceder aussi aux commandes AT du téléphone. L'attaquant démarre une communication avec OBEX en faisant croire qu'il va envoyer une Vcard, c'est-à-dire de synchroniser HotSync, son module bluetooth, avec un autre pour envoyer carte de visite et agenda. Puis l'attanquant coupe l'envoi de Vcard, mais la victime, elle, le considère comme étant un module sûr. Alors l'attaquant peut envoyer ce qu'il veut à la victime.
L'INTEGRITE
Les modules bluetooth dans leurs communications, en particulier la reception de paquets, ne vérifient pas l'integrité des paquets et donc leur provenance. On peut donc utiliser une attasue de type "man in the middle". Cela permet de recevoir les informations d'un module, de les enregistrer si l'in veut les modifier, puis de continuer leur envoi vers le module cible.
ATTAQUE ALGEBRIQUE
Une attaque de type mathématique est aussi envisageable pour casser la Key Stream Generator, soit la clef utilisée pour chiffer les communications.
CODE PIN
Le code pin est très important dans une communication sécurisée entre des modules bluetooth, puisque c'est à partir de ce code que l'algorithme E22 va générer cette clef, seul le code PIN est inconnu, puisque le reste des informations voyage dans les airs sans aucun chiffrement. La longueur des codes pin étant majoritairemet de 4 chiffres, cela donne 10 000 possibilités, ce qui est tres faible pour un chiffrement. De plus, on sait parfaitement qu'un grand nombre de gens laisse le code pin par défaut, 0000.
UNIT KEY
Dans une communication entre deux modules bluetooth, une Link Key est utilisée comme seule information cachée, pour le chiffrement et l'authentification sur le réseau. Prenons l'exemple où le module X communique avec le module Y et qu'ils utilisent la Link Key du module X. Un troisième module Z entre dans le réseau et utilise donc la clef du module X. a partir de ce moment, le module Z peut être authentifié aussi sur le module Y, ou meme écouter ce module en faisant quelques calculs pour trouver l'Encryption Key.
CONCLUSION
On vient donc de voir que les modules bluetooth souffrent d'un grand manque de sécurité. Ces failles ne sont pas tant dues à la norme bluetooth qu'à l'implantation de cette norme avec le matériel. La norme bluetooth est par exemple, parfaitement préparée pour communiquer dans un lieu public puisque les ondes changent de fréquence plusieurs fois par seconde.
Cependant, les applications pour communiquer dans les lieux publics sont de plus en plus nombreuses, et les failles aussi.
Source : by Snoop_Psykoman (numéro spécial - Piratz & Hackers )