Comment décrypter SSL avec Wireshark – Guide de décryptage HTTPS
Si vous avez déjà essayé d’utiliser Wireshark pour surveiller le trafic Web, vous avez probablement rencontré un problème : il s’agit en grande partie de transmissions cryptées. En fait, la plupart des sites utilisent le cryptage SSL ou Transport Layer Security (TLS) pour assurer la sécurité de leurs utilisateurs.
Le cryptage omniprésent est une bonne chose si vous faites des achats sur Amazon, mais c'est vraiment pénible lorsque vous essayez d'administrer un réseau. Voici comment décrypter SSL avec Wireshark.
Dans cet article, nous couvrons :
- Que sont Wireshark et le cryptage SSL ?
- Utilisation d'une clé secrète pré-maître pour déchiffrer SSL et TLS
- Utiliser une clé RSA pour décrypter SSL
- Comment Wireshark facilite le décryptage du trafic SSL
- FAQ sur Wireshark Décrypter SSL
Que sont Wireshark et le cryptage SSL ?
Wireshark est un analyseur de trafic réseau ; il s'agit d'un utilitaire principal que de nombreux administrateurs utilisent pour résoudre les problèmes sur leurs réseaux. Plus précisément, il capture les trames – les éléments constitutifs des paquets – et vous permet de les trier et de les analyser.
Grâce à Wireshark, vous pouvez examiner le trafic circulant sur votre réseau et le disséquer, en jetant un coup d'œil à l'intérieur des trames des données brutes.
SSL est un protocole de cryptage qui fonctionne sur la couche Transport du modèle OSI. Il utilise diverses méthodes de cryptage pour sécuriser les données lors de leur déplacement sur les réseaux. Remarque : dans ce guide, je ferai principalement référence à SSL comme terme fourre-tout pour SSL et TLS, son successeur.
Le cryptage SSL rend l'utilisation de Wireshark plus difficile car il empêche les administrateurs de visualiser les données contenues dans chaque paquet concerné. Lorsque Wireshark est correctement configuré, il peut déchiffrer SSL et restaurer votre capacité à afficher les données brutes.
Voir également: Alternatives Wireshark pour le reniflage de paquets
Utilisation d'une clé secrète pré-maître pour déchiffrer SSL et TLS
Utilisant un clé secrète pré-maître décrypter SSL dans Wireshark est la méthode recommandée.
UN clé secrète pré-maître est généré par le client et utilisé par le serveur pour dériver une clé principale qui crypte le trafic de session. Il s’agit de la norme actuelle en matière de cryptographie et est généralement implémentée via Diffie-Hellman .
Votre navigateur peut être configuré pour enregistrer la clé secrète pré-maître, que Wireshark utilise pour décrypter les sessions SSL et TLS.
Voici les étapes pour déchiffrer SSL et TLS avec une clé secrète pré-maître :
- Définir une variable d'environnement
- Lancez votre navigateur
- Configurer Wireshark
- Capturez et décryptez les clés de session
Lorsque vous aurez terminé, vous pourrez décrypter les sessions SSL et TLS dans Wireshark sans avoir besoin d'accéder au serveur cible.
Définir une variable d'environnement Windows
Dans Systèmes Windows , vous devrez définir une variable d'environnement à l'aide du Réglages avancés du système utilitaire. Cette variable, nommée SSLKEYLOGFILE , contient un chemin où sont stockées les clés secrètes pré-maîtres.
Commencez par faire un clic droit sur Mon ordinateur , et en sélectionnant Propriétés du menu. Le Système le menu s’ouvrira.
Ensuite, cliquez sur Réglages avancés du système sur la liste à gauche. Le Propriétés du système la fenêtre s’ouvrira.
Sur le Avancé onglet, cliquez sur l'onglet Variables d'environnement bouton.
Clique le Nouveau… bouton sous Variables utilisateur . Vous pouvez également créer la variable sous Variables système si vous souhaitez enregistrer les clés SSL pour chaque utilisateur du système, mais je préfère les limiter à mon profil.
Sous Nom de variable , tapez ce qui suit :
|_+_|Dans le Valeur variable , saisissez un chemin d’accès au fichier journal. Vous pouvez également cliquer sur le Parcourir le fichier… et spécifiez le chemin à l'aide du sélecteur de fichiers.
À noter que si vous créez ceci en tant que variable d'environnement à l'échelle du système, vous devrez utiliser des caractères génériques appropriés ou stocker le fichier dans un endroit accessible à tous les utilisateurs. Par exemple, vous pourriez choisir %USERPROFILE%App Datassl-keys.log ou C:ssl-keys.log .
Une fois que vous avez terminé, cliquez sur D'ACCORD et passez à la série d'étapes suivante.
Définir une variable d'environnement Linux ou Mac
Dans Linux et Mac , vous devrez définir le SSLKEYLOGFILE variable d'environnement utilisant nano . Dans Linux , la variable est stockée dans ~/.bashrc . Sur le Mac , vous allez créer la variable dans le fichier ~/.MacOSX/environnement
Ouvrez un terminal et utilisez cette commande sous Linux :
|_+_|Ouvrir Rampe de lancement , Cliquez sur Autre , et lancez un terminal pour exécutez cette commande sous Mac OSX :
|_+_|Les étapes suivantes sont les mêmes pour les deux systèmes d'exploitation.
A la fin du fichier, ajoutez cette ligne :
|_+_|Presse Ctrl+X,Y pour enregistrer vos modifications.
Fermez la fenêtre du terminal et ouvrez-en une autre pour définir la variable, puis tapez ce qui suit pour confirmer qu'elle a été définie avec succès :
|_+_|Après avoir exécuté la commande, vous devriez voir un résultat similaire à l’image ci-dessus. /Utilisateurs/comparitech/.ssl-key.log est le chemin complet vers mon journal de clé pré-maître SSL. Remarque : vous souhaiterez prendre note de la vôtre, qui sera différente, pour entrer dans Wireshark.
Maintenant que la variable a été définie, vous pouvez passer à la série d'étapes suivante.
Lancez votre navigateur et recherchez le fichier journal
Avant de lancer Wireshark et de le configurer pour déchiffrer SSL à l'aide d'une clé pré-maître, vous devez démarrer votre navigateur et confirmer que le fichier journal est utilisé.
Afin de remplir le journal, il est important que vous visitiez un site sur lequel SSL est activé. J'utilise mon propre serveur Apache pour les tests, mais n'importe quel site fonctionnera. L'un des plus grands avantages de l'utilisation d'une clé partagée pré-master est vous n'avez pas besoin d'accéder au serveur pour décrypter SSL.
Après avoir visité un site Web compatible SSL, vérifiez les données du fichier. Dans les fenêtres , vous pouvez utiliser Bloc-notes . Dans Linux ou Mac , utilisez la commande suivante :
|_+_|Sur n’importe quel système d’exploitation, votre fichier devrait ressembler au mien ci-dessus. Après avoir confirmé que votre navigateur enregistre les clés pré-master à l'emplacement que vous avez sélectionné, vous pouvez configurer Wireshark pour qu'il utilise ces clés pour déchiffrer SSL.
Configurer Wireshark pour décrypter SSL
Une fois que votre navigateur enregistre les clés principales, il est temps de configurer Wireshark pour utiliser ces journaux pour déchiffrer SSL.
Ouvrez Wireshark et cliquez sur Modifier , alors Préférences . Le Préférences La boîte de dialogue s'ouvrira et sur la gauche, vous verrez une liste d'éléments. Développer Protocoles , faites défiler vers le bas, puis cliquez sur SSL .
Dans la liste des options du protocole SSL, vous verrez une entrée pour Nom du fichier journal (Pré)-Master-Secret . Accédez au fichier journal que vous avez configuré à l’étape précédente ou collez simplement le chemin.
Lorsque vous avez fini de régler le Nom du fichier journal (Pré)-Master-Secret , Cliquez sur D'ACCORD et retournez à Wireshark. Vous êtes prêt à passer à autre chose.
Article similaire: Comment utiliser Wireshark
Capturez la session et décryptez SSL
La dernière étape consiste à capturer une session de test et à s'assurer que Wireshark déchiffre SSL avec succès.
- Démarrez une session de capture non filtrée, réduisez-la et ouvrez votre navigateur.
- Visitez un site sécurisé afin de générer des données et définissez éventuellement un filtre d'affichage de « ssl » pour minimiser le bruit de la session.
- Cliquez sur n'importe quel cadre contenant des données cryptées.
Dans mon cas, j'en sélectionnerai un qui contient du trafic HTTP avec un encodage texte/HTML, car j'aimerais voir le code source que le serveur Web envoie à mon navigateur. Mais toutes les transmissions cryptées utilisant un secret pré-maître ou une clé privée fonctionneront avec cette méthode. Cela inclut toutes les données utilisant Perfect Forward Encryption (PFE) via Diffie-Hellman ou des échanges de clés comparables.
Une fois que vous avez sélectionné une trame de données cryptées, regardez le Vue des octets des paquets , et plus particulièrement les onglets sous la vue. Vous devriez voir une entrée pour SSL décrypté des données, entre autres.
Vous remarquerez que ma session semble toujours pleine de déchets et qu'aucun code HTML n'est visible. C'est parce que mon serveur Web (et la plupart des serveurs Apache) utilise la compression GZIP par défaut.
Lorsque vous cliquez sur le Corps d'entité non compressé Dans l'onglet, qui n'apparaît dans ce cas qu'avec le décryptage SSL activé, vous pouvez visualiser le code source du site. Par exemple, voici l’élément titre de la page Apache par défaut en texte brut.
Utiliser une clé RSA pour décrypter SSL
Vous avez peut-être remarqué plus tôt que Wireshark dispose d'un champ qui vous permet de télécharger vos clés RSA et de les utiliser pour déchiffrer SSL. En pratique, Le déchiffrement de la clé RSA est obsolète .
La raison pour laquelle le déchiffrement SSL avec une clé RSA n’est plus couramment utilisé est que Perfect Forward Encryption (PFE) l’a rendu obsolète. Les sessions négociées avec Diffie-Hellman n'utilisent pas directement la clé RSA ; au lieu de cela, ils génèrent une clé unique, stockée uniquement dans la RAM, qui est chiffrée à l'aide de la clé sur le disque.
Si vous utilisiez auparavant une clé RSA pour décoder le trafic et qu'elle a cessé de fonctionner, vous pouvez confirmer que la machine cible utilise les échanges Diffie-Hellman en activant la journalisation SSL.
Pour activer la journalisation, cliquez sur Modifier dans le menu de la barre d'outils et sélectionnez Préférences . Élargir la Protocoles élément de menu sur la gauche et faites défiler vers le bas jusqu'à SSL . De là, vous pouvez cliquer sur le Parcourir et définissez l'emplacement de votre journal SSL.
Une fois l'emplacement défini, toutes les interactions SSL seront enregistrées dans le fichier spécifié.
Capturez une session avec votre hôte compatible SSL, puis vérifiez les journaux. Plus précisément, vous devez faire défiler jusqu'à ce que vous trouviez la trame sur laquelle la négociation TLS a été négociée. Il est probable que vous verrez une entrée DHE révélatrice dans la chaîne de chiffrement.
Cela signifie que les échanges de clés Diffie-Hellman sont activés. Dans mon cas, Apache utilise spécifiquement Diffie-Hellman avec des clés à courbe elliptique, indiquées par la chaîne MÊME .
Faites défiler un peu plus loin et vous verrez probablement que le secret principal est introuvable.
Si vos journaux ressemblent à cela et que vous ne pouvez pas déchiffrer les données à l'aide d'une clé RSA, vous n'avez d'autre choix que de passer à la méthode secrète pré-maître ci-dessus.
Puisque le PFE devient une pratique courante, avec TLSv1.3 force probablement le problème , le simple déchiffrement de clé RSA est obsolète et ne doit pas être utilisé.
Wireshark facilite le décryptage du trafic SSL
J'aime vraiment la façon dont Wireshark gère le processus de décryptage SSL. La cryptographie est complexe et les normes évoluent constamment pour être plus sécurisée. Mais une fois Wireshark et votre environnement correctement configurés, il ne vous reste plus qu'à changer d'onglet pour afficher les données décryptées. Ce n’est pas plus simple que ça.
En rapport: Résoudre le problème de démarrage Common WireShark « Aucune interface trouvée »
FAQ sur le décryptage SSL de Wireshark s
Comment lire les paquets TLS dans Wireshark ?
Suivez ces étapes pour lire les paquets TLS dans Wireshark :
- Démarrez une session de capture de paquets dans Wireshark.
- Dans la barre de menu supérieure, cliquez sur Modifier , puis sélectionnez Préférences dans le menu déroulant.
- Dans la fenêtre Préférences, développez le Protocoles nœud dans l’arborescence du menu de gauche.
- Cliquez sur SSL. Le panneau principal de la fenêtre affichera les paramètres du protocole.
- Entrez un nom de fichier et sélectionnez un emplacement pour Fichier de débogage SSL .
- Clique dessus Liste des clés RSA puis sélectionnez Modifier et puis Nouveau .
- Remplissez les champs d'informations dans la fenêtre contextuelle : adresse IP , Port , Protocole (qui sera HTTPS), Fichier clé , et Mot de passe . Presse D'ACCORD .
- Cliquez sur D'ACCORD dans l'écran Préférences.
Le champ de données au bas de la page principale de Wireshark affichera le contenu déchiffré du paquet.
Comment fonctionne une négociation SSL bidirectionnelle ?
La négociation SSL bidirectionnelle authentifie à la fois le serveur et le client. Voici les étapes qui sont effectuées dans ce processus :
- Bonjour client : envoyé du client au serveur et inclut ses suites de chiffrement prises en charge et les compatibilités des versions TLS.
- Serveur bonjour : envoyé du serveur au client en réponse. Il contient un lien vers le certificat public du serveur et une demande de retour du client.
- Le navigateur valide le certificat du serveur et si tout va bien, envoie un lien vers son propre certificat.
- Le serveur vérifie le certificat du client. Si tout va bien, l'établissement de la session continue.
Est-il possible de décrypter le trafic SSL/TLS détecté passivement ?
Oui. Cependant, vous aurez toujours besoin de la clé RSA pour décrypter le trafic. Cela pourrait être acquis par des méthodes légitimes et avec autorisation ou pourrait être détourné de la source du trafic grâce à une stratégie de « l'homme du milieu ».