web-dev-qa-db-fra.com

Comment puis-je empêcher une attaque d'homme au milieu (MITM) sur mon Android API d'application?

J'ai vérifié l'application Packet Capture.

Cette application est capable de décrypter mes données API d'application (SSL activé) en montant une attaque MITM à l'aide du service VPN Android Android. Cela ne nécessite même pas root).

Comment puis-je l'empêcher? Nous voulons transmettre des données sécurisées via nos serveurs à des appareils Android.

14
Madhur Ahuja

Cette application (et toutes les applications proxy MITM telles que SandroProxy et mitmproxy) fonctionnent en installant leur propre certificat de CA de confiance sur l'appareil. Cela leur permet de signer leurs propres certificats que l'appareil acceptera.

Vous devez installer manuellement leur certificat dans le magasin de clés utilisateur à l'aide d'une boîte de dialogue comme celle-ci:

enter image description here

Après quoi, il affiche des avertissements comme celui-ci:

enter image description here

enter image description here

Il est peu probable (bien que pas complètement impossible) qu'un utilisateur fasse cela involontairement, donc dans l'ensemble c'est une menace raisonnablement faible.

Cela dit, si vous souhaitez protéger votre application même si quelqu'un a installé un certificat CA malveillant, vous devez implémenter épinglage de certificat .

Si l'appareil est enraciné, il est concevable qu'un attaquant puisse installer un certificat malveillant, le cacher et modifier vos applications pour compromettre la validation et empêcher l'épinglage. Cependant, si quelque chose de voyou a un accès root, alors votre appareil entier est compromis de quelque façon que ce soit.

22
thexacre

Pour donner au bonne réponse de thexacre une touche plus large: si l'application elle-même effectue correctement la vérification des certificats (pas tous, voir http://www.kb.cert.org/vuls/id/582497 ) alors une attaque MITM n'est possible que si l'attaquant est en quelque sorte approuvé par le propriétaire de l'appareil. Dans le cas d'un propriétaire curieux de savoir ce que fait l'application, l'attaquant est le propriétaire lui-même, mais il peut également s'agir d'un attaquant externe qui a compromis l'appareil (c'est-à-dire une relation de confiance indésirable). Ce n'est qu'avec cette confiance qu'il est possible d'obtenir l'autorité de certification de confiance supplémentaire qui est nécessaire pour intercepter la connexion SSL.

Et bien que l'épinglage de certificat ou l'épinglage de clé publique puisse être utilisé pour contourner le problème d'interception SSL en dehors de l'application, un attaquant averti pourrait toujours être en mesure de se connecter à l'application et d'extraire les données non chiffrées directement de l'intérieur de l'application. En général, il n'est pas possible d'empêcher ce type d'attaques tant que le logiciel s'exécute dans un environnement suffisamment contrôlé par l'attaquant. Vous pourriez seulement essayer de le rendre plus difficile avec des techniques anti-débogage qui sont souvent utilisées par les solutions DRM et les logiciels malveillants.

4
Steffen Ullrich