KRACK e la falla del WPA2

Ognuno di noi per connettersi ad internet utilizza un router. Come già in passato avevamo visto qui a chi si occupa di questo blog piace, in particolare, l’uso della connessione via Ethernet, ovvero via cavo, ma tutti noi per motivi di spazio, libertà di movimento, preferenze varie scelgono il Wi-Fi. Senza contare, inoltre, come gli smartphone si prestino, grazie alla loro entità mobile, proprio a quest’ultima scelta.

Alcuni giorni fa Mathy Vanhoef del gruppo di ricerca imec-DistriNet dell’Università belga KU Leuven ha scoperto una falla relativa alla connessione Wi-Fi protetta e, in particolare, al WPA2. Questa notizia è stata preventivamente rilasciata alle aziende interessate dando loro il tempo di creare un aggiornamento e di tamponare il problema e, successivamente, è stato permesso alla stampa di renderlo noto.

Questa falla è stata denominata, come anticipato dal titolo di questo post, KRACK, acronimo di Key Reinstallation AttaCKs.

Il WPA2, acronimo di Wi-Fi Protected Access 2, è un protocollo di sicurezza che si occupa del criptaggio avanzato dei dati su rete Wi-Fi. Questi è basato e identificato con la tecnologia IEEE 802.1 di cui avevamo parlato qui relativamente al modello OSI ed al livello Data Link, luogo in cui i dati trasmessi sulla rete vengono smistati, controllati e trasmessi. Il WPA2 viene utilizzato da tutti i moderni router ed in questi anni è venuto a sostituire gli obsoleti WPA e WEP: la differenza sostanziale tra il primo e gli altri è data dagli algoritmi di criptaggio utilizzati; il WEP, infatti, faceva uso dell’algoritmo RC4 (Rivest Cipher 4) di crittografia simmetrica (qui per maggiori info) e di due chiavi di 64 bit o 128 bit; mentre il WPA sebbene ancora funzionante con l’algoritmo RC4 aveva delle chiavi più forti, ovvero da 256bit, ed ogni client riceveva le chiavi via TKIP (Temporal Key Integrity Protocol); il WPA2 infine, che ha sostituito i precedenti TKIP e RC4, utilizza gli algoritmo AES (Advanced Encryption Standard), modello di cifratura a blocchi, e CCMP (Counter Mode with Cipher Block Chaining Message Authentication Code Protocol), studiato specificamente per le connessioni wireless.

Sarà quindi evidente, guardando agli elementi già in nostro possesso, che tutti i sistemi operativi soffrono di questa falla perché essa si trova ad un livello, diciamo, più primitivo o più profondo: che esso sia Windows, Linux, OS X, Android, o altro, il momento in cui utilizziamo una connessione Wi-Fi che, necessariamente, sfrutta il WPA2 per criptare i nostri dati c’è la possibilità che la falla che andremo a descrivere possa essere usata da qualche malintenzionato.

Prima di divertirci un po’ a vedere come questa falla possa essere sfruttata, diamo un’occhiata a cosa fare per limitarla. La maggior parte delle aziende e lo stesso M. Vanhoef consigliano questi due specifici passi:

  1. Disabilitare il protocollo 802.11r. Questi, se abilitato, permette di non udire il rumore del click durante il passaggio da un Wi-Fi all’altro e rende il roaming più veloce. Questo tipo di protocollo è abbastanza nuovo (risale infatti al 2008) da esistere solamente nei Wi-Fi di grandi aziende o piccoli business con accesso a tecnologie aggiornate: ciò quindi non metterebbe in “pericolo” la connessione Wi-Fi della casa di un utente privato qualsiasi.
  2. Non usare TKIP ma continuare ad affidarsi al AES (questo consiglio vale per qualsiasi utente sia commerciale che privato) poiché il primo è meno sicuro soprattutto nel caso di uso di reti ibride.
  3. Scaricare eventualmente un aggiornamento per il proprio router se presente.

Il video sottostante, in inglese, descrive un esempio di ciò che è stato fatto per dimostrare la falla di cui stiamo parlando. Vediamo allora di cosa si tratta e proviamo a spiegarlo.

Prima di tutto, come avevamo fatto noi stessi precedentemente, qui per dimostrare l’insicurezza delle reti Wi-Fi pubbliche, s’imposta una connessione Wi-Fi che ci permetta di testare il tutto senza ricadere nell’illegalità e che utilizzi una connessione WPA2 che, come viene suggerito nel video, è indicato dal simbolo del lucchetto posto accanto a quello del Wi-Fi quando andiamo a controllare la lista delle connessioni. Dopodiché, si prenderà uno smartphone Android connettendolo a questa rete dove questi ci permetterà di accedere alla versione protetta dei siti, ovvero l’HTTPS segnalati, come mostra l’immagine sottostante, dal lucchetto verde e la scritta “Sicuro” sulla sinistra della barra di ricerca del nostro browser.

A questo punto nel video ci viene mostrato il comando utilizzato come attacco allo script del WPA2 che sarebbe:

sudo ./krack-all-zero-tk.py wlp0s20u1 wlp0s20u1 testnetwork --target 90:18:7c:6e:6b:20

Dove la parola “testnetwork” indica il nome della connessione Wi-Fi che si ha intenzione di attaccare e la serie alfanumerica dopo il target altro non è che l’indirizzo MAC che indica specificamente lo smartphone in questione. Si inizializzerà quindi una ricerca della rete da attaccare.

Una volta trovato il corretto indirizzo della rete permettendo di farne una copia, un clone, da posizionare su un diverso canale: in questo modo sarà possibile lavorare su quelli che vengono definiti handshakes, ovvero “strette di mano” dopo aver, logicamente, indotto il target a connettersi alla rete-clone. Questo tipo di attacco viene generalmente definito Man In The Middle (MITM) poiché implica la presenza di un terzo attore che si insinua tra lo scambio di dati tra mittente e destinatario.

Per spiegare cosa siano gli handshakes dobbiamo capire come funziona effettivamente il sistema di criptaggio WPA2: quando un pacchetto dati viene inviato via Wi-Fi questi è trasdotto in codice binario (ovvero il linguaggio macchina, il classico 0 1 con cui i computer funzionano); questo pacchetto viene criptato via XOR (eXcludive OR: è un operatore logico che riceve in ingresso “n” valori e restituisce “1” in uscita se, e solo se, vi è almeno un ingresso che differisce dagli altri) con un numero unico e randomico chiamato nonce che dovrebbe modificarsi e mutare ogni volta. Tutta l’operazione di criptaggio si basa sul fatto che questo numero sia sempre randomico. Logicamente, per decriptare il messaggio, sarà necessario che il sistema ricevente conosca a sua volta il numero randomico che altro non è che la chiave di decriptaggio: ecco perché questo processo viene denominato “stretta di mano” o handshake.

Il video suggerisce anche come, utilizzando lo strumento denominato sslstrip sia possibile rimuovere la versione HTTPS di siti non propriamente configurati mutandoli in pagine HTTP che, come avevamo visto qui, inviano in chiaro nomi utenti e password visibili da chiunque analizzi il traffico di rete. Il comando in questo caso utilizzato sarà il seguente:

sslstrip -w sslstrip.log

A questo punto entra in gioco il software, di cui abbiamo già parlato tempo fa qui ed utilizzato anche qui, chiamato Wireshark che permette di osservare ed analizzare il traffico della rete.

A questo punto, una volta posto l’attacco MITM ed azionato Wireshark sarà possibile controllare i vari handshakes. In specifico, durante la terza “stretta di mano” sarà possibile convincere il client in connessione a reinizializzare i nodi. I sistemi operativi di Android e Linux presentano un interessante bug su cui si basa KRACK ed il problema del WPA2 di cui stiamo parlando; essi, infatti, se reinizializzati partono sempre con lo stesso numero nonce che si rivela, quindi, non essere randomico: questo rende possibile la manipolazione dei dati trasmessi, azioni di bruteforce e la ricerca di elementi ricorrenti che permettano di decriptare i messaggi.

In conclusione, possiamo dire che questo attacco risulta interessante dal punto di vista della sicurezza informatica e, logicamente, da correggere per evitare dei possibili attacchi, ma vorremmo sottolineare come sia necessario per portare a termine questo tipo di azione la prossimità del malintenzionato alla rete Wi-Fi in uso nonché la difficoltà nel rendere invisibile la propria presenza durante il reindirizzamento del client al network-clone.

Share the love

Comincia la discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.