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: packetforge-ng <modalità> <opzioni>
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:
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.
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:
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:
Al momento dell'avvio, packetforge-ng chiederà quale pacchetto usare e quindi il file di output.
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
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.
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”.