È possibile forzare una nuova sessione SSL

9

Utilizzando strumenti come Wireshark, è possibile decifrare il traffico SSL come client registrando il (pre) master secret, senza usare un attacco mitm o la chiave privata del server. Ma ho trovato che per alcuni siti web, l'ID della sessione ssl viene memorizzato dal server (prova: il messaggio ServerHello contiene l'id della sessione riutilizzata) e (credo) questo impedisce che si verifichi un handshake completo di ssl, il che impedisce che wireshark da decifrare con successo. Devo ammettere che non sono del tutto sicuro che questo sia il problema, ma le prove sono abbastanza convincenti. Esiste un modo per il client di impedire il riutilizzo degli ID di sessione ssl?

    
posta AdamZSI 03.06.2013 - 14:30
fonte

2 risposte

12

In SSL, il client e il server possono impegnarsi in un handshake abbreviato solo se sia client sia server ricorda i "parametri di handshake" (in particolare il segreto pre-master negoziato). L '"ID di sessione" è il modo in cui client e server pubblicizzano il proprio ricordo: il client invia nel suo ClientHello una copia dell'ID di sessione precedente e il server lo rimanda per riconoscere che questa sessione verrà riutilizzata.

Non puoi rimuovere l'ID di sessione dal messaggio client senza interrompere le successive operazioni di crittografia, perché i messaggi di Finished alla fine dell'handshake sono calcolati come valori hash su tutti i messaggi di handshake scambiati in precedenza, che includono ClientHello . Pertanto, il client e il server DEVONO "vedere" lo stesso ClientHello . (Tuttavia, vedi sotto.)

Pertanto, per evitare una stretta di mano abbreviata, devi imporre l'oblio. I server SSL possono essere configurati per non ricordare le sessioni oltre un certo timeout di inattività; per esempio, vedi Apache mod_ssl direttive SSLSessionCache e SSLSessionCacheTimeout . Arrestare e riavviare il server può anche svuotare la cache, purché la cache sia conservata nella RAM (con server multi-frontend, la cache può essere condivisa con un database comune o qualcosa di simile, nel qual caso l'eliminazione della cache può essere più complessa ).

Sul lato client, le sessioni SSL vengono normalmente mantenute nella RAM. Internet Explorer, ad esempio, internamente consiste in diversi processi che parlano tra loro, e devi ucciderli tutti per far dimenticare una sessione SSL (in pratica, ciò accade solo quando hai chiuso < em> tutti le finestre di IE).

La tua citazione, tuttavia, è strana:

Using tools like Wireshark, it's possible to decrypt SSL traffic as the client by logging the (pre)master secret, without using a mitm attack or the server's private key.

Wireshark non può farlo. Wireshark ispeziona i pacchetti di dati in transito e da questi pacchetti non è possibile dedurre il segreto pre-master senza avere una copia della chiave privata del server. Questo è il punto intero di SSL: per impedire agli intercettatori di dare un senso ai dati scambiati. Per essere in grado di entrare nella sessione SSL da un punto di vista "intercettore di rete", devi fare un Attacco Man-in-the-Middle , con doppia imitazione; e questo può accadere solo se si ignora il modello di sicurezza del certificato: bisogna convincere l'utente umano (client SSL) a installare una falsa chiave CA canaglia falso, oa "cliccare attraverso" il rosso e spaventoso avviso che il browser visualizza quando nota che il presunto certificato del server è funky.

Se può "registrare il segreto pre-master", significa che si dispone dell'accesso privilegiato ai contenuti della RAM del client o del server; quell'accesso non userebbe Wireshark, ma un debugger. Ciò che Wireshark offre è la possibilità di utilizzare alcuni segreti pre-master catturati (ad esempio, vedi questa pagina ); con queste informazioni, Wireshark sarà in grado di decifrare i dati. Tuttavia, non esegue (e non può) effettuare l'acquisizione stessa: ciò richiede l'accesso diretto al client o alla RAM del server o un client o server modificato per la perdita delle informazioni. Per fare un'analogia, non puoi fare interventi al cervello per telefono.

Se hai effettivamente un accesso simile al debugger al client (o al server), allora dovresti essere in grado di manipolare il client (rispettivamente il server) per fare "dimentica" una sessione SSL precedente, forzando così un nuovo handshake completo.

    
risposta data 12.08.2013 - 16:35
fonte
0

Se utilizzi un browser come IE, ad esempio, puoi svuotare la cache e la cache SSL che lo costringerà a ripetere l'intero processo ancora una volta.

    
risposta data 13.06.2013 - 15:16
fonte

Leggi altre domande sui tag