Cracking Istantaneo di Chiavi WPA/WPA2

Craccare una rete wireless protetta da WEP è relativamente semplice: è una cosa risaputa. Craccare una rete protetta da WPA e WPA2 è decisamente più complicato. Non è impossibile, ma sicuramente arduo e richiede tempo, molto tempo. Tentare di craccare una rete protetta con la key standard fornita insieme al modem Wi-Fi dal provider sembra una missione impossibile. In genere queste chiavi sono formate da numeri e lettere, e la lunghezza è consistente ovvero di 8/10 caratteri. Il brute force potrebbe essere lunghissimo. Ma potrebbe esserci (anzi c’è) una scorciatoia, una scorciatoia che riduce i tempi di cracking: anzi, non li riduce ma li annulla! Fantascienza? Vediamo…

Il metodo che presento in questo articolo non è universale e non sfrutta una vulnerabilità dei sistemi WPA/WPA2 (o WEP), bensi l’algoritmo di generazione delle key standard.

Terminologia

Per meglio comprendere il contenuto di questo articolo è necessario spiegare il significato di alcuni termini utilizzati in questo documento.

Access Point (AP): E’ il dispositivo che fornisce il servizio wireless, modem/router Wi-Fi.

Key (PSK): E’ la “password” (pre-shared key), la chiave segreta che protegge la comunicazione wireless. In genere è composta da lettere e numeri. E’ il segreto condiviso tra Access Point e PC.

ISP: Internet Service Provide, chi fornisce la connettività Internet. Fornisce il modem per collegarsi alla rete che nel caso preso in esame diffonde anche il segnale Wi-Fi (AP).

Mac Address: Media Access Control, è l’identificatore univoco di una scheda di rete. Ogni interfaccia di rete wireless o ethernet che sia (ma anche altri tipi, vedi bluetooh) ha un Mac Address. Il Mac Address è formato da sei byte rappresentati in formato esadecimale (12-34-56-78-9A-BC-DE); i primi tre byte identificano il costruttore, gli altri tre sono univoci per dispositivo.

Serial (S/N): E’ un codice che identifica in modo univoco un apparato, nel nostro caso il router/modem fornito dall’ISP.

SSID: Service Set Identifier, è il nome di una rete Wi-Fi.

Il Problema

Quando sottoscriviamo un contratto con un ISP ci viene fornito un modem. In genere il modem viene ha in dotazione un CD; sulla confezione del cd o sotto l’apparato stesso c’è un adesivo con dei parametri. Uno di questi parametri (key) è la chiave WPA/WPA2 che dobbiamo inserire nella configurazione del nostro computer per poter accedere al servizio Wi-Fi. E’ l’unica informazione che dovrebbe essere segreta. Gli altri tre parametri sono ininfluenti. Anzi, dovrebbero essere ininfluenti.

Il problema risiede nel fatto che le chiavi segrete di default sono generate con un algoritmo.
E’ stato osservato da alcuni ricercatori che esistono casi in cui i parametri dell’algoritmo sono presi dal Mac Address, dal Serial o dal SSID; peggio ancora, spesso il SSID e il Serial discendono direttamente dal Mac Address. Questo significa che ottenendo il SSID e il Mac Address, o anche soltanto uno di questi due valori, effettuando il reverse engineering dell’algoritmo è possibile ottenere le key di dafault di tutti i modem di un particolare modello!
Se si pensa che gli ISP distribuiscono migliaia di modem dello stesso modello e considerando inoltre che probabilmente tutti i costruttori di modem adottano meccanismi simili per la generazione delle key standard; aggiungiamo il fatto che l’utente medio difficilmente cambierà la key standard otteniamo il risultato che probabilmente gran parte dei modem Wi-Fi distribuiti dagli ISP in tutto il mondo sono vulnerabili a questo problema.

La Ricerca

La mia ricerca è iniziata leggendo un documento scritto da Muris Kurgas, un hacker montenegrino, il quale ha scoperto ed ha effettuato il reverse engineering dell’algoritmo di generazione della key standard del modem Pirelli Discus DRG225, molto diffuso nel suo Paese.
La sua analisi era iniziata cercando vulnerabilità nei router/modem Thomson SpeedTouch e trovando appunto uno studio su questo genere di problema.

Ispirandomi a queste ricerche ho deciso di effettuare il reverse engineering dell’algoritmo di generazione della key standard del mio modem/router Telsey distribuito da Fastweb. Nonostante avessi a disposizione solo i parametri del mio apparato, non avendo quindi la possibilità di incrociare i risutalti con altri dati, a differenza di Muris Kurgas che aveva i dati di diversi modem, sono riuscito a ricostruire la logica dell’algoritmo, gettando le basi per la realizzazione di un generatore universale di key dei modem attualmente distribuiti da Fastweb.

Da precisare che i modem Telsey di qualche anno fa apparentemente hanno una logica ancora più semplice. Infatti, utilizzando delle combinazioni di Fastweb/Telsey SSID, Mac e Serial di modem pubblicati su Internet, ho notato che la procedura di generazione del Serial è molto più semplice e diversa da quella descritta in questo articolo.

Dal SSID al Serial

Nella mia ricerca mi sono ispirato ai lavori citati prima sui modem Pireli e Thomson. In entrambi casi ho notato che:

1. Il SSID è derivato dal Mac Address
2. Il Serial è derivato dal SSID (e quindi in qualche modo dal Mac Address)
3. La key (PSK) è derivata dal Serial Number (S/N)

Questo significa che conoscendo il Mac Address (dato pubblico e facilmente ottenibile) si può risalire alla key segreta.

Così ho deciso di iniziare la mia caccia cercando di capire se c’era un legame tra SSID/Mac e Serial anche in questo caso.

I dati di cui ho a disposizione sono i dati del modem che mi ha fornito Fastweb:

SSID: FASTWEB-1-00036F8E42BC
Mac:  00-03-6F-8E-42-BC
S/N:  00776934
PSK:  7fcee0998a

Il mio obiettivo è trovare un algoritmo in grado di generare la PSK partendo dal SSID. Trovare questo algoritmo significa ottenere le key di tutti gli apparati Telsey di questo modello.

E’ subito evidente che il SSID è il Mac Address al quale è stato aggiunta all’inizio la stringa “FASTWEB-1-“.

Per prima cosa ho deciso di capire se il Serial fosse direttamente collegato al Mac effettuando una semplice conversione numerica, cosa che si verificava nei vecchi modelli Telsey.
Infatti fino a qualche tempo fa i Serial dei modem Telsey erano la versione decimale delle ultime sei cifre decimali del Mac:

Ultime sei cifre del mio Mac: 8E42BC
Versione decimale: 9323196

E qui la prima delusione: il risultato è diverso dal previsto, infatti il mio Serial è 00776934.
Lo sconforto dura poco perchè mi sorge un sospetto: le prime 3 cifre del risultato ottenuto (932) non sono molto diverse dalle ultime 3 cifre del mio Serial (934). Decido che non si tratta di una coincidenza, ma di un segno che la pista è buona e devo continuare a batterla.
Giocando con il Mac Address mi accorgo che se invece delle ultime 6 cifre, prendo in considerazione e converto le ultime 5 (E42BC) da esadecimale a decimale ottengo 934588.
Inizia a sorgermi il dubbio che il Serial sia formato da due valori di 3 cifre e con l’aggiunta degli 0 davanti. Se fosse così avrei già la seconda parte del Serial (934). Ma la prima parte (776) da dove esce? Se inverto applico il metodo appena illustrato a 934588 ottengo 588934:

$E42BC  -> 934588 -> 934 588 -> 588 934 -> 00588934

Ricordo che il mio primo obiettivo è ottenere il Serial che nel mio caso è 00776934. Se la mia intuizione è giusta, ovvero se il Serial è formato da due sequenze di 3 cifre, sequenze che sarebbero l’inversione di un unico numero, per ottenere il Serial corretto manca ancora un’operazione. La seconda parte è giusta, la prima invece è diversa: ho ottenuto 588 ma mi aspettavo 776.
Qual’è la differenza tra i due numeri? 776-588=188. Non mi dice nulla. Ma convertendo questo numero in esadecimale ottengo $BC: ovvero l’ultimo byte del Mac Address, che ricordo è 00-03-6F-8E-42-BC.

La pista era giusta. Anche in questo caso il Serial deriva dal Mac Address.
Per ottenere il Serial si prendono le ultime 5 cifre esadecimali del Mac e si sommano le ultime 2 cifre esadecimali del Mac stesso. Il risultato viene spezzato in due parti composte da 3 cifre e le due parti vengono scambiate di posizione:

$E42BC = 934588
934588+188($BC) = 934776

934776 -> 934 776 ->  776 934 -> 00776934

La prima parte della missione è compiuta. Ho dimostrato che anche in questo caso il Serial deriva dal Mac Address. Se riuscirò anche nella seconda parte, ovvero la parte che conduce dal Serial alla key l’obiettivo sarà centrato.

Dal Serial alla Key

Ora so che c’è un legame tra SSID, Mac e Serial. Esiste un legame tra questi valori e la key (PSK)? Se si, quale? Nel caso dei Pirelli Discus analizzati da Muris Kurgas la key coincideva col Serial; nei Thomson SpeedTouch parte del SSID e la key derivano dall’elaborazione tramite hash sha1 del Serial.
Non sapendo bene da dove partire effettuo un po’ di conversioni numeriche, e semplici operazioni di sottrazione, per cercare una traccia operando in modo simile al procedimento utilizzato per giungere al Serial. Purtroppo non ottengo nulla che mi sembri utile. Sono in un vicolo cieco.

Decido di ripartire dalla key: 7fcee0998a. Cosa dice questo codice? Dieci cifre, esadecimali. Pare non abbiano un rapporto diretto riconoscibile col Mac e neppure col Serial. Potrebbero essere estratti da un md5 o da un sha1 come nel caso del Thomson. Ripensando anche alla logica fin qui usata dai programmatori, la key potrebbe essere composta da due semi-key di 5 cifre, ovvero 7fcee  e 0998a. A loro volta questi semi-key potrebbero essere frammenti (l’inizio o la fine) del risultato di un’operazione hash. Decido di seguire questa pista.
Creo delle tabelle di hash md5 e sha1 basate sulla progressione di numeri a partire da 934588, ovvero la versione decimale delle ultime 5 cifre del Mac, numero utilizzato prima per trovare il Serial. Una volta create queste tabelle cerco i frammenti di semi-key: 7fcee e 0998a.

Trovo il primo valore, si tratta dell’md5 si 936205:
936205 -> 2c916640d3b87a6aed4e443d9387fcee

le ultime 5 cifre corrispondo alla semi-key. La distanza tra il valore trovato (936205) e l’origine 934588 è 1617. Non mi dice molto. Più tardi mi accorgerò che con maggior lucidità e freddezza avrei raggiunto (quasi) l’obiettivo senza l’ausilio poco elegante delle tabelle di hash: alla fine un volgare brute-force…

Poco dopo trovo l’altra metà della key:
939674 023292804e3088ed5e6d2995f0998ac0

All’inizio trovo sconfortante il risultato: non mi convince il fatto che non si tratti degli ultimi 5 caratteri ma degli ultimi 7, con ‘c0′ che viene eliminato. A mettermi di buon umore però è la distanza tra i due numeri:

939674 - 936205 = 3469

A prima vista il numero 3469 non dice nulla; ma se andiamo  a guardare il Serial (00776934) ci accorgiamo che si tratta ancora una volta del giochetto dello scambio delle sequenze:

00776934 -> 6934 -> 69 34 -> 3469

Ho scoperto dunque che la key è formata da frammenti di md5; i due frammenti sono ottenuti estraendoli dalle ultime 5 e 7 cifre dell’md5, e che i due valori originali da cui derivano gli md5 sono “distanti” 3469 unità, ovvero un numero direttamente riconducibile al Serial.
A questo punto però manca ancora un elemento: da dove esce il numero 1617, che separa il numero derivato dal Mac (934588) dal primo (e come abbiamo visto di conseguenza il secondo) valore utilizzato per generare la key?

A Volte i Conti non Tornano…

La risposta è: non lo so! O meglio, lo so, anche se non con precisione. Andiamo per gradi.
Per scoprire gli hash che danno origine alla key ho fatto ricorso ad un brute force. Ho così trovato un numero misterioso (1617) che è poi la chiave di tutta la faccenda, il valore incognito che permette di arrivare dal Mac alla key. Da dove esce questo numero? Dalla aritmetica modulare, assai utilizzata in crittografia.

Se prendo il numero 934776 (vedi sopra) e applico il modulo 3469 (che abbiamo appena visto) ottengo come risultato 1615; come ricorderete il numero che mi aspettavo di trovare è 1617.

934776 mod 3469 = 1615 (Non 1617 ???)

Qui c’è la discrepanza che non sono riuscito a risolvere, se non stabilendo che i programmatori hanno deciso di aggiungere un valore costante di 2 al risultato dell’operazione di modulo, spiegazione che non mi convince molto.
Per risolvere la questione mi servirebbero altri dati completi (SSID, Mac, Serial e key) per poter incrociare i risultati. Già così però ritengo di essere giunto a buon punto.

Considerazioni Finali

Partendo dalla ricerca di un hacker montenegrino che ha scoperto come risalire alla key standard di un modem Wi-Fi diffuso nel suo Paese ricostruendo l’algoritmo di generazione della key stessa. Ho deciso di fare lo stesso sull’apparato che il mio ISP mi ha dato in dotazione. Seppur l’esito finale presenti una lieva anomalia, sono riuscito a dimostrare la dipendenza del Serial Number dal SSID (e dal Mac). Con una maggior quantità di dati da analizzare sarebbe probabilmente possibile superare anche l’anomalia e creare uno script per implementare l’algoritmo di generazione delle key. La stessa cosa può essere fatta su qualsiasi altro modello di modem attualmente in circolazione.

La contromisura a questo attacco è banale: non utilizzare mai le key e le password di dafault. Il problema però è: in quanti lo fanno? E quanti hanno la percezione del rischio che corrono se non modificano le key e le password standard?

1.769 Comments
  1. Ciao ragazzi! I magic numbers per Alice- 299 con Mac Wifi 00193E quindi Mac Ethernet 6487D7…. al momento non si conoscono? grazie

  2. vorrei trovare la password per connettermi a fastweb cn retet protetta da wpa !! FASTWEB-1-m6hBGtH3nzwa grazieeeeee !!!

  3. ragazzi, ho adattato lo script di evilsocket per calcolare le wpa di fastweb
    (apps.facebook.com/wpacrackfastweb) e alice
    (apps.facebook.com/wpacrackalice) a facebook. Qui tutti e due gli script integrati: apps.facebook.com/wpacrack se può essere utile…

  4. Pingback: Fastweb Colpisce Ancora: Accedere al Pannello Utente con un XSS | PillolHacking.Net

  5. Ragazzi, non so se l’avevate scoperto, ma avendo trovato un router alice alpha networks con i seguenti dati su un database, sono riuscito a ricavare il mac WiFi di esso: Ssid: Alice-75108976| Mac WiFi: 00:1D:6A:6F:F3:70

    1° Passo: aggiungere 1 al ssid->175108976
    2° Passo: convertire 175108976 in Esadecimale->A6FF370
    3° Passo: convertire 470 in esadecimale(valore costante per tutti i router)->1D6
    4° Passo: aggiungere due zeri e mettere vicini 1D6 ed A6FF370-> risultato: 00:1D:6A:6F:F3:70, cioè ho ottenuto il mac WiFi.

  6. ciao ho letto questo post e visto che sei molto bravo.
    ho un problema ma non riesco a risolverlo perché non ci capisco molto di computer.
    da 4 mesi ho comprato la xbox360slim e ho pagato 60 euro per l’abbonamento annuale per giocare online ma il problema e che ho perso l’etichetta del modem dove c’erano i dati e il PSK . sono passati 4 mesi e non so piu come fare praticamente sto regalando 60euro alla microsoft senza essermi mai connesso, non posso connettermi neanche col portatile.ho un modem alice e
    dall’xbox spunta che la rete wi-fi che trova(che ed è sicuramente mia perché le altre persone del palazzo sono tutti anziani e non hanno internet)si chiama
    Alice-48020991

    puoi aiutarmi ti prego.!? :(

  7. Basta che colleghi il modem Alice al pc con un cavo ethernet, inserisci su una pagina internet 192.168.1.1 e accedi al router da dove puoi visualizzare o modificare la tua password WIFI.

Comments are closed.