Indice
Packetforge-ng
Descrizione
Lo scopo di packetforge-ng è realizzare pacchetti cifrati che possono essere utilizzati per l'injection. E' possibile realizzare vari tipi di pacchetti come ARP request, UDP, ICMP e pacchetti personalizzati. L'uso più comune consiste nello realizzare pacchetti di ARP request per l'injection.
Per creare un pacchetto cifrato, è necessario avere un file con il PRGA (pseudo random genration algorithm). Quest'ultimo è utilizzato per cifrare il pacchetto che si vuole realizzare. Tipicamente è possibile ottenerlo con aireplay-ng utilizzando gli attacchi chopchop e fragmentation.
Utilizzo
Utilizzo: packetforge-ng <modalità> <opzioni>
Opzioni di realizzazione:
- -p <fctrl> : specifica il frame control word (hex)
- -a <bssid> : specifica il MAC address dell'Access Point
- -c <dmac> : specifica il MAC address del destinatario
- -h <smac> : specifica il MAC address del mittente
- -j : specifica il bit FromDS
- -o : pulisce il bit ToDS
- -e : disabilita la cifratura WEP
- -k <ip[:port]> : specifica l'indirizzo IP di destinazione [Porta]
- -l <ip[:port]> : specifica l'indirizzo IP sorgente [Porta]
- -t ttl : specifica il Time To Live
- -w <file> : scrive il pacchetto sul file pcap specificato
Opzioni per la sorgente:
- -r <file> : legge i pacchetti da questo file raw
- -y <file> : legge il PRGA da questo file
Modalità (doppio trattino per le long options):
- –arp : crea un pacchetto ARP (-0)
- –udp : crea un pacchetto UDP (-1)
- –icmp : crea un pacchetto ICMP (-2)
- –null : crea un pacchetto nullo (-3)
- –custom : crea un pacchetto personalizzato (-9)
Esempi
Generare un pacchetto di ARP request
Di seguito è riportato un esempio sul come realizzare un pacchetto di ARP request.
Primo, ottenere il file da xorare (PRGA) con l'attacco chopchop o con l'attacco fragmentation mediante aireplay-ng.
Quindi utilizzare il seguente comando:
packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 192.168.1.100 -l 192.168.1.1 -y fragment-0124-161129.xor -w arp-request
Dove:
- -0 indica che si vuole realizzare un pacchetto di ARP request
- -a 00:14:6C:7E:40:80 è il MAC address dell'Access Point
- -h 00:0F:B5:AB:CB:9D è il MAC address sorgente che si vuole utilizzare
- -k 192.168.1.100 è l'indirizzo IP di destinazione. In un ARP è “Chi ha questo IP?”
- -l 192.168.1.1 è l'indirizzo IP sorgente. In un ARP è “Informare questo IP”
- -y fragment-0124-161129.xor
- -w pacchetto ARP
Presupponendo di stare sperimentando con il proprio access point, il pacchetto ARP request generato di sopra può essere decifrato con la propria chiave. Per vedere che il pacchetto appena creato può essere decifrato usare il seguente comando:
Inserire “airdecap-ng -w <chiave ci cifratura> arp-request”
Il risultato sarà simile al seguente:
Total number of packets read 1 Total number of WEP data packets 1 Total number of WPA data packets 0 Number of plaintext data packets 0 Number of decrypted WEP packets 1 Number of decrypted WPA packets 0
Per vedere il pacchetto appena decifrato, lanciare “tcpdump -n -vvv -e -s0 -r arp-request-dec”
Il risultato sarà simile al seguente:
reading from file arp-request-dec, link-type EN10MB (Ethernet) 18:09:27.743303 00:0f:b5:ab:cb:9d > Broadcast, ethertype ARP (0x0806), length 42: arp who-has 192.168.1.100 tell 192.168.1.1
Ciò che ci si aspetta. Ora è possibile iniettare il pacchetto ARP request con “aireplay-ng -2 -r arp-request ath0”.
Il software risponderà come segue:
Size: 68, FromDS: 0, ToDS: 1 (WEP) BSSID = 00:14:6C:7E:40:80 Dest. MAC = FF:FF:FF:FF:FF:FF Source MAC = 00:0F:B5:AB:CB:9D 0x0000: 0841 0201 0014 6c7e 4080 000f b5ab cb9d .A....l~@....... 0x0010: ffff ffff ffff 8001 6c48 0000 0999 881a ........lH...... 0x0020: 49fc 21ff 781a dc42 2f96 8fcc 9430 144d I.!.x..B/....0.M 0x0030: 3ab2 cff5 d4d1 6743 8056 24ec 9192 c1e1 :.....gC.V$..... 0x0040: d64f b709 .O.. Use this packet ? y Saving chosen packet in replay_src-0124-163529.cap You should also start airodump-ng to capture replies. End of file.
Inserendo “y” di sopra, il pacchetto creato con packetforge-ng verrà iniettato.
Generare un pacchetto nullo
Quest'opzione permette di generare pacchetti LLC nulli. Questi sono i pacchetti più piccoli in assoluto e non contengono dati. L'opzione “-s” è usata per settare manualmente la dimensione del pacchetto. Una semplice via per generare piccoli pacchetti da iniettare.
Da ricordare che il valore di dimensione (-s) definisce la dimensione assoluta di un pacchetto non cifrato, quindi è necessario aggiungere 8 byte per ottenere la sua lunghezza definitiva dopo il processo di cifratura (4 byte per IV+IDX e 4 byte per l'ICV). Questo valore include anche l'header 802.11 con una lunghezza di 24 byte.
Il comando è:
packetforge-ng --null -s 42 -a BSSID -h SMAC -w short-packet.cap -y fragment.xor
Dove:
- –null indica che si vuole realizzare un pacchetto LLC nullo (con il doppio trattino).
- -s 42 specifica la lunghezza del pacchetto da realizzare.
- -a BSSID è il MAC address dell'access point.
- -h SMAC è il MAC address sorgente del pacchetto da realizzare.
- -w short-packet.cap è il nome del file di output.
- -y fragment.xor è lo stesso nome del file che contiene il PRGA.
Generare pacchetti personalizzati
Se si vuole realizzare un pacchetto personalizzato, per prima cosa occorre creare il pacchetto con uno tool a libera scelta. Quest'ultimo potrebbe essere un tool specializzato, un hex editor o anche una sessione di cattura precedente. Quindi salvarlo come file pcap e lanciare il seguente comando:
packetforge-ng -9 -r input.cap -y keystream.xor -w output.cap
Dove:
- -9 indica che si vuole realizzare un pacchetto personalizzato.
- -r input.cap è il file di input.
- -y keystream.xor è il file che contiene il PRGA.
- -w output.cap è il file di output.
Al momento dell'avvio, packetforge-ng chiederà quale pacchetto usare e quindi il file di output.
Suggerimenti
La maggior parte degli access point non si curano di verificare quale indirizzo IP viene utilizzato per un ARP request. Quindi di conseguenza è possibile utilizzare 255.255.255.255 come indirizzo IP sorgente e destinatario.
Così il comando di packetforge-ng diventa:
packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 255.255.255.255 -l 255.255.255.255 -y fragment-0124-161129.xor -w arp-request
Risoluzione dei problemi
Utilizzo di una o entrambe le opzioni -j e -o
Un errore comune è quello di includere una o entrambe le opzioni -j e -o e creare pacchetti invalidi. Queste opzioni regolano i bit FromDS e ToDS nel pacchetto generato. A meno che non si stia facendo qualcosa di veramente speciale o non si possiedono le conoscenze su quello che si sta veramente facendo, non usarle. In genere non sono necessarie.
Error message "Mode already specified"
Questo errore è solitamente causato all'usare il numero uno (-1) invece del trattino L minuscola (-l) nel comando.
Inserendo:
packetforge-ng -0 -a 00:14:6C:7E:40:80 -h 00:09:5B:EC:EE:F2 -k 255.255.255.255 -1 255.255.255.255 -y 00:14:6C:7E:40:80-03-00-14-6C-7E-40-80.xor -w arp-request
Restituisce:
Mode already specified. "packetforge-ng --help" for help.
Questo perché viene usato -1 invece di -l. Usare semplicemente “-l”.