Se hai mai provato a utilizzare Wireshark per monitorare il traffico web, probabilmente hai riscontrato un problema, in gran parte è crittografato. In effetti, la maggior parte dei siti utilizza la crittografia SSL o TLS per proteggere i propri utenti. La crittografia ubiquitaria è una buona cosa se acquisti su Amazon, ma è una vera seccatura quando stai cercando di amministrare una rete. Ecco come decrittografare SSL con Wireshark.
Cosa sono Wireshark e SSL?
Wireshark è un analizzatore del traffico di rete; è un’utilità di base che molti amministratori utilizzano per risolvere i problemi sulle loro reti. In particolare, cattura i frame, i mattoni dei pacchetti, e consente di ordinarli e analizzarli. Usando Wireshark, puoi guardare il traffico che fluisce attraverso la tua rete e analizzarlo, dando una sbirciatina all’interno dei frame ai dati grezzi.
SSL è un protocollo di crittografia che opera sul livello Transport del modello OSI. Utilizza vari metodi di crittografia per proteggere i dati mentre si spostano attraverso le reti. Nota: in questa guida, mi riferirò principalmente a SSL come termine generale per SSL e TLS, il suo successore.
La crittografia SSL rende l’utilizzo di Wireshark più impegnativo perché impedisce agli amministratori di visualizzare i dati che ogni pacchetto contiene. Quando Wireshark è impostato correttamente, può decrittografare SSL e ripristinare la capacità di visualizzare i dati non elaborati.
Utilizzo di una chiave segreta pre-master per decrittografare SSL e TLS
L’uso di una chiave segreta pre-master per decrittografare SSL in Wireshark è il metodo raccomandato. UN chiave segreta pre-master viene generato dal client e utilizzato dal server per derivare una chiave master che crittografa il traffico della sessione. È lo standard attuale nella crittografia e di solito viene implementato tramite Diffie-Hellman.
Il browser può essere creato per registrare la chiave segreta pre-master, che Wireshark utilizza per decrittografare le sessioni SSL e TLS.
Ecco i passaggi per decrittografare SSL e TLS con una chiave segreta pre-master:
- Imposta una variabile d’ambiente
- Avvia il tuo browser
- Configura Wireshark
- Cattura e decodifica la sessione
Al termine, sarai in grado di decrittografare le sessioni SSL e TLS in Wireshark senza bisogno di accedere al server di destinazione.
Imposta una variabile d’ambiente Windows
Nel finestre, dovrai impostare una variabile d’ambiente usando il Impostazioni avanzate di sistema utilità. Questa variabile, denominata SSLKEYLOGFILE, contiene un percorso in cui sono memorizzate le chiavi segrete pre-master.
Inizia facendo clic con il tasto destro su Il mio computer, e selezionando Proprietà dal menu. Il Sistema si aprirà il menu.
Quindi, fai clic su Impostazioni avanzate di sistema nell’elenco a sinistra. Il Proprietà di sistema la finestra si aprirà.
Sul Avanzate scheda, fare clic su variabili ambientali pulsante.
Clicca il Nuovo… pulsante sotto Variabili utente. Puoi anche creare la variabile sotto Variabili di sistema se desideri registrare le chiavi SSL per ogni utente sul sistema, ma preferisco tenerlo limitato al mio profilo.
Sotto Nome della variabile, digitare quanto segue:
SSLKEYLOGFILE
Nel Valore variabile campo, digitare un percorso per il file di registro. Puoi anche fare clic su Sfoglia il file … pulsante e specificare il percorso utilizzando il selettore file.
Come nota, se stai creando questo come variabile di ambiente a livello di sistema, dovrai utilizzare caratteri jolly appropriati o archiviare il file in un luogo accessibile da tutti gli utenti. Ad esempio, potresti scegliere % USERPROFILE% \ App Data \ ssl-keys.log o C: \ ssl-keys.log.
Al termine, fai clic su ok e passa alla prossima serie di passaggi.
Imposta una variabile d’ambiente Linux o Mac
Nel Linux e Mac, dovrai impostare il SSLKEYLOGFILE variabile d’ambiente usando nano. Nel Linux, la variabile è memorizzata in ~ / .Bashrc. Sul Mac, creerai la variabile nel file ~ / .MacOSX / ambiente.
Aprire un terminale e usa questo comando in Linux:
nano ~ / .bashrc
Aperto Trampolino di lancio, clic Altro, e avviare un terminale per eseguire questo comando in Mac OSX:
nano ~ / .bash_profile
I seguenti passaggi sono uguali per entrambi i sistemi operativi.
Alla fine del file, aggiungi questa riga:
export SSLKEYLOGFILE = ~ / .ssl-key.log
stampa Ctrl + X, Y per salvare le modifiche.
Chiudi la finestra del terminale e aprine un’altra per impostare la variabile, quindi digita quanto segue per confermare che è stata impostata correttamente:
echo $ SSLKEYLOGFILE
Dopo aver eseguito il comando, dovresti vedere un output simile all’immagine sopra. /Users/comparitech/.ssl-key.log è il percorso completo del mio registro chiavi pre-master SSL. Nota: ti consigliamo di prendere nota del tuo, che sarà diverso, per entrare in Wireshark.
Ora che la variabile è stata impostata, puoi passare alla serie di passaggi successiva.
Avviare il browser e verificare il file di registro
Prima di avviare Wireshark e configurarlo per decrittografare SSL utilizzando una chiave pre-master, è necessario avviare il browser e confermare che viene utilizzato il file di registro.
Per popolare il registro, è importante visitare un sito in cui è abilitato SSL. Sto usando il mio server Apache per i test, ma qualsiasi sito funzionerà. Uno dei maggiori vantaggi dell’utilizzo di una chiave condivisa pre-master è non hai bisogno di accedere al server per decrittografare SSL.
Dopo aver visitato un sito Web abilitato per SSL, controlla il file per i dati. Nel finestre, Puoi usare Bloc notes. Nel Linux o Mac, utilizzare il seguente comando:
cat ~ / .ssl-log.key
Su qualsiasi sistema operativo, il tuo file dovrebbe apparire come il mio sopra. Dopo aver verificato che il browser registra le chiavi pre-master nella posizione selezionata, è possibile configurare Wireshark per utilizzare quelle chiavi per decrittografare SSL.
Configura Wireshark per decrittografare SSL
Una volta che il browser registra le chiavi pre-master, è tempo di configurare Wireshark per utilizzare quei registri per decrittografare SSL.
Apri Wireshark e fai clic modificare, poi Preferenze. Il Preferenze si aprirà la finestra di dialogo e sulla sinistra vedrai un elenco di elementi. Espandere protocolli, scorrere verso il basso, quindi fare clic su SSL.
Nell’elenco di opzioni per il protocollo SSL, vedrai una voce per Nome file di registro (pre) -Master-Secret. Passare al file di registro impostato nel passaggio precedente o incollare semplicemente il percorso.
Al termine dell’impostazione di Nome file di registro (pre) -Master-Secret, clic ok e tornare a Wireshark. Sei pronto per andare avanti.
Cattura la sessione e decodifica SSL
Il passaggio finale consiste nel catturare una sessione di test e assicurarsi che Wireshark decodifichi correttamente SSL.
- Avvia una sessione di acquisizione non filtrata, minimizzala e apri il browser.
- Visita un sito sicuro per generare dati e, facoltativamente, imposta un filtro di visualizzazione di “ssl” per ridurre al minimo il rumore della sessione.
- Fare clic su qualsiasi frame contenente dati crittografati.
Nel mio caso, selezionerò uno che contiene traffico HTTP con codifica testo / HTML, poiché vorrei vedere il codice sorgente che il server web sta inviando al mio browser. Ma qualsiasi traffico crittografato che utilizza una chiave segreta pre-master funzionerà con questo metodo. Ciò include tutti i dati che utilizzano Perfect Forward Encryption (PFE) tramite Diffie-Hellman o scambi di chiavi comparabili.
Dopo aver selezionato una cornice crittografata, guarda Vista byte pacchetto, e in particolare le schede sotto la vista. Dovresti vedere una voce per SSL decrittografato dati, tra gli altri.
Noterai che la mia sessione sembra ancora piena di immondizia e nessun HTML è visibile. Questo perché il mio server Web (e la maggior parte dei server Apache) utilizzano la compressione GZIP per impostazione predefinita.
Quando si fa clic su Corpo di entità non compresso scheda, che viene visualizzato solo in questo caso con la decrittografia SSL abilitata, è possibile visualizzare il codice sorgente del sito. Ad esempio, ecco l’elemento del titolo della pagina Apache predefinita in testo normale.
Utilizzo di una chiave RSA per decrittografare SSL
Avresti notato in precedenza che Wireshark ha un campo che ti consente di caricare le tue chiavi RSA e usarle per decrittografare SSL. In pratica, La decrittografia della chiave RSA è obsoleta.
Il motivo per cui la decrittografia SSL con una chiave RSA non è più comunemente utilizzata è Perfect Forward Encryption (PFE) che l’ha resa obsoleta. Le sessioni negoziate con Diffie-Hellman non utilizzano direttamente la chiave RSA; generano invece una chiave monouso, memorizzata solo nella RAM, che viene crittografata utilizzando la chiave sul disco.
Se in precedenza si utilizzava una chiave RSA per decodificare il traffico e ha smesso di funzionare, è possibile confermare che il computer di destinazione sta utilizzando gli scambi Diffie-Hellman abilitando la registrazione SSL.
Per attivare la registrazione, fare clic su modificare dal menu della barra degli strumenti e selezionare Preferenze. Espandi il protocolli voce di menu a sinistra e scorrere fino a SSL. Da qui, puoi fare clic su Navigare pulsante e impostare la posizione del registro SSL.
Una volta impostata la posizione, tutte le interazioni SSL verranno registrate nel file specificato.
Cattura una sessione con l’host abilitato per SSL, quindi controlla i registri. In particolare, è necessario scorrere fino a trovare il frame su cui è stata negoziata l’handshake TLS. È probabile che vedrai una voce DHE rivelatore nella stringa di crittografia.
Ciò significa che gli scambi di chiavi Diffie-Hellman sono abilitati. Nel mio caso, Apache utilizza specificamente Diffie-Hellman con i tasti della curva ellittica, che è indicato dalla stringa ECDHE.
Scorri un po ‘più avanti e probabilmente vedrai che il segreto principale non può essere trovato.
Se i tuoi registri sembrano così e non puoi decrittografare il traffico utilizzando una chiave RSA, non hai altra scelta che passare al metodo segreto pre-master sopra.
Poiché la PFE sta diventando una pratica standard, con TLSv1.3 probabilmente forzando il problema, la semplice decrittografia della chiave RSA è obsoleta e non deve essere utilizzata.
Wireshark semplifica la decodifica del traffico SSL
Mi piace molto il modo in cui Wireshark gestisce la decrittazione SSL. La crittografia è complicata e gli standard cambiano costantemente per essere più sicuri. Ma una volta che Wireshark e il tuo ambiente sono impostati correttamente, tutto ciò che devi fare è cambiare le schede per visualizzare i dati decrittografati. Non c’è niente di più facile di così.
Italian:
Ho trovato questo articolo molto utile per decrittografare il traffico SSL con Wireshark. È vero che la crittografia SSL è una buona cosa per proteggere i dati degli utenti, ma può essere un problema per gli amministratori di rete che cercano di monitorare il traffico. Il metodo raccomandato per decrittografare SSL in Wireshark è lutilizzo di una chiave segreta pre-master. Questo articolo fornisce una guida dettagliata su come impostare una variabile dambiente, avviare il browser, configurare Wireshark e catturare e decodificare la sessione. Consiglio vivamente questo articolo a chiunque stia cercando di decrittografare il traffico SSL con Wireshark.