Eliberată versiune nouă a celui mai vechi program acceptat de ghicire a parolelor John the Ripper 1.9.0-jumbo-1. (Proiectul se dezvoltă din 1996.) On pagina proiectului Codul sursă este disponibil pentru descărcare, precum și versiuni gata făcute pentru Windows.
Se observă că au trecut 1.8.0 ani de la lansarea versiunii 1-jumbo-4.5, timp în care au fost făcute peste 6000 de modificări (comite git) de la peste 80 de dezvoltatori. În această perioadă, dezvoltatorii au recomandat utilizarea ediția curentă din GitHub, a cărui stare a fost menținută stabilă în ciuda modificărilor efectuate datorită integrare continuă, care include verificarea preliminară a fiecărei modificări (pull request) pe multe platforme. O caracteristică specială a noii versiuni este apariția suportului pentru FPGA (FPGA) pe lângă CPU, GPU și Xeon Phi.
Pentru scânduri ZTEX 1.15y, care includ 4 cipuri FPGA și au fost utilizate inițial în principal pentru minarea Bitcoin, implementează acum 7 tipuri de hash-uri de parole: bcrypt, classic descrypt (inclusiv bigcrypt), sha512crypt, sha256crypt, md5crypt (inclusiv Apache apr1 și AIX smd5), Drupal7 și phpass (utilizat, în special, în WordPress). Unele dintre ele sunt implementate pe FPGA pentru prima dată. Pentru bcrypt, performanța obținută de ~119k c/s la 2^5 iterații („$2b$05”) cu un consum de energie de aproximativ 27 wați depășește semnificativ rezultatele pentru cele mai recente GPU-uri în ceea ce privește raportul placă-placă, costul hardware și per watt. De asemenea, sunt suportate clustere de plăci de acest tip, care au fost testate până la 16 plăci (64 FPGA) controlate de la un singur Raspberry Pi 2. Este acceptată funcționalitatea obișnuită John the Ripper, inclusiv toate modurile de ghicire a parolelor și descărcarea simultană a unui număr mare de hashe-uri. Pentru a accelera munca, am implementat utilizarea unei măști (modul „--mask”, inclusiv în combinație cu alte moduri) și compararea hashurilor calculate cu cele încărcate pe partea FPGA. Din punct de vedere al implementării, multe dintre modele (de ex. sha512crypt și Drupal7) sunt utilizate blocuri formate din nuclee de procesor multi-threaded (nuclee soft CPU) care interacționează cu nuclee criptografice. Dezvoltarea acestei funcționalități a fost condusă de Denis Burykin în coordonare cu alți dezvoltatori jumbo.
Alte schimbari majore:
- Suport pentru un număr mare de tipuri suplimentare de hashuri, cifruri etc., inclusiv atât hash-uri clasice de parole (de exemplu, din noile versiuni de QNX), cât și portofele de criptomonede, arhive criptate și sisteme de fișiere criptate (de exemplu, Bitlocker și FreeBSD geli), precum și suport pentru noile tipuri de formate acceptate anterior (de exemplu, suport adăugat pentru bcrypt-pbkdf pentru OpenBSD softraid) și multe altele. În total, 80 de formate au fost adăugate pe CPU și 47 pe OpenCL (și un număr mic de formate vechi au fost eliminate ca fiind integrate în cele noi și învechite). Numărul total de formate este acum 407 pe CPU (sau 262 fără a include formatele „dinamice” configurate din fișierele de configurare) și 88 pe OpenCL.
- Refuzul de a sprijini limbajul CUDA în favoarea OpenCL, care în niciun caz nu interferează cu utilizarea deplină a GPU-urilor NVIDIA (și chiar ajută, datorită concentrării dezvoltării și optimizării pe o implementare a fiecărui format pentru GPU în loc de două implementări anterior).
- Suport pentru noile seturi de instrucțiuni SIMD - AVX2, AVX-512 (inclusiv pentru a doua generație Xeon Phi) și MIC (pentru prima generație) - precum și utilizarea mai universală și mai completă a SIMD în implementări de mai multe formate, inclusiv utilizarea de setările de instrucțiuni acceptate anterior până la AVX și XOP pe x86(-64) și
NEON, ASIMD și AltiVec pe ARM, Aarch64 și, respectiv, POWER. (Parțial ca parte a GSoC 2015.) - Numeroase optimizări pentru CPU și OpenCL, atât pentru a lucra mai eficient cu un număr mare de hashuri simultan (de exemplu, a fost testată încărcarea a 320 de milioane de hash-uri SHA-1 pe GPU), cât și pentru a crește viteza calculelor hash. Unele dintre aceste optimizări sunt universale, unele acoperă diferite subseturi de formate și multe sunt specifice formatelor individuale.
- Configurarea (automată) a tamponării optime a parolelor verificate pe CPU („—tune=auto —verbosity=5”) și a dimensiunilor optime ale jobului pe OpenCL (activat implicit), inclusiv luând în considerare accelerarea lentă a NVIDIA GTX GPU-uri din serie la frecvența de operare completă 10xx și mai nouă. Utilizarea hashurilor încărcate efectiv și a lungimii reale a parolelor care sunt verificate (când este cunoscută dinainte) pentru o astfel de reglare automată.
- Adăugarea unui compilator pentru „expresii dinamice” specificate direct pe linia de comandă și implementarea unor noi tipuri de hash hibride, de exemplu „-format=dynamic='sha1(md5($p).$s)'”, calculat pe CPU folosind SIMD . Ca componente ale unor astfel de expresii, sunt acceptate zeci de hashe-uri rapide (de la cele obișnuite precum MD5 până la cele moderat exotice precum Whirlpool), concatenarea subșirurilor, codificarea și decodarea, conversia majusculelor, referințe la parolă, sare, nume de utilizator și constante de șir.
- Eliminarea diferențelor nedorite față de hashcat, inclusiv suport pentru regulile specifice hashcat-ului anterior (comenzi pentru regulile listei de cuvinte), tranziția la numerotarea dispozitivelor OpenCL de la 1, utilizarea implicită a acelorași lungimi de parole (de obicei lungimea 7) pentru testele de performanță.
- Noi moduri de generare a parolelor verificabile (moduri de cracare), inclusiv PRINCE din hashcat (formează „fraze” prin combinarea mai multor cuvinte în ordinea crescătoare a lungimii totale), subseturi (afișează parole cu un număr insuficient de caractere diferite, chiar dacă aceste caractere vin dintr-un set mare de posibile) și hibrid extern (permite modurilor externe, descrise în fișierele de configurare într-un limbaj asemănător C, să genereze multe parole verificabile pe baza fiecărui „cuvânt” de bază primit dintr-un alt mod). De asemenea, câteva moduri externe noi predefinite.
- Capacități suplimentare pentru utilizarea mai multor moduri simultan (unul peste celălalt - stivuire), precum și pentru utilizarea seturi de reguli (stivuirea regulilor listei de cuvinte).
- Îmbunătățiri ale modurilor măști (întinderea treptată a măștii într-o gamă specificată de lungimi, aplicarea unei măști pe partea laterală a dispozitivului OpenCL sau a plăcii FPGA) și crack unic (comportament rezonabil pe dispozitivele care calculează un număr mare de hashe-uri în paralel). , pentru care anterior nu existau suficiente parole verificabile în acest mod și, de asemenea, restricții privind consumul de memorie).
- Multe îmbunătățiri ale suportului pentru Unicode și alte codificări în diferite subsisteme.
- Multe îmbunătățiri ale programelor *2john (care convertesc fișiere de diferite formate pentru
utilizați cu john), în special wpapcap2john (se ocupă de traficul WiFi). - Există multe opțiuni noi de linie de comandă, setări în john.conf, opțiuni de configurare a scriptului și funcții noi corespunzătoare, care nu au fost toate menționate aici.
- Îmbunătățirea calității codului datorită suportului încorporat pentru versiunile de depanare cu AddressSanitizer (anterior) și UndefinedBehaviorSanitizer (adăugat), adăugarea unui format fuzzer încorporat (ca parte a GSoC 2015), folosind integrarea continuă (build-uri pentru zeci de sisteme de operare și compilator combinații și testarea lor pentru suport corect pentru toate formatele).
Sursa: linux.org.ru
