John the ripper es probablemente el descifrador de contraseñas más
rápido, eficaz y potente. Admite 6 esquemas de codificaciones
diferentes, que cubren varias versiones de Unix diferentes y los
resúmenes codificados de LANMan de Windows, también llamado NTLM (usados
en NT, 2000 y XP). Puede utilizar lista de palabras especializadas o
reglas de contraseñas basadas en el tipo de carácter y su ubicación.
Funciona en, al menos, 13 sistemas operativos diferentes y admite varios
procesadores.
Podemos descargar John the ripper de aquí
Una vez tengamos el programa compilado y instalado toca descifrar y reventar las contraseñas.
DESCIFRAR Y REVENTAR CONTRASEÑAS:
John
aceptará 3 formatos de archivo de contraseñas diferentes. Puede
reventar cualquier tipo de contraseñas que se encuentren en el formato
de la opción -test. Lo único que tenemos que hacer es convertirlo en uno
de los formatos que acepta la aplicación. Si estamos usando un archivo
passwd de Unix o el resultado de la herramienta pwddump, no será
necesario modificar el formato del archivo.
Para
descifrar un archivo de contraseña usando las opciones predeterminadas
de John, proporcionamos el nombre de archivo como argumento.
Usamos John passwd, en mi caso no hay contraseñas a descifrar.
Todas
las contraseñas descifradas se guardan en el archivo John.pot, que es
un archivo de texto que aumentará de tamaño a medida que aumenta el
número de contraseñas obtenidas.
Las contraseñas que son débiles,
independientemente de su esquema de codificación, pueden descifrarse en
un periodo de tiempo muy corto. Decodificar las contraseñas más seguras
puede tardar semanas o meses; sin embargo, podemos utilizar algunos
trucos para descifrarla más rapidamente, usando complicados archivos de
diccionario.
El diccionario predeterminado del john es el
password.lst. Este archivo contiene contraseñas comunes que aparecen
entre los usuarios, aunque podemos encontrar diccionarios alternativos
en la red.
Usamos la opción -wordfile para indicar a John que use un diccionario alternativo.
Podemos
especificar cualquier rango de caracteres para insertarlos. Toda la
lista de palabras volverá a usarse por cada caracter adicional. Por
ejemplo, una lista de palabras con 1000 palabras se convertirá en una
lista de palabras con 10.000 palabras si se anteponen cada una los
dígitos del 0 al 9. A continuación mostraré algunos caracteres útiles
para añadirlos a palabras básicas:
* [0123456789] : Dígitos
* [!@#$^&*()] : Signos que están sobre dígitos
* [,.?!] : Puntuación
Podemos
usar reglas de conversión para cambiar el tipo (mayúsculas, minúsculas,
de e por 3) de los caracteres o para eliminar ciertos tipos:
* ?v: Vocales (a, e, i, o, u)
* s?v.: Sustituye las vocales por un punto (.).
* @@?v: Elimina todas las vocales.
* @@a: Elimina todas las a.
* sa4: Sustituye todas las a por 4.
* se3: Sustituye todas las e por 3.
* l*: Donde * es una letra minúsculas.
* u*: Donde * es una letra mayúscula.
Las
reglas complejas y los amplios diccionarios no descifran todas las
contraseñas. Esto nos lleva a usar ataques de fuerza bruta. En otras
palabras, probaré todas las combinaciones posibles de caracteres para
una determinada longitud de palabra. Por defecto, John pasa al modo
fuerza bruta si no se introducen opciones en la linea de comandos. Para
obligar a John a utilizar un método de fuerza bruta, usamos la opción -incremental:
$ john -incremental :LANMan passwd.LANMan
El archivo John.conf tiene 4 opciones incrementales diferentes:
* All : Minúsculas, Mayúsculas, dígitos, puntuación, Mayús-.
* Alpha : Minúsculas.
* Digits : Del 0 al 9.
* LANMan : Similar al All, pero sin minúsculas.
Cada opción incremental del archivo John.conf tiene 5 campos. La entrada LANMan contiene:
* [Incremental:LANMan]: Descripción de la opción.
* File = ./LANMan.chr: Archivo que se debe usar como lista de caracteres.
* MinLen = 0 : La longitud mínima del intento de contraseña que debe generarse.
* MaxLen = 7 : La longitud máxima del intento de contraseña que debe generarse.
* CharCount = 69 : Número de caracteres en lista.
Mientras que la entrada ALL contiene:
* [Incremental:All]: Descripción de la opción.
* File = ./all.chr: Archivo que se debe usar como lista de caracteres.
* MinLen = 0 : La longitud mínima del intento de contraseña que debe generarse.
* MaxLen = 8 : La longitud máxima del intento de contraseña que debe generarse.
* CharCount = 95 : Número de caracteres en lista.
Los
campos MinLen y MaxLen son los más importantes, ya que se modifican
para dirigir nuestro ataque. MaxLen nunca deberá de tener más de 7
caracteres para resumenes de codificación LANMan. Elevamos CharCount a
la MaxLen potencia para hacernos una idea de cuántas combinaciones
forman un ataque de fuerza bruta. Por ejemplo, el número total de
combinaciones LANMan es de casi 7'6 Billones. El número total de
combinaciones para All es de casi 6700 billones.
Si tenemos una
lista de contraseñas de un sistema Unix, en el que sepamos que todas las
contraseñas tienen exactamente 8 caracteres, deberemos modificar la
opción incremental.
[Incremental:All]
File = ./all.chr
MinLen = 8
MaxLen = 8
CharCount = 95
Después ejecutamos John:
$ John -incremental:All passwd
Sólo
se guardaran posibles contraseñas con 8 caracteres. Para verificarlo
usamos la opción -stdout, esto mostrará cada posible contraseña en la
pantalla.
$ john -incremental:All -stdout
Puede ser útil
si queremos rederigir datos a un archivo, para crear una inmensa lista
de palabras, para utilizarlo posteriormente.
Saber si John se está ejecutando en mi equipo:
El
principal indicador de que John the Ripper se está ejecutando en
nuestro sistema será la constante actividad de la CPU. También podemos
ver las listas de procesos ( el comando ps en Unix, o mediante el visor
de procesos de Windows) pero no es probable que aparezca John.
No hay comentarios:
Publicar un comentario