Fausse Rubber Ducky pour expliquer pourquoi se méfier des clés USB inconnues

Quel est mon objectif ?

Dans le contexte de formations aux utilisateurs informatiques, il est crucial de les sensibiliser aux risques liés à l’utilisation de clés USB inconnues.

Pour marquer les esprits, une démonstration pratique est souvent plus efficace qu’un simple discours. C’est pourquoi je souhaite programmer une clé USB capable de simuler des dommages sur un ordinateur, afin de montrer concrètement les dangers encourus.

Nota : A la demande de certains d’entre vous, je vous propose de réaliser pour vous la création de cette fausse clé, vous la trouverez donc toute prête, programmée et opérationnelle dans mon vide-grenier. Evidemment, elle n’est pas dangereuse !! Lisez la suite pour comprendre ce qu’elle fait.

Que sont des Rubber Ducky ?

Les Rubber Ducky sont des clés USB conçues pour simuler un clavier lorsqu’elles sont connectées à un ordinateur. Elles sont souvent utilisées par les pirates informatiques pour effectuer des attaques de type “keystroke injection” (injection de frappe), qui consistent à simuler des frappes de clavier pour exécuter des commandes malveillantes sur un ordinateur cible.

Les Rubber Ducky sont équipées d’un microcontrôleur programmable qui peut stocker des scripts préenregistrés. Lorsqu’elles sont connectées à un ordinateur, elles se comportent comme un clavier USB standard et peuvent envoyer des séquences de touches préenregistrées à une vitesse très élevée, ce qui permet d’exécuter des commandes complexes en quelques secondes seulement.

Les Rubber Ducky sont souvent utilisées pour des tests d’intrusion ou des démonstrations de sécurité informatique, mais elles peuvent également être utilisées à des fins malveillantes, comme le vol de données ou l’installation de logiciels malveillants. Il est donc important de sensibiliser les utilisateurs aux risques liés à l’utilisation de clés USB inconnues et de prendre des mesures de sécurité appropriées pour protéger les ordinateurs contre les attaques de type “keystroke injection”.

Comme expliqué dans le paragraphe précédent, mon objectif est de sensibiliser les utilisateurs d’outils informatiques et leur démontrant la dangerosité d’insérer une clé USB inconnue dans leur ordinateur.

Pourquoi je parle de fausse Rubber Ducky ?

Les Rubber Ducky sont hors de prix et je cherche une solution abordable pour que le plus grand nombre puisse acheter une clé de sensibilisation. Personne ne mettre ces prix :

Quel équipement ai-je choisi ?

Je vais utiliser un équipement beaucoup plus léger car il n’a que 6k de mémoire, mais cela est suffisant, je ne vais pas lancer de script complexe. C’est un Digispark ATTINY85.

Cet équipement est abordable et fonctionnel.

Sa configuration est un peu complexe, il faut utiliser des drivers qui sont détectés comme dangereux, j’ai documenté sa programmation sur un RetEx il y a quelques temps.

Que va faire cette clé quand on la connecte ?

Le principe de cette fausse clé USB c’est d’exécuter un script au moment où on l’insère.

Evidemment les pirates vont installer un programme malveillant ou vont exfiltrer des données et les envoyer par internet. Ce n’est pas ce que je vais faire, je veux quelque chose de graphique et visuel qui symbolise une intrusion, un piratage en cours et des messages à l’écran.

C’est réellement à cette étape qu’il a fallu que je choisisse quelle actions “classiques” allaient être assez spectaculaires pour faire flipper un utilisateur.

Voici ce que j’ai choisi, cette vidéo illustre ce qu’il se passe quand on insère la clé (plus du son qui ne s’entend pas sur cette capture d’écran) :

J’ai réalisé quelques clés, elles sont à votre disposition

Evidemment, rien de commercial dans tout cela. Dans un but pédagogique, je vous invite à réaliser la démonstration auprès de vos enfants, parents, amis, collègues. Après la démonstration, ils n’insèreront plus une clé inconnue dans leur ordinateur.

J’ai fait réaliser par une société qui fait de l’impression 3D un petit boitier pour insérer le Digispark, le protéger et lui donner l’aspect d’une clé USB. Je suis très fier du résultat :

Au bout de la clé, il y a un trou pour l’ajouter à un trousseau de clés par exemple et sur l’autre côté, il y a deux trous qui permettent de laisser passer la lumière de la LED verte et de la LED rouge.

Le Digispark coûte entre 4 et 5€, l’impression 3D, hors frais de contrôle coute entre 1 et 2€ les deux éléments. Une enveloppe papier bulles (0.20€) et un timbre à 1.29€.

Pour ceux qui me l’ont demandé, je peux arriver donc à faire un lot clé USB programmée + envoi payé à 8.50€.

J’en ai réalisé 5, j’en garde 1 donc si vous en voulez une, contactez moi.

Je les place dans le vide grenier, je suis joignable avec le pseudo Sigalou sur HACF, Jeedom community, Discord, mon mail est donné dans le premier paragraphe du vide grenier.

 

 

 

J’installe une Nabu Casa Skyconnect sur une Nabu Casa Green

Mon objectif

J’apprécie le travail propre de Nabu Casa et c’est l’occasion de leur rendre hommage en installant la SkyConnect sur leur Green Box

Je découvre la SkyConnect

La clé est vraiment minuscule, la plus petite que j’ai utilisée.

Je consulte la documentation

Le seul papier fourni avec la clé est une information proposant de consulter le site :

J’ai consulté ce lien, les informations sont très claires et très intéressantes.

Seul souci, la totalité des explications pousse à une bascule vers ZHA (qu’on vienne de Zigbee2MQTT ou de Deconz). Je ne vais donc pas suivre ces explications, je compte rester sur Zigbee2MQTT.

Je trouve caché dans les FAQ une page qui peut m’intéresser :

Je suis déçu de lire ce peu d’ouverture de Nabu Casa mais c’est aussi un business :

The Home Assistant team officially supports ZHA (Zigbee Home Automation), the Zigbee stack integrated into Home Assistant Core.

The Zigbee2MQTT project has experimental support (in beta stage) for the Silicon Labs radio on Home Assistant SkyConnect. With this setting, Zigbee2MQTT is known to work on Home Assistant SkyConnect.

Je connecte la SkyConnect

C’est parti, au bout de sa rallonge USB fournie, je connecte la SkyConnect.

J’ai une notification qui m’informe que des équipements sont découverts, je trouve ceci :

Je clique sur configuré et là, je vous avoue que le message me laisse sans voix :

Heureusement que le message est en français car je ne comprends pas tous les mots. Pour moi la clé Skyconnect est un coordinateur Zigbee, par contre, un routeur de bordure Thread, c’est la première fois que j’en entends parlé, je questionne ChatGPT et sa réponse ne m’explique pas plus. J’en déduis que c’est bien d’un coordinateur Zigbee dont j’ai besoin.

Je choisis donc Zigbee.

Le cadre de la SkyConnect à changé :

Le logo Zigbee a remplacé le logo de la SkyConnect. Et ZHA a apparu également. Je ne veux pas l’utiliser, je regarde comment m’en sortir pour le supprimer ou le désactiver. Dans la doc, Nabu Casa a écrit :  If you are using Zigbee2MQTT, remember to delete and ignore the discovered Zigbee Home Automation integration to avoid interference.

J’appuie donc sur le bouton Ignorer.

Toute trace de ZHA a disparu à l’écran, je n’ai rien supprimé, juste ignoré, je verrai par la suite si une manipulation complémentaire pour éviter le conflit Zigbee2MQTT/ZHA.

J’installe Zigbee2MQTT sur la NC Green.

Je dois avoir un user mqtt 

Je vais créer un utilisateur mqtt, password mqtt qui ne peut se connecter que sur le réseau local et qui est administrateur.

 

Je dois installer Zigbee2MQTT

Je vais dans paramètres / Modules complémentaires / Boutique / … en haut à droite / Dépôts / https://github.com/zigbee2mqtt/hassio-zigbee2mqtt / Ajouter

F5 pour actualiser l’écran, cette nouvelle ligne apparait :

Je clique sur le premier cadre Zigbee2MQTT et je clique sur Installer.

J’appuie sur Démarrer et je coche les options, Zigbee2MQTT apparait dans la barre de gauche.

Je dois installer le broker Mosquitto

Je clique sur Installer puis je le Démarre.

Je configure Mosquitto

Dans l’onglet configuration, j’ajoute les informations du login et j’enregistre.

Je configure Zigbee2MQTT

Dans la section MQTT, j’ajoute :

base_topic: zigbee2mqtt
server: mqtt://core-mosquitto
user: mqtt
password: mqtt

Je dois trouver le port de la SkyConnect.

Je vais dans Paramètre / Système / Hardware / Tout le matériel et tout en bas, je trouve la clé USB sur son port :

 

Dans la section Serial, j’ajoute :

serial:
  adapter: ezsp
  port: /dev/serial/by-id/usb-Nabu_Casa_SkyConnect_v1.0_38c38b1c7bd8ed11a33c786162c613ac-if00-port0
  baudrate: 115200
  rtscts: true

Je vois passer ce warning :

warning: zh:ezsp: Deprecated driver ‘ezsp’ currently in use, ’ember’ will become the officially supported EmberZNet driver in next release. If using Zigbee2MQTT see https://github.com/Koenkk/zigbee2mqtt/discussions/21462

Mais quand je remplace ezsp par ember, le daemon ne démarre pas, je garde donc ezsp pour l’instant.

Je vérifie les logs

Je vérifie les logs de Mosquito et de Zigbee2MQTt, tout va bien.

Le broker MQTT est trouvé

Voila, tout est bon, on a Zigbee2MQTT, Mosquito et le Broker MQTT, parfait !

Je configure la disponibilité

Je mets à jour la SkyConnect (facultatif)

Pour tenter de pouvoir fonctionner avec ember et non plus ezsp, je tente de mettre à jour le Firmware.

Je suis obligé de prendre un navigateur qui gère les ports séries tel que Chrome ou Edge.

Je vais sur https://skyconnect.home-assistant.io/firmware-update/

Pour que la clé soit détectée, sur W10, je dois installer le driver Silicon Labs CP2102 driver.

Je constate que ember ne fonctionne pas, je repasse donc sur ezsp.

Je lance l’interface de Zigbee2MQTT

Zigbee2MQTT est parfaitement configuré et fonctionne !

 

 

 

 

 

 

 

 

 

J’installe Vaultwarden (Bitwarden) sur mon NAS Synology

Mon objectif

J’utilise depuis des mois KeepassXC, il fonctionne parfaitement, j’avais fait un Retex sur cela. Je mets en place mon gestionnaire de mots de passe sur tous mes ordinateurs et smartphone

Je rencontre une difficulté avec Keepass, c’est le partage des mots de passe. Certains mots de passe sont à partager entre ma femme et moi, cela n’est pas possible avec Keepass. Nous utilisons une base chacun car nous avons deux modes d’authentification pour ouvrir la base.

Je cherche donc une solution et Bitwarden le propose, on peut créer une “organisation” qui correspond à la famille et on peut avoir des mots de passe propres à chacun ou des mots de passe partagés. Parfait, c’est ce que je recherche.

Je vais donc installer Vaultwarden sur mon NAS Synology dans un docker de Container Manager. Configurer un nom de domaine pour cela, lui donner un certificat pour exploiter le https, choisir un port autre que 443 pour sécuriser un peu plus. Configurer mon routeur avec les redirections de ports puis configurer Vaultwarden, lui permettre d’envoyer des mails et de sécuriser l’utilisation avec une Yubikey et une authentification Microsoft Athentificator (TOTP)…. feu… Lire la suite

Aide mémoire Test de cartes Home Assistant

Mon objectif

Cette page me sert d’aide-mémoire mais peut être utile à d’autres.

Je voudrais tester des modifications sur des cartes Home Assistant, afin de proposer des améliorations aux développeurs.

Dans cette page, je vais modifier une carte de la série des cartes de Pronote de delphiki.

Organisation des fichiers sur Home Assistant

Les cartes sont des scripts JavaScript qui sont en principe enregistrés dans /homeassistant/www/community

Dans ces dossiers, on retrouve le fichier JS et sa version compactée en GZ.

Organisation des fichiers sur GitHub

Je prends donc l’exemple du dépôt des cartes Pronote.

Les fichiers sources des cartes sont dans lovelace-xx/src/cards.

Je récupère un fichier JS de carte et je le place sur mon HA

Dans mon exemple du jour, je vais récupérer la carte absences-card.js et je la place dans le dossier /homeassistant/www/community/lovelace-pronote/cards de mon HA.

Je dois déclarer cette carte comme Ressource dans HA

Dans Paramètres / Tableaux de bord / Ressources (3 points en haut à droite), je clique sur

J’ajoute donc mon fichier JS : /hacsfiles/lovelace-pronote/cards/absences-card.js

C’est terminé, à ce stade, la carte fonctionnera sur le Dashboard.

Je me suis demandé s’il fallait retirer la carte pronote.js des ressources pour tester la nouvelle carte, afin d’éviter un doublon de déclaration. Visiblement non, c’est la nouvelle qui est prise en compte. J’ignore comment HA gère la priorité des codes JS, je complèterai ce paragraphe si j’arrive à comprendre.

Je teste une carte absences sur le Dashboard

type: custom:pronote-absences-card
entity: sensor.pronote_xx_coralie_absences
display_header: true
child_name: Coralie

Cela fonctionne :

Je fais un test de modification

Je fais un test de modification pour vérifier que mon code absences-card.js est bien celui qui génère la carte.

J’édite le fichier absences-card.js et je vais changer la ligne

<ha-icon icon="mdi:check"></ha-icon>

par la ligne

<ha-icon icon="mdi:account-school-outline"></ha-icon>

pour changer la coche d’absence.

Important !!!! Il faut actualiser le fichier JS qui est en cache dans le navigateur, il faut donc l’ouvrir et faire un petit F5.

Donc dans une autre fenêtre du navigateur, j’ouvre le fichier :

http://homeassistant.local:8123/hacsfiles/lovelace-pronote/cards/absences-card.js

Je reviens sur mon onglet Pronote et j’actualise la page, la coche a bien changé :

Je peux ainsi modifier le code

À ce stade, je peux donc modifier le code du fichier JS qui génère la carte.

Ainsi, si je peux proposer aux développeurs des améliorations, au lieu de jouer au …

Toute ressemblance avec des personnes existantes ou ayant existé est purement fortuite et non intentionnelle. 🥳