¿Cómo pueden las aplicaciones móviles prevenir los ataques MITM de HTTPS cuando el usuario instala el certificado de CA del atacante?

2

Estoy usando una aplicación móvil que instala un certificado de CA confiable y falso y, por lo tanto, puede capturar el tráfico HTTPS de otras aplicaciones. La mayoría de las veces, este ataque MITM tiene éxito.

Sin embargo, me di cuenta de que algunas aplicaciones son más seguras que otras, y se negarían a conectarse a sus servidores cuando se produzca el ataque MITM con un certificado falso de CA confiable.

¿Cómo detectan esas aplicaciones el ataque MITM? ¿Esto sucede en el lado del cliente o en el lado del servidor?

Parece que HSTS y la fijación de clave pública no se pueden utilizar para evitar MITM cuando el usuario ha instalado el certificado de CA de confianza del atacante. Si es así, ¿qué tecnología puede?

    
pregunta K48 16.08.2018 - 17:31
fuente

4 respuestas

4

Esto se debe a que algunas aplicaciones no usan la API HTTPS común del SDK. Algunos de ellos implementan sus propias bibliotecas y tienen sus propios almacenes de claves.

En esas aplicaciones, el certificado utilizado para la conexión generalmente está codificado o el certificado raíz está codificado. En estos casos, a menos que modifique la aplicación para confiar en su certificado, la instalación de certificados de usuario o sistema no funcionará.

    
respondido por el ThoriumBR 16.08.2018 - 20:01
fuente
3

HSTS y HPKP son para navegadores , no para aplicaciones móviles genéricas. Los navegadores que cumplen con el RFC pueden (y lo hacen) permitir una conexión con un certificado de confianza manual a pesar de HPKP. Sin embargo, las aplicaciones móviles no necesitan hacer esto, ni siquiera necesitan usar HTTP. La fijación de certificados en aplicaciones móviles es una idea similar a HPKP, pero es una implementación diferente.

    
respondido por el AndrolGenhald 16.08.2018 - 17:48
fuente
3

Fijación de clave pública absolutamente puede prevenir MITM incluso con un certificado de CA confiable. El objetivo de la fijación es que la aplicación sabe exactamente qué certificado (hash, emisor, etc.) esperar. Aunque la CA de confianza puede generar un certificado "válido" para el dominio, no será el certificado exacto que la aplicación está buscando, por lo que lo rechazará.

    
respondido por el Mr. Llama 16.08.2018 - 17:49
fuente
2

Si está hablando de dispositivos Android, es porque en Android 7 y superior, una aplicación puede elegir si confiar o no en los certificados raíz instalados por el usuario. Simplemente desconfían del certificado que instaló.
Si puedes rootear tu dispositivo, entonces podrás instalar tu root en el almacén de confianza del sistema, entonces la aplicación confiará en ella.

    
respondido por el JemmyLoveJenny 16.08.2018 - 18:20
fuente