Estrai i certificati client X509 dai file TCPdump

1

Ho la seguente domanda: supponendo di avere un file TCPDump contenente un numero di connessioni HTTPS usando l'autenticazione reciproca TLS, c'è un modo per estrarre tutti i certificati client inviati al server?

Alcuni precedenti Ho un cliente in cui un servizio SOAP che ho fornito è stato configurato per utilizzare HTTPS con l'autenticazione del client. Il requisito in base al quale utilizzare il certificato autofirmato in entrambe le estremità della connessione e il server è in esecuzione su 2008R2 + IIS.

Quattro anni fa, ho dovuto eseguire l'installazione e istruito gli amministratori su come gestire i certificati client. Questo mese, il cliente è tornato da me (come mi aspettavo) dicendo che hanno fatto un casino e che ora hanno 6 volte più certificati di quelli con cui sono autorizzati a connettersi. Dal momento che stanno migrando, vogliono il mio aiuto per ripulire quel casino.

I certificati sono stati creati da persone di diverso livello di competenza: alcuni sono ben definiti e possono essere facilmente identificati. Ma altri sono chiaramente il risultato di qualcuno pronto al minimo "Come creare un certificato X509v1": chiavi RSA a 1024 bit, niente di utile nell'argomento, ecc.

Avevo due idee su come affrontarlo: il primo era creare utenti locali diversi per i diversi certificati, modificare la mappatura dei certificati client IIS per utilizzare questi nuovi utenti e quindi analizzare semplicemente il registro di IIS per vedere chi si connette. Questo è ancora possibile ma, vista la necessità degli amministratori, richiederebbe loro di creare numerosi account AD e concedere tutti i diritti sul database: ci vorranno molto tempo per l'installazione (senza contare il fatto che sarà essere un problema da configurare è IIS).

Quindi, mi stavo chiedendo se non potevo semplicemente usare un monitor di rete per scaricare tutte le sessioni HTTPS che vanno a quel socket ed enumerare tutti i certificati che sono usati come auth client nell'handshake TLS.

    
posta Stephane 08.04.2016 - 15:02
fonte

1 risposta

3

Poiché il certificato viene trasferito in chiaro all'interno dell'handshake TLS, è possibile estrarlo. Probabilmente lo strumento di scelta è wireshark che ti offre un'ottima visione di tutti i dettagli dell'handshake TLS in modo da poter estrarre facilmente il certificato manualmente.

Vedi anche link per un modo più automatico usando la versione da riga di comando di tshark. Mentre l'esempio probabilmente creato per i certificati server dovrebbe funzionare anche per i certificati client (non testati).

    
risposta data 08.04.2016 - 15:34
fonte

Leggi altre domande sui tag