Capita spesso di imbattersi in guide e tutorial che parlano del "nuovo" metodo di Wifi hacking basato sullo sfruttamento del PMKID, ma molte volte, nella nostra lingua, non viene spiegato come funziona dal punto di vista teorico.
Cominciamo col dire che questo attacco sfrutta delle informazioni contenute nell'RSN IE (Robust Security Network Information Element), e consiste nel catturare uno scambio completo di frame EAPOL tra l'access point ed il dispositivo che richiede l'autenticazione. L'obbiettivo di questo attacco è ricostruire il PTK per confrontarlo con una lista di password al fine di trovare quella corretta. Bene, ma come?
Nelle reti WPA/TKIP, TKIP si serve di una PMK (Pairwise Master Key) per generare le PTK che cambiano ad ogni tentativo di associazione con l'access point.
Per capire meglio la faccenda:
quando avviene il tentativo di autenticazione, l'access point trasmette al client, nel primo pacchetto di negoziazione, una chiave ANonce.
Una volta che il client riceve questa chiave costruisce la sua chiave SNonce insieme alla PTK e successivamente invia l'SNonce ed il Message Integrity Code (MIC) all'access point.
Il processo di autenticazione continua con lo scambio di altre chiavi ed il consenso da parte dell'access point, ma non ci serve analizzarle ed andare oltre queste due prime fasi perchè, già arrivati a questo punto, siamo in grado di intercettare abbastanza informazioni riguardo la negoziazione tra client ed AP che possiamo provare ad eseguire il cracking della password.
Bene, ma in tutto questo, a cosa serve la password? Allora, analizzando un frame RSN:
possiamo notare la presenza della voce RSN PMKID, usata come identificativo per le PMK e per poter sfruttare delle funzionalità di caching.
Ma come abbiamo detto prima, l'obbiettivo è quello di generare il PTK partendo dalle informazioni attuali (solo il PMKID). Sapendo che il PMKID viene generato come segue:
ciò che ci serve è trovare il PMK, ma anche i criteri di generazione del PMK sono noti, ed avviene -semplificandola- in questo modo:
dove PBKDF2 sta per Password-Based Key Derivation Function e la password quindi è un parametro essenziale per la derivazione del PMK. A sua volta però questo PMK viene usato insieme ad altri parametri per la generazione del PTK che è quello che ci serve.
Di conseguenza, ricapitolando: una volta che il secondo pacchetto della negoziazione è stato scambiato, si hanno abbastanza informazioni per poter provare a calcolare il PMK, quindi anche il PTK usando una password prestabilita, presa da una lista di password (dizionario).
Questo PTK può essere usato per innescare la Key-Confirmation e generare il MIC che viene confrontato con il MIC autentico per determinare la validità della password presa dal dizionario.
Questo processo però deve essere eseguito da zero per ogni parola presente nel dizionario (o generata da un bruteforce), da qui la lentezza dell'intero meccanismo; inoltre, per password piuttosto complicate, questo attacco potrebbe rivelarsi inefficace.
Se siente interessati all'aspetto pratico della questione, una guida su come effettuare questo attacco è presente qui sul forum e la potete trovare qui: Guida - PMKID Attack
Link alle risorse utili per approfondire:
- https://en.wikipedia.org/wiki/IEEE_802.11i-2004
- http://tools.ietf.org/html/rfc2104
- https://hashcat.net/forum/thread-7717.html
Cominciamo col dire che questo attacco sfrutta delle informazioni contenute nell'RSN IE (Robust Security Network Information Element), e consiste nel catturare uno scambio completo di frame EAPOL tra l'access point ed il dispositivo che richiede l'autenticazione. L'obbiettivo di questo attacco è ricostruire il PTK per confrontarlo con una lista di password al fine di trovare quella corretta. Bene, ma come?
Nelle reti WPA/TKIP, TKIP si serve di una PMK (Pairwise Master Key) per generare le PTK che cambiano ad ogni tentativo di associazione con l'access point.
Per capire meglio la faccenda:
Una volta che il client riceve questa chiave costruisce la sua chiave SNonce insieme alla PTK e successivamente invia l'SNonce ed il Message Integrity Code (MIC) all'access point.
Il processo di autenticazione continua con lo scambio di altre chiavi ed il consenso da parte dell'access point, ma non ci serve analizzarle ed andare oltre queste due prime fasi perchè, già arrivati a questo punto, siamo in grado di intercettare abbastanza informazioni riguardo la negoziazione tra client ed AP che possiamo provare ad eseguire il cracking della password.
Bene, ma in tutto questo, a cosa serve la password? Allora, analizzando un frame RSN:
possiamo notare la presenza della voce RSN PMKID, usata come identificativo per le PMK e per poter sfruttare delle funzionalità di caching.
Ma come abbiamo detto prima, l'obbiettivo è quello di generare il PTK partendo dalle informazioni attuali (solo il PMKID). Sapendo che il PMKID viene generato come segue:
PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)
ciò che ci serve è trovare il PMK, ma anche i criteri di generazione del PMK sono noti, ed avviene -semplificandola- in questo modo:
PMK = PBKDF2(PASSWORD, SSID, ...)
dove PBKDF2 sta per Password-Based Key Derivation Function e la password quindi è un parametro essenziale per la derivazione del PMK. A sua volta però questo PMK viene usato insieme ad altri parametri per la generazione del PTK che è quello che ci serve.
Di conseguenza, ricapitolando: una volta che il secondo pacchetto della negoziazione è stato scambiato, si hanno abbastanza informazioni per poter provare a calcolare il PMK, quindi anche il PTK usando una password prestabilita, presa da una lista di password (dizionario).
Questo PTK può essere usato per innescare la Key-Confirmation e generare il MIC che viene confrontato con il MIC autentico per determinare la validità della password presa dal dizionario.
Questo processo però deve essere eseguito da zero per ogni parola presente nel dizionario (o generata da un bruteforce), da qui la lentezza dell'intero meccanismo; inoltre, per password piuttosto complicate, questo attacco potrebbe rivelarsi inefficace.
Se siente interessati all'aspetto pratico della questione, una guida su come effettuare questo attacco è presente qui sul forum e la potete trovare qui: Guida - PMKID Attack
Link alle risorse utili per approfondire:
- https://en.wikipedia.org/wiki/IEEE_802.11i-2004
- http://tools.ietf.org/html/rfc2104
- https://hashcat.net/forum/thread-7717.html