Comme je l’expliquais dans mon article sur le scanner de vulnérabilités
Sanca
, pendant une mission de gestion de vulnérabilités
j’ai amélioré le processus de détection, augmentant ma productivité.
Je traitais beaucoup plus de vulnérabilités, cela signifiait envoyer
beaucoup plus d’e-mails pour avertir les personnes concernées.
Le contexte
Je faisais de la gestion de vulnérabilités sur un très grand nombre de serveurs. On utilisait un EASM pour les surveiller, mais il fournissait des résultats discutables, au point que j’ai pris des congés pour développer Sanca. Grâce à ce scanner je détectais plus de vulnérabilités, je ne perdais plus de temps avec les faux positifs et les doublons.
Puisque je traitais plus de vulnérabilités je créais plus de tickets.
Une fois les vulnérabilités qualifiées, la création d’un ticket n’est qu’une
tâche manuelle répétitive, alors je l’ai automatisée. À force d’automatiser
tout ce qui pouvait l’être en amont, ça bouchonnait à la dernière étape, l’envoi
des e-mails.
On voulait faire les choses bien, alors on avait un modèle d’e-mail dans
lequel on remplaçait le nom du destinataire, le serveur concerné,
les détails sur la vulnérabilité et comment la corriger. Tout ce qu’il fallait
pour qu’un manager non-technique comprenne et puisse transmettre à son équipe
technique, qui aurait suffisamment d’informations pour régler le problème.
Quand on n’avait pas de nouvelle, on envoyait des e-mails de relance, on avait
également un modèle pour ça.
J’en étais arrivé à un stade où je passais 5 heures, chaque semaine, à envoyer
des e-mails dans Outlook pour informer les personnes concernées des
vulnérabilités découvertes.
Toutes les deux semaines j’envoyais des relances, mais plus j’avais de
vulnérabilités dans les tuyaux plus j’avais de relances à envoyer, et plus
ça prenait de temps. J’en étais arrivé à un point où je passais 4 jours
à envoyer toutes mes relances.
C’était devenu insupportable.
Le processus
J’appelais ces tâches répétitives du “travail de robot”. Imaginez faire ça pendant 5h :
- Ouvrir Excel avec le détail de chaque vulnérabilité.
- Ouvrir Outlook pour envoyer les e-mails.
- Créer un nouveau message.
- Copier le modèle et le coller dans Outlook.
- Copier le prénom du destinataire dans Excel et le coller au bon endroit du modèle.
- Copier la description de la vulnérabilité dans Excel et la coller au bon endroit du modèle.
- Et ainsi de suite avec toutes les valeurs nécessaires.
- Vérifier l’e-mail avant l’envoi pour s’assurer de n’avoir rien oublié.
- Cliquer sur envoyer.
- Remplir la colonne “Date d’envoi” dans le fichier Excel.
- Modifier le statut du ticket associé à la vulnérabilité.
- Recommencer à l’étape 3 pour la vulnérabilité suivante.
Ça rappelle le film Les temps modernes avec Charlie Chaplin, quand il travaille à l’usine à faire le même geste encore et encore, jusqu’à le faire même en dehors du travail.
Être freelance en cybersécurité ne devrait pas ressembler à du travail en
usine. Ça ne semblait pas déranger mes collègues, qui s’appliquaient à la
tâche qu’on leur avait demandée, mais moi ça me frustrait un peu plus à chaque
e-mail.
Le client payait les services d’un freelance en cybersécurité, au prix
d’un freelance en cybersécurité, pour faire un travail de freelance en
cybersécurité. En plus de détester ces tâches répétitives, j’avais un peu
mauvaise conscience de passer autant de temps à faire des tâches pour lesquelles
je n’apportais aucune valeur, même si c’était la conséquence de ma propre
productivité.
Alors j’ai décidé d’automatiser l’envoi d’e-mails.
La solution, l’automatisation
Il y avait une raison si je ne l’avais pas automatisé plus tôt, les e-mails devaient obligatoirement être envoyés depuis Outlook. Pas de serveur SMTP à appeler depuis un script Python, pas de Thunderbird, aucune alternative.
J’ai d’abord pensé à PowerAutomate, un outil “No code” de Microsoft conçu
pour l’automatisation, mais il fonctionnait mal et n’a pas été retenu.
Pour de l’envoi de données sensibles par e-mails, une action irréversible,
j’avais besoin d’un outil fiable, je ne pouvais pas me permettre d’envoyer un
e-mail à la mauvaise personne où de mettre la mauvaise donnée dans le message.
Alors j’ai cherché une autre solution, et c’est là que j’ai découvert AutoHotKey (AHK) , un petit langage de programmation conçu spécialement pour automatiser Windows. Il permet de créer des raccourcis clavier, d’interagir avec Excel, Outlook et d’autres logiciels de bureau, c’était pile ce qu’il me fallait. Et peu importe que je n’ai jamais développé en AHK avant ça.
Après avoir développé un script avec AHK, l’envoi d’e-mails ressemblait à ça :
- Ouvrir Excel avec le détail de chaque vulnérabilité.
- Ouvrir Outlook pour envoyer les e-mails.
- Exécuter le script AHK.
Le script parcourait le fichier Excel où 1 ligne = 1 vulnérabilité, pour chaque
ligne il créait un nouvel e-mail basé sur le modèle, il plaçait les données où
il fallait, et il envoyait le message. Ensuite il remplissait la colonne
“Date d’envoi” dans Excel et il appelait l’API du système de tickets pour changer
son statut.
Il respectait le processus initial, pas question de sacrifier la qualité, mais il
allait beaucoup plus vite que moi et ne faisait pas d’erreur de répétition. Pas
besoin d’intelligence artificielle (IA), une bonne automatisation sur-mesure
fait très bien le travail.
De 5h par semaine j’étais passé à 2 minutes, c’était un soulagement. J’ai fait la même chose pour les e-mails de relance, et j’ai gagné encore plus de temps. Désormais je pouvais me concentrer sur la détection, les conseils aux équipes qui devaient corriger les vulnérabilités, et les tests pour valider les correctifs.
Limitations d’AHK et réimplémentation en Python
Le script AHK était un outil formidable que j’ai partagé avec le client et mes collègues, mais c’était un bricolage. Il n’y avait pas d’interface graphique, c’était conçu pour faire un travail précis mais n’était pas très flexible, difficile à faire évoluer.
Il y a quelques mois je repensais à ce projet et à quel point il avait été pratique,
j’ai décidé de développer un logiciel permettant de piloter Outlook, une version
plus propre de mon script AHK.
Il a une interface graphique, on choisit le fichier Excel à utiliser pour envoyer
des e-mails, on paramètre quelques informations, et il pilote Outlook pour
envoyer les messages comme si je les envoyais moi-même.
Et comme j’étais lancé, j’ai même fait en sorte qu’il soit disponible en plusieurs
langues (français et anglais) et qu’il ait deux thèmes (clair et sombre).


Piloter Outlook est pratique lorsqu’on est bloqué dans un environnement Microsoft strict sans accès SMTP. Puisque le logiciel en Python est plus propre et structuré, bientôt j’ajouterai la possibilité d’envoyer les e-mails à partir d’un serveur SMTP, sans Outlook. Ça aura l’avantage de fonctionner sur tous les systèmes d’exploitation (comme Linux, macOS et OpenBSD), je n’aurais plus besoin de lancer une machine virtuelle (VM) Windows pour m’en servir.
Ce que ça m’a appris
Encore plus qu’en développant Sanca, j’ai pris conscience de combien ma valeur
en tant que prestataire était d’apporter des solutions, et pas seulement de “faire
de la cybersécurité”. Quand un client fait appel à un freelance, il veut
une personne qui saura faire le travail vite et bien, en étant autonome tout en
sachant travailler en équipe. Quelqu’un qui ne se contente pas de se plaindre
des problèmes, mais qui apporte des solutions.
J’ai râlé, beaucoup, mais j’ai créé les solutions à mes problèmes. Cette année
là on a atteint 150% de nos objectifs EASM, je suis convaincu que
l’automatisation y est pour quelque chose.
Vos équipes perdent du temps sur des tâches répétitives ?
Parlons de ce qu’on peut automatiser
.