¿Qué herramientas se pueden usar para MitM en un entorno controlado para descifrar + retransmitir HTTPS sobre el tráfico MTLS con SNI?

5

Tengo un entorno totalmente controlado (enrutamiento, DNS, CA, claves privadas, certificados) entre dos dispositivos cerrados que se comunican a través de HTTPS. El tráfico se realiza a través de un canal autenticado TLS mutuo, utilizando la Indicación del nombre del servidor, así como las teclas de curva elíptica.

Necesito una herramienta (o un conjunto de herramientas) que pueda usar mis claves y certificados privados existentes del cliente y del servidor, así como capaz de hacer SNI, para "personificar" el servidor hacia el cliente, copiar / volcar el tráfico descifrado, luego retransmita el tráfico como si viniera del cliente y viceversa.

No puedo hacer mucho contra los dispositivos en sí (como excluir las claves EC / DH, para permitir el descifrado simple del tráfico en una etapa posterior) pero tengo todos los certificados y claves privadas y puedo enviar manualmente el tráfico a donde Quiero, no necesito trucos de proxy particulares.

Tuve un éxito moderado con openssl s_client / s_server + tee en una tubería, pero esto parece romperse después de una sola conexión.

Otras herramientas que probé no pueden manejar SNI, o insistir en "falsificar" certificados, que realmente no necesito ni quiero (especialmente si los certificados falsos no cumplen con los requisitos de mi aplicación) y generalmente son más generales propósito que mis necesidades.

No estoy buscando un dispositivo o software de calidad comercial, y no necesito la posible solución para generar certificados. Los tengo, así como las claves privadas.

Necesito algo que pueda escuchar en tcp / 443 con la PK / cert / chain provista y establecer la sesión TLS, almacenar / volcar los datos no cifrados y luego reproducir el contenido recibido del cliente hacia el servidor, en otra sesión TLS utilizando SNI y el cliente PK / cert / chain proporcionado lo más parecido posible al original. Debe poder manejar y transmitir datos de respuesta también en la misma sesión TLS, así como múltiples conexiones (como en serie, no paralelas). Necesito capturar el tráfico estrictamente entre las dos cajas conocidas.

    
pregunta Zoltán Kelemen 14.01.2018 - 17:22
fuente

2 respuestas

5

Oh, está bien, ya que 1.7.8, Nginx admite proxy_ssl_certificate [_key] directives que hacen exactamente lo que necesita. Configure un proxy inverso con el servidor y las rutas de acceso de clave puestas en las directivas ssl_certificate y ssl_certificate_key respectivamente, y agregue el certificado y la clave del cliente de manera similar a través de proxy_ssl_certificate y proxy_ssl_certificate_key .

No olvide habilitar la autenticación de certificados de clientes mediante la directiva ssl_client_certificate . Su certificado de CA del cliente se debe utilizar para eso. Aquí hay un tutorial simple .

SNI se admite especificando diferentes directivas server en el lado del cliente, y agregando las correspondientes proxy_ssl_server_name directivas en el lado del proxy.

P.S. La diferencia entre esta pregunta y la que consideré un duplicado de esta es que no desea generar certificados de cliente sobre la marcha (que Nginx no puede hacer por usted de todos modos).

    
respondido por el ximaera 15.01.2018 - 04:16
fuente
-1

Sugeriría probar Apache con mod_proxy y mod_dumpio. Puede usar mod_headers para copiar sobre los encabezados de autenticación del cliente: vea aquí .

    
respondido por el Hector 14.01.2018 - 23:14
fuente

Lea otras preguntas en las etiquetas