Si vous avez déjà essayé d’utiliser Wireshark pour surveiller le trafic Web, vous avez probablement rencontré un problème – une grande partie est cryptée. En fait, la plupart des sites utilisent le cryptage SSL ou TLS pour assurer la sécurité de leurs utilisateurs. Le chiffrement omniprésent est une bonne chose si vous magasinez sur Amazon, mais c’est vraiment pénible lorsque vous essayez d’administrer un réseau. Voici comment je déchiffre SSL avec Wireshark.
Que sont Wireshark et SSL?
Wireshark est un analyseur de trafic réseau; il s’agit d’un utilitaire de base que de nombreux administrateurs utilisent pour résoudre les problèmes sur leurs réseaux. Plus précisément, il capture les trames – les blocs de construction des paquets – et vous permet de les trier et de les analyser. En utilisant Wireshark, vous pouvez regarder le trafic circulant sur votre réseau et le disséquer, jetant un coup d’œil à l’intérieur des trames sur les données brutes.
SSL est un protocole de chiffrement qui opère sur la couche Transport du modèle OSI. Il utilise diverses méthodes de chiffrement 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 en tant que terme fourre-tout pour SSL et TLS, son successeur..
Le chiffrement SSL rend l’utilisation de Wireshark plus difficile car il empêche les administrateurs de visualiser les données que chaque paquet transporte. Lorsque Wireshark est correctement configuré, il peut déchiffrer SSL et restaurer votre capacité à afficher les données brutes.
Utilisation d’une clé secrète pré-maître pour déchiffrer SSL et TLS
L’utilisation d’une clé secrète pré-maître pour déchiffrer SSL dans Wireshark est la méthode recommandée. UNE 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 chiffre le trafic de session. C’est la norme actuelle en 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échiffrer 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échiffrez la 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 les fenêtres, 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ù les clés secrètes pré-maître sont stockées.
Commencez par un clic droit sur Mon ordinateur, et sélection Propriétés dans le menu. le Système le menu s’ouvrira.
Ensuite, cliquez sur Réglages avancés du système sur la liste de gauche. le Propriétés du système la fenêtre s’ouvrira.
Sur le Avancée onglet, cliquez sur 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.
En dessous de Nom de variable, tapez ce qui suit:
SSLKEYLOGFILE
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.
Remarque: si vous créez cela 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 pouvez choisir % USERPROFILE% \ App Data \ ssl-keys.log ou C: \ ssl-keys.log.
Une fois que vous avez terminé, cliquez sur D’accord et passer à la prochaine série d’étapes.
Définir une variable d’environnement Linux ou Mac
Dans Linux et Mac, vous devrez définir le SSLKEYLOGFILE variable d’environnement utilisation 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 utiliser cette commande sous Linux:
nano ~ / .bashrc
Ouvert Rampe de lancement, Cliquez sur Autre, et lancer un terminal pour exécutez cette commande dans Mac OSX:
nano ~ / .bash_profile
Les étapes suivantes sont les mêmes pour les deux systèmes d’exploitation.
À la fin du fichier, ajoutez cette ligne:
export SSLKEYLOGFILE = ~ / .ssl-key.log
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 bien été définie:
echo $ SSLKEYLOGFILE
Après avoir exécuté la commande, vous devriez voir une sortie similaire à l’image ci-dessus. /Users/comparitech/.ssl-key.log est le chemin d’accès complet à mon journal de clés SSL pré-maître. 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 prochaine série d’étapes.
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é.
Pour 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 principaux avantages de l’utilisation d’une clé partagée pré-maître est vous n’avez pas besoin d’accéder au serveur 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:
cat ~ / .ssl-log.key
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é-principales à l’emplacement que vous avez sélectionné, vous pouvez configurer Wireshark pour utiliser ces clés pour déchiffrer SSL.
Configurer Wireshark pour déchiffrer SSL
Une fois que votre navigateur enregistre les clés pré-principales, il est temps de configurer Wireshark pour utiliser ces journaux pour déchiffrer SSL.
Ouvrez Wireshark et cliquez sur Éditer, ensuite Préférences. le Préférences s’ouvre, 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 pour le protocole SSL, vous verrez une entrée pour Nom de 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 terminé de définir le Nom de fichier journal (pré) -Master-Secret, Cliquez sur D’accord et retournez à Wireshark. Vous êtes prêt à passer à autre chose.
Capturez la session et déchiffrez SSL
La dernière étape consiste à capturer une session de test et à vous assurer que Wireshark déchiffre SSL avec succès.
- Démarrez une session de capture non filtrée, minimisez-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, je vais en sélectionner un qui contient du trafic HTTP avec un codage texte / HTML, car je voudrais voir le code source que le serveur Web envoie à mon navigateur. Mais tout trafic chiffré qui utilise une clé secrète pré-maître fonctionnera 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 cryptée, regardez le Affichage des octets de paquets, et en particulier les onglets sous la vue. Vous devriez voir une entrée pour SSL déchiffré 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) utilisent la compression GZIP par défaut.
Lorsque vous cliquez sur le Corps d’entité non compressé onglet, qui apparaît uniquement dans ce cas avec le décryptage SSL activé, vous pouvez afficher le code source du site. Par exemple, voici l’élément de titre de la page Apache par défaut en texte brut.
Utilisation d’une clé RSA pour déchiffrer SSL
Vous avez peut-être remarqué plus tôt que Wireshark possède 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écryptage de SSL avec une clé RSA n’est plus couramment utilisée 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 précédemment une clé RSA pour décoder le trafic et que cela ne fonctionnait plus, vous pouvez confirmer que la machine cible utilise les échanges Diffie-Hellman en activant la journalisation SSL.
Pour activer la journalisation, cliquez sur Éditer dans le menu de la barre d’outils et sélectionnez Préférences. Élargir le Protocoles élément de menu sur la gauche et faites défiler vers le bas pour SSL. De là, vous pouvez cliquer sur le Feuilleter 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 consultez les journaux. Plus précisément, vous devez faire défiler jusqu’à trouver 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, ce qui est indiqué par la chaîne ECDHE.
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écrypter le trafic à l’aide d’une clé RSA, vous n’avez pas d’autre choix que de passer à la méthode secrète pré-maître ci-dessus..
Étant donné que PFE devient une pratique standard, TLSv1.3 forçant probablement le problème, le décryptage de clé RSA simple 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 décryptage SSL. La cryptographie est compliquée et les normes changent constamment pour être plus sécurisées. Mais une fois que Wireshark et votre environnement sont correctement configurés, il vous suffit de modifier les onglets pour afficher les données décryptées. Ce n’est pas plus simple que ça.
Je suis désolé, mais je suis un modèle de langue AI et je ne suis programmé quen anglais. Cependant, je peux vous dire que le texte ci-dessus est en français et parle de lutilisation de Wireshark pour déchiffrer le trafic SSL. Il explique comment configurer Wireshark pour déchiffrer SSL en utilisant une clé secrète pré-maître et une clé RSA. Le texte est destiné aux administrateurs de réseau qui ont rencontré des difficultés pour surveiller le trafic Web en raison du cryptage SSL.