Oggi vediamo qualcosa di estremamente pratico… ed estremamente teorico 🙂

WPS. Cos’è?

Il Wi-fi Protected Setup (WPS) è uno standard creato dalla WiFi Alliance che permette di autenticare un dispositivo Wi-Fi con un router senza dover inserire la lunga (si spera) chiave di autenticazione WPA o WPA2, basterà così essere a conoscenza del PIN del WPS per potersi autenticare col router.

Il PIN è composto da otto cifre numeriche (una password da otto cifre numeriche ha solo 100 milioni di combinazioni possibili) e, come se non bastasse, quelli della WiFi Alliance hanno facilitato ancora di più le cose ad un potenziale attaccante! Chiedendo l’autenticazione con un PIN sbagliato il router manderà una risposta contenente delle informazioni che indicano se la prima parte del PIN, i primi quattro numeri, è corretta o meno e, ancora, l’ultimo numero del PIN è un checksum dei restanti numeri. Sono sicuro che quelli della WiFi Alliance non abbiano intenzionalmente voluto esporci a questo rischio di sicurezza ma diamine, tutto questo sembra essere creato apposta per la nostra insicurezza!

 Di male in peggio!

A rendere le cose ancora più insicure (di questo non ero a conoscenza fino alla mia documentazione pre-scrittura) ci pensano i costruttori dei router: disattivando il WPS dalle impostazioni del proprio router (se possibile), questo non viene davvero disattivato ma è ancora possibile autenticarsi tramite PIN. Molti router inoltre non permettono la modifica del PIN il che porta ad un rischio davvero enorme: potete cambiare la vostra chiave e la vostra SSID quanto volete, un hacker in possesso del vostro PIN e del vostro BSSIDpotrà facilmente trovare la vostra nuova chiave usando sempre lo stesso PIN. Pochi router (giusto per aggiungere un altro errore alla catastrofe) bloccano un device che abbia effettuato troppi tentativi scorretti, il che porrebbe un gran freno – anche se non troppo – all’attacco brute-force.

Reaver. Come funziona?

Reaver è un “semplice” brute-forcer, ovvero effettua un attacco brute-force del PIN del vostro router. Vista la struttura di questo sistema di autenticazione (le risposte in caso di PIN sbagliato e l’ultima cifra che è un checksum delle altre) l’attacco procede in una maniera davvero intelligente: si effettua un attacco brute-force sulle prime quattro cifre con le prossime tre casuali e l’ultima che è il checksum finché non si riceve una risposta che indichi la correttezza delle prime quattro cifre, dopodiché si effettua un brute-force sulle prossime tre cifre e si trova l’ultima cifra calcolando il checksum delle altre cifre.

Anzichè fare un brute-force diretto sulle otto cifre che impiegherebbe molto più tempo visto le 100 milioni di possibili combinazioni (non stiamo parlando di un brute-force rapido, nel mio test ho impegato circa 4/5 secondi per tentativo!) facciamo un brute-force sulle prime quattro cifre (massimo 10.000 tentativi) e poi un secondo brute-force sulle prossime tre cifre calcolandoci di volta in volta l’ultimo numero (massimo 1.000 tentativi) e riduciamo il brute-force a soli 11.000 tentativi. Reaver inoltre permette anche la ripresa dell’attacco dopo interruzione (Ctrl-C per interrompere, lanciando poi reaver contro lo stesso BSSID verrà chiesto se continuare da dove ci si era interrotti).

Basta, voglio provare!

Per effettuare il test ho usato il MIO router (non quello dei miei vicini, per quanto siano bastardi, perchè non voglio rischiare denunce penali solo per aver giochicchiato, vi ricordo che fare questi test su router non propri è un reato da codice penale, con pene abbastanza severe tra l’altro), la mia backtrack in cui tutti i tools necessari sono installati di default (in caso non li abbiate o non stiate usando la backtrack dovete installare la suite aircrack-ng e reaver) e una scheda WiFi che supporti la monitor-mode. Aggiornate i tools (se avete la backtrack vi cosiglio questo comodissimo script in python) e possiamo cominciare.

Prima di cominciare vi prego di adottare la filosofia hacker: leggete e cercate di capire quello che state per fare (è tutto molto semplice in verità), leggete i comandi prima di lanciarli, documentatevi e leggete gli output, cambiate quello che non vi piace… Insomma, smanettate 🙂

Prima cosa dobbiamo impostare la nostra scheda wireless nella monitor-mode (per trovare il nome della vostra scheda usate iwconfig). Noi lo faremo con airmon-ng:

# airmon-ng start

Nel comando di prima <dev> rappresenta la vostra scheda WiFi, es. wlan0. Ok, leggiamo l’output e annotiamoci eventuali processi che potrebbero dare problemi (se non ne abbiamo bisogno possiamo terminarli subito per sicurezza).

Ora dobbiamo trovare il BSSID della rete sulla quale vogliamo effettuare il test. Lanciamo airodump-ng:

# airodump-ng

Nel comando <monitor-dev> è la vostra scheda in monitor mode (io avevo mon0), il nome lo prendiamo dall’output del comando precedente. Comparirà una lista di reti, quando individuate la VOSTRA potete terminare il programma con Ctrl+C. Una piccola nota: cercate di avere una buona ricezione del segnale, io durante il mio test avevo -65 nella colonna PWR, diciamo che sotto al -80/-85 potrebbe dare problemi (errori, interruzioni, ecc.).

Ora abbiamo la nostra scheda impostata sulla monitor-mode e il BSSID della nostra rete, reaver non chiede altro. Se volete informazioni sulle varie opzioni e parametri di reaver lanciate reaver –help. Possiamo ora lanciare l’attacco sul NOSTRO router:

# reaver -i  -b  -vv

Ho aggiunto il parametro -vv (verbose) per poter controllare cosa reaver stia facendo, altrimenti non vedremmo “cosa c’è dietro” ma solo il risultato finale. Comincerà ora un lungo attacco brute-force, alla fine avrete un risultato tipo questo (pin, chiave e ssid, tutto in chiaro!):

Se volete saperne di più ad esempio cosa sono i messaggi M1, M2, eccetera, le WSC NACK che vedete dopo aver lanciato reaver, se volete sapere di più sul funzionamento del programma o volete addirittura leggerne il codice (è open source!!) vi rimando al sito del programma: [fancy_link link=”https://code.google.com/p/reaver-wps/”]https://code.google.com/p/reaver-wps/[/fancy_link]

e al davvero interessante pdf: [fancy_link link=”http://sviehb.files.wordpress.com/2011/12/viehboeck_wps.pdf”]http://sviehb.files.wordpress.com/2011/12/viehboeck_wps.pdf[/fancy_link]