Wi-Fi Protected Setup (WPS) è un programma di certificazione opzionale lanciato dalla Wi-Fi Alliance agli inizi del 2007. Ad oggi i prodotti certificati WPS sono oltre 200 e includono router/access point wireless di alcuni tra i maggiori produttori mondiali, come Cisco/Linksys, Netgear, D-Link, Belkin, ZyXEL e vari altri. Wi-Fi Protected Setup è nato per consentire all'utente medio, che generalmente non possiede elevate skill in materia di Wi-Fi Security e Networking, di poter configurare in autonomia e semi-automaticamente la propria LAN Wi-Fi, con particolare riguardo alla security.
Un sistema nato per semplificare la configurazione degli apparati ed aumentarne la sicurezza si sta in realtà rivelando un pericoloso vettore di attacco che consente a un malintenzionato di ottenere "facilmente" la password WPA utilizzata per proteggere la propria rete wireless. Va detto che WPS è impiegato in prodotti destinati al mercato SOHO (Small Office/Home Office), ma questo non mitiga certo la portata del fenomeno che, anzi, espone proprio gli utenti meno esperti al pericolo di intrusione nelle reti LAN domestiche, con conseguenze facilmente immaginabili (furto di identità/credenziali, accesso abusivo, etc.). .
Come funziona il WPS modem
WPS può essere configurato sia in modalità out-of-band che in-band. Nella modalità in-band il meccanismo utilizzato è quello definito nello standard IEEE 802.1x, che utilizza l' EAP (Extensible Authentication Protocol) come framework di autenticazione. I metodi out-of-band invece vengono definiti tali perché la modalità di scambio dati non avviene utilizzando il canale Wi-Fi, ma altri sistemi. Entrambi i metodi out-of-band sono opzionali e, poiché la modalità di scambio dati non coinvolge il canale Wi-Fi, nell'articolo verrà considerata solo la modalità in-band che include:
- Push-Button-Connect ("PBC")
- inserimento del PIN
- Internal Registrar
- External Registrar
È proprio nel metodo External Registar che risiede la vulnerabilità che vedremo nel dettaglio tra poco. Con questa opzione, chiamata wps_reg, l'utente deve inserire il PIN dell'access point o del router in un form presentato dal client. In Fig. 4 è mostrato il metodo e la finestra di dialogo utilizzata da Windows 7 per richiedere l'inserimento del PIN. In questo caso Windows agisce da registrar.
Attacco a al WiFi WPS
I problemi di sicurezza generati dal WPS sono stati segnalati alla fine di dicembre 2011 da Stefan Viehböck all'US-CERT, che ha classificato la vulnerabilità con il codice VU#723755. A onor del vero, però, la vulnerabilità è stata scoperta quasi contemporaneamente anche da Craig Heffner di Tactical Security.
La prima falla di sicurezza nel sistema WPS consiste nel fatto che, utilizzando il metodo "External Registrar", non è richiesto alcun tipo di autenticazione se non quello di inserire un PIN. Poiché il PIN è un numero intero a 8 cifre (di cui l'ultima è un checksum), il metodo è potenzialmente vulnerabile ad un attacco di tipo brute-force. In figura è visibile la struttura logica del PIN:
Struttura logica del PIN
La seconda falla è prodotta dal fatto che quando l'autenticazione tramite PIN fallisce, l'access point invia al client un messaggio di tipo EAP-NACK. Dalle risposte fornite dall'access point, è possibile determinare se la prima metà del PIN è corretta oppure se la seconda metà del PIN è corretta. Ovviamente questa informazione riduce il numero dei tentativi necessari e sufficienti per trovare il PIN, che passano da 10^8 a 10^4 + 10^3 (l'ultimo bit viene utilizzato solo come checksum), cioè 11.000 tentativi.
Inoltre, la maggioranza dei produttori abilitano il WPS di default sui propri apparati e non implementano alcuna policy di blocco per evitare proprio attacchi di tipo brute force, per cui in meno di 4 ore è possibile provare tutte le possibili combinazioni del PIN fino a trovare quello giusto. In realtà nella pratica si è verificato che mediamente il tempo necessario è di circa 2 ore. Una volta individuato il PIN, sarà possibile per l'attaccante ottenere anche la passphrase WPA. Sono inoltre stati riportati casi in cui alcuni router wireless sottoposti ad attacco brute force, vanno in blocco, causando di fatto una condizione di denial-of-service, che richiede un reboot dell'apparato.
I tool per attaccare il WPS
Al fine di verificare se un apparato WPS-compliant è vulnerabile ad un attacco di tipo brute force sul PIN, sono stati sviluppati due tool, entrambi per Linux. Il primo è stato scritto in Python proprio da Stefan Viehböck e si chiama wpscrack: è open source e liberamente scaricabile qui. Per utilizzare wpscrack, come prima cosa bisogna porre la nostra interfaccia Wi-Fi in monitor mode utilizzando il seguente comando:
iwconfig mon0 channel X
Ove X è il numero del canale scelto. Dopodichè lanceremo wpscrack:
./wpscrack.py --iface mon0 --client 94:0c:6d:88:00:00 --bssid f4:ec:38:cf:00:00 --ssid testap -v
Come è facile intuire, dopo l'opzione "--client" bisogna specificare il MAC address dell'interfaccia di rete del client da associare, mentre l'opzione --bssid indica il BSSID dell'access point; "testap" è invece il SSID annunciato dall'access point. In ogni caso, per un aiuto sulla sintassi di wpscrack basta digitare il comando:
./wpscrack.py --help
Il secondo tool è stato sviluppato da Craig Heffner e si chiama Reaver. Anche Reaver è liberamente scaricabile da Google Code ed è open source. Ne esiste anche una versione commerciale che, secondo quanto dichiara lo sviluppatore, contiene tutte le features della versione open (che è a riga di comando) e ha in più un client web based, oltre ai classici servizi di supporto. Anche Reaver è molto semplice da usare, basta lanciare il seguente comando:
reaver -i mon0 -b 00:01:02:03:04:05
ove l'opzione -i specifica l'interfaccia in monitor mode, mentre -b specifica il BSSID.
Conclusioni sul WPS
Purtroppo ad oggi l'unica possibilità di mitigation per gli utenti finali è quella di disabilitare il WPS tout-court, cosa che, tra l'altro, su alcuni apparati non sempre è possibile.È certamente necessario che i vendor aggiornino il firmware dei loro prodotti WPS-compliant introducendo features di lock-down che eliminino la possibilità di portare attacchi brute force contro il PIN.