14/11/2024

LogicielsWireshark

Wireshark – Comment déchiffrer les flux TLS comme le HTTPS ?

I. Présentation

Aujourd’hui, nous allons apprendre à utiliser une fonctionnalité très pratique de Wireshark disponible depuis la version 3.0 : le déchiffrement des flux chiffrés HTTPS sans certificat. Cette fonctionnalité va permettre d’afficher les flux chiffrés en clair, notamment les flux :

  • Web
  • DoH : Dns Over Https
  • Quic

Avant de continuer, voici la liste des précédents articles de cette série sur Wireshark :

II.  Comment décrypter les flux TLS sans certificat ?

A. Explication

Avec Wireshark, il existe deux méthodes pour déchiffrer les flux :

  • Avoir le certificat en sa possession
  • Enregistrer les clés de sessions TLS

Avec le nouveau protocole de sécurité TLS 1.3 ou algorithme de chiffrement ECDHE, même en ayant le certificat nous ne pouvons pas déchiffrer les flux : cela peut poser problème pour une analyse de performances ou dans le cadre d'une analyse liée à un incident de cybersécurité.

Ce qui est d'autant plus vrai avec la mise en place du protocole de transport Quic sur Internet ! Contrairement à TCP qui fournit les informations en clair, Quic chiffre l’ensemble des en-têtes donc même pour suivre l’ordonnancement des paquets, nous sommes obligés de voir les flux en clair. Pour résoudre cette problématique, nous allons mettre en œuvre l’enregistrement de clés de sessions TLS clients et serveurs.

N.B : la fonctionnalité d’enregistrement des clés TLS fonctionne uniquement sur des captures réseau en direct.

B. Enregistrer les clés de sessions TLS

L’enregistrement des clés de sessions TLS peut s’effectuer sur Linux, Mac et Windows. Dans ce tutoriel, nous allons appliquer la procédure pour Windows, avec une machine sous Windows 11 dans mon cas (ceci fonctionne aussi sur Windows 7 et Windows 10). Si vous souhaitez l’implémenter pour Mac et Linux, vous pouvez aller sur le site de Wireshark consulter cette page.

Sur Windows, il y a deux étapes pour enregistrer les clés de sessions TLS :

  • Créer une variable environnement utilisateur
  • Créer un fichier texte pour enregistrer les clés de sessions clients et serveurs

III. Mise en place de l’enregistrement des clés de sessions TLS

A. Création d’un fichier txt pour enregistrer les clés de sessions TLS

Vous allez créer un fichier txt pour enregistrer les clés de sessions TLS.

Mon fichier s’appellera sslkeys.txt que je vais enregistrer dans mon disque DATA. A vous d'adapter selon votre environnement.

B. Modification des variables d’environnement utilisateurs

Aller dans les paramètres de Windows. Une fois la page ouverte cliquer sur « Système », « Informations système » puis « Paramètres avancés du système »

Une nouvelle fenêtre s’ouvre, cliquer suz « Variables d’environnement… ».

Nous arrivons sur les Variables d’environnement de votre ordinateur, la partie qui va nous intéresser, c'est la section des variables d’environnements utilisateur. Cliquez sur « Nouvelle… »

Donnez le nom suivant à la variable : SSLKEYLOGFILE

Indiquez l’emplacement de votre fichier en cliquant sur « Parcourir le fichier… ». Dès que vous avez terminé votre configuration, cliquez sur « OK ».

La nouvelle variable d’environnement apparaît, pour l’appliquer, cliquez sur « OK ».

C. Valider le bon fonctionnement

Pour valider l’enregistrement des clés de sessions TLS, il suffit d’aller sur internet et de regarder si le fichier txt créé précédemment se remplit. Ouvrez votre fichier txt, vous devriez voir les lignes suivantes créer.

D. Que signifient les lignes dans ce fichier ?

Dans ce fichier, les lignes utilisent des préfixes différents. Voici des informations pour vous aider à les interpréter :

  • CLIENT_HANDSHAKE_TRAFFIC_SECRET : la clé secrète de la poignée de main du client codé en hexadécimal.
  • SERVER_HANDSHAKE_TRAFFIC_SECRET : la clé secrète de la poignée de main du serveur codé en hexadécimal.
  • CLIENT_TRAFFIC_SECRET_0 : le premier code du trafic applicatif du client codé en hexadécimal.
  • SERVER_TRAFFIC_SECRET_0 : le premier code du trafic applicatif du serveur codé en hexadécimal.
  • EXPORTER_SECRET : le secret de l’exportation en hexadécimal

Voici la source qui explique l’ensemble des valeurs.

IV. Configuration de Wireshark

Maintenant que nous avons validé l’enregistrement des clés de sessions TLS, il reste à configurer Wireshark, pour voir les flux en clair.

Pour cela, lancez Wireshark et allez sur « Editer » puis « Préférences… ».

Ensuite, déroulez le menu à gauche jusqu'à trouver « protocols ».

Cherchez le protocole « TLS ».

On arrive à la page de configuration du protocole TLS. Pour lier votre fichier txt de clés sessions TLS, il suffit de renseigner la localisation de votre fichier en cliquant sur « Parcourir… » au niveau de « (Pre)-Master-Secret log filename ». Ici :

Vous devez arriver à ce résultat et ensuite cliquez sur « OK ».

V. Validation de la configuration Wireshark

Lancez une trace réseau avec Wireshark... vous devriez voir des flux http sur le port TCP ou UDP sur le port 443. Ainsi, les flux HTTPS sont visibles en clair dans Wireshark grâce à la configuration que nous venons de mettre en place ! Cela s'applique aussi aux flux transportés par le protocole QUIC.

VI. Conclusion

Cet article sur Wireshark et la fonctionnalité de déchiffrement les flux TLS est terminé ! Avec cette fonctionnalité, vous pourrez déchiffrer vos flux des applications SAAS de votre entreprise à titre d’exemple, donc vous serez en mesure de voir les requêtes et réponses applicatives.

Le prochain article sera sur l’importation de clés sessions TLS dans un fichier de capture.

author avatar
Yohan Ingénieur performance réseau
Exerce depuis maintenant 10 ans et demi en tant que responsable d’infrastructure dans une entreprise d’assurance (2 ans en alternance). Plus spécialisé dans l'analyse de traces réseau et de métrologie NPMd , je connais les environnements Cisco ACI , catalyst, Alcatel entre autres, à travers le site it-connect.fr. Je souhaite pouvoir partager mon expérience et mes connaissances réseau. J'ai une chaîne YouTube dédiée à wireshark.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “Wireshark – Comment déchiffrer les flux TLS comme le HTTPS ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.