Whid Injector - Passer sur une keymap FR

Wifi HID Injector

Si vous avez fait l’acquisition d’une WHID Injector, vous avez pu être surpris lors de vos premiers test de remarquer que le payload que vous aviez préparé ne s’exécute pas comme prévu. Si vous êtes sur une station avec un clavier AZERTY, c’est tout à fait normal.

En effet, la WHID Injector est configurée, par défaut, pour fonctionner avec un layout QWERTY. Par conséquent, tous vos scripts de bon frenchy ne fonctionnent pas correctement. Pour gérer ce problème, il existe deux solutions :

  • Écrire un script qui convertit l’ensemble de vos payloads d’AZERTY vers QWERTY.
  • Flasher le firmware de la WHID Injector afin qu’elle gère nativement le layout AZERTY.

Pour la première solution, allez voir du côté du WHID Injector Toolkit qui convertit automatiquement les payloads vers le layout de Molière, plus particulièrement ce fichier. Ça fonctionne, c’est rapide et ça permet de passer rapidement d’un layout à l’autre.

Si vous n’avez que des cibles en AZERTY, autant passer par la deuxième solution, plus durable et plus instructive. En plus ça tombe bien, c’est cette solution qu’on couvre dans l’article.

Flash du firmware

Pourquoi flasher le firmware ?

Tout d’abord pourquoi ?

  • Parce que c’est plus drôle ;
  • Parce qu’on ne sait pas ce qu’il y a dans le firmware fournit par défaut ;
  • Parce que c’est comme ça.

Configuration de l’editeur ARDUINO

La WHID Injector est basée sur un chip ATMEGA 32u4 et peut donc être programmée à l’aide de l’éditeur Arduino. Il faut donc tout d’abord l’installer, si comme moi, vous utilisez ArchLinux :

pacman -S arduino

Il suffit ensuite d’ajouter le support de la board ESP8266 dans l’IDE. Pour ce faire, il suffit d’aller dans les préferences de l’IDE (Fichier > Préférences), puis d’entrer l’adresse https://github.com/esp8266/Arduino/releases/download/2.3.0/package_esp8266com_index.json dans le champ ‘URL de gestionnaire de cartes supplémentaires’.

Il est ensuite possible d’installer la carte ‘esp8266’ dans le gestionnaire de carte (Outils > Type de carte > Gestionnaire de carte).

Compilation

Une fois l’éditeur configuré correctement, il est maintenant nécessaire de récupérer le code d’ESPloitV2, de changer le layout de la librairie Keyboard , puis de mettre à jour l’équipement.

Keyboard library

Tout d’abord, il faut modifier la librairie Arduino afin de passer le layout de QWERTY à AZERTY.

cd /home/<user>/Arduino/libraries
git clone https://github.com/arduino-libraries/Keyboard

Une fois cloné, il suffit de modifier le fichier /home/<user>/Arduino/libraries/Keyboard/src/Keyboard.cpp en le remplaçant par le contenu de celui-ci.

Il est possible de gérer d’autres “keymap” que le français. Pour cela, il suffit de se rendre sur ce dépôt et de copier la variable _asciimap correspondant à la langue que l’on veut.

ESPloitV2

ESPloitV2 est le “logiciel” qui fait fonctionner la WHID Injector, c’est notamment lui qui fournit l’interface web de la clé. Pour récupérer le code, il faut le cloner depuis le dépôt Github suivant :

git clone https://github.com/exploitagency/ESPloitV2

Il suffit ensuite d’ouvrir le fichier ESPloitV2/source/Arduino_32u4_Code/Arduino_32u4_Code.ino dans l’éditeur Arduino, de le compiler, puis de l’envoyer sur la clé.

Pour ce faire, dans l’IDE Arduino, il est nécessaire de sélectionner le type de carte “LilyPad Arduino USB”, de cliquer sur “Téléverser” et voilà.

Ressources

Découverte du security.txt

kezako ?

Aujourd’hui, si vous détectez un problème de sécurité sur un site web ou un serveur que vous visitez, plusieurs freins peuvent vous empêcher de remonter convenablement la vulnérabilité.

En effet, retrouver le contact de l’administrateur du système peut parfois s’avérer laborieux et lorsque nous le trouvons, d’autres questions se posent :

  • Est-ce la meilleure manière de lui remonter l’information ?
  • A-t-il un canal de communication chiffré ?
  • Comment va-t-il le prendre ?
  • Est-ce qu’il peut se retourner contre nous ?

C’est entre autre à ces questions que tente de répondre le fichier security.txt. Son objectif est de centraliser ces informations en fournissant un cadre permettant la remontée d’information de sécurité.

Comment ça marche ?

Sa mise en oeuvre est relativement simple et est décrite en détails dans le draft de la RFC situé ici. Pour faire simple, il s’agit d’un simple fichier texte que l’administrateur du système doit placer à la racine de son serveur ou dans le dossier /.well-known/ de son site web. D’ailleurs, si vous ne connaissez pas ce dossier, je vous encourage à lire la RFC8615 qui décrit son rôle.

Plusieurs champs peuvent être définis dans ce fichier :

  • Acknowledgements : Indique la page où sont remerciés les chercheurs ayant détectés une vulnérabilité
  • Canonical : Indique l’adresse canonique où se situe le fichier security.txt
  • Contact : Indique l’adresse de contact
  • Encryption : Indique la clé permettant de chiffrer les communications
  • Expires : Indique une date d’expiration après laquelle le contenu du fichier est considéré comme obsolète
  • Hiring : Indique un lien vers les offres d’emplois de la société liées à la sécurité
  • Policy : Indique un lien vers la politique de la société concernant la remontée de vulnérabilité
  • Preferred-Languages : Indique quels langages sont à privilégier pour les échanges

Presque tous ces champs sont facultatifs et seul le champ Contact est obligatoire. Celui-ci doit contenir une URI vers l’adresse de contact, il s’agit souvent d’une adresse email, mais cela peut être un numéro de téléphone ou un formulaire de contact, l’important étant de respecter le format RFC3986.

Voici par exemple le fichier security.txt pour ce site :

Canonical: https://y0no.fr/.well-known/security.txt
Contact: mailto:security@y0no.fr
Encryption: https://y0no.fr/key.gpg
Preferred-Languages: en, fr

Afin de tenter de garantir l’intégrité de ce fichier, il est aussi possible de signer numériquement ce fichier à l’aide d’OpenPGP avec la commande gpg --clearsign /tmp/security.txt :

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Canonical: https://y0no.fr/.well-known/security.txt
Contact: mailto:security@y0no.fr
Encryption: https://y0no.fr/key.gpg
Preferred-Languages: en, fr
-----BEGIN PGP SIGNATURE-----
<...>

Conclusion

Bien que ce fichier soit simple, il reste efficace et offre une souplesse permettant de s’adapter à chaque cas d’utilisation. Avec le nombre grandissant de chercheur en sécurité, ce type d’initiative est la bienvenue et permet de définir des règles simples et compréhensives de tous.

En plus, si la recherche de bugs vous botte bien, YesWeHack fournit une extension navigateur nommée YesWeHack VDP Finder qui permet de détecter la présence ou non d’un fichier security.txt

Si jamais vous trouvez une vulnérabilité sur un système qui ne semble pas utiliser le fichier security.txt, il est toujours possible de remonter les éléments par des intermediaire de confiance tels que Zerodisclo. Non ce n’est pas encore de la pub à YesWeHack, c’est juste qu’ils font les choses bien ;)