Proteggi le connessioni SSL da MITM per gli utenti con client modificati

0

Sto lavorando su un'app Web che utilizza SSL. Ho paura che alcune persone possano accedere all'app tramite una rete che utilizza un proxy per intersecare e ispezionare il traffico SSL [MITM]. Alcune persone potrebbero accedere all'applicazione da un browser che ha la CA del proxy nell'archivio certificati attendibile.

C'è un modo per me di proteggere da questo lato del server di attacco MITM? Come se il server controllasse il client per assicurarsi che venisse usato il client giusto. Credo che il portale di accesso federato dei partner Microsoft abbia una protezione simile a questa. HSTS sarebbe efficace se la CA del proxy si trova nell'archivio attendibile?

    
posta Sergio Zygmunt 07.06.2015 - 07:34
fonte

2 risposte

4

Would HSTS be effective if the Proxy's CA is in the trusted store?

Il blocco della chiave pubblica incorporato in Chrome e Firefox viene ignorato se il certificato è firmato da una CA che è stata importata esplicitamente dall'utente (cioè affidabile ma non integrata). Questo per supportare il caso di uso comune dell'intercettazione legale SSL nei dispositivi di sicurezza e nel software, ovvero per rilevare il malware anche in connessioni crittografate.

Non sono sicuro dell'intestazione HSTS, ma presumo che il comportamento sarebbe lo stesso.

Is there any way for me to protect against this MITM attack server side?

Non è possibile rilevare quale CA viene utilizzata sul lato client. Quello che puoi fare è richiedere un certificato cliente. Sia il MITM legale che quello illegale non saranno in grado di trasportare il certificato del client originale attraverso il MITM in modo che falliscano (nella maggior parte dei casi) o debbano riscrivere anche il certificato del client che è possibile rilevare sul lato server.

Ovviamente anche con la richiesta di un certificato client non sarete in grado di rilevare i client in cui alcuni software (malware o meno) accedono al traffico decrittografato iniettando direttamente nel browser, cioè utilizzando estensioni del browser o l'iniezione di DLL o tecniche simili .

Like have the server check the client to ensure the right client is being used.

Tutto ciò che puoi fare sul server è chiedere al cliente e controllare la risposta. Dal momento che il client può mentire al server, potresti rendere difficile mentire offuscando il codice e poi chiedendo cose che possono essere risolte solo dal client che esegue il codice nel modo giusto. Ma questo può essere il cliente giusto, il cliente sbagliato che ha capito il codice offuscato o il client sbagliato semplicemente strumentando il codice originale.

Ciò che si desidera veramente è un attestato remoto che non si tratta solo di un client originale non modificato, ma anche che nessun altro processo può in qualche modo controllare il comportamento di questo client. Per ottenere questo devi iniziare molto più in profondità, cioè di solito hai già bisogno di avere il controllo dell'hardware dei client, ecc. Ti consiglio di esaminare le tecniche che hanno provato ad indurire XBox e Playstation in modo che solo i giochi originali e non modificati possano essere giocato e con quale frequenza sono stati trovati i modi per eludere le tecniche di protezione. O come Sony abbia provato a controllare il PC dei suoi clienti per proibire lo strappo dei loro CD infettando silenziosamente il PC con un kit di root.

    
risposta data 07.06.2015 - 07:50
fonte
0

In genere non puoi proteggere la macchina di un utente contro di loro. I browser offrono spesso strumenti che consentono agli utenti di guardare il traffico dal browser senza dover ricorrere al MITM. Dovresti accettare che un utente moderatamente determinato possa vedere il traffico e andare da lì. L'approccio migliore è esaminare perché sei preoccupato che un utente visualizzerà le proprie connessioni.

    
risposta data 07.06.2015 - 08:14
fonte

Leggi altre domande sui tag