Déchiffrer le trafic SSL/TLS dans Wireshark

WiresharkWiresharkBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à décrypter le trafic SSL/TLS à l'aide de Wireshark, un célèbre analyseur de protocoles réseau. Le chiffrement SSL/TLS est couramment utilisé pour protéger les communications sur Internet. Cependant, dans certains cas, comme la résolution de problèmes ou l'analyse de sécurité, il devient essentiel de décrypter le trafic chiffré.

Ce laboratoire vous guidera tout au long du processus de configuration de Wireshark pour décrypter le trafic SSL/TLS. Il vous offre une expérience pratique dans un environnement contrôlé.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") wireshark/WiresharkGroup -.-> wireshark/interface("Interface Overview") wireshark/WiresharkGroup -.-> wireshark/packet_capture("Packet Capture") wireshark/WiresharkGroup -.-> wireshark/display_filters("Display Filters") wireshark/WiresharkGroup -.-> wireshark/follow_tcp_stream("Follow TCP Stream") wireshark/WiresharkGroup -.-> wireshark/decrypt_ssl_tls("Decrypting SSL/TLS") subgraph Lab Skills wireshark/installation -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} wireshark/interface -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} wireshark/packet_capture -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} wireshark/display_filters -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} wireshark/follow_tcp_stream -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} wireshark/decrypt_ssl_tls -.-> lab-415943{{"Déchiffrer le trafic SSL/TLS dans Wireshark"}} end

Configuration du décryptage SSL/TLS dans Wireshark

Dans cette étape, nous allons configurer Wireshark pour décrypter le trafic SSL/TLS. Mais d'abord, comprenons un peu ce que nous faisons. SSL/TLS est un protocole utilisé pour sécuriser les communications sur Internet. Lorsque des données sont envoyées sur Internet via SSL/TLS, elles sont chiffrées pour protéger leur confidentialité. Pour décrypter ce trafic et voir les données réelles, Wireshark a besoin d'accéder aux clés de chiffrement. Ces clés sont stockées dans un fichier spécial appelé fichier journal de pré - master secret. Nous allons créer ce fichier maintenant.

Wireshark a besoin d'accéder aux clés de chiffrement pour décrypter le trafic TLS. Ces clés sont stockées dans ce qu'on appelle un fichier journal de pré - master secret, que nous allons créer maintenant.

  1. Ouvrez un terminal. Un terminal est une interface basée sur le texte où vous pouvez entrer des commandes pour interagir avec le système d'exploitation de votre ordinateur. Une fois le terminal ouvert, nous allons créer un nouveau fichier nommé pre_master_secret.log dans le répertoire /home/labex/project/. Ce fichier sera utilisé pour stocker les clés de session TLS nécessaires au décryptage. Pour créer le fichier, entrez la commande suivante dans le terminal :

    touch /home/labex/project/pre_master_secret.log

    Cette commande crée un fichier vide qui stockera plus tard les clés de session TLS nécessaires au décryptage.

  2. Maintenant que nous avons le fichier journal prêt, nous devons configurer Wireshark pour l'utiliser. Tout d'abord, ouvrez Wireshark en tapant la commande suivante dans le terminal :

    wireshark

    Après l'ouverture de Wireshark, vous verrez une barre de menu en haut. Cliquez sur Edit > Preferences. Cela ouvrira une fenêtre où vous pouvez personnaliser diverses paramètres dans Wireshark. Dans la fenêtre des Préférences, regardez le panneau de gauche. Il y a une section appelée Protocols. Cliquez dessus, puis faites défiler jusqu'à ce que vous trouviez TLS.

    Dans les paramètres TLS, il y a un champ intitulé (Pre)-Master-Secret log filename. C'est ici que nous indiquons à Wireshark l'emplacement du fichier journal de la pré - master key que nous venons de créer. Entrez le chemin complet du fichier :

    /home/labex/project/pre_master_secret.log

    La fenêtre devrait ressembler à ceci :

    ![Wireshark TLS Preferences](https://file.labex.io/namespace/33fa8aba-d546-42e9-9692-64968aeaf0cc/cybersecurity/ws_decrypt_ssl_tls/lab-cipher-quest-tls-decrypting-guide/fr/../assets/lab - CipherQuestTLSDecryptingGuide - step1 - image1.png)

    Une fois que vous avez entré le chemin, cliquez sur OK pour enregistrer les modifications. Maintenant, Wireshark est configuré pour utiliser ce fichier pour décrypter le trafic TLS. Cela signifie que lorsque vous capturez le trafic SSL/TLS, Wireshark pourra utiliser les clés du fichier journal pour décrypter les données et vous montrer le contenu réel.

Capture du trafic SSL/TLS

Dans cette étape, nous allons capturer le trafic SSL/TLS à l'aide de Wireshark et générer un trafic sécurisé avec un script Python. SSL/TLS est un protocole qui assure une communication sécurisée sur un réseau. La capture de ce trafic nous permet de l'analyser ultérieurement, ce qui est important pour des tâches telles que le débogage de problèmes réseau ou la détection de menaces de sécurité.

  1. Commençons par capturer le trafic réseau. Dans Wireshark, les interfaces réseau sont les connexions par lesquelles votre ordinateur envoie et reçoit des données. Vous devez sélectionner l'interface appropriée pour capturer le trafic qui vous intéresse. Recherchez la liste des interfaces réseau disponibles. Cliquez sur l'interface eth1 pour la sélectionner. C'est par cette interface que le trafic que nous voulons capturer passera. Ensuite, cliquez sur le bouton Start (l'icône de la nageoire de requin bleue) dans la barre d'outils pour commencer la capture des paquets.

    Wireshark capturera maintenant tout le trafic réseau sur l'interface sélectionnée. Au fur et à mesure de la capture, vous verrez les paquets commencer à apparaître dans la fenêtre principale. Chaque paquet représente une petite unité de données transmise sur le réseau.

  2. Maintenant, nous devons générer un peu de trafic SSL/TLS que nous pourrons analyser. Ouvrez une nouvelle fenêtre de terminal. Le terminal est une interface en ligne de commande où vous pouvez exécuter des commandes pour interagir avec votre ordinateur. Accédez au répertoire du projet en utilisant la commande suivante :

    cd /home/labex/project/

    Cette commande change le répertoire de travail actuel pour le répertoire du projet. Nous allons créer un script Python qui établit une connexion sécurisée à un site web. Python est un langage de programmation qui nous permet d'écrire des scripts pour effectuer diverses tâches. Créez un nouveau fichier nommé tls_client.py en utilisant l'éditeur de texte nano :

    nano tls_client.py

    L'éditeur de texte nano est un éditeur de texte simple et facile à utiliser dans le terminal. Copiez et collez le code Python suivant dans l'éditeur :

    #!/usr/bin/env python3
    
    import ssl
    import socket
    import os
    
    HOST = "example.com"
    PORT = 443
    
    ## Set the path for the pre-master secret log file
    os.environ['SSLKEYLOGFILE'] = '/home/labex/project/pre_master_secret.log'
    
    ## Create an SSL/TLS context
    context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
    
    ## Create a socket and wrap it with SSL/TLS
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
        with context.wrap_socket(sock, server_hostname=HOST) as ssock:
            ssock.connect((HOST, PORT))
    
            ## Send a simple HTTP GET request
            request = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
            ssock.sendall(request.encode())
    
            ## Receive the response and print all the received data
            data = ssock.recv(4096)
            print(data.decode())

    Ce script effectue les actions suivantes :

    • Définit une variable d'environnement pour spécifier où enregistrer les clés de session TLS. Ces clés sont cruciales pour décrypter le trafic SSL/TLS plus tard.
    • Établit une connexion sécurisée à example.com. Les bibliothèques ssl et socket sont utilisées pour établir cette connexion.
    • Envoie une requête HTTP de base. Cette requête demande au serveur la page principale de example.com.
    • Reçoit et affiche la réponse du serveur.

    Enregistrez le fichier en appuyant sur Ctrl+O, puis sur Enter, et quittez nano en appuyant sur Ctrl+X.

    Maintenant, exécutez le script pour générer le trafic TLS :

    python3 tls_client.py

    Vous devriez voir une réponse HTTP d'example.com, ce qui confirme que le script a réussi à établir une connexion sécurisée. Le script a également écrit les clés de session TLS dans notre fichier journal de pré - master secret, que Wireshark utilisera pour le décryptage.

    La sortie ressemblera à ceci :

    HTTP/1.1 200 OK
    Age: 558804
    Cache-Control: max-age=604800
    Content-Type: text/html; charset=UTF-8
    Date: ...
    ...
  3. Maintenant que nous avons généré le trafic TLS, revenez à Wireshark et arrêtez la capture en cliquant sur le bouton Stop rouge dans la barre d'outils. Il est nécessaire d'arrêter la capture pour pouvoir enregistrer le trafic capturé.

    Pour enregistrer le trafic capturé pour analyse, cliquez sur File dans la barre de menu, puis sélectionnez Save As.... Dans la boîte de dialogue d'enregistrement, accédez à /home/labex/project/, nommez le fichier tls_traffic.pcapng et cliquez sur Save. Le format de fichier .pcapng est un format standard pour enregistrer les captures de trafic réseau.

    Save Captured Traffic

    Votre trafic capturé est maintenant enregistré et prêt à être analysé dans l'étape suivante.

Analyse du trafic SSL/TLS décrypté

Dans cette étape, nous allons analyser le trafic SSL/TLS décrypté en utilisant les outils de filtrage et d'analyse de Wireshark. Ces outils sont essentiels pour extraire des informations significatives à partir de la grande quantité de données de trafic réseau.

  1. Tout d'abord, appliquons un filtre pour nous concentrer sur des parties spécifiques de l'échange de clés TLS (TLS handshake). L'échange de clés TLS est une étape initiale cruciale dans l'établissement d'une connexion sécurisée entre un client et un serveur. Au cours de ce processus, le client et le serveur échangent des informations pour convenir des algorithmes de chiffrement, des clés et d'autres paramètres de sécurité.

    Dans la barre de filtre (le champ de saisie de texte en haut de la fenêtre Wireshark), entrez l'expression suivante :

    tls.handshake.type == 1

    Cette expression de filtre est utilisée pour sélectionner les paquets en fonction du type d'échange de clés TLS. La valeur 1 correspond aux paquets Client Hello. Appuyez sur Enter pour appliquer le filtre. Après avoir appliqué le filtre, Wireshark n'affichera que les paquets Client Hello, qui sont les premiers paquets envoyés par le client pour initier l'échange de clés TLS.

    Vous devriez maintenant voir uniquement les paquets correspondant à ce filtre. En réduisant le nombre de paquets affichés, il devient plus facile de vous concentrer sur le début de la connexion TLS et de comprendre comment la communication sécurisée commence.

    Pour afficher le contenu décrypté, suivons le flux TLS. Cliquez avec le bouton droit sur n'importe quel paquet dans la liste filtrée et sélectionnez Follow > TLS Stream dans le menu contextuel. Cette action demande à Wireshark de reconstituer l'ensemble de la session TLS en fonction du paquet sélectionné et d'afficher les données décryptées.

    Une nouvelle fenêtre s'ouvrira affichant les données décryptées. Ces données représentent la communication HTTP réelle qui a été transmise sur la connexion sécurisée. Grâce aux clés de session TLS stockées dans notre fichier journal de pré - master secret, Wireshark peut décrypter et afficher ces données qui seraient normalement chiffrées.

    Les données décryptées montreront à la fois la requête HTTP envoyée par notre script Python et la réponse HTTP du serveur. Vous pouvez voir les en - têtes, les types de contenu et le contenu HTML réel de la réponse. Cette information est précieuse pour comprendre la communication entre le client et le serveur, par exemple quelles données sont demandées et quelles données sont retournées.

  2. Sauvegardons ces données décryptées pour une analyse plus approfondie. Dans la fenêtre "Follow TLS Stream", cliquez sur le bouton Save as.... Sauvegarder les données vous permet de les revoir plus tard, de les partager avec d'autres personnes ou d'effectuer des analyses supplémentaires.

    Dans la boîte de dialogue d'enregistrement, accédez à /home/labex/project/, nommez le fichier decrypted_data.txt et cliquez sur Save.

    Save Decrypted Data

    Vous avez maintenant capturé, décrypté et enregistré avec succès le trafic TLS pour analyse. Le fichier de données décryptées contient la communication HTTP complète qui était initialement chiffrée avec TLS.

    Vous pouvez fermer la fenêtre "Follow TLS Stream" une fois que vous avez terminé. Si vous souhaitez explorer plus loin, essayez différents filtres Wireshark pour examiner d'autres aspects du trafic capturé. Par exemple, le filtre http vous montrera uniquement le trafic HTTP après décryptage. De cette façon, vous pouvez approfondir l'étude des types spécifiques de données transmises sur le réseau.

Résumé

Dans ce laboratoire (lab), vous avez appris à décrypter le trafic SSL/TLS à l'aide de Wireshark. Vous avez créé un fichier journal de pré - master secret pour stocker les clés de session TLS, configuré Wireshark pour utiliser ce fichier pour le décryptage et généré du trafic SSL/TLS avec un script Python. Ensuite, vous avez analysé le trafic décrypté en utilisant les fonctionnalités de filtrage et de suivi de flux de Wireshark.

Ces compétences sont cruciales pour la résolution de problèmes réseau, l'analyse de sécurité et la compréhension des communications sécurisées. Le décryptage et l'analyse du trafic TLS dans un environnement contrôlé vous permettent de mieux comprendre les protocoles réseau et de détecter les problèmes dans les communications chiffrées. N'oubliez pas que, dans les situations réelles, le décryptage du trafic TLS nécessite une autorisation appropriée et ne doit être effectué que sur des réseaux autorisés pour éviter de violer les lois sur la vie privée.