lunes, 19 de diciembre de 2016

Me sigue faltando espacio de almacenamiento para mi diccionario.

Hace tiempo, realizado una auditoria web se encontraron pistas sobre la política manejada para usuarios y contraseñas.

Más concretamente:

1.- El usuario debía de tener hasta 8 caracteres.

Definición del campo Usuario.

2.- La contraseña debía de tener hasta 8 caracteres.

Definición del campo Password.

Revisando aún más en profundidad, se encontró código para comprobar la validación de los anteriores campos. Más concretamente:

1.- El usuario debe contener entre 3 y 8 caracteres, que además debe manejar un juego de caracteres que admite números, letras mayúsculas y el carácter "_"

Llamada a una función que debe chequear la longitud del usuario introducido

Llamada a una función que debe chequear los caracteres del usuario introducido
.
Diccionario utilizado para los caracteres del usuario introducido

2.- La contraseña debe contener entre 1 y 8 caracteres, que debe manejar un juego de caracteres que admite números, letras mayúsculas y minúsculas.

Llamada a una función que debe chequear los caracteres de la contraseña  introducida

Diccionario utilizado para los caracteres de la contraseña  introducida

En vista de estos datos, lo más seguro es que pensemos en elaborar un diccionario para realizar un ataque con el objetivo de averiguar usuarios/contraseñas. Pero, si hacemos eso, obtendremos un "pequeño problema" ...

El problema es que el diccionario -archivo que contiene todos los posibles patrones en función de la política de usuario/contraseñas encontrados-  es terriblemente grande como para tenerlo almacenarlo en una máquina.

Veamos la generación de los dos diccionarios que necesitaríamos en el anterior caso mediante la herramienta: Crunch.

1.- Para ello comprobamos y/o creamos los juegos de caracteres con los que vamos a crear los diccionarios que necesitamos. Para ello revisamos el archivo que "Crunch" posee para la definición de los susodichos juegos de caracteres y crearemos los juegos de caracteres que necesitamos.

Conjuntos de caracteres almacenados en la ubicación: /usr/share/crunch

Creación del conjunto de caracteres almacenados para generar el diccionario de los posibles usuarios y contraseñas.

Conjunto de caracteres cargados en el archivo de caracteres manejados por Crunch

NOTA: La creación de juegos de caracteres en el archivo que trae por defecto "crunch" implica trabajar con un usuario con permisos de administración. Añadir que los conjuntos de caracteres, si van a ser definidos con un nombre compuesto, NO pueden ir separados por el espacio en blanco.

2.- Creamos los diccionarios en función de los juegos de caracteres creados y en función del conocimiento que tenemos de la política de usuarios y contraseñas encontrados.

Espacio necesario para almacenar el diccionario para el campo "Usuario"

Espacio necesario para almacenar el diccionario para el campo "Contraseña"

¡Qué suerte el que tenga tal tamaño de almacenamiento!

Para el resto, tendremos que concretar la política de generación del diccionario a utilizar mediante el uso de un patrón para asíi obtener un diccionario que necesite menos espacio de disco, o utilizar cualquier otra herramienta que permitan lanzar ataques de diccionario previa definición de la política del diccionario a utilizar (número de caracteres, juego de caracteres, patrón, etc.)


Lo que hagas con la información es cosa tuya, no mía ... pero ten conciencia.

No hay comentarios:

Publicar un comentario