15/11/2024

LogicielsWireshark

Wireshark – Importer des clés TLS dans un fichier de capture

I. Présentation

Après avoir vu comment déchiffrer les flux avec Wireshark en live dans le tutoriel précédent (voir lien ci-dessous), nous allons maintenant nous intéresser à l'importation des clés de sessions TLS enregistrées en direct dans un fichier de capture, afin de pouvoir faire une analyse à froid des requêtes et réponses applicatives.

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

II. Prérequis

Pour réaliser l’enregistrement de clés de sessions TLS dans un fichier de capture, il faut :

  • Avoir enregistré les clés de sessions
  • Avoir installé l’utilitaire Editcap sur sa machine

N.B : L’installation de l’utilitaire Editcap s’effectue lors de l’installation de Wireshark, comme nous l'avons vu lors de l'installation du logiciel.

III. Rappel sur Editcap

Editcap est un utilitaire de Wireshark qui s'utilise en ligne de commandes. Il permet entre autres de :

  • Lire et modifier des fichiers de capture au format pcap et pcapng
  • Supprimer les paquets en doubles dans un fichier de capture
  • Ajouter des commentaires à des trames
  • Injecter des clés de sessions TLS

Vous pouvez retrouver l’ensemble des fonctionnalités Editcap sur le Wiki de Wireshark.

IV. Ajouter des clés de sessions TLS dans un fichier de capture

Par défaut, Wireshark ne va pas enregistrer les flux déchiffrés en direct dans le fichier de capture, il va s’appuyer sur le fichier txt. Donc si vous souhaitez partager votre fichier de capture à des collègues, il ne verra aucun flux HTTP dans votre capture... Seulement des flux TLS (à moins de fournir votre fichier txt).

Afin d’avoir les flux déchiffrés a posteriori, nous allons injecter les clés de sessions TLS via le fichier TXT qui enregistre l’ensemble des clés de sessions TLS clients et serveurs.

Vous pouvez vous référer à l’article précédent à ce sujet afin de bien comprendre à quel fichier je fais référence ici.

A. Injecter les clés de sessions TLS dans un fichier

En premier lieu, effectuez une trace réseau... Vous devez voir les flux déchiffrés en direct en appliquant la méthode vue dans l'article précédent. Ensuite, enregistrez cette capture. Pour cet exemple, mon fichier de capture va s’appeler "demo_tls.pcap".

Pour afficher les statistiques des protocoles dans votre capture, accédez au menu : Statistiques puis Hiérarchie des protocoles.

Wireshark - aller dans hiérarchie des protocoles

Comme vous pouvez le voir dans la capture d’écran, j’ai seulement deux paquets HTTP dans mon fichier de capture :

Wireshark Hérarchie des protocoles

Nous allons maintenant injecter les clés de sessions TLS dans notre fichier de capture. Pour cela, Editcap va créer un deuxième fichier de capture avec les clés de sessions TLS.

Pour lancer Editcap, il faut utiliser la console « Invite de commandes » sous Windows, en faisant une recherche « cmd » dans la barre de recherche de votre ordinateur. Accessoirement, on peut aussi utiliser une console PowerShell.

Ensuite, allez dans le répertoire d’installation de Wireshark en utilisant la commande « cd » pour vous déplacer dans les répertoires :

Windows Wireshark invite de commandes

Afin de faciliter la suite du tutoriel, je vais copier le fichier de capture demo_tls.pcap et mon fichier txt qui enregistre les clés de sessions TLS dans le répertoire d’installation de Wireshark.

N.B : l’Invite de commandes doit être exécutée en mode administrateur, si vous effectuez comme moi la commande dans le répertoire d’installation de Wireshark puisqu'il s'agit d'un répertoire protégé.

Ensuite, il faut lancer la commande suivante :

editcap --inject-secrets type_de_clé,fichier_enregistrement_clés_tls fichier_entrée fichier_sortie
  • Exemple :
editcap --inject-secrets tls,keys.keys demo_tls.pcap keys-injected.pcapng

Avant d’aller plus loin, nous allons expliquer cette commande :

La commande "editcap" permet d'appeler l’utilitaire qui va nous permettre de faire notre opération.

  • Les options :

--inject-secrets : permets d’injecter des clés pour déchiffrer les flux

tls : on indique le type de clés que nous souhaitons injecter, ici tls

, : permet d’indiquer nos fichiers après les options

  • Nos fichiers :

keys.keys : notre fichier qui enregistre les clés de sessions tls, à adapter suivant votre nom de fichier

demo_tls.pcap : notre fichier de capture d’entrée sans déchiffrement, à adapter suivant votre nom de fichier

keys-injected.pcapng : notre fichier de sortie avec les flux en clair. Vous pouvez donner le nom que vous souhaitez.

Voici la commande dans l’invite de commandes :

Wireshark - Commande editcap

Une fois la commande prête, vous appuyez sur entrée et si aucun message d’erreur n’apparaît c’est que votre commande est bien passée.

B. Vérification du fichier de capture

Maintenant que la commande est passée, il reste à ouvrir notre nouveau fichier de capture pour valider que nous avons maintenant des flux HTTP. Ici, nous voyons plus de 800 paquets HTTP au lieu de deux :

Ici, c'est bien le fichier de capture généré par Editcap qui doit être ouvert dans Wireshark.

V. Supprimer les clés de sessions TLS d’un fichier de capture

Pour des raisons de sécurité, vous pouvez avoir besoin de supprimer les clés de sessions TLS d’un fichier de capture.

A. Supprimer les clés de sessions TLS

Pour ce faire il faut utiliser Editcap avec l’option suivante --discard-all-secrets.

Ce qui donne cette commande :

editcap --discard-all-secrets fichier_entrée fichier_de_sortie

Depuis la version 3.6.9 de Wireshark, il y a un bug de référencé avec cette commande (voir ici), il faut spécifier l’encapsulation à Editcap avec l’option -T ether pour de l'Ethernet.

Voici la commande pour retirer les clés de sessions TLS :

editcap --discard-all-secrets -T ether fichier_entrée fichier_de_sortie

B. Vérification de la suppression des clés de sessions TLS

On retrouve bien nos deux paquets HTTP du départ, et les autres ne sont plus visibles.

VI. Conclusion

Cet article sur Wireshark nous a permis de découvrir l’utilitaire editcap et de l’utiliser pour insérer ou supprimer des clés de sessions TLS directement dans le fichier de capture. Vous pourrez partager facilement un fichier avec des flux en clair vers un collègue ou bien un intégrateur dans le cadre d’un incident applicatif.

Le prochain article portera sur le décodage des protocoles qui utilisent un port TCP/UDP non standard.

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

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.