Come posso prevenire un attacco man-in-the-middle (MITM) sulla mia API dell'app Android?

12

Ho controllato l'app Packet Capture .

Questa app è in grado di decrittografare i dati delle mie app (SSL abilitati) montando un attacco MITM usando il servizio Android VPN. Questo non richiede nemmeno root.

Come posso impedirlo? Vogliamo trasmettere dati protetti attraverso i nostri server ai dispositivi Android.

    
posta Madhur Ahuja 12.04.2015 - 11:09
fonte

2 risposte

20

L'app (e tutte le app proxy MITM come SandroProxy e mitmproxy) funzionano installando il proprio certificato CA attendibile sul dispositivo. Ciò consente loro di firmare i propri certificati che il dispositivo accetterà.

Devi installare manualmente il loro certificato sull'archivio chiavi utente usando un dialogo come questo:

Dopodichevisualizzaavvisicomequesto:

Èimprobabile(anchesenondeltuttoimpossibile)cheunutentepossafarloinvolontariamente,quindinelcomplessoèunaminacciaabbastanzabassa.

Dettoquesto,sevuoiproteggerelatuaappanchesequalcunohainstallatouncertificatoCAdannoso,deviimplementare bloccare i certificati .

Se il dispositivo è rootato, è ipotizzabile che un utente malintenzionato possa installare un certificato dannoso, nasconderlo e modificare le tue App per compromettere la convalida e impedire il blocco. Tuttavia, se qualcosa di rogue ha accesso root, in sostanza l'intero dispositivo è compromesso in qualsiasi modo.

    
risposta data 12.04.2015 - 11:35
fonte
4

Per dare una buona risposta da thexacre a un tocco più ampio: se l'applicazione stessa esegue il controllo del certificato correttamente ( non tutti lo fanno, vedi link ) quindi un attacco MITM è possibile solo se l'attaccante è in qualche modo fidato dal proprietario del dispositivo. Nel caso di un proprietario che è curioso di sapere quale sia l'applicazione l'autore dell'attacco è il proprietario stesso, ma potrebbe anche essere un aggressore esterno che ha compromesso il dispositivo (ad esempio una relazione di trust indesiderata). Solo con questo trust è possibile ottenere la CA di fiducia supplementare installata che è necessaria per intercettare la connessione SSL.

E mentre il pinning del certificato o il blocco della chiave pubblica potrebbero essere utilizzati per aggirare il problema dell'intercettazione SSL all'esterno dell'applicazione, un hacker esperto potrebbe ancora essere in grado di collegarsi all'applicazione ed estrarre i dati non crittografati direttamente dall'interno dell'applicazione. In generale non è possibile prevenire questo tipo di attacchi fintanto che il software è in esecuzione in un ambiente sufficientemente controllato dall'attaccante. Potresti provare a renderlo più difficile con le tecniche anti-debug che vengono spesso utilizzate dalle soluzioni DRM e dai malware.

    
risposta data 12.04.2015 - 13:04
fonte

Leggi altre domande sui tag