¿cómo probar en qué versión de TLS se ha establecido una conexión https entre el servidor y una aplicación móvil (Android e iOS)? [cerrado]

1

Probando la vulnerabilidad de ataque de Poodle

También, podría oler el paquete de wireshark y ver la versión TLS. Quiero saber si hay alguna otra forma disponible por la que pueda probar esto.

    
pregunta DhruvKalaria 05.11.2014 - 07:21
fuente

1 respuesta

2

Detectar los paquetes con alguna aplicación como Wireshark revelaría la información; la versión del protocolo utilizada en una conexión se encuentra en el mensaje ServerHello (tenga cuidado de mirar el campo server_version , no la "versión" en los encabezados de los registros, que pueden no coincidir).

Si no desea utilizar un detector de paquetes, puede intentar modificar el DNS para que la solicitud de conexión de la aplicación no vaya al servidor deseado, sino a otra computadora que controle. En esa computadora, puede ejecutar un software de servidor pequeño que se enlaza al puerto 443 y recibe el mensaje ClientHello del cliente. Al mirar el contenido del mensaje, puede ver la versión máxima admitida por el cliente. Al enviarse el mensaje al servidor deseado, también puede obtener el ServerHello correspondiente y verlo por sí mismo. Sin embargo, utilizar un rastreador de paquetes aún sería más sencillo.

(La modificación del DNS debería poder realizarse en el punto de acceso WiFi, si el móvil se conecta a través de WiFi).

No puede obtener la información sin conectarse en algún momento al servidor real, ya sea desde la aplicación móvil o por su cuenta; La razón es que la versión del protocolo es el resultado de una negociación entre el cliente y el servidor. El cliente sugiere, pero el servidor elige.

Un problema adicional es ataques de degradación de protocolo . Es improbable que su cliente y servidor usen SSL 3.0 por defecto; requeriría que una o ambas implementaciones no conozcan TLS 1.0 (publicado en enero de 1999). Sin embargo, es concebible que SSL 3.0 pueda ser forzado sobre ellos. El método es simple: el atacante simplemente rompe (con los paquetes RST) cualquier conexión donde el cliente anuncie algo más nuevo que SSL 3.0 en su ClientHello . Algunos clientes volverán a intentarlo, restringiéndose voluntariamente a SSL 3.0. Si su aplicación es un cliente así, entonces el ataque de degradación del protocolo tiene éxito y las conexiones usarán SSL 3.0. El problema aquí es que no puede saber si un ataque de degradación de protocolo se aplica sin intentarlo: depende del comportamiento del cliente en circunstancias anormales, por lo que debe forzar las circunstancias anormales. Luego, regresa al plan sniffer, con una venganza.

Por otro lado, puede obtener la información que busca simplemente conectándose al servidor. Desde una computadora con OpenSSL (por ejemplo, cualquier sistema Linux o MacOS X), intente esto:

openssl s_client -ssl3 -connect theservername:443

reemplazando "theservername" con el nombre real del servidor (y posiblemente reemplazando el puerto si la conexión no usa el puerto estándar 443). OpenSSL intentará conectarse utilizando solo SSL 3.0 como protocolo compatible. Si el servidor rechaza la conexión de inmediato con un mensaje de alerta "protocol_version", sabrá que el servidor no acepta el uso de SSL 3.0 y, por lo tanto, la conexión entre la aplicación y el servidor nunca utilizará SSL 3.0. , independientemente de los ataques de degradación del protocolo.

Pero si el servidor acepta una conexión SSL 3.0, entonces todas las opciones siguen abiertas, y ya está intentando probar el ataque de degradación.

    
respondido por el Thomas Pornin 05.11.2014 - 13:05
fuente

Lea otras preguntas en las etiquetas