miércoles, 13 de marzo de 2013

Crakeo con John the Ripper 2/3: Instalación y configuración

La instalación de John the Ripper es bastante sencilla ya que podemos hacerlo descargándolo directamente desde los repositorios de Linux con un simple APT-GET. Pero lo cierto es que con este método a veces no descargamos la última versión, por lo que nosotros aconsejamos que lo descarguéis desde la web oficial y realizar una instalación manual  y su posterior configuración que pasamos a detallar:

Instalación

Descarga y descomprime la última versión del programa con el comando:

Ahora nos debemos colocar en la carpeta src del programa que es la que posee los archivos fuente:

Posteriormente debemos de compilar el programa para poder ejecutarlo con el comando make. En este apartado podemos realizar o bien la instalación genérica con make clean generic o bien indicar sobre que sistema se va a instalar con make clean . Está última es se usa para realizar una instalación en un sistema determinado en caso de que se desee distribuir el programa para una plataforma determinada. Las opciones de se obtiene en la ayuda del comando make. Como para nosotros esto no es necesario vamos a realizar la instalación genérica:

Con esto ya tendríamos el programa instalado en nuestro sistema. Ahora para poder ejecutarlo solo tendríamos que colocarnos en el directorio run y desde allí ejecutar el siguiente comando:

También podríamos usar un test para asegurarnos de que se ha instalado correctamente. Para ellos solo hay que ejecutar el siguiente comando:

Con esto ya tendríamos a John instalado y funcionando en nuestro sistema.

Configuración de John

John the Ripper posee un fichero de configuración donde se establecen las opciones generales de las características del programa. Estás pueden ser definición de diccionarios de passwords, modos de ejecución, reglas en el orden de diccionarios, rutas de ejecución, etc.
Este fichero se es john-1.7.9/run/john.conf, veamos algunas de sus principales características:

Opciones
En esta sección se definen los valores generales de ejecución. Estos son los siguientes:

Wordlist: Indica la ruta del diccionario de claves a utilizar en el proceso de crakeo, esta opción es útil al utilizar el modo diccionario. Como podemos ver John posee por defecto un diccionario de claves débiles aunque no es muy extenso, por lo que para un mayor rendimiento se recomienda el poseer uno de mayor tamaño.
Idle: Si está definida como "Y" indica que el programa solamente utilizará ciclos ociosos del procesador, reduciendo el impacto en la ejecución de otros procesos del sistema.
Save: Es el intervalo de tiempo en segundos en que se genera un punto de guardado de sesión. Cuando un proceso de John es interrumpido por alguna razón, se genera un fichero que incluye información sobre la sesión; de este modo se pude seguir realizando el proceso desde el último punto guardado.
Beep: Si lo definimos a "Y" John generará un pitido "Beep" cuando se logre descifrar una contraseña válida.

Modo diccionario y singles
La sección del modo diccionario se declara con: [List:Rules:Wordlist] y la sección de modo single es declarada con esta sección [List:Rules:Single]. En ellas se definen algunas reglas para el proceso de crakeo y determinan características tales como clases de caracteres, constantes numéricas y variables, comandos de cadenas, comandos de control de longitud, comandos de conversión de juegos de caracteres, etc.

Modo incremental
Se define con: [Incremental:tipo_de_modo], donde tipo_de_modo es simplemente un nombre predefinido que permite separar modos incrementales para cada juego de caracteres:
File: Es el fichero donde se encuentra el juego de caracteres a utilizar.
MinLen: Indica el número mínimo de caracteres para la longitud de password, por defecto es 1.
MaxLen: Indica el número máximo de caracteres para la longitud de la password, por defecto es 8.
CharCount: Permite limitar el número de caracteres que serán utilizados, de este modo John nunca intentará utilizar caracteres raros y utilizarlos en las combinaciones.

Modo externo
La sección destinada al modo externo, que como se comento en la anterior entrada, tiene la utilidad de definir rutinas escritas en C, para que John las ejecute, se define con: [List.External:tipo_de_modo] donde tipo_de_modo es cualquier texto indicativo que defina la rutina.
Algunas funciones que se pueden definir son:
init(): Se invoca en el inicio del programa, se encarga de inicializar variables globales.
filter(): Se invoca para cada palabra tratada, de esta forma se pueden filtrar algunas. Se recomienda no utilizar este método cuando se utiliza con el propio generate(). Es mejor modificar generate() para generar palabras que podrían ser filtradas.
generate(): Se invoca para generar la siguiente palabra a tratar.
restore(): Se invoca cuando se restablece una sesión interrumpida.
Además de esto el modo externo tienen la facilidad de ser compatible con todos los otros modos simplemente utilizando la opción -make-charset.

En el próximo artículo de la serie veremos cómo usar el programa para atacar contraseñas reales usando los distintos modos que explicamos anteriormente. Saludos curiosos.

No hay comentarios:

Install Drupal 8 in CentOS

Drupal is an open source, flexible, highly scalable and secure Content Management System (CMS) which allows users to easily build and create...