Cómo captura Fiddler los paquetes https
Recientemente, basándome en la función de grabación de Fiddler, intenté capturar y procesar algunas interfaces. Un problema que tengo es que simplemente conectarme a Fiddler solo captura el protocolo HTTP, pero no se capturan las solicitudes de inicio de sesión críticas y otros protocolos HTTPS. Entonces, lograr que Fiddler capture los protocolos HTTPS y HTTP es solo un pequeño paso. La clave es comprender los principios del protocolo HTTPS y los principios del protocolo HTTPS de Fiddler Capture, y luego podrá comprender mejor cómo configurarlo. Este artículo consta principalmente de tres partes. La primera parte presenta brevemente los principios de HTTPS en términos sencillos. La segunda parte presenta el principio de que Fiddler capture el protocolo HTTPS basado en la primera parte. Finalmente, la tercera parte trata sobre cómo configurar Fiddler y Mobile para capturar el protocolo HTTPS.
En primer lugar, hablemos de HTTPS
Todos sabemos que HTTP no es un método de transmisión seguro, pero el protocolo HTTPS basado en el protocolo SSL es relativamente seguro. Actualmente, cada vez más empresas optan por utilizar el protocolo HTTPS para comunicarse con los usuarios, como Baidu y Google. HTTPS requiere que el cliente (navegador) y el servidor (sitio web) se den la mano antes de transmitir datos. Durante el proceso de protocolo de enlace, se establecerá la información de contraseña de ambas partes. Hay mucha información en Internet, parte de la cual es demasiado oscura y difícil de entender, especialmente algunos conocimientos de criptografía. Hice un arreglo simple, eliminé la compleja implementación subyacente y obtuve una comprensión macro de HTTPS desde la perspectiva de comprender el protocolo SSL. En resumen, HTTPS genera e intercambia claves de negociación a través de un algoritmo de cifrado asimétrico (como el algoritmo RSA) y luego utiliza las claves de negociación para una comunicación cifrada simétricamente en procesos de comunicación posteriores. El principio y el diagrama de flujo de la transmisión del protocolo HTTPS son los siguientes:
El principio de transmisión del protocolo HTTPS
A * * * tiene ocho pasos. Centrémonos en cada paso para ver específicamente cuál. sucede:
El primer paso: el cliente inicia una solicitud de texto sin formato: envía un conjunto de reglas de cifrado que admite y un número aleatorio (Random_C) al servidor.
Segundo paso, respuesta inicial del servidor: el servidor selecciona un conjunto de algoritmos de cifrado y algoritmos hash de la solicitud enviada por el cliente en función de las reglas de cifrado que admite, genera un número aleatorio y convierte su información de identidad. a Se envía un certificado (CA) al navegador. El certificado de CA contiene información como la dirección del servidor, la clave pública de cifrado y la autoridad de certificación. En este punto, el servidor proporciona al cliente las reglas de cifrado seleccionadas, el certificado de CA y un número aleatorio (Random_S).
Paso 3, el cliente hace cuatro cosas después de recibir la respuesta inicial del servidor:
(1) Verificación del certificado: verificar la legitimidad del certificado (si la organización que emitió el el certificado es legítimo, si la URL contenida en el certificado es coherente con la dirección visitada, etc.).
(2) Generación de contraseña: el navegador generará una cadena de contraseñas aleatorias (Pre_master) y utilizará la dirección pública en el certificado de CA (enc_pre_master). La clave se cifra y se transmite al servidor.
(3) Calcular la clave de negociación:
En este momento, el cliente ha obtenido toda la información necesaria para calcular la clave de negociación: dos números aleatorios en texto plano Random_C y Random_S y el suyo propio. cálculo Se genera el pre-master y se calcula la clave de negociación enc_key.
enc_key=Fuc(random_C, random_S, Pre-Master)
(4) Generar información de protocolo de enlace: use el hash acordado para calcular el mensaje de protocolo de enlace, use la clave de negociación enc_key y el El algoritmo acordado cifra los mensajes.
Paso 4, el cliente envía los datos generados en el paso 3 al servidor:
Hay tres datos a enviar:
(1) Utilice la clave pública Contraseña de número aleatorio del servidor cifrado enc_pre_master.
(2) La notificación enviada por el cliente al servidor dice "En el futuro, todos usaremos el algoritmo acordado y la clave negociada para comunicarnos".
(3) La información del protocolo de enlace generada por el cifrado del cliente.
En el quinto paso, el servidor debe hacer las siguientes cuatro cosas para recibir los datos enviados por el cliente: (1) Descifrado de clave privada: descifre con su propia clave privada y extraiga la contraseña Pre_master de el enc_pre_master recibido.
(2) Cálculo de la clave de negociación: en este momento, el servidor ha obtenido toda la información necesaria para calcular la clave de negociación: dos números aleatorios en texto plano Random_C y Random_S, así como el Pre-master, y calculó la clave de negociación clave enc_key.
enc_key=Fuc(random_C, random_S, Pre-Master)
(3) Descifrar el mensaje de protocolo de enlace: utilice la clave de negociación enc_key para descifrar el mensaje de protocolo de enlace enviado por el cliente y verificar ¿El HASH es consistente con lo que envió el cliente?
(4) Genere un mensaje de protocolo de enlace, cifre el mensaje de protocolo de enlace utilizando la clave negociada enc_key y el algoritmo acordado, y envíelo al cliente.
Paso 6, el servidor envía los datos generados en el paso 5 al cliente:
Hay dos tipos de datos que se enviarán aquí:
(1 ) El servidor envía una notificación al cliente: "Escúchelo, utilizaremos el algoritmo acordado y la clave de negociación para comunicarnos en el futuro".
(2) El servidor cifra la información del protocolo de enlace generada.
En el séptimo paso, el cliente obtiene la información del protocolo de enlace, la descifra y el protocolo de enlace finaliza.
El cliente descifra y calcula el hash del mensaje de protocolo de enlace. Si coincide con el hash enviado por el servidor, el proceso de protocolo de enlace finaliza.
Paso 8, comunicación cifrada normal.
Una vez que el protocolo de enlace sea exitoso, todos los datos de comunicación se cifrarán y descifrarán mediante la clave enc_key previamente negociada y el algoritmo acordado.
Aquí, el cliente y el servidor se envían mensajes de protocolo de enlace cifrados entre sí y los verifican. El objetivo es garantizar que ambas partes obtengan contraseñas coherentes y puedan cifrar y descifrar datos con normalidad, como prueba para la posterior transmisión de datos reales. Además, los algoritmos de cifrado y hash comúnmente utilizados de HTTPS son: Algoritmo de cifrado asimétrico: RSA, DSA/DSS Algoritmo de cifrado simétrico: AES, RC4, Algoritmo 3DESHASH: MD5, SHA1, SHA256, entre los cuales se utiliza el algoritmo de cifrado asimétrico para generar apretón de manos de cifrado La contraseña, el algoritmo de cifrado simétrico se utiliza para cifrar los datos transmitidos reales y el algoritmo hash se utiliza para verificar la integridad de los datos. Dado que la contraseña generada por el navegador es la clave para cifrar todos los datos, se cifra mediante un algoritmo de cifrado asimétrico durante la transmisión. Los algoritmos de cifrado asimétrico generarán una clave pública y una clave privada. La clave pública solo se puede usar para cifrar datos, por lo que se puede transmitir a voluntad, mientras que la clave privada del servidor se usa para descifrar datos, por lo que el servidor mantendrá su propia clave privada para evitar fugas.
En segundo lugar, Fiddler captura el principio del protocolo HTTPS
Como todos sabemos, Fiddler es una buena herramienta proxy que puede capturar solicitudes de protocolo para depuración. El principio y la configuración de Fiddler que captura el protocolo HTTP son relativamente simples. Con una pequeña configuración de Fiddler y el cliente, Fiddler puede obtener fácilmente solicitudes HTTP. Sin embargo, debido a las particularidades del protocolo HTTPS, para configurar aún más Fiddler, primero debemos comprender el principio de captura del protocolo HTTPS por parte de Fiddler para comprender mejor cómo configurar Fiddler. Fiddler en sí es una herramienta de proxy de protocolo. En el diagrama HTTPS de la sección anterior, Fiddler obtiene todos los procesos de comunicación entre el cliente y el servidor, como se muestra en la siguiente figura:
Fiddler captura el diagrama del protocolo HTTPS
Vemos que Fiddler aprovecha principalmente el protocolo HTTPS a través de los siguientes pasos:
En el primer paso, Fiddler intercepta la solicitud HTTPS enviada por el cliente al servidor, y Fiddler pretende ser el cliente y envía una solicitud de protocolo de enlace al servidor.
En el segundo paso, el servidor devuelve la respuesta. Fiddler obtiene el certificado de CA del servidor, lo descifra con la clave pública del certificado raíz, verifica la firma de datos del servidor y obtiene la clave pública del certificado de CA del servidor. Luego, Fiddler falsificó su propio certificado de CA y lo pasó al navegador del cliente como certificado del servidor.
El tercer paso es igual a la operación del cliente en el proceso ordinario.
El cliente verifica el certificado en función de los datos devueltos, genera la contraseña Pre_master, la cifra con la clave pública del certificado falsificada por Fiddler y genera la clave simétrica enc_key para la comunicación HTTPS.
En el cuarto paso, el cliente envía información importante al servidor, que es interceptada por Fiddler. Fiddler utiliza la clave privada de su certificado falsificado para descifrar el texto cifrado interceptado, obtener y calcular la clave simétrica enc_key para la comunicación HTTPS. Fiddler transmite la clave simétrica al servidor cifrándola con la clave pública del certificado del servidor.
El quinto paso es el mismo que la operación del servidor en el proceso ordinario. El servidor utiliza la clave privada para desbloquear y establecer confianza, luego envía el mensaje de protocolo de enlace cifrado al cliente.
Paso 6: Fiddler intercepta el texto cifrado enviado por el servidor, lo descifra con la clave simétrica, luego lo cifra con la clave privada de su certificado falsificado y lo envía al cliente.
Paso 7: Después de que el cliente obtiene la información cifrada, utiliza la clave pública para descifrarla y verificar el hash. Cuando el proceso de protocolo de enlace se completa oficialmente, se establece la "confianza" entre el cliente y el servidor.
¿Cómo actúa Fiddler como tercero entre el servidor y el cliente durante la comunicación cifrada normal?
Servidor->Cliente: Fiddler recibe el texto cifrado enviado por el servidor, lo descifra con una clave simétrica y obtiene el texto sin formato enviado por el servidor. Cifre nuevamente y envíe al cliente.
Cliente->Servidor: El cliente cifra con una clave simétrica, Fiddler la intercepta y la descifra para obtener el texto plano. Cifrelo nuevamente y envíelo al servidor. Debido a que Fiddler siempre utiliza la clave simétrica enc_key para la comunicación, la información es transparente para él durante todo el proceso de comunicación HTTPS.
Como se puede ver en lo anterior, la clave para la captura exitosa del protocolo HTTPS por parte de Fiddler es el certificado raíz (específicamente, puede ser Google. Es el punto de partida de una cadena de confianza y también el). Certificado de CA falsificado por Fiddler para ganarse la confianza del cliente y la clave del servidor.
A continuación, veamos cómo configurar Fiddler para obtener el protocolo HTTPS.
En tercer lugar, Fiddler comprende los antecedentes de HTTPS
Tenga en cuenta que las siguientes operaciones requieren que el teléfono móvil ya pueda conectarse a Fiddler, por lo que el proceso de configuración en esta parte es relativamente simple, por lo que No entraré en detalles. Consulte: Cómo conectar su teléfono a Fiddler.
¿Cómo procedo a configurar Fiddler para capturar el protocolo HTTPS?
(1) Primero configure Fiddler: abra la barra de herramientas->Herramientas->Opciones de Fiddler->HTTPS
Configure Fiddler.
Seleccione Capturar conexión HTTPS, porque queremos usar Fiddler para obtener solicitudes HTTPS enviadas por el cliente móvil, así que seleccione Solo desde clientes remotos en el menú desplegable del medio. Marque Ignorar errores de certificado del servidor a continuación.
(2) Luego, instale el certificado Fiddler en su teléfono.
Este paso también es la clave para obtener la solicitud HTTPS que analizamos anteriormente.
Los pasos son sencillos. Abra el navegador móvil, ingrese la IP y el puerto del servidor proxy en la dirección del navegador y verá una página proporcionada por Fiddler.
Luego haga clic en el certificado FiddlerRoot en la parte inferior. En este punto, haga clic en Aceptar para instalar y descargar el certificado de Fiddler.
Una vez completada la descarga y la instalación, utilizamos el cliente móvil o el navegador para enviar una solicitud HTTPS, y Fiddler puede interceptarla, como si interceptara una solicitud HTTP normal.
Lo anterior es una breve introducción a los principios y la configuración de HTTPS y cómo Fiddler obtiene el protocolo HTTPS. Podemos ver que Fiddler intercepta uniformemente HTTP y protocolos HTTPS complejos.