Crack es un programa de descifrado de contraseñas de Unix diseñado para permitir a los administradores de sistemas localizar a los usuarios que puedan tener contraseñas débiles vulnerables a un ataque de diccionario . Crack fue el primer descifrador de contraseñas independiente para sistemas Unix [1] [2] [3] [4] y también el primero en introducir la generación de diccionarios programables.
Crack comenzó en 1990 cuando Alec Muffett , un administrador de sistemas Unix de la Universidad de Gales Aberystwyth , intentaba mejorar el cracker pwc de Dan Farmer en COPS . Muffett descubrió que al rediseñar la gestión de memoria, obtenía un notable aumento del rendimiento. Esto condujo a una reescritura total [5] que se convirtió en Crack v2.0 y un mayor desarrollo para mejorar la usabilidad.
El primer lanzamiento público de Crack fue la versión 2.7a, que se publicó en los grupos de noticias de Usenet alt.sources y alt.security el 15 de julio de 1991. Crack v3.2a+fcrypt, publicado en comp.sources.misc el 23 de agosto de 1991, introdujo una versión optimizada de la función crypt() de Unix , pero en realidad era solo una versión más rápida de lo que ya estaba disponible en otros paquetes.
Sin embargo, el lanzamiento de Crack v4.0a el 3 de noviembre de 1991 introdujo varias características nuevas que lo convirtieron en una herramienta formidable en el arsenal del administrador del sistema .
Crack v5.0a [6] lanzado en 2000 no introdujo ninguna característica nueva, sino que se concentró en mejorar el código e introducir más flexibilidad, como la capacidad de integrar otras variantes de crypt() como las necesarias para atacar los hashes de contraseña MD5 utilizados en sistemas Unix , Linux y Windows NT más modernos [7] . También incluía Crack v6 - un descifrador de contraseñas minimalista y Crack v7 - un descifrador de contraseñas por fuerza bruta .
Randal L. Schwartz , un destacado experto en programación Perl , fue procesado en 1995 por utilizar Crack [8] [9] en el archivo de contraseñas de un sistema de Intel , un caso cuyo veredicto fue finalmente anulado . [10]
Kevin Mitnick también utilizó crack cuando hackeó Sun Microsystems en 1993. [11]
Mientras que las herramientas tradicionales para descifrar contraseñas simplemente alimentaban un diccionario de palabras preexistente a través de la función crypt(), Crack v4.0a introdujo la capacidad de aplicar reglas a esta lista de palabras para generar versiones modificadas de estas listas de palabras.
Estos pueden variar desde los más simples (no cambiar) hasta los extremadamente complejos: la documentación ofrece esto como ejemplo:
Estas reglas también podrían procesar el campo GECOS en el archivo de contraseñas, lo que permitiría al programa utilizar los nombres almacenados de los usuarios además de las listas de palabras existentes. La sintaxis de la regla de generación de diccionarios de Crack fue posteriormente tomada prestada [12] y ampliada [13] por Solar Designer para John the Ripper .
El software de generación de diccionarios para Crack fue posteriormente reutilizado por Muffett [14] para crear CrackLib, una biblioteca de verificación de contraseñas proactiva que se incluye con las distribuciones de Linux derivadas de Debian [15] y Red Hat Enterprise Linux [16] .
Como el descifrado de contraseñas es inherentemente vergonzosamente paralelo, Crack v4.0a introdujo la capacidad de usar una red de estaciones de trabajo heterogéneas conectadas por un sistema de archivos compartido como parte de un esfuerzo distribuido de descifrado de contraseñas .
Todo lo que se requirió para esto fue proporcionar a Crack un archivo de configuración que contenía los nombres de las máquinas, las tasas de potencia de procesamiento y los indicadores necesarios para compilar Crack en esas máquinas y llamarlo con la opción -network .