Visualizzazione post con etichetta ESP8266. Mostra tutti i post
Visualizzazione post con etichetta ESP8266. Mostra tutti i post

giovedì 6 luglio 2017

Verificare la vulnerabilità della connessione Wi-Fi utilizzando un modulo ESP8266

In questo articolo verrà mostrato come testare, utilizzato una board dotata del modulo ESP8266, alcune vulnerabilità delle reti Wi-Fi e impedire ai client di connettersi. 

ATTENZIONE:
Danneggiare o violare un sistema informatico (anche da remoto) rappresenta un reato penale. Le informazioni presenti in quest'articolo vanno utilizzate solo per testare/verificare sistemi di cui si è titolari. Declino ogni responsabilità civile e penale derivante da un utilizzo non legale delle informazioni presentate in questo articolo a solo scopo didattico.

Come funziona

Il protocollo Wi-Fi 802.11 prevede un particolare frame, chiamato deauthentication frame, che viene utilizzato per disconnettere in modo sicuro i client dalla rete Wi-Fi.

La gestione di questo tipo di pacchetti, almeno nelle versioni più diffuse del protocollo, non è cifrata e basta trovarsi nel range della rete Wi-Fi e conoscere il MAC address del router e dei client per poter eseguire l'attacco.


Modulo ESP8266

L'ESP8266 è un modulo Wi-Fi a basso costo dotato di uno stack TCP/IP completo e di una MCU (microcontroller unit). Esistono una gran varietà di moduli ESP8266 che vengono impiegati anche per la costruzione di board adatte a determinati scopi e, ovviamente, per l'IoT (Internet of Things). Un elenco dei moduli ESP8266 disponibili è mostrato nella seguente tabella.

Name Active pins Pitch Form factor LEDs Antenna Shielded Dimensions (mm)
ESP-01 6 0.1 in 2×4 DIL Yes PCB trace No 14.3 × 24.8
ESP-02 6 0.1 in 2×4 castellated No U.FL connector No 14.2 × 14.2
ESP-03 10 2 mm 2×7 castellated No Ceramic No 17.3 × 12.1
ESP-04 10 2 mm 2×4 castellated No None No 14.7 × 12.1
ESP-05 3 0.1 in 1×5 SIL No U.FL connector No 14.2 × 14.2
ESP-06 11 misc 4×3 dice No None Yes 14.2 × 14.7
ESP-07 14 2 mm 2×8 pinhole Yes Ceramic + U.FL connector Yes 20.0 × 16.0
ESP-07S 14 2 mm 2×8 pinhole No U.FL connector Yes 17.0 × 16.0
ESP-08 10 2 mm 2×7 castellated No None Yes 17.0 × 16.0
ESP-09 10 misc 4×3 dice No None No 10.0 × 10.0
ESP-10 3 2 mm? 1×5 castellated No None No 14.2 × 10.0
ESP-11 6 0.05  1×8 pinhole No Ceramic No 17.3 × 12.1
ESP-12 14 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0
ESP-12E 20 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0
ESP-12F 20 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0
ESP-12S 14 2 mm 2×8 castellated Yes PCB trace Yes 24.0 × 16.0
ESP-13 16 1.5 mm 2×9 castellated No PCB trace Yes 18.0 × 20.0
ESP-14 22 2 mm 2×8 castellated +6 No PCB trace Yes 24.3 × 16.2

Le caratteristiche principali di questi moduli sono
  • CPU RISC Tensilica Xtensa L106 a 80MHz (160Mhz tramite overclock);
  • Memoria flash esterna QSPI che varia da 512KB a 4MB a seconda del modello (il modulo supporta fino a 16MB);
  • 64KB di memoria RAM per le istruzioni e 96KB di memoria RAM per i dati;
  • Stack TCP/IP completo e supporto alle reti Wi-Fi IEEE 802.11 b/g/n;
  • Fino a 16 pin GPIO;
  • UART / SPI/ I2C / I2S/ 1 modulo ADC a 10bit



NodeMCU DevKit

In questo articolo utilizzerò la board NodeMCU DevKit basata sul modulo ESP8266 ESP-12ELa board può essere acquistata per pochi euro e integra già tutto quello che serve:
  • Firmware NodeMCU;
  • Tutti i pin del modulo ESP-12E a bordo vengono riportati all'esterno;
  • Convertitore USB/seriale TTL (nella maggior parte dei casi si tratta del CP2102 prodotto da Silicon Labs) con connessione micro usb tramite la quale è possibile alimentare e programmare la board;
  • Regolatore di tensione a 3.3V;
  • Pulsanti Reset e Flash. Il primo riavvia il firmware caricato, il secondo viene utilizzato per riprogrammarlo.
NodeMCU DevKit ESP8266 ESP-12E
FIG 1 - NodeMCU DevKit ESP8266 ESP-12E

NodeMCU DevKit ESP8266 ESP-12E Pinout
FIG 2 - NodeMCU DevKit ESP8266 ESP-12E Pinout

Collegando la board alla porta USB del PC, Windows dovrebbe provvedere autonomamente a scaricare e installare i driver. In caso contrario, o nel caso si disponga di un sistema operativo diverso da Windows, è necessario provvedere al download e installazione manuale dei driver cercandoli in base al chip montato sulla board.

Chip CP2102 della Silicon Labs
Gran parte delle board NodeMCU DevKit montano un convertitore USB/Seriale TTL della Silicon Labs modello CP2102. I driver per Windows, Mac, Linux e Android per tale chip possono essere scaricati dal seguente link
Download Drivers CP2102 

Chip CH340G
Le schede più economiche montano il chip CH340G e generalmente non vengono riconosciute automaticamente da Windows. I driver possono essere scaricati da
Download Drivers CH340G 

Chip PL2303 
Se il chip montato sulla scheda è il modello PL2303, i driver ufficiali vanno scaricati da 
Download Drivers PL2303 



Installare il Firmware

I firmware disponibili per il dispositivo sono diversi, tra i più comuni ci sono:
- AT;
- MicroPython;
- NodeMCU.

Per il nostro scopo scarichiamo il firmware esp8266_deauther_1mb.bin da https://github.com/spacehuhn/esp8266_deauther/releases

Per flashare il firmware è necessario di un apposito programma. Consiglio di utilizzare NodeMCU flasher scaricabile dal seguente link
Download NodeMCU flasher 

NodeMCU flasher permette di caricare il firmware sul nostro NodeMCU DevKit. L'utilizzo è molto semplice:
  • Avviare la versione a 32 o 64 bit a seconda del proprio sistema operativo;
  • Selezionare, se non già impostata, la porta COM (virtuale) dove è collegato il NodeMCU DevKit;
    NodeMCU flasher, selezione della porta COM
    FIG 3 - NodeMCU flasher, selezione della porta COM
  • Posizionarsi sulla scheda Config e, nella prima casella (Path of binary file), selezionare il file .bin del firmware che si intende caricare. Assicurarsi che nella casella relativa all'offset sia impostato 0x00000.

    NodeMCU flasher, selezione del firmware da caricare
    FIG 4 - NodeMCU flasher, selezione del firmware da caricare
  • Ritornare alla scheda Operation e cliccare sul pulsante Flash per avviare la programmazione della board. Attendere il completamento dell'operazione.
    NodeMCU flasher, aggiornamento del firmware
    FIG 5 - NodeMCU flasher, aggiornamento del firmware
  • Al termine riavviare il dispositivo scollegando e ricollegando il cavo usb.



Avviare il test/attacco alla rete Wi-Fi

Il firmware precedentemente caricato trasforma la nostra board in un Access Point la cui rete Wi-Fi è identificata dal SSID pwned. Per avviare il test/attacco ad una rete Wi-Fi:
  • Eseguire la scansione delle reti Wi-Fi con il proprio dispositivo (smartphone, tablet, notebook, ecc) e connettersi alla rete pwned utilizzando la password deauther;
  • Una volta connessi, nella barra indirizzi del proprio browser digitare 192.168.4.1 seguito da invio. Verrà aperta una pagina con un messaggio di warning che mette in guardia sull'utilizzo del tool per scopi illeciti. Una volta lette le condizioni di utilizzo cliccare sul pulsante I've read and understood the notice above presente in fondo alla pagina;

    ESP8266 Deauther, messaggio di Warning e condizioni di utilizzo
    FIG 6 - ESP8266 Deauther, messaggio di Warning e condizioni di utilizzo
  • Nella pagina successiva, cliccare sul tasto SCAN per effettuare la scansione degli Access Point Wi-Fi disponibili;
    Scansione degli Access Point
    FIG 7 - Scansione degli Access Point
  • Le reti Wi-Fi trovate vengono elencate visualizzando informazioni come il canale utilizzato, il SSID, RSSI, il tipo di protezione. Selezionare la rete che si intende attaccare cliccando sul link SELECT.
    Selezione della rete Wi-Fi da testare
    FIG 8 - Selezione della rete Wi-Fi da testare
  • Cliccando su Stations è possibile eseguire la scansione dei clienti connessi alla rete Wi-Fi selezionata. In questa fase il modulo ESP8266 spegne il suo Access Point pertanto potrebbe essere necessario riconnettersi manualmente e aggiornare la pagina per visualizzare il risultato della scansione.

    Scansione dei client connessi alla rete Wi-Fi selezionata
    FIG 9 - Scansione dei client connessi alla rete Wi-Fi selezionata
  • Cliccando sul link Attacks in alto, si accede alla pagina degli attacchi che è possibile sferrare.
    Clone: consente di clonare il SSID della rete Wi-Fi in modo da confondere i client che tentano di connettersi. Una volta cliccato su Clone, scorrendo nella pagina, è necessario indicare nell'apposito campo il numero di cloni da creare quindi cliccare su ADD per procedere (FIG 11). Cliccando invece sul pulsante Random, verranno creati SSID con nomi casuali.
    Deauth: invia i deauthentication frame alla rete/client selezionati forzando la disconnessione del Wi-Fi.
    Beacon: invia numerosi frame beacon con il nome della rete selezionata. Semplificando il beacon non è altro che un piccolo messaggio con cui il dispositivo, ad es. l'Access Point, annuncia la sua presenza a chi è in "ascolto" fornendo informazioni come timestamp, SSID e altri parametri.
    Probe-Request: invia numerosi frame Probe-Request fino a saturare i dispositivi. Una stazione invia un Probe-Request frame quando ha necessità di recuperare informazioni da un'altra stazione.

    Attacks
    FIG 10 - Attacks

Clone SSID
FIG 11 - Clone SSID


Impostazioni

Cliccando sul link Settings è possibile personalizzare alcune opzioni tra cui il SSID visualizzato dal dispositivo, la password, il canale utilizzato, abilitare/disabilitare la scansione degli Access Point nascosti, abilitare/disabilitare la selezione di più SSID, personalizzare numero di pacchetti inviati al secondo, ogni quanto tempo modificare il MAC address, ecc. Una volta effettuate le modifiche desiderate è necessario cliccare sul link SAVE presente in fondo alla pagina e riavviare.
Settings
FIG 12 - Settings

Come difendersi

L'unico modo per difendersi è assicurarsi che tutti i dispositivi della propria rete supportino il protocollo 802.11w-2009 che prevede la cifratura dei frame e che la protezione dei frame sia abilitata.