Cómo obtener la clave privada utilizada para descifrar el tráfico HTTPS enviado y recibido desde mi propio navegador con wireshark

15

Estoy trabajando con un sitio web que envía solicitudes de API. Me gustaría escribir un cliente para realizar las solicitudes yo mismo, pero para hacerlo, primero tendría que ver la carga útil de la solicitud. Sin embargo, la conexión es segura y, por lo tanto, no puedo ver los datos en Wirehark de esa manera.

Descubrí que Wireshark es compatible con descifrado SSL: enlace

Sin embargo, no explica cómo se debe obtener o generar el archivo de clave privada, así que fui y miré a mi alrededor y encontré esta entrada de blog: enlace

Después de encontrar los paquetes apropiados como se muestra en las imágenes, exporté el certificado, pero a diferencia del desafío que estaban haciendo, la conexión establecida para mí utiliza RSA-2048 y no proporciona la factorización (supongo que los certificados reales sí lo hacen. no proporcionar eso, solo los de juegos y similares).

¿Es posible que descifre los paquetes HTTPS que se envían a sitios web de terceros? ¿Cómo generaría el archivo de clave requerido?

    
pregunta That Umbrella Guy 06.08.2014 - 23:10
fuente

5 respuestas

11

Wireshark es una herramienta muy poderosa. En la mayoría de los casos, las consolas de depuración (sin complemento) de los navegadores Firefox y Chrome deberían ser suficientes. Ambos tienen monitores de red que son la mayoría del tiempo suficiente. Tenga en cuenta que el monitor de Firefox aún no admite websockets.

Si aún desea utilizar wireshark, considere utilizar el archivo SSLKEYLOGFILE , más ayuda en this y this , y su página wiki de wireshark vinculada.

    
respondido por el user10008 06.08.2014 - 23:53
fuente
9

La clave privada es privada para el servidor web. Si no controla el servidor web, no debería poder obtenerlo. El certificado solo contiene la clave pública, por lo que no sería de mucha utilidad para usted. Podría intentar configurar un servidor proxy https y realizar un ataque de intermediario: en ese caso, tendría la clave de su servidor proxy.

¿Está intentando descifrar el protocolo de un software o normalmente está usando un navegador para acceder al servicio?

En el segundo caso, puedes usar el temporal para la sesión configurando Firefox para registrar la clave en un archivo, como lo sugirió el usuario 10008: busca SSLKEYLOGFILE en la página wiki que vinculaste, y los enlaces que el usuario10008 publicado.

    
respondido por el pqnet 07.08.2014 - 00:46
fuente
7

No puede , a menos que tenga control administrativo sobre el servidor web de terceros, o recupere el certificado a través de otros medios nefarios. SSL / TLS depende de que el certificado privado se mantenga privado.

Además, incluso si tuviera la clave privada del servidor, es posible que no pueda descifrar el tráfico de una sesión anterior si Perfecto Se utilizó el secreto hacia adelante . En ese caso, tendría que conocer la clave privada específica utilizada para su sesión única.

En principio, como usted es el cliente, tiene acceso a pre_master_secret, que es lo que necesita para obtener master_secret. El master_secret es la clave simétrica que realmente se utiliza para cifrar su sesión. Como dijo @pqnet, hay formas de utilizar esto en Firefox y Chrome , aunque depende del software del cliente, y no estoy seguro de Flash. Sin embargo, existen métodos más triviales para inspeccionar su propio tráfico HTTPS ...

Proxies locales

Ya que es su propia conexión, no hay ninguna razón por la que no pueda pasar el sitio web a través de un servidor proxy. Muchos servidores proxy están configurados para permitir el paso a través de SSL, lo que aún le brinda encriptación de extremo a extremo, pero puede interrumpir esto al terminar su conexión en el servidor proxy (si confía en el certificado SSL del proxy). El proxy establecerá su propia conexión SSL con el sitio web de terceros, transmitiendo el tráfico que envíe. Las empresas a veces usan el mismo método para inspeccionar el tráfico HTTPS saliente de sus usuarios (que es un problema). Esencialmente es un hombre en el medio.

Browser <---> Local Proxy <---> Website
          ^                 ^
        HTTPS             HTTPS

Los servidores proxy locales se ejecutan en su propia máquina y le permiten inspeccionar e incluso modificar el tráfico que pasa a través de ellos. Si un atacante intentara hacer esto, el usuario vería una advertencia en el navegador para mostrar que no ha recibido un certificado válido para el sitio web solicitado. Sin embargo, puede configurar su máquina para que confíe en el certificado de CA del proxy local.

Dos proxies locales populares que funcionan con el tráfico HTTPS son:

Burp Suite tiene compatibilidad con la serialización AMF . Parece que Fiddler tiene una extensión .

    
respondido por el itscooper 07.08.2014 - 14:11
fuente
1

SSL se creó para evitar que hagas exactamente lo que estás intentando. Necesita la clave para obtener acceso a comunicaciones privadas, con o sin Wireshark.

Varias respuestas sugieren un ataque Man-in-the-middle, que debería funcionar con mucho esfuerzo ... pero si se trata de una API pública, probablemente esté documentada. En particular, si se trata de una API de servicio web , puede obtener el WSDL del del navegador agregando la URL del punto final con ?WSDL . Esto le dará una lista completa de métodos y tipos de devolución.

    
respondido por el Mashmagar 02.04.2015 - 16:23
fuente
1

Al agregar al mensaje de itscooper, también puede usar el Proxy Charles con un certificado de confianza instalado en el dispositivo / navegador y permitir que Charles descifre SSL para que pueda leer el tráfico. Hago esto bastante cuando se prueban dispositivos que se comunican a través de SSL.

enlace

    
respondido por el JasonG 29.05.2015 - 20:22
fuente

Lea otras preguntas en las etiquetas