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

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.

Ciao! avevo bisogno di un informazione: Quali modelli necessitano di quale cocktail? per tiscali è provato che funzionano con -l 10 e -c. hai le altre combinazioni? sto costruendo un dizionario totale ;)

Ho generato con crunch la lista di tutti i seriali possibili ( che sono in sostanza di 3 tipi S172V, S182V, S192V ):
Codice:
crunch 13 13 -t S172V%%%%%%%% + 0123456789 + >  S172V.txt
crunch 13 13 -t S182V%%%%%%%% + 0123456789 + >  S182V.txt
crunch 13 13 -t S192V%%%%%%%% + 0123456789 + >  S192V.txt

# OUTPUT
root@kali:~/Serials# head S172V.txt
S172V00000000
S172V00000001
S172V00000002
S172V00000003
S172V00000004
S172V00000005
S172V00000006
S172V00000007
S172V00000008
S172V00000009
........
S172V99999999

Dopo, passo ogni linea nel plaintext al tuo keygen:

Codice:
while IFS= read -r LINE; do /root/go/bin/zykgen -l 10 -c "$LINE"; done < S172V.txt > S172Vpassword.txt

# OUTPUT
root@kali:~/Serials# head S172Vpassword.txt
M7BJGF4884
TK4YTMHQLT
P7FMBLMLFG
LTDR8D3CU8
F7B38TXYJY
F3TP7XHHRD
T747G3GGAF
J388CXDMKN
8B4E47HNBD
F8K4MKFG73

Comprimerò poi il dizionario con gzip. Se però sapessi le varie combinazioni di lenght e cocktail ottimizzerei le tempistiche :)

Saluti,
Peste666



EDIT:
Quel comando è stralento. Per ora il più veloce che sono riuscito ad ottenere è questo:

Codice:
cat S192V.txt | xargs -n1 zykgen -l 10 -c > dizionario.txt
 
  • Mi piace
Reazioni: faggella
Ciao a tutti , mi sono registrato adesso per darvi un aiuto.
Ho appena craccato la password di un VMG8823-B50B .
Ci ho messo un giorno per capire tutto ciò , vi voglio facilitare le cose.

Scaricatevi WifiinfoView e trovate la rete che volete craccare , andate giu in fondo e vedete il S.N.
Non so se fa vedere sempre, però a me lo fa vedere.
E usando il semplice
zykgen.exe -c + S.N con il main.go default .
Mi ha dato subito la password.

Ciao, spero di avervi aiutato.
Avevo gia scritto un post a riguardo, purtroppo solo i seriali dei router Tiscali vengono trasmessi in chiaro. lo trovi linkato al post originale.

Peste
 
  • Mi piace
Reazioni: HeJIeIIoStb
Salve a tutti. Dopo un po' di test ho verificato che il programma zykgen genera password valide. Ho notato però che la modifica al main fatta da @J4ck0xFF ha un errore. Genera un file di dimensioni circa 20 GB ma le password che sono generate sono state generate più volte. Ho generato da 182000000000 a 182999999999 e ha creato il file di 20 GB. Ho verificato anche cercando la mia password nel file finale ed è uscita ben 5 volte. In questo modo lievita di un bel po' il tempo di generazione e anche il tempo di verifica tramite hashcat perchè il dizionario ha una dimensione molto grande. Io per adesso ho risolto rimuovendo con uno script in python tutti i duplicati ed il file risultante ha una dimesione di 1.7 GB. Forse ormai il thread è morto però vorrei che fosse ottimizzato il programma riscritto da @J4ck0xFF. Grazie mille
 
  • Mi piace
Reazioni: ElectricDreamer
Ultima modifica:
Oggi sono riuscito a fare un test ed ho trovato la password di un handshake tiscali_xxxx.
Grazie a chi ha sviluppato il tool iniziale e chi ha fatto la modifica di generazione di tutti i seriali, a proposito di questo segnalo un piccolo bug, l'endserial è escluso dalla lista dei seriali.
Alla riga 95 ho messo questo

Codice:
for i := start; i <= end; i++ {

invece di questo

Codice:
for i := start; i < end; i++ {

almeno se dovesse capire l'ultimo seriale 99999999 controlloremo la password anche di questo
Messaggio unito automaticamente:

Sempre in merito al Zyxel 8828-b50b, ho finalmente trovato un nome firmware: v5.13(ABRF.0)b4_20200302
Che però non riesco a recuperare da nessuna parte, sul sito zyxel non c'è traccia.
Qui l'etichetta, sembra che abbiano implementato un nuovo algoritmo di generazione password. Se qualcuno riuscisse a recuperare un firmware vorrei disassemblarlo e studiarlo...
Ho fatto una richiesta sorgenti, vediamo se mi rispondono, in passato per il 8825 ho ricevuto più volte risposta per le varie versioni che ho chiesto.
 
  • Mi piace
Reazioni: Mari09999
The firmware is here:

Location of default password algorithm found here:
VMG8828.jpg
 
  • Mi piace
Reazioni: Helplease
Ultima modifica:
Ciao a tutti, dopo qualche tempo sono tornato su questo thread e ho visto che è "resuscitato" ultimamente.
Dunque mi sono permesso di fare una modifica al main.go già modificato, usando un buffered writer per velocizzare l'output.



Vedi: https://pastebin.com/gJUpMncH

EDIT: Siccome ho reinstallato tutto seguendo la guida in questo thread volevo aiutare chi come me non è riuscito al primo tentativo:

GUIDA
-installare go: https://go.dev/doc/install (ricordarsi di aggiungere alla path la directory di go)
-clonare la repository originale di zykgen,
Codice:
git clone https://github.com/luc10/zykgen
-editare il file main.go in
Codice:
zykgen/cmd/zykgen/main.go
-creare un nuovo modulo per zykgen
Codice:
go mod init zykgen
go mod tidy
(altrimenti non avremo il file go.mod necessario per compilare)
-compilare
Codice:
go build
Volendo si può anche aggiungere il file compilato alla path di linux per renderlo così accessibile da ogni cartella.
Sass:
sudo cp zykgen /usr/local/bin


FATTO ORA POTETE CREARE LE VOSTRE LISTE USANDO I RANGE DI SERIALI
 
  • Mi piace
Reazioni: JunkCoder
Ciao J4ck0xFF
ho provato a scaricare il codice relativo a questo post per cercare di capire con quale algoritmo viene calcolata la pass partendo dal seriale ma non avendo basi di programmazione non ne sono uscito vincitore. Facendo riferimento alla tua volontà di non pubblicare la pappa pronta, ti chiedo almeno la cortesia di spiegare a me e a quelli come me i singoli passaggi dal serial alla wpa, tutto questo per trovare un altro metodo alla mia portata per generare delle wordlist da usare all'occasione. Ti ringrazio in anticipo e buon lavoro.
 
Ciao,
premetto che non ho molta esperienza.
leggendo il tuo posto mi sono soffermato su Hashcat, che tipo di programma è? <che cosa ti permette di fare?
Per l'esperienza che ho per il momento, dal tuo post mi verrebbe in mente di utilizzare crunch impostando come valore minimo e massimo 13, ma dandogli come pattern S182V@@@@@@@@
e poi userei airodump-ng per avere un file .cap sul quale potrei lavorare, successivamente aircrack-ng per poter utilizzare il file di testo generato con crunch.
Magari nel mentre che uso airodump-ng si potrebbe eseguire anche una attacco di deautenticazione con aireplay-ng in modo da disconnettere un dispositivo dalla rete, nella speranza che si riconnetta per catturare un handshake.

sicuramente sto sbagliando qualcosa, ma mi piacerebbe sapere dove e migliorare :)
 
Ultima modifica:
Hashcat è uno dei più flessibili software di decriptazione hash. Ne accetta più di 200 tipi compreso quello che può interessare per il controllo della WPA del vostro router wifi :D. Veloce quanto basta e sopratutto GRATISSSSSSSS. Inoltre può sfruttare non solo la CPU del tuo PC ma anche la velocissima GPU.
Unico neo non accetta direttamente il file .cap ottenuto da airodump-ng, ma devi prima convertirlo in un formato a lui piacente. (trovi una utility che fa questo, qui https://hashcat.net/cap2hccapx/.
Riguardo la password list che tu e io vogliamo creare, la parte iniziale non è sicuramente S182V e anche se fosse le combinazioni casuali successive ti porterebbero via una buona parte della tua vita su questa terra prima di arrivare ad un risultato.
Per ogni buon conto un ragazzo partendo dalla analisi del firmware di questi modem è risalito a come la wpa di default sia generata dal numero seriale del modem stesso passando da un algoritmo di calcolo. (Analisi simili erano state fatte in passato per altri tipi di modem con ottimi risultati).
Rimango anche io in attesa di un aiuto non avendo conoscenze sufficenti per analizzare il problema.
Grazie e se hai bisogno di altri chiarimenti riguardo le reti wifi, scrivi.
 
Ultima modifica:
Hashcat è uno dei più flessibili software di decriptazione hash. Ne accetta più di 200 tipi compreso quello che può interessare per il controllo della WPA del vostro router wifi :D. Veloce quanto basta e sopratutto GRATISSSSSSSS. Inoltre può sfruttare non solo la CPU del tuo PC ma anche la velocissima GPU.
Unico neo non accetta direttamente il file .cap ottenuto da airodump-ng, ma devi prima convertirlo in un formato a lui piacente. (trovi una utility che fa questo, qui https://hashcat.net/cap2hccapx/.
Riguardo la password list che tu e io vogliamo creare, la parte iniziale non è sicuramente S182V e anche se fosse le combinazioni casuali successive ti porterebbero via una buona parte della tua vita su questa terra prima di arrivare ad un risultato.
Per ogni buon conto un ragazzo partendo dalla analisi del firmware di questi modem è risalito a come la wpa di default sia generata dal numero seriale del modem stesso passando da un algoritmo di calcolo. (Analisi simili erano state fatte in passato per altri tipi di modem con ottimi risultati).
Rimango anche io in attesa di un aiuto non avendo conoscenze sufficenti per analizzare il problema.
Grazie e se hai bisogno di altri chiarimenti riguardo le reti wifi, scrivi.

1)Quindi hash potrei usarlo per il file che genera airodump-ng (ovviamente riconvertito nel formato compatibile)?

2)e perché la parte iniziale delle password non è S182V?
so che il 18 è in base all'anno e che quindi può cambiare

3)e invece per la teoria sull'handshake? che mi dici?
 
N.B.2: 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".

  • 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

Ciao,
premesso che probabilmente sono io ad aver capito male.

A casa ho un router standard Infostrada da qualche hanno con SSID "InfostradaWiFi-******". Per curiosità ho controllato la wpa di default, però non inizia per "S", i due caratteri successivi non indicano l'anno in quanto uno è una lettera e il quarto e quinto carattere non sono "2V".

Cosa mi sfugge?

(Non ho capito che significa "2"+"MAC router")
 
Ultima modifica:
Ciao J4ck0xFF
ho provato a scaricare il codice relativo a questo post per cercare di capire con quale algoritmo viene calcolata la pass partendo dal seriale ma non avendo basi di programmazione non ne sono uscito vincitore. Facendo riferimento alla tua volontà di non pubblicare la pappa pronta, ti chiedo almeno la cortesia di spiegare a me e a quelli come me i singoli passaggi dal serial alla wpa, tutto questo per trovare un altro metodo alla mia portata per generare delle wordlist da usare all'occasione. Ti ringrazio in anticipo e buon lavoro.
ciao, scusa il ritardo nella risposta ma ultimamente sono stra impegnato.Allora, l'unica cosa che devi modificare è questa riga nel main.go:


fmt.Println(zykgen.Wpa(args.Serial, args.Length, cocktail))
questa riga và a chiamare la funzione Wpa, passandogli come argomenti il seriale, la lunghezza della password da generare ed il "cocktail" che è solo un numero che indica il tipo di algoritmo da usare (per noi è sempre 2), tale funzione ritorna la chiave wpa che viene poi stampata a video. Metti questa funzione all'interno di un ciclo for, in modo da passare ogni volta un seriale diverso alla funzione wpa, prendi il risultato che ti restituisce, e lo vai a salvare in un file di testo anziché stampare a video. I passaggi che fa sono abbastanza complicati, per farti capire non sono passaggi che puoi fare su un foglio di carta, il consiglio che ti dó è quello di capire come usare la funzione che è già stata scritta. Se vedo che c'è altra gente interessata al codice, lo posso pubblicare.
Messaggio unito automaticamente:

1)Quindi hash potrei usarlo per il file che genera airodump-ng (ovviamente riconvertito nel formato compatibile)?

2)e perché la parte iniziale delle password non è S182V?
so che il 18 è in base all'anno e che quindi può cambiare

3)e invece per la teoria sull'handshake? che mi dici?
occhio che il seriale è un numero identificativo del router, stampato sull'etichetta dove è anche presente la password ma sono diverse, ma è ricavabile da quest'ultimo con l'algoritmo che è stato implementato nel codice che ho linkato
 
Grazie mille J4ck0xFF, purtroppo come ti avevo già detto, di programmazione sono a zero o poco più. Per ogni buon conto un mio collega gentilissimo e disponibilissimo, dopo un esame del problema mi ha modificato il codice e sono riuscito già a generare tutte le wordlist dedicate (già testate su diversi handshake con risultato positivo).
Ancora grazie e alla prossima.
 
Ultima modifica:
@J4ck0xFF se tu riuscissi a pubblicare il codice mi faresti un gran favore, purtroppo Golang non rientra ancora nelle mie competenze:alesisi:
modifica il main.go con questo e dovrebbe bastare
(Da usare solo a scopo informativo su una rete di cui avete il permesso di entrare mi raccomando), poi googola, compila il codice e chiami dal prompt per esempio nel modo seguente:
Codice:
zykgen.exe -c -l 10 182000000000 182000000010
#và ad usare l'algoritmo "cosmopolitan", creando password da 10 caratteri (e quindi per i router Infostrada/Tiscali, per gli Home&Life devi mettere 16), generando chiavi il cui seriale và da S182V00000000 ad S182V00000010.
Messaggio unito automaticamente:

Grazie mille J4ck0xFF, purtroppo come ti avevo già detto, di programmazione sono a zero o poco più. Per ogni buon conto un mio collega gentilissimo e disponibilissimo, dopo un esame del problema mi ha modificato il codice e sono riuscito già a generare tutte le wordlist dedicate (già testate su diversi handshake con risultato positivo).
Ancora grazie e alla prossima.
Sono abbastanza sicuro che la probabilità di successo si aggiri sul 100%, sono contento tu sia riuscito lo stesso a modificare il codice, e visto che potrebbe servire in futuro a qualcun altro ho aggiunto il main modificato a questo post.
 
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


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".

N.B.2: 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".

  • 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.

Non vi posto direttamente il codice per evitare problemi che sinceramente ne ho già troppi:alesisi:, ma se sapete programmare è una cosa veloce da fare e vi posso confermare che funzia, indi .. se avete tali router, cambiate la password di default!.

EDIT: il main modificato lo trovate qua
(Da usare solo a scopo informativo su una rete di cui avete il permesso di entrare mi raccomando)
Beh...non avresti dovuto spiegarlo nei minimi particolari, può essere vista da gente malintenzionata, guida utile e dettagliata ma ricordo che simulare il tutto realmente senza autorizzazione del soggetto interessato è contro la legge
 
Beh...non avresti dovuto spiegarlo nei minimi particolari, può essere vista da gente malintenzionata, guida utile e dettagliata ma ricordo che simulare il tutto realmente senza autorizzazione del soggetto interessato è contro la legge
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
 
modifica il main.go con questo e dovrebbe bastare
(Da usare solo a scopo informativo su una rete di cui avete il permesso di entrare mi raccomando), poi googola, compila il codice e chiami dal prompt per esempio nel modo seguente:
Codice:
zykgen.exe -c -l 10 182000000000 182000000010
#và ad usare l'algoritmo "cosmopolitan", creando password da 10 caratteri (e quindi per i router Infostrada/Tiscali, per gli Home&Life devi mettere 16), generando chiavi il cui seriale và da S182V00000000 ad S182V00000010.
Messaggio unito automaticamente:


Sono abbastanza sicuro che la probabilità di successo si aggiri sul 100%, sono contento tu sia riuscito lo stesso a modificare il codice, e visto che potrebbe servire in futuro a qualcun altro ho aggiunto il main modificato a questo post.


Anzitutto grazie per questo post, sarà per noi una eccellente base di studio per questi modem.
Volevo chiederti solo una cosa, ho installato golang, credo di aver impostato il tutto min modo corretto, se provo a fare il test con il file hello.go tutto apposto, ma se tento di generare il file zykgen.exe ottengo sempre lo stesso errore.
Sono ore, ore e ore che ci provo ma non riesco proprio a compilare questo file.
Dove sbaglio? cosa non ho fatto? non conosco minimamante questo linguaggio di programmazione e non so piu veramente cosa provare.
Qualsiasi aiuto sarà per me prezioso, grazie anticipatamente.
Allego il file.
 

Allegati

  • 2019-09-18_014048.png
    2019-09-18_014048.png
    42.1 KB · Visualizzazioni: 616