¿Cómo puedo prevenir un ataque Man-in-the-middle (MITM) en mi aplicación de Android API?

12

Revisé la aplicación Captura de paquetes .

Esta aplicación puede descifrar los datos de las API de mi aplicación (SSL habilitado) al montar un ataque MITM utilizando el servicio VPN de Android. Esto ni siquiera requiere root.

¿Cómo puedo prevenirlo? Queremos transmitir datos seguros a través de nuestros servidores a dispositivos Android.

    
pregunta Madhur Ahuja 12.04.2015 - 11:09
fuente

2 respuestas

20

Esa aplicación (y todas las aplicaciones proxy MITM, como SandroProxy y mitmproxy) funcionan al instalar su propio certificado de CA de confianza en el dispositivo. Eso les permite firmar sus propios certificados que el dispositivo aceptará.

Debe instalar manualmente su certificado en el almacén de claves del usuario mediante un diálogo como este:

Despuésdelocualmuestraadvertenciascomoesta:

Espocoprobable(aunquenocompletamenteimposible)queunusuariohagaestosinintención,porloqueengeneralesunaamenazarazonablementebaja.

Habiendodichoeso,sideseaprotegersuaplicación,inclusosialguienhainstaladouncertificadodeCAmalicioso,debeimplementarlafijacióndecertificado .

Si el dispositivo está enraizado, es posible que un atacante pueda instalar un certificado malicioso, ocultarlo y modificar sus aplicaciones para comprometer la validación y evitar la fijación. Sin embargo, si algo no autorizado tiene acceso a la raíz, entonces prácticamente todo tu dispositivo se verá comprometido de cualquier manera.

    
respondido por el thexacre 12.04.2015 - 11:35
fuente
4

Para dar a la buena respuesta del centro de acción un toque más amplio: si la aplicación realiza la comprobación del certificado correctamente ( no todos lo hacen, vea enlace ), entonces un ataque MITM solo es posible si el atacante es de alguna manera confiado por el Propietario del dispositivo. En el caso de un propietario que tenga curiosidad por saber qué hace la aplicación, el atacante es el propio propietario, pero también podría ser un atacante externo que haya comprometido el dispositivo (es decir, una relación de confianza no deseada). Solo con esta confianza es posible obtener la CA de confianza adicional que se necesita para interceptar la conexión SSL.

Y mientras que la fijación de certificados o la fijación de claves públicas se pueden utilizar para solucionar el problema de la intercepción SSL fuera de la aplicación, un atacante con conocimientos podría ser capaz de conectarse a la aplicación y extraer los datos sin cifrar directamente desde dentro de la aplicación. En general, no es posible evitar este tipo de ataques siempre que el software se ejecute en un entorno suficientemente controlado por el atacante. Es posible que solo intentes hacerlo más difícil con técnicas anti-depuración que a menudo utilizan las soluciones DRM y el malware.

    
respondido por el Steffen Ullrich 12.04.2015 - 13:04
fuente

Lea otras preguntas en las etiquetas