Wireshark – Importer des clés TLS dans un fichier de capture
Sommaire
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 :
- Tutoriel - Installation pas-à-pas de Wireshark
- Tutoriel - Découverte de l'interface Wireshark
- Tutoriel - Astuces pour personnaliser l'interface de Wireshark !
- Tutoriel - Wireshark et les filtres de capture
- Tutoriel - Wireshark et les filtres d'affichage
- Tutoriel - Wireshark et la résolution de noms
- Tutoriel - Wireshark et les commentaires
- Tutoriel - Wireshark : activer la géolocalisation d’adresses IP
- Tutoriel - Wireshark - Comment déchiffrer les flux TLS comme le HTTPS ?
- Téléchargement - 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.
Comme vous pouvez le voir dans la capture d’écran, j’ai seulement deux paquets HTTP dans mon fichier de capture :
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 :
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 :
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.