Tool Keygen WPA default Zyxel (Home&Life-Infostrada-Tiscali)

Salve, volevo segnalare che sono riuscito a creare grazie a questo tools due dizionari funzionanti (uno per i modelli del 2018 e l'altro per quelli del 2019).

Ognuno di loro contiene 100.000.000 di WPA e pesa 0.98GB compresso (1,58 GB una voltra estratto)

Li ho testati solamente su vari modelli di Zyxel VMG8825-B50B, con successo.

Link 1 (router con seriale che inizia con 18) https://mega.nz/file/uk8AwQBS#6T6tyQdHuCuJKPvakvAcTbaHZiew7AOXdqgDTW5Y1rg
Link 2 (router con seriale che inizia con 19) https://mega.nz/file/r0kgQaxR#2lhNADiqxb3qJ-94RTyBZtAr4cwF3R3YCLCLL784pjE


Procedura:
- Una volta che avete catturato il .cap contenente l'handshake valido, lo convertite in .haccpx (tramite il comando "cap2hccapx NOME_FILE.cap NOME_FILE.hccapx", oppure esistono tools online, basta scrivere "cap to hccapx"

- Scaricate i binaries di Hashcat da https://hashcat.net/hashcat/

- Mettete i dizionari ed il file haccpx nella cartella di Hashcat che avete appena estratto

- Aprite il terminale dalla cartella di Hashcat ed eseguite:
./hashcat64.bin -m 2500 NOME_FILE.hccapx wpa_keys_182000000000_182099999999_16_V_c.txt (oppure)
./hashcat64.bin -m 2500 NOME_FILE.hccapx wpa_keys_192000000000_192099999999_16_V_c.txt

Con una AMD Radeon RX 480 ho impiegato in media 5 minuti per identificare la password, ad un ritmo di 190.000 password al secondo.

Ovviamente vale la premessa generale che vuole il metodo non funzionante se la password del router è stata modificata.
 

J4ck0xFF

Utente Electrum
20 Agosto 2008
261
10
110
146
Ultima modifica:
Ciao a tutti, vi volevo segnalare il seguente codice su github:

I router Zyxel ( modelli VMG8823, VMG8825 ) che hanno come SSID :

"Home&Life SuperWiFi-xxxx" (lunghezza password 16 caratteri)
"Infostrada-xxxxxx" (lunghezza password 10 caratteri)
"TISCALI_xxxx" (lunghezza password 10 caratteri)

generano la password di default della WPA usando il proprio codice seriale (il codice seriale, è un codice identificativo del router, non è la password wpa! ) . Il problema è che tale codice è facile da indovinare perchè seguono un pattern abbastanza semplice:

"Home&Life SuperWiFi-xxxx"/"Home&Life 2.4GHz" Range seriali:
S182V00000000-S182V99999999
S192V00000000-S192V99999999

"Infostrada-xxxxxx" Range seriali:
S172V00000000-S172V99999999
S182V00000000-S182V99999999

"TISCALI_****" Range seriali:
S172V00000000-S172V99999999
S182V00000000-S182V99999999


Il primo carattere è sempre un 'S'.
  • I due caratteri successivi dovrebbero essere l'anno di produzione del router, nell'esempio di sopra abbiamo 2017 ,2018 e 2019.
  • La quarta e quinta lettera ('2V') è costante .
  • Il resto della stringa varia da router a router
Partendo dal codice golang che è già stato implementato, dovete modificarlo in modo da fare un bruteforce nel range dei codici seriali che vi ho messo sopra , calcolare la corrispondente password WPA usando le funzioni che sono già state implementate (in base al tipo di rete dovete scegliere se creare chiavi da 10 o 16 caratteri, guarda sopra per dettagli) e salvarle tutte le password generate su un file di testo. Se tale file di testo venisse usato insieme ad Hashcat ed un handshake catturato, è possibile risalire alla password giusta in meno di mezz'ora.


Possibili risoluzioni da suggerire a Zyxel:
  • Utilizzare un seriale di tipo alfanumerico casuale anzichè puramente numerico con un pattern semplice.
  • Offuscare il codice.
N.B: Per ogni range, vengono generate circa 1Gb di chiavi, non vi preoccupate se il programma macina per un po', se volete aprire il file di testo vi consiglio di farlo con il programma "glogg".
Le reti infostrada sono quelle dei router nuovi, per i router vecchi, che creano la rete con SSID InfostradaWiFi-****** , la password WPA di default è "2"+"MAC router".

EDIT:
Il modello VMG8823-B50B ,come fatto osservare nel seguente commento, trasmette il proprio seriale nelle probe response.
 
Ultima modifica:
Mio caro, abbiamo fatto bingo! ;)
Ti confermo, dopo un applicazione pratica che sono riuscito a confermare i miei sospetti ed è come ti dicevo. Non è detto che tutti gli isp, con quindi diversi firmware, abbiano le stesse impostazioni e trasmettano quindi un seriale dummy. Ho avuto ora l opportunità di scoprire che per quanto riguarda le reti TISCALI_XXXX, il seriale viene trasmesso in chiaro in ogni singola Probe Response. Pertanto ogni rete tiscali, almeno per ora, è completamente vulnerabile senza necessità di testarci un intero dizionario.

Per quanto wireshark mi capti un pacchetto malformato e quindi non interpretabile (per cause non importanti al momento probabilmente ricezione non eccellente o interferenza), nelle righe 0110 e 0120 il seriale è trasmesso in chiaro, tra la B e la T (usate in questo caso come separatori).
1 pacchetto tiscali.png


Usando quindi il tuo algoritmo ricavo la password:
2 password generata.png


E ti confermo al 100% la connessione!
3 connessione avvenuta.png


Pertanto al momento, ogni singola rete tiscali è penetrabile in nemmeno 10 minuti.
Forse con tshark si puo scrivere uno script che automatizzi l'estrazione del seriale, provo se mi lasci l'onore.
Cheers! Grande jack!
 
Ultima modifica:
Interessante!, certo fai pure, poi se hai novità scrivi pure qua che ti linko sul primo post (ne approfitto già per linkare questo tuo commento, così non facciamo un altro thread se ti stà bene, poi ovviamente fammi sapere). Guarda, volendo si possono usare anche le librerie del fork di reaver per farci un programma semiserio, però effettivamente non sò quanto ne valga la pena se vale solo per un dispositivo ed inoltre non sarebbe didatticamente interessante. In particolare, data questa lista e le tue osservazioni, concludiamo che il modello che dici tu essere ancora di più vulnerabile è il VMG8823-B50B perchè trasmette il seriale in chiaro nelle probe response, mentre il VMG8825-B50B (prodotto circa un anno dopo) no, perchè trasmette un seriale falso (credo che sia proprio questione della versione del router e non del firmware). Io se avrò del tempo farò un'analisi dei dati per ampliare la lista dei router vulnerabili all'attacco a dizionario , utilizzando le password di un database pubblico 3wifi, tirandomi così giù un dataset per poter analizzare i dati e cercare eventuali correlazioni tra mac e seriali, seriali per i quali sono convinto si possa restringere ancora di più la dimensione del dizionario, perchè assumono pure quelli dei pattern particoli.
Vai linka, appena ho tempo rispondo al tuo commento!
Messaggio unito automaticamente:

Eccomi, il seriale, per facilità è estraibile con pochi minuti senza aprire wireshark e catturare:

1 - con wash, usando l'opzione -j, viene fornito un output dettagliato in json contenente il seriale (wash risulterà piu lento perche attenderà una probe response).

2 - con tcpdump, aggiungendo all interfaccia e agli altri filtri per isolare la rete il seguente filtro "type mgt subtype probe-req".

EDIT: Per avere un output pulito, eseguite wash in questo modo:

Bash:
wash -i interfaccia -j > output.json

Cosi da indirizzare l'out nel file output.json
Avrete poi un output del genere:

Bash:
matt@matt-pc:~$ cat output.json
{"bssid" : "B8:D5:26:11:7F:CD", "essid" : "TISCALI_7FCD", "channel" : 3, "rssi" : -71, "vendor_oui" : "001018", "wps_version" : 32,
"wps_state" : 2, "wps_locked" : 2, "wps_manufacturer" : "ZYXEL", "wps_model_name" : "VMG8823-B50B",
"wps_model_number" : "VMG8823-B50B", "wps_device_name" : "VMG8823-B50B ZyXELAP 2.4G",
"wps_serial" : "S192V19004757", "wps_uuid" : "792966145df70a0ffd9f5d0ab85a2ea3",
"wps_response_type" : "03", "wps_primary_device_type" : "00060050f2040001",
"wps_config_methods" : "0000", "wps_rf_bands" : "03", "dummy": 0}

Passatelo in questo script e salvatelo col nome che volete (io salvato come wformatter.sh):

Bash:
#!/bin/bash

if [[ "$1" && -f "$1" ]]; then
    FILE="$1"
else
    echo 'Specify the file to analyze.';
    echo 'Usage:';
    echo -e "\tbash wpsi.sh /tmp/wps.txt";
    exit
fi

cat $FILE | sed 's/\" : \"/\\/g' | sed 's/\", \"/\\/g' | sed 's/\" : /\\/g' | sed 's/, \"/\\/g' | awk -F"\\" '{print "BSSID: "$2} {print "     ESSID: "$4} {print "     Channel: "$6} {print "     RSSI: "$8} {print "     Vendor OUI: "$10} {print "     WPS version: "$12} {print "     WPS State: "$14} {print "     WPS locked: "$16} {print "     Manufacturer: "$18} {print "     Model name: "$20} {print "     Model number: "$22} {print "     Device name: "$24} {print "     Serial: "$26} {print "     UUID: "$28} {print "     Response type: "$30} {print "     Primary device type: "$32} {print "     Config methods: "$34} {print "     rf bands: "$36}'

Con il comando:

Bash:
matt@matt-pc:~$ sudo chmod +x wformatter.sh
./wformatter.sh output.json > codiceleggibile.txt

E avrete come output:
Bash:
matt@matt-pc:~$ cat codiceleggibile.txt
BSSID: B8:D5:26:11:7F:CD
     ESSID: TISCALI_7FCD
     Channel: 3
     RSSI: -71
     Vendor OUI: 001018
     WPS version: 32
     WPS State: 2
     WPS locked: 2
     Manufacturer: ZYXEL
     Model name: VMG8823-B50B
     Model number: VMG8823-B50B
     Device name: VMG8823-B50B ZyXELAP 2.4G
     Serial: S192V19004757
     UUID: 792966145df70a0ffd9f5d0ab85a2ea3
     Response type: 03
     Primary device type: 00060050f2040001
     Config methods: 0000
     rf bands: 03

poi volendo...
Bash:
matt@matt-pc:~$ cat codiceleggibile.txt | grep Serial | cut -d":" -f 2 | xargs go/bin/zykgen -c
KP7PXT437U

script per pulire i json preso da miloserdov
 
Come suggerito dal moderatore ho creato un th apposito nella sezione release, se a qualcuno andasse di visitarlo questo è il link.
Ho già specificato anche nella release che è un tool sviluppato in davvero poco tempo, quindi se qualcuno sa fare di meglio non mi interessa ;), accetto solo critiche dal punto di vista costruttivo e non discussioni su "chi ce l'ha più lungo", grazie :)
 
Ultima modifica:
Pertanto al momento, ogni singola rete tiscali è penetrabile in nemmeno 10 minuti.
Forse con tshark si puo scrivere uno script che automatizzi l'estrazione del seriale, provo se mi lasci l'onore.
Cheers! Grande jack!
Interessante!, certo fai pure, poi se hai novità scrivi pure qua che ti linko sul primo post (ne approfitto già per linkare questo tuo commento, così non facciamo un altro thread se ti stà bene, poi ovviamente fammi sapere). Guarda, volendo si possono usare anche le librerie del fork di reaver per farci un programma semiserio, però effettivamente non sò quanto ne valga la pena se vale solo per un dispositivo ed inoltre non sarebbe didatticamente interessante. In particolare, data questa lista e le tue osservazioni, concludiamo che il modello che dici tu essere ancora di più vulnerabile è il VMG8823-B50B perchè trasmette il seriale in chiaro nelle probe response, mentre il VMG8825-B50B (prodotto circa un anno dopo) no, perchè trasmette un seriale falso (credo che sia proprio questione della versione del router e non del firmware). Io se avrò del tempo farò un'analisi dei dati per ampliare la lista dei router vulnerabili all'attacco a dizionario , utilizzando le password di un database pubblico 3wifi, tirandomi così giù un dataset per poter analizzare i dati e cercare eventuali correlazioni tra mac e seriali, seriali per i quali sono convinto si possa restringere ancora di più la dimensione del dizionario, perchè assumono pure quelli dei pattern particoli.
 
  • Mi piace
Reazioni: Axin e peste666
Grande ragazzi, io ho poco tempo e conoscenze forse troppo basilari su questo campo per potervi dare una mano, però nel caso in cui vi può servire posso fare delle verifiche per voi sui modem che ho a casa, Vodafone Station Revolution ( quella bianca per intenderci, è un modem Della Tecnicolor TIM.
 
Solo per aggiornare tutti che ci sono riuscito, in fondo era una cosa semplice a cui non ci avevo pensato. Basta cercare la pass nel file ( io ho usato quelli dell'utente che ha postato la lista completa di 18 e 19), e la riga corrispondente rappresenta il seriale.

ovvero se la pwd è alla riga 1800
il seriale sarà S182V00001800 , o giu di li, basta poi riprovare con il kgen.
:)
 
  • Mi piace
Reazioni: VlRUS e faggella
Salve a tutti, ho personalmente scritto un keygen in C, abbastanza scalabile per il pattern delle password dei modem/router Home&Life-Infostrada-Tiscali, ho creato due versioni, la prima in Python per aiutarmi nello sviluppo della versione in C, quest'ultima estremamente più veloce, basti pensare che genera tutte le password nel range 18-19 in soli 3-4 minuti, almeno sul mio PC(niente di che eh, un i5 7200u), l'intero dizionario di password arriva a pesare un 2.7 GB, ora vorrei un consiglio da voi su come usare a meglio questo dizionario per fare un attacco BruteForce a un modem/router Home&Life ;)
 
Ciao drsnooker, grazie per le tue ricerche.

Questo utente sta analizzando il firmware e raccogliendo quante più informazioni possibili per capire come viene generata la Password di default.
Lo so perchè ho fatto io richiesta su un'altro forum noto, e drsnooker si è messo all'opera per cercare di capire l'algoritimo che usa questo modello.

Non so perchè il link del firmware sia stato rimosso , forse perchè è un nuovo utente?
 
Ultima modifica:
Basterebbe leggere attentamente quello che c'è scritto nel primo post.

1) la lettera S, i due numeri successivi e i 2V non sono riferiti alla password del modem ma al suo numero seriale.

2) 2+MAC, fa riferimento ad una vulnerabilità dei modem infostrada di almeno 5 o sei anni fa (ma qualcuno si trova ancora) per cui leggendo il MAC da lui trasmesso (con airodump-ng per esempio) e aggiungendo davanti il numero 2, avevi la pass wifi già bella e pronta.
Trovi un vecchio post anche su questo forum https://www.inforge.net/forum/threads/craccare-password-infostradawifi-in-2-minuti.436501/

Altra vulnerabilità dei vecchi infostrada poco conosciuta e scoperta con molte mie difficoltà, per un certo periodo di tempo uscivano tutti con lo stesso PIN wps.
Ciao e alla prossima
 
  • Mi piace
Reazioni: J4ck0xFF
No non penso.., o meglio ha lo stesso peso di un arp poisoning, pixie dust, sql injection, buffer overflow ecc.., inoltre questa informazione è già alla portata dei malintenzionati (verificato su gpuhash.com) e se la mia porta di casa è poco sicura, vorrei saperlo. In ogni modo possiamo aprire un thread separato se vuoi, così non andiamo offtopic
Tranquillo, non rischi nulla (a meno che tu non sia il peggior criminale informtico ma non mi sembra il cas...FBI OPEN UP!!!), comunque ottima spiegazione per il metodo usato
 
  • Mi piace
Reazioni: J4ck0xFF
Ultima modifica:
EDIT2:
Ragazzi finalmente ho risolto anche su windows 7 64 bit.
Praticamente visto che su windows non posso dare i comandi come su linux per scaricare e installare ZYKGEN e docopt allora ho fatto cosi, ho preso spunto dalle cartelle di kali, sia GOPATH che GOROOT , ho ricreato le stesse directory e inserito gli stessi file su windows, ovviamente se su windows le directory hanno un nome diverso come per esempio la cartella di lavoro su windows l'ho chiamata workspace, in kali gocode.
Quindi impostando tutti i file come sono messi su kali, finalmente sono riuscito a compilare zykgen.exe direttamente su windows7 64 bit, ovviamente il file .exe adesso funziona correttamente..
Spero questo possa essere d'aiuto a chi sta riscontrando il mio stesso problema.
Ringrazio l'autore del topic per averci concesso queste importanti info e per l'aiuto dato, e ringrazio anche 4n0m4ly per l'aiuto che mi ha dato.
 
  • Mi piace
Reazioni: ElectricDreamer
Ultima modifica:
Fantastico davvero! Complimenti e grazie per averlo postato qui.
Per fare un piccolo appunto, ho dato un innocua occhiata (da normalissimo osservatore in monitor mode) a quanto transita nell'etere del mio palazzo e butto giu un ragionamento veloce...
Per quanto riguarda le reti ¨Home & Life SuperWiFi-xxxx¨ le 4 x rappresentano le ultime due cifre del mac ed essendo esse esadecimali, si avrebbero un totale di 65536 possibili SSID (16 alla 4ª).

Teoricamente, in caso non fossero possibili gli scenari elencati nei P.S., (e sottolineo teoricamente perche non mi sono minimamente cimentato in calcoli di dimensioni e/o fattibilita reale) si potrebbe con Pyrit precalcolare tutte le PMK per ogni singolo SSID esistente avendo la wordlist con tutte le password possibili per ogni seriale esistente (Ricavate con il tool postato nel post) e magari tenere il database online su un sito, se qualcuno avesse voglia di implementarlo.
Fatto questo, qualsiasi password di default, avendo un handshake valido altro che mezz'ora... si potrebbe ricavare in nemmeno 5 secondi.

P.S.
Meglio ancora se ci fosse un nesso tra il seriale del router ed il suo MAC address. Si potrebbe in questo caso associare ad ogni singolo SSID esistente la sua password di default.

P.S.2
Stavo dando un occhiata veloce con wireshark ed ovviamente il seriale non viene trasmesso in chiaro. Ci fosse qualche richiesta in grado di triggerarne la trasmissione? Questo renderebbe suprefluo addirittura la cattura dell'handshake. Non penso, ma rispolvererò i libri...
 
  • Mi piace
Reazioni: Helplease
Ultima modifica:
Allora eccomi, dopo svariati test con un modem di un amico non siamo riusciti a trovare nella lista generata la password di default.
Altra cosa che ho notato è il fatto che il seriale del nostro modem togliendo le lettere S V è composto da 11 numeri e non 12 come li richiede obbligatoriamente zykgen. Questo è normale? Conoscendo il seriale di 11 numeri come faccio ad ottenere la giusta password? Ho dovuto aggiungere uno zero cosi da avere 12 numeri ma haimè la password ottenuta non è corretta.
Come esempio vi lascio una immagine reperita in internet, prendete il seriale e provate ad ottenere la giusta password.
C'è qualche cosa che mi sfugge?
Nello scrivere il seriale non devi togliere la lettera V ma semplicemente mettere un numero al suo posto (e non alla fine) , e poi il programma ci sostituisce una 'V' automaticamente nella posizione giusta. In questo caso basta scrivere

.\zykgen -c -l 10 182002000000 182002000066

La 4 cifra verrà sostituita con una 'V' e poi viene accodato all'inizio una 'S', ottenendo il range
S182V02000000 -> S182V02000066
dove appunto ricade il router del tuo amico.
 
  • Mi piace
Reazioni: Axin
Nello scrivere il seriale non devi togliere la lettera V ma semplicemente mettere un numero al suo posto (e non alla fine) , e poi il programma ci sostituisce una 'V' automaticamente nella posizione giusta. In questo caso basta scrivere

.\zykgen -c -l 10 182002000000 182002000066

La 4 cifra verrà sostituita con una 'V' e poi viene accodato all'inizio una 'S', ottenendo il range
S182V02000000 -> S182V02000066
dove appunto ricade il router del tuo amico.


Perfetto..!! Appena testato e funziona perfettamente..
Grazie mille per la spiegazione..
 
  • Mi piace
Reazioni: J4ck0xFF
Per quanto riguarda il pin wps invece? Viene anche esso generato a partire dal seriale? Ho scaricato dall'FTP zyxel l'ultima versione del firmware disponibile per il modello in questione e spacchettato con FMK, dato un occhiata con Ghidra allo .so in questione, in particolare alla funzione zcfgBeWlanWscPinGen e credo anche essa richiami il seriale e il mac con zyUtilIGetBaseMAC e zyUtilIGetSerialNumber. Dagli un occhiata,in caso non lo avessi gia fatto, io purtroppo sono ancora nemmeno all'abc del reversing.
 
  • Mi piace
Reazioni: J4ck0xFF
Grazie ragazzi per le ulteriori news postate qui sopra, qualche giorno fa ho fatto dei test sniffando con wireshark su diversi modem Home&Life , purtroppo non ho trovato nessun pacchetto che trasmettesse il seriale, ne quello vero ne quello falso, ma una domanda il modem per trasmettere il seriale " anche quello falso" deve avere obbligatoriamente dei client connessi al Wi-Fi?
Assolutamente no, metti l'interfaccia in monitor mode, avvia airodump in un canale specifico. Poi nel frattempo usa con wireshark il filtro "fc.wlan.type_subtype eq 5".
 
  • Mi piace
Reazioni: Axin
Assolutamente no, metti l'interfaccia in monitor mode, avvia airodump in un canale specifico. Poi nel frattempo usa con wireshark il filtro "fc.wlan.type_subtype eq 5".

Ok.. in effetti non avevo pensato al fatto di avviare aurodump in un canale specifico.
Ci proverò entro oggi se riesco, inoltre grazie anche per il filtro consigliato.
 
  • Mi piace
Reazioni: peste666
ok grazie mille comunque il seriale l'ho trovato semplicemente usando il file di testo contenente la password trovata, per quanto riguarda le password di accesso al router ho trovato su un altro forum un tool basato su QEMU per calcolare quelle di supervisor o admin e sono riuscito ad entrare senza problemi.
Nella mia semi-ignoranza non ho capito se root o supervisor sono la stessa cosa :boh:
 
  • Mi piace
Reazioni: J4ck0xFF
praticamente chi lo ha usato semplicemente ha detto che è riuscito a farlo funzionare tutti qua, ma non ha detto come
Comunque su windows o gli stessi errori descritti in questo topic idem con kali
L'utente praticamente riuscendoci su kali semplicemente ha copiato le cartelle da kali e le ha messe su windows e ci è riuscito su win bella guida:lamer:
io direi che da kali in qualche modo è riuscito a scaricare qualche file richiesto da zykgen tipo docopot
Tornando al problema su win x64bit una volta installato golang senza problemi non riesco a fare il build perchè non trovi alcuni file kali stessa cosa gli errori sono gli stessi descritti pagine prima è inutile ripostarli,soluzione?
 
  • Mi piace
Reazioni: Kinodertoten
Se ci lavori un po' diventa semplice, leggi sul settaggio go nel wiki. Se non puoi neanche fare questo sei nel posto sbagliato qui. I ragazzi ti d anno una mano ma non possono fare la guida completa su come violare le retti.
 
  • Mi piace
Reazioni: J4ck0xFF