In che modo le app mobili impediscono gli attacchi HTTPS MITM quando l'utente installa il certificato CA dell'attaccante?

2

Sto utilizzando un'app mobile che installa un certificato CA falso e attendibile e quindi può acquisire il traffico HTTPS di altre app. La maggior parte delle volte, questo attacco MITM ha successo.

Tuttavia, ho notato che alcune app sono più sicure di altre e si rifiuterebbero di connettersi ai loro server quando l'attacco MITM con un falso certificato CA attendibile è in corso.

In che modo queste app rilevano l'attacco MITM? Succede sul lato client o sul lato server?

Sembra che l'HSTS e il blocco della chiave pubblica non possano essere utilizzati per impedire MITM quando l'utente ha installato il certificato CA attendibile dell'attaccante. Se sì, quale tecnologia può?

    
posta K48 16.08.2018 - 17:31
fonte

4 risposte

4

È perché alcune applicazioni non utilizzano l'API HTTPS comune dall'SDK. Alcuni di loro implementano le proprie librerie e hanno i propri keystore.

In queste app, il certificato utilizzato per la connessione è solitamente codificato o il certificato di root è hardcoded. In questi casi, a meno che tu non modifichi l'applicazione per considerare attendibile il tuo certificato, l'installazione di certificati utente o di sistema non funzionerà.

    
risposta data 16.08.2018 - 20:01
fonte
3

HSTS e HPKP sono entrambi per browser , non app mobili generiche. I browser conformi alla RFC possono (e fanno) consentire una connessione con un certificato attendibile manualmente nonostante HPKP. Le app mobili non hanno bisogno di farlo, ma non hanno nemmeno bisogno di usare HTTP. Il blocco del certificato nelle app mobili è un'idea simile a HPKP, ma è un'implementazione diversa.

    
risposta data 16.08.2018 - 17:48
fonte
3

Blocco chiave pubblica è assolutamente in grado di impedire il MITM anche con un certificato CA attendibile. L'intero punto di blocco è che l'applicazione sa esattamente quale certificato (hash, emittente, ecc.) Aspettarsi. Anche se la CA attendibile può generare un certificato "valido" per il dominio, non sarà il certificato esatto che l'applicazione sta cercando, quindi lo rifiuterà.

    
risposta data 16.08.2018 - 17:49
fonte
2

Se stai parlando di dispositivi Android, è perché in Android 7 e versioni successive, un'app può scegliere se fidarsi o meno dei certificati radice installati dall'utente. Stanno semplicemente diffidando del certificato che hai installato.
Se puoi eseguire il root del tuo dispositivo, allora sarai in grado di installare la tua root nel trust store del sistema, quindi l'app si fiderà di esso.

    
risposta data 16.08.2018 - 18:20
fonte