3 votes

Comment utiliser Charles comme proxy pour décrypter les messages HTTPS dans Wireshark ?

Je sais que je peux voir les données HTTPS décryptées directement dans Charles. Mais je veux voir les messages SSL de niveau inférieur dans Wireshark. J'ai donc configuré Charles comme proxy SSL, en utilisant mon propre certificat, et j'ai configuré la préférence du dissecteur SSL dans Wireshark avec l'adresse IP locale et ma clé privée.

enter image description hereenter image description hereenter image description here

Cependant, les messages dans Wireshark sont toujours cryptés.

enter image description here

Qu'est-ce que j'ai manqué ?

1voto

Safaci Points 11

J'ai rencontré exactement le même problème avec Charles Proxy en combinaison avec Wireshark.

Je pense que le problème est que Charles envoie deux (ou plus) certificats au client (vérifiez le message Certificat envoyé par le proxy au client). Wireshark utilise alors le premier certificat de cette liste, qui ne correspondra probablement pas à la clé privée que vous avez générée.

(C'est exactement ce que l'utilisateur dave_thompson_85 s'interroge dans les commentaires).

J'ai vérifié cela en extrayant le certificat de Wireshark. Notez que Wireshark extrait le certificat en format .der format. Ensuite, j'ai converti le .der -vers un fichier .pem certificat :

openssl x509 -inform DER -outform PEM -text -in wireshark_charles.der -out wireshark_charles.pem

J'ai également converti le .pem à un .crt mais ce n'est pas nécessaire.

Certificat envoyé par Charles au client

$ openssl x509 -noout -modulus -in wireshark_charles.crt | openssl md5

7a37a32781daf79402623c19ac9c8d7f

Certificat personnalisé mis en place dans Charles

$ openssl x509 -noout -modulus -in charles_custom.crt | openssl md5

62ea5ed061fca62efaaecbbb0226b08e

La clé privée correspondante

$ openssl rsa -noout -modulus -in charles_custom.pem | openssl md5

62ea5ed061fca62efaaecbbb0226b08e

Le modulus du certificat envoyé par Charles ne correspond pas au modulus de la clé privée générée par le client.

Et Wireshark enregistre aussi ce problème pendant la dissection SSL :

ssl_decrypt_pre_master_secret wrong pre_master_secret length (128, expected 48)
ssl_generate_pre_master_secret: can't decrypt pre master secret

Charles génère un nouveau certificat par hôte en utilisant le certificat personnalisé comme certificat racine. Malheureusement, je n'ai pas trouvé de moyen d'extraire cette clé privée par hôte générée par Charles. Je suggère d'utiliser Burp Proxy. Dans Burp, vous pouvez sélectionner le type de certificat que vous souhaitez utiliser.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X