Inspecter le trafic TLS avec Wireshark (décrypter HTTPS)

Lors du dépannage, il peut être très utile de voir les connexions SSL cryptées afin de pouvoir inspecter les messages qu'elles contiennent. Il existe un moyen relativement simple de le faire avec Wireshark.

Veuillez noter que TLS est conçu pour transmettre des données de manière confidentielle. Si la sécurité des données assurée par TLS est compromise, il est possible d'obtenir des informations confidentielles sans autorisation. Les instructions suivantes sont uniquement destinées à des fins d'apprentissage dans des environnements de test où aucune information confidentielle n'est transmise.

Le trafic de données peut être enregistré sur le serveur ou sur le client qui se connecte. Les deux procédures sont décrites ci-dessous.

Il n'est pas forcément nécessaire d'installer Wireshark sur ces systèmes, car il est possible d'évaluer le trafic avec les moyens de bord de Windows et de le convertir ensuite dans un format compatible avec Wireshark pour l'analyse sur un ordinateur de technicien. Voir l'article „Analyser les problèmes de réseau avec Wireshark sans devoir installer de logiciel sur des systèmes de production„ .

Décryptage du trafic TLS sur le client

Il est très pratique d'enregistrer le trafic de données sur le client, car une connexion directe est établie avec la clé (pré)maître et Wireshark, ce qui permet d'enregistrer „en direct“. De plus, cette méthode est „peu invasive“, il n'est pas nécessaire de procéder à des modifications à l'échelle du système.

Malheureusement, cette méthode ne fonctionne qu'avec les navigateurs courants.

Connaissez-vous TameMyCerts? TameMyCerts est un add-on pour l'autorité de certification Microsoft (Active Directory Certificate Services). Il étend la fonction de l'autorité de certification et permet de Application de la réglementationIl s'agit d'un logiciel de gestion des certificats qui permet d'automatiser l'émission de certificats en toute sécurité. TameMyCerts est unique dans l'écosystème Microsoft, a déjà fait ses preuves dans d'innombrables entreprises du monde entier et est disponible sous une licence libre. Il peut téléchargé via GitHub et être utilisé gratuitement. Une maintenance professionnelle est également proposée.

Enregistrer le (pré)Master Secret

Mozilla Firefox, Google Chrome et Microsoft Edge (nom de code Anaheim), basé sur ce navigateur, sont capables de lire une variable d'environnement qui ordonne au navigateur de sauvegarder les secrets (pré)maîtres.

Pour cela, il faut d'abord ouvrir la boîte de dialogue des propriétés de l'ordinateur. Dans l'onglet „Advanced“, on clique sur „Environment Variables“.

Dans la boîte de dialogue suivante, une nouvelle variable d'environnement est créée pour l'utilisateur actuel en cliquant sur „New“.

La variable „SSLKEYLOGFILE“ est maintenant créée et le chemin dans lequel les clés doivent être enregistrées est défini.

Configurer Wireshark

Dans la boîte de dialogue des paramètres de Wireshark, on navigue vers „Protocols“ - „TLS“ et on dépose le chemin défini précédemment.

Le problème peut ensuite être reproduit. On devrait alors voir que les messages sont décryptés et donc que le trafic HTTP transmis dans la connexion SSL/TLS est visible.

Ne plus utiliser cette méthode : Décryptage à l'aide de la clé privée du serveur web

Auparavant, il était généralement aussi possible de décrypter le trafic SSL en indiquant la clé privée du serveur web.

Avec la généralisation de Perfect Forward Encryption (PFE), cela n'est plus possible, car PFE rend impossible le décryptage avec la clé du serveur. Il s'agit d'une fonctionnalité utile en termes de protection des données, mais qui nécessite désormais une nouvelle approche pour le dépannage.

Si l'on essaie quand même, on trouvera un message d'erreur correspondant dans le „TLS debug file“ de Wireshark :

ssl_decrypt_pre_master_secret: session uses Diffie-Hellman key exchange (cipher suite 0xC030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) and cannot be decrypted using a RSA private key file.
ssl_generate_pre_master_secret: can't decrypt pre-master secret

S'il est vraiment nécessaire de décrypter le trafic TLS à l'aide de la clé privée du serveur web, nous décrivons ci-après comment désactiver le cryptage à chaud côté serveur.

Décryptage du trafic TLS sur le serveur (Microsoft IIS)

Le décryptage du trafic TLS sur le serveur est un peu plus complexe et nécessite des modifications profondes du système.

Dans ce qui suit, nous réduisons les paramètres de sécurité sur le serveur afin de pouvoir analyser le trafic de données. Cela ne devrait jamais être fait sur un système de production. Les modifications apportées doivent être annulées après l'analyse et la recherche d'erreurs.

Le processus se compose grosso modo des étapes suivantes :

  • Diffie Hellman Désactiver la procédure d'échange de clés
  • Demander et installer un certificat SSL avec clé exportable
  • Désactiver TLS 1.3
  • Enregistrer le trafic de données

Diffie Hellman Désactiver la procédure d'échange de clés

Afin de pouvoir décrypter le trafic TLS, nous devons désactiver toutes les procédures d'échange de clés qui permettent le cryptage à chaud. Cette opération est effectuée sur l'ensemble du système sur les systèmes Windows. Un outil facile à utiliser est IIS Crypto de la société Nartac Software.

Les procédures d'échange de clés „Diffie Hellman“ et „ECDH“ (Elliptic Curve Diffie Hellman) sont désactivées. Un redémarrage du système d'exploitation du serveur est ensuite nécessaire.

Demander et installer un certificat SSL avec clé exportable

Pour pouvoir décrypter le trafic de données, Wireshark doit disposer de la clé privée du serveur web. C'est pourquoi le serveur web IIS doit disposer d'un certificat TLS avec une clé privée exportable.

Si le certificat de serveur web actuellement installé ne dispose pas d'une clé exportable, il faut donc demander un nouveau certificat. Lors de la demande de certificat, il est possible d'indiquer que la clé privée doit être exportable.

Voir aussi à ce sujet l'article "Quel est le degré de sécurité du paramètre "Allow private key to be exported" dans les modèles de certificats ?„ .

Après la demande, le certificat de serveur web peut maintenant être exporté avec sa clé privée dans un fichier PFX.

Le nouveau certificat peut ensuite être configuré dans la liaison SSL sur le serveur web.

Désactiver TLS 1.3

Si Windows Server 2022 ou plus récent est utilisé, TLS 1.3 est pris en charge. Pour pouvoir décrypter le trafic de données, nous devons le désactiver pendant la durée de l'analyse. Cela se fait également dans la configuration de la liaison SSL pour notre site web.

Enregistrer le trafic de données

Le fichier PFX généré précédemment peut maintenant être intégré dans Wireshark. Cela se fait dans la boîte de dialogue des paramètres sous „Protocols“ - „TLS“.

Les adresses IP peuvent soit être indiquées explicitement, soit être appliquées à l'ensemble du trafic enregistré en indiquant „any“. Le protocole indiqué doit impérativement être „http“.

Le trafic de données TLS peut maintenant être enregistré. Le trafic de données devrait maintenant être visible en texte clair.

Liens complémentaires :

Sources externes

Les commentaires sont fermés.

fr_FRFrançais