Hardware

Les ravages du Teensy

En décembre 2017 j’ai acheté un Teensy. Jusqu’à présent je n’ai jamais eu le temps de jouer avec mais… La tentation m’a rattrapé et je vais donc vous montrer ce qu’il est possible de faire avec cette petite puce :

zVEteen1.png

Le Teensy 3.2 est une micro puce de 5 centimètres de longueur pour environ 2 centimètres de largeur. Elle coûte une trentaine d’euros et vous pouvez vous la procurer sur plusieurs sites (coucou Amazon).

Son intérêt principal ? Eh bien elle simule un clavier. « C’est tout ? » Ahahah ! Vous n’êtes pas prêts ! C’est vrai qu’à priori simuler un clavier semble inutile. Sauf qu’avec le clavier on peut taper la combinaison Alt + F2 qui ouvre le lanceur d’applications sur la majorité des Linux :

teen2.png

On peut taper les lettres « x », « t », « e », « r », « m » puis la touche entrée afin d’ouvrir un shell :

teen3.png

Et puis au point où on en est, on pourrait aussi lancer une connexion distante via netcat ou encore télécharger un malware et l’exécuter (toujours en simulant un clavier) :

teen4.png

Ah et ce que j’ai oublié de vous dire, c’est que toutes ces actions sont effectuées en quelques dixièmes de secondes. Il suffit donc de passer devant le PC de votre ami, de brancher le teensy et de le ressortir pour avoir le contrôle totale de sa machine. Oui, on pourrait faire ça mais c’est pas cool pour le pote… Par contre en phase de pentest/intrusion physique ça peut être dévastateur !

Allez allez, moins de blabla je vous montre comment ça marche !

I/ Prérequis

Si tout s’est bien déroulé vous devriez pouvoir lancer l’IDE en utilisant cette commande :

sudo ./arduino

teen5.png

Ensuite il va falloir installer l’add-on teensyduino que vous trouverez ici. Encore une fois choisissez la version correspondant à votre système puis lancer l’installation. Relancez le programme arduino et allez dans l’ongle « Outils » puis cliquer sur « Type de cartes ». Si vous avez dans les choix « Teensy 3.2 » c’est que tout est bon ! Il ne reste plus qu’à configurer l’IDE avant de se lancer dans la programmation de la puce.

Premièrement il faut choisir la langue française pour le clavier. Pour cela aller dans « Outils » puis « Keyboard Layout » et sélectionner « français ». Toujours dans l’onglet « Outils », il faudra sélectionner l’option « Keyboard + Mouse + Joystick » dans le sous-onglet « USB type ».

Voilà ! On va pouvoir commencer à jouer  !

II/ Programmer son Teensy

Attention ! Prenez l’habitude quand vous jouez avec un Teensy de toujours avoir le focus de votre souris sur un fichier texte vide. En effet à partir du moment où vous allez brancher votre Teensy, des instructions vont être envoyées. Si ce n’est pas votre Teensy et que quelqu’un y a laissé du code malveillant alors il pourrait arriver des trucs pas très cool à votre machine… Si le focus est sur un fichier texte alors les commandes injectées par le Teensy s’écriront directement sur le fichier texte et ne seront donc pas exécutées.

Quand on regarde l’IDE on remarque qu’il est divisé en deux parties :

teen6.png

La fonction setup dans laquelle on écrira du code qui ne s’exécutera qu’une seule fois et la fonction loop dans laquelle on écrira du code qui, à l’inverse, s’exécutera en boucle.

Pour commencer nous allons tout simplement coder un programme qui écrit « Hello World » en boucle. Voici le programme que nous allons utiliser :

teen7.pngAvant de l’exécuter via notre Teensy, il va falloir le compiler puis le téléverser sur notre puce. Pour cela il suffira de cliquer sur le check puis sur la flèche située au dessus :

teen8.png

Débranchez le Teensy de votre port USB, mettez le focus sur un fichier texte vide et rebranchez le, vous verrez que du texte va se taper tout seul :

teen9.png

Bueno, maintenant qu’on est sûr que le Teensy fonctionne bien, on va pouvoir passer aux choses sérieuses. Pour cet article je vais vous montrer comment coder un reverse shell pour Teensy.

Voici le code :

teen10.png

Concrètement ici, nous appuyons sur les touches Alt + F2, on entre le mot xterm puis on tape sur la touche entré. A partir de là on va utiliser l’utilitaire netcat pour se connecter à distance sur le localhost (nous même). Il suffit de remplacer localhost par une votre IP puis de faire une redirection de ports pour avoir un reverse shell depuis n’importe où sur Internet :

teen11.png

Nous avons bien notre reverse shell

La question qui se pose maintenant c’est : « Est ce qu’on peut faire mieux ? » Spoiler : OUI ! On peut ajouter de la persistance pour que notre reverse shell se lance toutes les heures ! Par exemple, sur Linux on dispose de crontab dont j’avais déjà parlé dans cet article.

On peut aussi download une backdoor présente sur un serveur distant et l’exécuter afin d’avoir un accès total sur la machine. Bref les possibilités sont immenses et pour un test d’intrusion physique ça peut être très intéressant à utiliser ! D’ailleurs au moment où l’article sortira, je serai probablement en train de travailler sur des scripts un peu plus balèze. Je vous tiens au courant !

WHID Injector : la super sayan 4 des rubber ducky

Il y a de cela quelque mois je vous avais parlé des Teensy, ces clés USB un peu particulières qui simulent les frappes d’un clavier. Aujourd’hui je reviens à la charge avec un nouveau type de clés, les WHID Injector !

whid1.png

Alors qu’est ce qu’elle a de particulier cette clé USB ? Eh bien elle est contrôlable à distance ! En fait la clé USB, une fois branchée sur le PC de notre victime monte un point d’accès Wi-Fi sur lequel on peut se connecter et manipuler la rubber ducky !

Voici le lien Github du projet qui a été présenté à la Hack in Paris 2018 :

https://github.com/whid-injector/WHID

Je vous laisse lire le wiki du Github pour voir comment s’en procurer, comment installer les tools etc… Dans cet article je ne ferai qu’une brève description de la clé.

Voici à quoi ressemble l’interface web :

whid2.png

Le gros avantage de cette clé, c’est qu’on peut upload des payloads à la volée. Il suffit juste de se connecter dessus et d’aller dans l’onglet « Upload Payload ». Pour lancer un payload, il faudra aller dans l’onglet « Choose Payload » et choisir le payload à lancer :

whid3.png

Voilà, c’est aussi simple que ça  !

Comme vous pouvez le voir, la clé dispose de 3Mo de mémoire ce qui est largement suffisant pour déposer plusieurs dizaines de payloads. On pourra donc stocker des reverse shells, des shell meterpreter, des download and exec etc etc…

Un autre onglet est plutôt sympathique : le mode input ! Dans ce mode, on va pouvoir taper à la volée des chaînes de caractères qui seront ensuite transmises à la clé puis écrites sur le PC de la victime. De même, on pourra jouer avec sa souris en la déplaçant !

whid4.png

Dernier feature plutôt cool, la WHID injector est capable de monter des mini serveurs web utilisable pour faire de la collecte de credentials. Pour le moment je n’en ai pas encore eu besoin mais bon, c’est toujours sympas à avoir !

Voilà voilà, globalement cette clé est un petit bijou de technologie qui sera surtout très utile en phase de redteam. En plus de ça elle ne coûte que 15$ (alors qu’une Teensy coûte entre 25 et 30 euros). Un must have  !