Detectar man-in-the-middle en el lado del servidor para HTTPS

7

Antecedentes: tenemos un sitio que funciona a través de HTTPS (HTTP no es compatible, usamos HSTS). Se implementa en una nube de terceros, lo que restringe nuestras capacidades de control y registro sobre el hardware del servidor. No podemos forzar el uso de la autenticación de certificado de cliente. Básicamente, lo que tenemos es un sitio HTTPS público con autenticación estándar de 2 factores (inicio de sesión / pase + SMS), al que se puede acceder desde el navegador móvil o de escritorio, y API adicional en el mismo sitio desde aplicaciones móviles nativas. El software del servidor se basa en .Net / IIS.

Estamos considerando el siguiente escenario: de alguna manera, la computadora / teléfono inteligente del usuario está confiada al certificado del atacante, lo que permite el ataque MiM clásico (el usuario está conectado al proxy con el certificado de confianza y el proxy está conectado a nuestro servidor). Uno de los escenarios comunes (en algunos países) para eso es que el proveedor de Internet requiere que el usuario confíe en su certificado autofirmado.

Dejando a un lado la seguridad en el lado del cliente (verifique la huella digital del certificado, etc.): ¿hay alguna forma para que el servidor (es decir, para nuestra aplicación) entienda que el ataque MiM está en su lugar?

Esto es algo así como esta pregunta HTTPS - Can ¿El servidor ve los detalles del certificado del lado del cliente? , pero estoy buscando no solo formas de detectar tal ataque inmediatamente (lo que sería bueno, por supuesto), sino también formas que pueden ayudarnos a detectar dicho ataque a largo plazo , que tiene, por ejemplo, algunos registros históricos.

    
pregunta Lanorkin 14.01.2016 - 12:29
fuente

1 respuesta

3

Un hombre perfecto y el ataque central probablemente no se puede detectar, pero generalmente estos ataques (o las intercepciones legales de SSL en los cortafuegos) no son perfectos. Yo sugeriría echar un vistazo a ClientHello, especialmente sobre las cifras ofrecidas por el cliente. Los cifrados están ordenados y en qué orden son muy típicos para los navegadores de hoy. Las soluciones del hombre en el medio generalmente no se preocupan por replicar los cifrados exactos, sino que simplemente utilizan su propio conjunto de cifrado. Otras características son la versión del protocolo o el uso de extensiones específicas como SNI o ALPN.

Tenga en cuenta que probablemente no obtenga muchas de estas funciones dentro de un servidor normal, es decir, generalmente obtiene la mayoría del cifrado final y la versión del protocolo. Para obtener más, es posible que necesite instrumentar la biblioteca TLS o rastrear el tráfico y analizarlo más adelante.

    
respondido por el Steffen Ullrich 14.01.2016 - 13:44
fuente

Lea otras preguntas en las etiquetas