Accueil / Interfaces filaires

USB

Interface universelle riche en surface d'attaque : injection HID, mass storage, énumération et abus de pilotes.

Ébauche #usb#hid#badusb

Description

USB (Universal Serial Bus) est l’interface d’entrée/sortie la plus répandue. Sa richesse fonctionnelle en fait une surface d’attaque importante : un même port peut exposer un clavier, un stockage, une carte réseau, un port série, etc. Cette confiance implicite accordée au périphérique est le cœur du problème.

Notions clés

  • Un périphérique s’annonce via ses descripteurs (VID/PID, classe, endpoints). L’hôte charge le pilote correspondant à la classe déclarée.
  • Les classes courantes : HID (clavier/souris), Mass Storage, CDC (série/Ethernet), Audio…
  • Un périphérique peut déclarer plusieurs classes à la fois (composite device).

Identification

  • Sous Linux : lsusb, lsusb -v, dmesg au branchement, usb-devices.
  • Observer quelles classes un appareil expose et quels pilotes l’hôte charge automatiquement.
  • Sur un objet en mode kiosque, le branchement d’un périphérique peut ouvrir une boîte de dialogue (choix du mode USB, montage d’un volume) qui devient un vecteur.

Attacking

Injection HID (BadUSB)

Un périphérique qui se déclare clavier peut « taper » des commandes à la vitesse machine dès qu’il est branché, sans interaction. C’est le principe du BadUSB / Rubber Ducky.

  • Outils/plateformes : Rubber Ducky, cartes à base de microcontrôleurs USB (ATmega32u4, RP2040 avec des projets dédiés), Flipper Zero.
  • Usage typique en test : ouvrir un terminal et exécuter une charge utile en quelques centaines de millisecondes.

Abus du stockage de masse

  • Auto-exécution résiduelle, fichiers piégés, exploitation de la logique d’indexation/prévisualisation de l’hôte.
  • Sur un kiosque, un volume USB peut exposer un navigateur de fichiers ou un moyen d’échapper à l’application.

Émulation et fuzzing

  • Facedancer permet d’émuler un périphérique USB arbitraire depuis un hôte, pour explorer et fuzzer la pile USB d’une cible.
  • Utile pour tester la robustesse des pilotes et de l’énumération.

Protections

  • Restreindre les classes autorisées (whitelist USB, désactivation du HID non sollicité).
  • Solutions type USBGuard (Linux) ou stratégies de groupe (Windows) pour n’autoriser que des périphériques connus.
  • Verrouiller l’écran / exiger une authentification, désactiver l’auto-montage et l’auto-exécution.
  • Combler physiquement les ports non utilisés sur les bornes et kiosques.

Example devices

  • Postes en libre-service, bornes, kiosques, mais aussi tout terminal exposant un port USB accessible.

Ressources