Come ottenere la chiave privata utilizzata per decrittografare il traffico HTTPS inviato e ricevuto dal mio browser con wireshark

16

Sto lavorando con un sito Web che invia richieste API. Vorrei scrivere un cliente per fare da solo le richieste, ma per farlo dovrei prima vedere i carichi utili della richiesta. Tuttavia, la connessione è protetta e quindi non riesco a vedere i dati in wireshark proprio così.

Ho scoperto che Wireshark supporta la decrittazione SSL: link

Tuttavia, non spiega come si dovrebbe ottenere o generare il file della chiave privata, quindi sono andato a dare un'occhiata e ho trovato questo post di blog: link

Dopo aver trovato i pacchetti appropriati come mostrato nelle immagini, ho esportato il certificato, ma a differenza della sfida che stavano facendo, la connessione stabilita per me utilizza RSA-2048 e non fornisce la fattorizzazione (presumo che i certificati reali facciano non fornire questo, solo quelli per i giochi e così via.

È possibile che decifri i pacchetti HTTPS inviati a siti Web di terze parti? Come dovrei generare il file chiave richiesto?

    
posta That Umbrella Guy 06.08.2014 - 23:10
fonte

5 risposte

13

Wireshark è uno strumento molto potente. Nella maggior parte dei casi, le console di debug (addon-less) dei browser firefox e chrome dovrebbero essere sufficienti. Entrambi dispongono di monitor di rete sufficienti per la maggior parte del tempo. Tieni presente che il monitor firefox non supporta ancora i websocket.

Se vuoi ancora utilizzare wireshark, considera l'utilizzo del file SSLKEYLOGFILE , ulteriore aiuto su questo e questo e la tua pagina wiki collegata wireshark.

    
risposta data 06.08.2014 - 23:53
fonte
11

La chiave privata è privata del server web. Se non controlli il webserver non dovresti essere in grado di ottenerlo. Il certificato contiene solo la chiave pubblica, quindi non sarebbe di grande utilità per te. Potresti provare a configurare un server https proxy e fare un attacco man-in-the-middle: in questo caso avresti la chiave del tuo server proxy.

Stai cercando di decifrare il protocollo da un software o stai normalmente utilizzando un browser per accedere al servizio?

Nel secondo caso puoi usare il temporaneo per la sessione configurando Firefox per registrare la chiave in un file, come suggerito dall'utente10008: cerca SSLKEYLOGFILE nella pagina wiki che hai linkato e i link che user10008 postato.

    
risposta data 07.08.2014 - 00:46
fonte
7

Non puoi , a meno che tu non abbia il controllo amministrativo sul server web di terze parti o recuperi il certificato tramite altri mezzi nefasti. SSL / TLS dipende dal certificato privato che rimane privato.

Inoltre, anche se avessi la chiave privata del server, potresti non essere in grado di decodificare il traffico da una sessione precedente se Perfect È stato utilizzato il segreto di inoltro . In tal caso dovresti conoscere la chiave privata specifica utilizzata per la tua singola sessione.

In linea di principio, poiché tu sei il cliente, sei al corrente del pre_master_secret che è ciò di cui hai bisogno per ottenere il master_secret. Il master_secret è la chiave simmetrica che viene effettivamente utilizzata per crittografare la sessione. Come ha detto @pqnet, ci sono modi per utilizzarlo in FireFox e Chrome , anche se dipende dal software client e non sono sicuro di Flash. Tuttavia, ci sono altri metodi banali per ispezionare il tuo traffico HTTPS ...

Proxy locali

Poiché si tratta di una connessione personale, non vi è alcun motivo per cui non sia possibile passare il sito Web attraverso un server proxy. Molti server proxy sono configurati per consentire il pass-through SSL, che offre comunque la crittografia end-to-end, ma è possibile interrompere ciò terminando la connessione sul server proxy (se ci si fida del certificato SSL del proxy). Il proxy stabilirà quindi la propria connessione SSL al sito web di terze parti, trasmettendo qualsiasi traffico inviato. A volte le aziende utilizzano lo stesso metodo per ispezionare il traffico HTTPS in uscita degli utenti (è discutibile). Essenzialmente è un uomo in mezzo.

Browser <---> Local Proxy <---> Website
          ^                 ^
        HTTPS             HTTPS

I proxy locali vengono eseguiti sul tuo computer e ti consentono di ispezionare e persino modificare il traffico che li attraversa. Se un utente malintenzionato ha tentato di farlo, l'utente visualizzerebbe un avviso del browser per mostrare che non è stato ricevuto un certificato valido per il sito Web richiesto. Tuttavia, puoi configurare la tua macchina in modo che consideri attendibile il certificato CA del proxy locale.

Due popolari proxy locali che funzionano con il traffico HTTPS sono:

Burp Suite ha supporto di serializzazione AMF integrato . Fiddler sembra che abbia estensione .

    
risposta data 07.08.2014 - 14:11
fonte
1

SSL è stato creato per impedirti di fare esattamente ciò che stai tentando. È necessaria la chiave per accedere alle comunicazioni private, con o senza Wireshark.

Diverse risposte suggeriscono un attacco man-in-the-middle, che dovrebbe funzionare con molto sforzo ... ma se questa è un'API pubblica, è probabilmente documentata. In particolare, se si tratta di un'API servizio Web , è possibile ottenere il WSDL dal browser aggiungendo l'URL dell'endpoint con ?WSDL . Questo darà un elenco completo di metodi e tipi di ritorno.

    
risposta data 02.04.2015 - 16:23
fonte
1

Aggiungendo al messaggio del suo collaboratore, puoi anche utilizzare Charles Proxy con un certificato attendibile installato sul dispositivo / browser e consentire a Charles di decodificare SSL in modo da poter leggere il traffico. Lo faccio parecchio quando collaudo i dispositivi che comunicano su SSL.

link

    
risposta data 29.05.2015 - 20:22
fonte

Leggi altre domande sui tag