Rilasciata nuova versione dell'anziana e ben supportata applicazione per la crack dei password John the Ripper 1.9.0-jumbo-1. (Il progetto è attivo dal 1996.) Su pagina del progetto sono disponibili per il download il codice sorgente e le versioni pronte per Windows.
Si segnala che sono passati 4,5 anni dal rilascio della versione 1.8.0-jumbo-1, durante i quali sono state apportate oltre 6000 modifiche (git commits) da più di 80 sviluppatori. Durante questo periodo, è stato consigliato di utilizzare l'ultima edizione da GitHub, il cui stato è stato mantenuto stabile nonostante le modifiche grazie a integrazione continua, che include un controllo preliminare di ogni modifica (pull request) su molte piattaforme. Una caratteristica della nuova versione è l'introduzione del supporto FPGA (FPGA) oltre a CPU, GPU e Xeon Phi.
Per le piattaforme ZTEX 1.15y, che includono 4 chip FPGA originariamente utilizzati principalmente per il mining di Bitcoin, ora implementano 7 tipi di hashing delle password: bcrypt, descrypt classico (incluso bigcrypt), sha512crypt, sha256crypt, md5crypt (incluso Apache apr1 e AIX smd5), Drupal7 e phpass (utilizzato, in particolare, in WordPress). Alcuni di essi sono implementati su FPGA per la prima volta. Per bcrypt, la performance raggiunta è di ~119k c/s a 2^5 iterazioni («$2b$05») con un consumo di potenza di circa 27 watt, superando notevolmente i risultati dei più recenti GPU, sia in base alla scheda che al costo dell'hardware e al watt. Sono supportati anche cluster schede di questo tipo, testate fino a 16 schede (64 FPGA), controllate da un unico Raspberry Pi 2. È supportata la funzionalità standard di John the Ripper, inclusi tutti i metodi di cracking delle password e il caricamento simultaneo di un gran numero di hash. Per velocizzare il lavoro, è stata implementata l'applicazione di una maschera (modalità "—mask", anche in combinazione con altre modalità) e il confronto degli hash calcolati con quelli caricati sul lato FPGA. Dal punto di vista dell'implementazione, in molti dei design (ad esempio, per sha512crypt e Drupal7) utilizzano blocchi costituiti da nuclei di processori multi-thread (soft CPU cores), interagenti con nuclei crittografici. Lo sviluppo di questa funzionalità è stato curato da Denis Burikin in coordinamento con altri sviluppatori di jumbo.
Altre importanti modifiche:
- Supporto per un'ampia gamma di tipi di hash, cifrature, ecc., inclusi sia gli hash classici delle password (come le nuove versioni di QNX), sia wallet di criptovalute, archivi crittografati e sistemi di file crittografati (come BitLocker e FreeBSD geli), con anche il supporto per nuove varianti di formati precedentemente supportati (come l'aggiunta del supporto bcrypt-pbkdf per OpenBSD softraid) e molto altro. In totale, sono stati aggiunti 80 formati su CPU e 47 su OpenCL (e un numero limitato di formati obsoleti è stato rimosso poiché integrato nei nuovi e considerato obsoleto). Il totale dei formati ora è 407 su CPU (o 262 escludendo i formati «dynamic», configurabili da file di configurazione) e 88 su OpenCL.
- Abbandono del supporto per il linguaggio CUDA a favore di OpenCL, il che non ostacola affatto l'utilizzo completo delle GPU NVIDIA (e anzi aiuta, grazie alla concentrazione della sviluppo e ottimizzazione su una sola implementazione di ciascun formato per GPU invece di due implementazioni come in precedenza).
- Supporto per nuovi set di istruzioni SIMD — AVX2, AVX-512 (incluso per la seconda generazione di Xeon Phi) e MIC (per la prima generazione) — e un utilizzo più universale e completo di SIMD nelle implementazioni di molti formati, incluso l'utilizzo di set di istruzioni precedentemente supportati fino a AVX e XOP su x86(-64) e.
NEON, ASIMD e AltiVec su ARM, Aarch64 e POWER, rispettivamente. (Parzialmente nell'ambito del GSoC 2015.) - Numerose ottimizzazioni per CPU e OpenCL, sia per un'elaborazione più efficiente di un gran numero di hash contemporaneamente (ad esempio, è stata testata un'elaborazione di 320 milioni di hash SHA-1 su GPU), sia per migliorare la velocità di calcolo degli hash. Alcune di queste ottimizzazioni sono universali, altre coprono sottoinsiemi di formati diversi, mentre molte sono specifiche per singoli formati.
- (Auto-)ottimizzazione del buffering ottimale delle password verificate su CPU ("—tune=auto —verbosity=5") e delle dimensioni ottimali dei task su OpenCL (inclusa per impostazione predefinita), tenendo conto anche del lento raggiungimento della piena frequenza operativa delle GPU della serie NVIDIA GTX 10xx e successive. Utilizzo di hash caricati realmente e della reale lunghezza delle password da verificare (quando nota in anticipo) per tale auto-ottimizzazione.
- Aggiunta del compilatore di "espressioni dinamiche", specificate direttamente nella riga di comando e che implementano nuovi tipi ibridi di hash, come "—format=dynamic=‘sha1(md5($p).$s)’", calcolati sulla CPU utilizzando SIMD. Come componenti di tali espressioni sono supportati decine di hash rapidi (da quelli comuni come MD5 a quelli moderatamente esotici come Whirlpool), concatenazione di sottostringhe, codifica e decodifica, conversione della registrazione dei caratteri, riferimenti a password, sale, nomi utente e costanti di stringa.
- Eliminazione delle discrepanze indesiderate rispetto a hashcat, inclusa la supporto per regole precedentemente specifiche di hashcat (comandi delle regole della wordlist), passaggio alla numerazione delle unità OpenCL partendo da 1, applicazione delle stesse lunghezze di password (di solito lunghezza 7) come predefinito durante i test delle prestazioni.
- Nuovi modalità di generazione delle password controllabili (cracking modes), inclusa PRINCE di hashcat (crea "frasi" combinando più parole in base alla lunghezza totale crescente), subsets (genera password con un numero insufficiente di caratteri diversi, anche se questi provengono da un ampio set di possibilità) e hybrid external (permette a modalità esterne, descritte in file di configurazione in un linguaggio simile al C, di generare molte password controllabili basandosi su ciascuna "parola" di base fornita da un'altra modalità). Inoltre, sono stati aggiunti diversi nuovi modi esterni predefiniti.
- Ulteriori capacità di utilizzare più modalità simultaneamente (una sopra l'altra — stacking), così come l'uso di set di regole in stacking (wordlist rules stacking).
- Miglioramenti delle modalità mask (allargamento graduale della maschera nell'intervallo di lunghezze specificate, applicazione della maschera sul lato del dispositivo OpenCL o della scheda FPGA) e single crack (comportamento razionale su dispositivi che calcolano un gran numero di hash in parallelo, cui precedentemente in questa modalità mancavano password controllabili, così come limiti nel consumo di memoria).
- Numerosi miglioramenti del supporto Unicode e di altri formati di codifica in diverse sottosistemi.
- Moltissimi miglioramenti nel programma *2john (che converte file di vari formati per
l'utilizzo con john), in particolare wpapcap2john (che gestisce il traffico WiFi). - Numerose nuove opzioni da riga di comando, impostazioni in john.conf, opzioni dello script configure e relative nuove funzionalità, non tutte delle quali sono state menzionate qui.
- Miglioramento della qualità del codice grazie al supporto integrato per le build di debug con AddressSanitizer (già presente) e UndefinedBehaviorSanitizer (aggiunto), incorporando un fuzzing dei formati (nel contesto di GSoC 2015), l'implementazione dell'integrazione continua (build per decine di combinazioni di sistemi operativi e compilatori e test in esse per garantire il supporto corretto di tutti i formati).
Fonte: linux.org.ru
