John the Ripper 1.9.0-jumbo-1 con supporto FPGA

Rilasciato nuova versione del più vecchio cracker di password supportato John the Ripper 1.9.0-jumbo-1. (Il progetto è stato sviluppato dal 1996.) pagina del progetto le fonti sono disponibili per il download, così come gli assemblaggi già pronti per Windows.

Si noti che sono trascorsi 1.8.0 anni dal rilascio della versione 1-jumbo-4.5, durante i quali sono state apportate più di 6000 modifiche (git commit) da più di 80 sviluppatori. Durante questo periodo, gli sviluppatori hanno consigliato di utilizzare revisione corrente da GitHub, il cui stato è stato mantenuto stabile nonostante le modifiche apportate grazie a integrazione continua, che include un controllo preliminare di ogni modifica (pull request) su molte piattaforme. Una caratteristica della nuova versione è l'emergere del supporto per FPGA (FPGA) oltre a CPU, GPU e Xeon Phi.


Per tavole Ztex 1.15 anni, che includeva 4 chip FPGA ed era originariamente utilizzato principalmente per il mining di Bitcoin, ora sono implementati 7 tipi di hash delle password: bcrypt, descrypt classico (incluso bigcrypt), sha512crypt, sha256crypt, md5crypt (inclusi Apache apr1 e AIX smd5), Drupal7 e phpass (usato, in particolare in WordPress). Alcuni di essi sono implementati per la prima volta su FPGA. Per bcrypt, le prestazioni ottenute di ~119k c/s a 2^5 iterazioni ("$2b$05") con un consumo energetico di circa 27 watt superano significativamente le prestazioni delle GPU più recenti per scheda, per prezzo hardware e per watt. Anche supportato grappoli di schede di questo tipo, che hanno testato fino a 16 schede (64 FPGA) controllate da un Raspberry Pi 2. È supportata la consueta funzionalità di John lo Squartatore, comprese tutte le modalità di indovinazione della password e il download simultaneo di un gran numero di hash. Per velocizzare il lavoro, abbiamo implementato l'utilizzo di una maschera (modalità "--mask", anche in combinazione con altre modalità) e il confronto degli hash calcolati con quelli caricati lato FPGA. In termini di implementazione, in molti dei progetti (ad esempio, per sha512crypt e Drupal7) utilizzavano blocchi costituiti da core del processore multi-thread (core soft della CPU) che interagiscono con i core crittografici. Lo sviluppo di questa funzionalità è stato guidato da Denis Burykin in coordinamento con altri sviluppatori jumbo.

Altre modifiche importanti:

  • Supporto per un gran numero di tipi aggiuntivi di hash, cifrature, ecc., inclusi sia gli hash delle password classici (ad esempio, dalle nuove versioni di QNX), sia i portafogli di criptovaluta, gli archivi crittografati e i file system crittografati (ad esempio, Bitlocker e FreeBSD geli ), oltre al supporto per nuove varietà di formati precedentemente supportati (ad esempio, è stato aggiunto il supporto bcrypt-pbkdf per OpenBSD softraid) e molto altro. In totale, sono stati aggiunti 80 formati sulla CPU e 47 su OpenCL (e un piccolo numero di quelli vecchi è stato rimosso in quanto integrato in quelli nuovi e obsoleti). Il numero totale di formati è ora 407 sulla CPU (o 262 escludendo i formati "dinamici" configurati dai file di configurazione) e 88 su OpenCL.
  • Rimozione del supporto del linguaggio CUDA a favore di OpenCL, che non interferisce minimamente con il pieno utilizzo della GPU NVIDIA (e anzi aiuta, grazie al focus dello sviluppo e delle ottimizzazioni su un'implementazione di ogni formato sotto la GPU invece di due implementazioni precedenti).
  • Supporto per i nuovi set di istruzioni SIMD - AVX2, AVX-512 (incluso per la seconda generazione di Xeon Phi) e MIC (per la prima generazione) - nonché un uso più universale e completo di SIMD nelle implementazioni di molti formati, incluso l'uso di set di istruzioni precedentemente supportati fino a AVX e XOP su x86(-64) e
    NEON, ASIMD e AltiVec rispettivamente su ARM, Aarch64 e POWER. (In parte all'interno del GSoC 2015.)
  • Numerose ottimizzazioni per CPU e OpenCL, sia per lavorare in modo più efficiente con un numero elevato di hash contemporaneamente (ad esempio caricando 320 milioni di hash SHA-1 sulla GPU) sia per aumentare la velocità di calcolo degli hash. Alcune di queste ottimizzazioni sono universali, altre coprono vari sottoinsiemi di formati e molte sono specifiche del formato.
  • Ottimizzazione (automatica) del buffering ottimale delle password controllate sulla CPU ("-tune=auto --verbosity=5") e dimensioni ottimali del lavoro su OpenCL (abilitato per impostazione predefinita), tenendo conto anche del lento ripristino al pieno funzionamento frequenza delle GPU della serie NVIDIA GTX 10xx e successive. Uso di hash caricati reali e lunghezza reale delle password controllate (quando è noto in anticipo) per tale autotuning.
  • Aggiunta di un compilatore di "espressioni dinamiche" che viene specificato direttamente sulla riga di comando e implementa nuovi tipi di hash ibridi, ad esempio "--format=dynamic='sha1(md5($p).$s)'", calcolato sulla CPU utilizzando la SIMD. Dozzine di hash veloci (da quelli comuni come MD5 a quelli leggermente esotici come Whirlpool), concatenazione di sottostringhe, codifica e decodifica, conversione di maiuscole e minuscole, riferimenti di password, salt, nome utente e costanti di stringa sono supportati come componenti di tali espressioni.
  • Eliminazione di differenze indesiderate da hashcat, incluso il supporto per comandi di regole di elenchi di parole precedentemente specifici per hashcat, passaggio alla numerazione dei dispositivi OpenCL da 1, utilizzando le stesse lunghezze di password predefinite (solitamente lunghezza 7) per i test delle prestazioni.
  • Nuove modalità di cracking, tra cui PRINCE da hashcat (genera "frasi" concatenando più parole in ordine crescente di lunghezza totale), sottoinsiemi (porta password con caratteri non abbastanza diversi anche se quei caratteri provengono da un ampio set di caratteri possibili) e esterno ibrido (consente alle modalità esterne, descritte nei file di configurazione in linguaggio C-like, di generare molte password verificabili basate su ogni "parola" di base ricevuta da un'altra modalità). Inoltre, diverse nuove modalità esterne predefinite.
  • Funzionalità aggiuntive per l'utilizzo di più modalità contemporaneamente (una sopra l'altra - stacking), nonché per tale utilizzo di set di regole (impilamento delle regole dell'elenco di parole).
  • Miglioramenti alle modalità maschera (estensione graduale della maschera nell'intervallo di lunghezze specificato, applicazione della maschera sul lato di un dispositivo OpenCL o scheda FPGA) e single crack (comportamento ragionevole su dispositivi che calcolano un numero elevato di hash in parallelo, che in precedenza in questa modalità mancavano le password da controllare, e anche i limiti sul consumo di memoria).
  • Molti miglioramenti nel supporto per Unicode e altre codifiche in vari sottosistemi.
  • Molti miglioramenti ai programmi *2john (conversione di file di vari formati in file
    use with john), specialmente wpapcap2john (gestisce il traffico WiFi).
  • Molte nuove opzioni della riga di comando, le impostazioni di john.conf, le opzioni di configurazione degli script e le loro nuove funzionalità corrispondenti, non tutte sono state menzionate qui.
  • Miglioramento della qualità del codice grazie al supporto integrato per build di debug con AddressSanitizer (precedentemente) e UndefinedBehaviorSanitizer (aggiunto), aggiunta di un fuzzer di formato integrato (all'interno di GSoC 2015), utilizzo dell'integrazione continua (build per dozzine di combinazioni di sistemi operativi e compilatori e testandoli per il corretto supporto di tutti i formati).

Fonte: linux.org.ru

Aggiungi un commento