Ed eccoci giunti alla seconda parte (la prima è qua) di questa mini-spiegazione riguardo la brute force. Un riassunto veloce della puntata precedente:
La brute force è una tecnica di attacco che, tramite programmi specifici ed eventualmente di database, serve per recuperare un qualunque tipo di password. La brute force classica consiste nel provare velocemente tutte le passwords possibili. Esistono altri metodi che velocizzano l’operazione come l’utilizzo di Raimbow Tables o di più computers assieme
E adesso passiamo all’argomento di oggi: Confronto di tabelle, FPGA e CUDA.
Confronto di tabelle
Questo metodosi distacca un po’ di più dai già visti metodi, infatti è vero che abbiamo sempre un database come per le Raimbow Tables ma questa volta il database non viene consultato in ordine alfabetico, ma a caso. Ti spiego: hai mai cercato una parola su un dizionario? Che cosa fai? Apro il dizionario circa a metà quindi guardi la parola in alto e vedi se la parola che devi cercare viene prima o dopo. Quindi escludi una metà e consideri solo l’altra, aprendo il dizionario in un altro punto (a circa un quarto), ecc…
Questo metodo praticamente usa una ricerca a random. E come nelle Raimbow Tables, per applicare questa tecnica dobbiamo disporre dell’hash, e non del campo dove inserire la password. Una volta trovato l’hash corrispondente viene mostrata la password in chiaro
Siccome le tabelle di lookup sono enormi (si aggirano attorno ai terabyte) è possibile trovare questi programmi di confronto direttamente online (anche perchè questo metodo di ricerca richiede decisamente meno CPU degli altri metodi). Ovviamente anche qua abbiamo bisogno di un database per ogni hash.
Uno tra i siti online che serve per recuperare le password crittate in md5 (come quelle di internet) è project md5 (ma con una veloce ricerca con Google se ne trovano moltissimi altri)
FPGA e CUDA
Ed eccoci arrivati all’ultimo metodo: il più recente, veloce e con alta percentuale di successo.
Ma prima lasciami spiegare cosa è un Field Programmable Gate Array: si tratta di processori che non hanno uno scopo preciso, come le cellule staminali, e spetta all’utilizzatore, via software, impostare la sua funzione. Ma tu potresti dire “anch’io faccio eseguire al processore del mio PC tutti i programmi che voglio, senza limitazioni”. Vero, ma i FPGA sono qualcosa di più: le CPU quando ricevono un comando eseguono più controlli, per upera della ControlUnit (CU), in modo da non fare errori causati dalla grande mole di dati, aumentando i tempi di calcolo fino al 90%. I FPGA sono pure unità di calcolo: noi possiamo scegliere da quale contatto del processore impartire l’ordine, che “grado” di controllo ci deve essere, come eseguire il comando, ecc… Ovviamente però dobbiamo sapere programmare in assembly per la particolare architettura del FPGA. Ma nel caso della Brute Force esistono programmi già pronti.
Devo infine dire che il confronto di bits, ovvero ciò che succede in tutti i metodi di Brute Force (tranne il classico), non richiede un grande controllo dei dati in quanto è un operazione abbastaza facile, perciò se diminuiamo il grado di controllo non dovrebbero esserci problemi.
Adesso immaginiamo di usare tantissimi FPGA messi assieme, come lavorano i processori con più core. Otteniamo dei dispositivi ad hoc per la brute force, come il Copacobana (qua sotto)
Solo che questi dispositivi iniziano a costicchiare, ed anche molto. Fortunatamente esistono in commercio altri dispositivi, con un prezzo nettamente inferiore e che addirittura sono inclusi in qualunque PC: le schede grafiche.
Le GPU sono formate da più core, dato che devono operare un sacco di operazioni di elaborazione contemporaneamente, e con una CU ridotta rispetto ai processori centali del computer, infatti la CU delle GPU può solo aumentare il tempo di calcolo fino al 70% e non al 90% come nelle CPU. Ma come è possibile? Eppure le GPU hanno una frequenza di calcolo minore (nell’ordine dei MHz). Si, ma le GPU devono eseguire calcoli della difficoltà di 2+2, mentre una CPU normalmente esegue calcoli dela difficoltà di 2 alla seconda. Figurati che il confronto dei bits è un calcolo ancora più facile.
Recentemente la nVidia ha sviluppato la tecnologia CUDA, che permette di utilizzare la scheda grafica come “secondo processore”, un processore più stupido della CPU ma più veloce. Ha rilasciato i drivers (closed source) e le direttive per i programmatori per lo sviluppo di nuovi software.
Inizialmente nata per scopi medico-scentifici, la tecnologia CUDA adesso può spaziare su tutti i campi, come la brute force.
E adesso arriviamo al metodo da utilizzare. FPGA e GPU sono da utilizzare come implementazione dei metodi già illustrati, come seconda unità di calcolo oltre alla CPU.
I metodi più utilizzati per l’implementazione sono quello tramite dizionario e Raimbow Tables. La tecnologia CUDA è molto utilizzata anche per craccare le password WPA/WPA2 tramite dizionario, data la sua velocita (ma occhio alla batteria, che le GPU si succhiano più energia di qualunque altro dispositivo)
Uno tra i programmi più famoso per il brute force tramite tecnologia CUDA è pyrit, un programma scritto in pyton, molto utilizzato per decrittare le password delle reti wireless WPA.
Inoltre il nuovo BackTrack 4, arrivati finora alla pre relase, implementa entrambe le tecnologie.
Per finire ti mostro una presentazione (in inglese) che spiega in modo chiaro e dettagliato tutti i vantaggi di CUDA e FPGA.
Un ultima cosa: tutte le GPU potrebbero funzionare come “secondo processore” ma purtroppo solo la nVidia (CUDA) e la ATI (Stream) hanno rilasciato i drivers, closed source, mentre la VIA (Padlock) ci sta lavorando (mi sembra che siano ancora in fase beta) e la Intel finora non ha fatto niente. Sta di fatto che i drivers dell’nVidia, per il momento, restano i migliori.
Alla prossima!
– La prima parte di questo articolo si trova qua! —








