WPA Cracking (Linux Backtrack)

« Older   Newer »
  Share  
view post Posted on 21/4/2010, 14:57

Group:
,,,..--::|| AMMINISTRATORE ||::--..,,,
Posts:
1,602
Location:
Scheda di rete

Status:


Affronteremo i diversi approcci al cracking WPA/WPA2 PSK in ordine, analizzando prima l’utilizzo della sola suite di tools Aircrack-ng, poi l’utilizzo di coWPAtty e infine un loro utilizzo combinato. La base comune di tutti questi tutorial è quella di possedere un handshake valido tra il client e l’AP.

Partiamo dalla catturta dell’handshake e alla sua verifica.
Come sempre settiamo l’interfaccia wireless che useremo in monitor mode sul canale dell’AP:

——————————–
airmon-ng start wifi0 11
——————————–
Dunque utilizziamo airodump-ng il lock mode sul canale dal quale trasmette l’AP e facendo modo che filtri solo suo traffico impostando un filtro MAC:
——————————–
airodump-ng –bssid 00:1c:10:90:86:7f –channel 11 -w handshake ath0
——————————–
A differenza del cracking del protocollo WEP, dove per effettuare con successo il cracking non era strettamente necessario individuare un client connesso via wirelss all’AP poichè anche il traffico generato da un client via cavo poteva essere utilizzato, nel cracking WPA dobbiamo per forza avere almeno un client connesso o comunque rimanere in ascolto con airodump-ng fino a che non se ne connette uno.
La necessità di avere un client connesso nasce dal fatto che il cracking WPA è sostanzialmente un brute-force su un pacchetto di autenticazione confrontando l’hash di questo con quello generato da noi, quindi gli unici pacchetti che dobbiamo ottenere sono quelli in fase di handshake tra AP e client senza preoccuparci del traffico in transito sull’AP.
Quando otterrete un handshake valido, Airodump-ng vi informerà della cattura facendo apparire nella sua finestra, in alto a destra, una scritta simile a questa “[ WPA handhsake: 00:1c:10:90:86:7f“.
Se non si connette nessun client durante lo sniffing possiamo deautenticarne uno gia connesso cosi che si riconetta generando i 4 pacchetti che compongono l’handshake, usiamo Aireplay-ng per forzare la disconnessione del client vittima:

——————————–
aireplay-ng -0 10 -a 00:10:1c:90:86:7f -c 00:19:d2:3b:91:85 ath0
——————————–
Ottenuto l’handshake controlliamo che questo sia effettivamente valido con wireshark, quindi aprimo il file generato da airodump-ng con wireshark (Menu–>Backtrack–>Privilege Escalation–>Sniffers–>Wireshark) e controlliamo di aver catturato un handshake completo.

———————————————————————-



Per cercare più facilmente i pacchetti relativi all’handshake inserite nella casella filtro la parola “eapol“. I pacchetti devono essere in tutto 4, 2 in partenza dall’AP verso il client, e 2 dal client all’AP. Dall’esempio potete vedere che i pacchetti compresi tra il 575 e il 578 rispecchiano le 4 fasi che compongono l’handhsake WPA, e in particolare:
575 –> l’AP inizia l’handshake; nell’etichetta “802.1X Authentication” vedrete una voce chiamata “Replay Counter” settata a 1
576 –> il client risponde al primo pacchetto inviatogli dall’AP, anche qui il replay counter è settato a 1
577 –> ancora è l’AP a iniziare la seconda fase dell’autenticazione, in questo caso il replay counter è settato a 2
578 –> il client a sua volta risponde, il replay counter è 2




In pratica abbiamo 2 coppie di invio/risposta tra AP e client con lo stesso “replay counter”.
Cracking

Visto che si tratta di bruteforcing, partiamo dal recuperare una wordlist per il nostro scopo.
Per il tutorial inseriremo in una wordlist, scaricata dal box del blog, la chiave WPA della nostra rete, cosi da eseguire il tutorial senza troppi problemi; teniamo presente che una wordlist per essere “funzionante” non ha solo bisogno di essere grande, ma anche “adatta” allo scenario; per questo tutorial userò una wordlist molto corta per velocizzarne l’esecuzione di prova.
Dirigiamoci sul box del blog (in alto a destra) e scarichiamo da qui una wordlist, per i test ho utilizzato questa. Quindi scompattiamola con il comando:
—————–
gunzip -d junk.gz
—————–
e editiamola inserendo al suo interno la password della nostra rete in questo modo:
——————–
cat >> junk << “end”
>-=m0r3l337k3y=-
>end
——————–
ovviamente al posto di “-=m0r3l337k3y=-” dovete inserire quella che è la vostra password WPA, quindi stoppate cat inserendo la parola “end”(senza virgolette!).




[AIRCRACK-NG]
Ora iniziamo con il primo metodo di cracking utilizzando esclusivamente Aircrack-ng con la wordlist creata:
————————-
aircrack-ng -w junk -b 00:1c:10:90:86:7f handshake*.cap
————————-
aircrack-crack.jpg
———————————————————————-


-=Xploit=- ha fatto un video tutorial, il link è a questo post del forum di remote-exploit.org








[AIROLIB-NG]
Adesso andremo ad utilizzare un’altro metodo di cracking che sfrutta Airolib-ng per creare un database con al suo interno le password precomputate con l’ESSID della vostra rete, in questo modo Aircrack-ng velocizzerà il lavoro di cracking.
Prima di tutto specifico che per proseguire dovete avere installato SQLite3, se state usando BT3 non avete problemi, è installato di default. Per chi non avesse SQLite3 installato, può installarlo tramite il modulo creato da balding_parrot scaricabile da qui. Installato SQLite3 è necessario installare la versione di Aircrack-ng in fase di sviluppo, qui sul wiki di Aircrack-ng ci sono delle istruzioni dettagliate.
A questo punto passiamo a creare il nostro database con Airolib-ng:
————————-
airolib-ng wpaTestDB init
————————-
Con questo comando andremo a creare un database chiamato “wpaTestDB“. Ora creiamo la lista di ESSID con cui fare il salt delle password, per semplicità e velocità creiamo un file con all’interno solo il nome della nostra rete:
————–
nano essid.txt
————–
un volta aperto il file con nano (se non esiste il file quest’ultimo verrà creato in automatico) inseriamo al suo interno il nome della nostra rete, nel mio caso “trinacria“.
Quindi salviamo premendo “F2” e rispondiamo con “y” seguito dal tasto enter per salvare.
Adesso inseriamo la lista di ESSID presenti nel file appena creato nel database con il comando:
——————————-
airolib-ng wpaTestDB import ascii essid essid.txt
——————————-
e subito dopo le password:
——————————-
airolib-ng wpaTestDB import ascii passwd junk
——————————-
Ora procediamo con una pulizia del database in modo che vengano eliminate tutte le chiavi non valide rendendolo cosi più veloce e leggero:
——————————
airolib-ng wpaTestDB clean all
——————————
Adesso creiamo le PMK computando password con essid, tutto questo è fatto in automatico da Airolib-ng con il comando:
————————–
airolib-ng wpaTestDB batch
————————–
airolib-batch.jpg

il tempo impiegato dipende dalla quantità di password inserite e dal numero di essid (1 nel nostro caso) oltre che dal sistema in vostro possesso.
Se volessimo essere sicuri di essere riusciti a creare un database senza errori possiamo utilizzare l’opzione “verify“; in questo modo Airolib-ng effettua una verifica volta ad eliminare ogni PMK che riscontra non valida, il comando per eseguire la verifica:
——————————-
airolib-ng wpaTestDB verify all
——————————-
se voleste controllare solo un numero random di chiavi non specificate l’opzione “all“.
Non ci resta che recuperare la chiave WPA con Aircrack-ng usando il database crerato da Airolib-ng al posto della sola wordlist:
——————————–
aircrack-ng -r wpaTestDB handshake-01.cap
——————————–
airolib-crack.jpg
———————————————————————-
Ancora una volta -=Xpoitz=- ha spiegato tutto producendo un’ottimo video, trovate il link leggendo questo post del forum di Remote-Exploit.org
[COWPATTY]
Non resta che provare con un’altro strumento a nostra disposizione, coWPAtty. In BT3 per lanciare coWPAtty 4.0, quello usato da theprez98 in questo post, dovete andare nella cartella /pentest/wireless/cowpatty-4.0/ e lanciarlo da qua dentro con ./cowpatty.
Anche con coWPAtty possiamo utilizzare metodi diversi, incominciamo sviluppando l’hash della password in tempo reale durante il cracking:
———————–
./cowpatty -f junk -r handshake-01.cap -s “trinacria”
———————–
cowpatty-crack.jpg
oppure possiamo precalcolare l’hash con genpmk e poi utilizzarlo con coWPAtty:
—————–
genpmk -f junk -d hashGenpmk -s “trinacria”
—————–
cowpatty-genpmk.jpg

e quindi recuperare la password fornendo in input l’hash, l’hanshake e l’ESSID della rete:
——————
./cowpatty -d hashGenpmk -r handshake-01.cap -s “trinacria”
——————
cowpatty-genpmk-crack.jpg
———————————————————————-
Seguendo il post di shamanvirtuel ho scoperto che Airolib-ng ha tra le vari funzioni anche quella di esportare l’hash gia computato di un determinato ESSID con la nostra wordlist in un file che possa essere letto da coWPAtty, in questo modo abbiamo la possibilità di gestire un database di hash con Airolib-ng e utilizzare coWPAtty per recuperare la chiave; il comando per esportare solo gli hash di un determinato ESSID e password è:
——————–
airolib-ng wpaTestDB export cowpatty “trinacria” airoexport
——————–
come vedete specifichiamo il database su quale lavorare (wpaTestDB) l’ESSID da esportare (trinacria) e il nome del file che andremo a generare (airoexport). Adesso con coWPAtty possiamo recuperare la nostra chiave:
——————–
./cowpatty -d airoexport -s “trinacria” -r hanshake-o1.cap
——————–
[AGGIORNARE “wpaTestDB”]
Aggiornare il database con Airolib-ng è possibile, in questo modo potete aggiungere di volta in volta password o essid al vostro database senza perdere cio che avevate già computato prima.
Verifichiamo lo stato del nostro database:
————————–
airolib-ng wpaTestDB stats
————————–
airolib-stats.jpg
in questo modo avremo per output l’elenco degli ESSID inseriti (trinacria) e la percentuale di PMK generate con le password inserite (100.0). Ora aggiungiamo un nuovo ESSID al database, quindi cancelliamo il file essid.txt creato prima e creiamone un’altro con all’interno l’ESSID da aggiungere (possiamo aggiungerne anche più di uno alla volta):
——————-
airolib-ng wpaTestDB import ascii essid essid.txt
——————-
Adesso proviamo a verificare ancora lo stato del nostro database e guardiamo il risultato:
airolib-stats02.jpg
Come potete vedere l’ESSID è stato aggiunto (essidAGGIUNTO) ma ancora non è stato computata nessuna PMK con questo ESSID (0.0); appunto ora comptiamo le chiavi con l’opzione batch e verifichiamo lo stato del database:
airolib-stats03.jpg
Adesso il database è computato al 100%!!
Cosa utilizzare di ciò che ho scritto e in che circostanza penso si possa capire solo con la pratica, io non mi sono fatto un’idea generale. Per farsi un’idea migliore bisogna fare più prove e porgere attenzione alla tempistica di ogni passaggio, magari provando wordlist di dimensioni diverse, tanto sperimentare non fa mai male! :)
Per concludere vi ricordo che dovete sperimentare tutto quello che ho scritto su una rete di vostra proprietà, non intendo prendermi nessuna responsabilità dell’uso che farete di quanto descritto.

 
Web     Top
0 replies since 21/4/2010, 14:57   427 views
  Share