Reventar contraseñas con John the Ripper
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.
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.