Veröffentlicht eine neue Version des ältesten unterstützten Passwort-Cracking-Tools John the Ripper 1.9.0-jumbo-1. (Das Projekt entwickelt sich seit 1996.) Auf der Projektseite sind der Quellcode sowie vorgefertigte Builds für Windows zum Download verfügbar.
Es wird darauf hingewiesen, dass seit der Veröffentlichung der Version 1.8.0-jumbo-1 4,5 Jahre vergangen sind, in denen mehr als 6000 Änderungen (git commits) von über 80 Entwicklern vorgenommen wurden. In dieser Zeit empfahlen die Entwickler die Verwendung der aktuellen Version von GitHub, deren Zustand dank der kontinuierlichen Integration, die eine Vorabprüfung jeder Änderung (Pull Request) auf vielen Plattformen umfasst, stabil gehalten wurde. Ein Merkmal der neuen Version ist die Unterstützung von FPGA (FPGA) zusätzlich zu CPU, GPU und Xeon Phi.
Für die Karten ZTEX 1.15y, die 4 FPGA-Chips enthalten und ursprünglich hauptsächlich zum Mining von Bitcoin verwendet wurden, unterstützen nun 7 Typen von Passwort-Hashes: bcrypt, klassisches descrypt (einschließlich bigcrypt), sha512crypt, sha256crypt, md5crypt (einschließlich Apache apr1 und AIX smd5), Drupal7 und phpass (das insbesondere in WordPress verwendet wird). Einige davon wurden erstmals auf FPGA implementiert. Für bcrypt wurde eine Leistung von etwa 119k c/s bei 2^5 Iterationen („$2b$05“) erreicht, mit einem Stromverbrauch von rund 27 Watt, was die Ergebnisse der neuesten GPUs in Bezug auf Board-Kosten, Ausrüstungspreise und Watt erheblich übertrifft. Zudem werden Cluster aus dieser Art von Boards unterstützt, was bis zu 16 Boards (64 FPGA), die von einem einzigen Raspberry Pi 2 gesteuert werden, nachgewiesen wurde. Die normale Funktionalität von John the Ripper wird unterstützt, einschließlich aller Passwort-Cracking-Modi und der gleichzeitigen Verarbeitung einer großen Anzahl von Hashes. Zur Beschleunigung des Prozesses wurde die Anwendung von Masken (Modus "—mask", auch in Kombination mit anderen Modi) sowie der Vergleich der berechneten Hashes mit den auf der FPGA-Seite geladenen implementiert. Aus der Sicht der Implementierung ist dies in vielen der Designs (zum Beispiel für sha512crypt und Drupal7) Es wurden Blöcke aus Multithreading-Prozessor-Kernen (soft CPU cores) angewendet, die mit kryptografischen Kernen interagieren. Die Entwicklung dieser Funktionalität wurde von Denis Burikin in Zusammenarbeit mit anderen Entwicklern von Jumbo geleitet.
Weitere wichtige Änderungen:
- Unterstützung einer Vielzahl zusätzlicher Hash-, Verschlüsselungs- usw. -Typen, einschließlich klassischer Passwort-Hashes (z. B. aus den neuen Versionen von QNX) sowie Kryptowährungs-Wallets, verschlüsselten Archiven und verschlüsselten Dateisystemen (z. B. Bitlocker und FreeBSD geli), sowie die Unterstützung neuer Varianten von zuvor unterstützten Formaten (z. B. wurde die Unterstützung für bcrypt-pbkdf für OpenBSD softraid hinzugefügt) und vieles mehr. Insgesamt wurden 80 Formate zu CPU und 47 zu OpenCL hinzugefügt (und eine kleine Anzahl älterer Formate wurde als in neue und veraltete integriert entfernt). Die Gesamtanzahl der Formate beträgt jetzt 407 auf CPU (oder 262 ohne „dynamische“ Formate, die aus Konfigurationsdateien angepasst werden) und 88 auf OpenCL.
- Verzicht auf die Unterstützung der CUDA-Sprache zugunsten von OpenCL, was die vollständige Nutzung der NVIDIA-GPUs nicht beeinträchtigt (und sogar hilft, dank der Fokussierung der Entwicklung und Optimierungen auf eine einheitliche Umsetzung jedes Formats für GPUs anstelle von früher zwei Umsetzungen).
- Unterstützung neuer SIMD-Befehlssätze — AVX2, AVX-512 (einschließlich für die zweite Generation von Xeon Phi) und MIC (für die erste Generation) — sowie eine vielseitigere und umfassendere Nutzung von SIMD in der Implementierung vieler Formate, einschließlich der Anwendung zuvor unterstützter Befehlssätze bis hin zu AVX und XOP auf x86(-64) und
NEON, ASIMD und AltiVec auf ARM, Aarch64 und POWER, jeweils. (Teilweise im Rahmen von GSoC 2015.) - Zahlreiche Optimierungen für CPUs und OpenCL, sowohl zur effizienteren Verarbeitung einer großen Anzahl von Hashes gleichzeitig (zum Beispiel wurde die Bearbeitung von 320 Millionen SHA-1-Hashes auf der GPU getestet) als auch zur Steigerung der Geschwindigkeit bei der Hashberechnung. Ein Teil dieser Optimierungen ist universell, ein Teil umfasst verschiedene Teilmengen von Formaten und viele sind spezifisch für einzelne Formate.
- (Auto-)Konfiguration der optimalen Pufferung von überprüften Passwörtern auf der CPU ("—tune=auto —verbosity=5") und optimalen Aufgabendimensionen für OpenCL (standardmäßig aktiviert), unter Berücksichtigung des langsamen Anlaufens auf die volle Taktrate der NVIDIA GTX 10xx GPU-Serie und neuer. Verwendung von tatsächlich geladenen Hashes und der realen Länge der überprüften Passwörter (wenn sie im Voraus bekannt ist) für diese Auto-Konfiguration.
- Hinzufügung eines Compilers für "dynamische Ausdrücke", die direkt in der Befehlszeile angegeben werden und neue hybride Hash-Typen implementieren, z. B. "—format=dynamic='sha1(md5($p).$s)'", die auf der CPU unter Verwendung von SIMD berechnet werden. Zu den Komponenten solcher Ausdrücke gehören Dutzende schneller Hashes (von gängigen wie MD5 bis zu mittel-exotischen wie Whirlpool), die Kombination von Teilstrings, Kodierung und Dekodierung, die Umwandlung von Groß- und Kleinbuchstaben sowie Verweise auf Passwort, Salt, Benutzernamen und Zeichenkonstanten.
- Behebung unerwünschter Abweichungen von Hashcat, einschließlich der Unterstützung zuvor spezifischer Hashcat-Regeln (Befehle für Wortlistenregeln), Wechsel zur Nummerierung der OpenCL-Geräte ab 1 und standardmäßige Anwendung derselben Passwortlängen (in der Regel Länge 7) bei Leistungstests.
- Neue Modus zur Generierung überprüfbarer Passwörter (Cracking-Modi), einschließlich PRINCE aus Hashcat (erzeugt "Phrasen", indem mehrere Wörter in aufsteigender Gesamtlänge kombiniert werden), Subsets (wählt Passwörter mit unzureichender Vielfalt an Symbolen aus, auch wenn diese Symbole aus einem großen Set stammen) und hybrid external (ermöglicht externen Modi, die in Konfigurationsdateien in einer C-ähnlichen Sprache beschrieben sind, mehrere überprüfbare Passwörter auf Basis jedes grundlegenden "Wortes" zu generieren, das von einem anderen Modus kommt). Zudem mehrere neue vordefinierte externe Modi.
- Erweiterte Möglichkeiten zur gleichzeitigen Verwendung mehrerer Modi (einer über dem anderen – Stacking) sowie für die Anwendung von Regelsets (Wortlistenregeln-Stacking).
- Verbesserungen der Maskierungsmodi (schrittweises Dehnen der Maske im angegebenen Längenbereich, Anwendung der Maske auf der OpenCL-Geräteseite oder FPGA-Platine) und single crack (angemessenes Verhalten auf Geräten, die eine große Anzahl von Hashes parallel berechnen, wobei es in diesem Modus zuvor an überprüfbaren Passwörtern mangelte, sowie eine Einschränkung des Speicherverbrauchs).
- Vielerlei Verbesserungen der Unterstützung von Unicode und anderen Kodierungen in verschiedenen Subsystemen.
- Viele Verbesserungen der Programme *2john (konvertieren Dateien verschiedener Formate für
die Nutzung mit john), insbesondere wpapcap2john (verarbeitet WiFi-Traffic). - Zahlreiche neue Befehlszeilenoptionen, Einstellungen in john.conf, Optionen des configure-Skripts und entsprechende neue Funktionen, von denen nicht alle hier erwähnt werden konnten.
- Erhöhung der Codequalität durch die integrierte Unterstützung für Debug-Bauten mit AddressSanitizer (bereits vorhanden) und UndefinedBehaviorSanitizer (hinzugefügt), Einführung eines integrierten Fuzzers für Formate (im Rahmen von GSoC 2015), und Anwendung kontinuierlicher Integration (Bauten für Dutzende von Kombinationen aus Betriebssystem und Compiler und Tests zur korrekten Unterstützung aller Formate).
Quelle: linux.org.ru
