Déchiffrer un flux TLS pour établir un diagnostic
Introduction
La plupart des applications et des flux réseaux sont actuellement chiffrés à l’aide du protocole TLS. On peut s’en réjouir en termes de sécurité informatique, respect de la vie privée, etc. Mais cela peut poser des problèmes en particulier lorsque l’on souhaite réaliser des diagnostics précis en cas de problèmes ou dysfonctionnements.
Cette documentation explique comment récupérer légitimement la clé de session symétrique TLS en cours d’utilisation afin d’être en mesure de déchiffrer le trafic dans l’outil de capture de trames Wireshark.
Cette procédure fonctionne normalement avec Firefox, Chrome et Chromium installés sur un système Windows, GNU/Linux ou macOS.
Attention ! Certaines versions de Firefox ont été compilées avec la désactivation du stockage de la clé de session à partir d’une variable d’environnement (exemple sur Kali Linux : aucun fichier créé avec Firefox ESR 102.12.0 mais cela fonctionne très bien avec la dernière version 114.02).
Procédure sous GNU/Linux
-
Être connecté avec l’utilisateur qui sera amené à utiliser la clé de session.
-
Fermer les navigateurs (ou applications) concernés qui utilisent TLS.
-
Ouvrir un terminal puis rentrer la commande suivante.
-
Démarrer Wireshark et la capture de trames.
-
Toujours dans le même terminal utilisé pour exporter la variable d’environnement, lancer une nouvelle commande.
-
Se connecter sur le site web souhaité à l’aide du protocole HTTPS et réaliser les opérations voulues.
-
Stopper ensuite la capture, la sauvegarder et fermer Wireshark.
-
Ouvrir à nouveau Wireshark, aller dans Editer > Préférences > Protocols > TLS.
- Puis cliquer sur Parcourir dans le menu (Pre)-Master-Secret log filename afin de sélectionner le fichier /home/etudiant/cledesession.
- Ouvrir le fichier de capture de trames sauvegardé précédemment. Il est dorénavant possible d’observer le contenu des flux HTTPS (TLS) en clair (exemple : récupération d’un couple login et mot de passe à l’aide d’un filtre Wireshark http.request.method==”POST”).
Sources
https://www.bortzmeyer.org/files/capitole-libre-2022-tout-chiffre.pdf