Comment attaquer un port USB ?
par Wu Mengsi (paru dans Misc no 126)
La plupart des appareils contiennent au moins un port USB avec des pilotes associés qui peuvent être très différents et dont la sécurité mérite d’être éprouvée. Nous verrons ici un rappel sur le protocole USB et comment l’attaquer en boîte noire.
Dans des missions d'audit de systèmes embarqués, il est courant de découvrir des ports USB exposés. Ils constituent une surface d'attaque importante dans notre recherche de vulnérabilités.
Lors de ces audits, le code source du système n'est pas toujours disponible et nous devons nous attaquer au système en boîte noire. Que peut-on faire face à un port USB exposé ? Certains outils tels que le Facedancer permettent d'effectuer un scan des appareils USB supportés par le système et des tests de fuzzing.
Dans cet article, nous allons voir le fonctionnement général du protocole USB, les différents outils disponibles pour s'attaquer à une interface USB en boîte noire et enfin les limites d'une telle démarche.
1. Fonctionnement du protocole USB
L’Universal Serial Bus (USB) est un protocole complexe, qui existe depuis 1996. Nous détaillons ici brièvement certaines notions du protocole. Pour avoir plus d’informations, le lecteur est invité à consulter le site de [USB-IF] qui contient toutes les spécifications du protocole USB jusqu’à USB4.
1.1 Communications USB
Le protocole USB se base sur une architecture hôte-périphériques. L’hôte initie toutes les communications. Les périphériques USB répondent aux requêtes de l’hôte et ne peuvent pas initier de communications eux-mêmes.
Pour synchroniser la communication avec les périphériques, l’hôte utilise les frames qui sont des intervalles de temps dont la durée dépend de la spécification USB utilisée. Au début de chaque frame, l’hôte envoie un paquet spécial appelé « Start of Frame » (SOF). Les périphériques peuvent ensuite synchroniser leur horloge interne et déterminer le début d’une frame.
Le protocole USB utilise différents types de transferts pour transmettre des données entre l'hôte et les périphériques. Il existe quatre types de transferts USB :
- Les transferts d'interruption sont utilisés pour envoyer des petites quantités de données avec des latences faibles. Ils sont principalement utilisés pour les périphériques qui ont besoin d'envoyer ou de recevoir des mises à jour fréquentes, tels que les claviers et les souris ;
- Les transferts de masse (bulk) sont utilisés pour transférer de grandes quantités de données. Ils sont utilisés pour les imprimantes et les clés USB par exemple ;
- Les transferts isochrones sont utilisés pour transférer des données en continu, tels que les périphériques audio et vidéo ;
- Les transferts de contrôle sont utilisés pour envoyer des commandes simples aux périphériques et recevoir leurs réponses. Ils sont également utilisés lors de l'énumération et la configuration des périphériques.
Lire l'article complet
Retrouvez tous les magazines ainsi que l'ensemble des archives des Editions Diamond
sur Connect, la plateforme de documentation des pros de l'IT.
Pour rappel, notre partenariat avec les Editions Diamond éditrices de MISC (le Magazine de la sécurité informatique multiplateforme), Linux Pratique, GNU Linux magazine et Hackable
magazine permet aux membres du Clusis de bénéficier d'un rabais de 5% pour tout
abonnement numérique à ces magazines.