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.