Creación de diccionarios

Con las herramientas CeWL y Crunch

Featured image

CEWL

CeWL (Custom Word List Generator) es una herramienta desarrollada en Ruby que se especializa en explorar una URL específica hasta un nivel de profundidad definido. Su objetivo es recopilar una lista de palabras únicas que pueden ser empleadas posteriormente en herramientas de cracking de contraseñas, como John the Ripper.

Adicionalmente, CeWL tiene la capacidad de identificar direcciones de correo electrónico presentes en los enlaces de correo del sitio web analizado. Estas direcciones pueden ser útiles como nombres de usuario cuando se realizan ataques de fuerza bruta.

Ejemplos de uso

Para rastrear palabras de una URL y guardarlas en un archivo debemos realizar lo siguiente:

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/index.php -w dict.txt               
CeWL 6.1 (Max Length) Robin Wood (robin@digi.ninja) (https://digi.ninja/)

Como se puede apreciar en este caso nos quedarían las siguientes palabras.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cat dict.txt 
Damn
Vulnerable
Web
DVWA
App
Login
Username
Password
Application
RandomStorm
OpenSource
project
end
align
div

Ahora para generar un contraseña con una longitud de al menos 7 caracteres ocuparemos el parámetro -m.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/index.php -m 7 -w dict.txt 
CeWL 6.1 (Max Length) Robin Wood (robin@digi.ninja) (https://digi.ninja/)

┌─[root@kali]─[/home/user/wordlists]
└──╼ cat dict.txt                                     
Vulnerable
Username
Password
Application
RandomStorm
OpenSource
project

Para contar el número de palabras repetidas en el diccionario de un sitio web usaremos la opción -c.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/index.php -c   
CeWL 6.1 (Max Length) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
Damn, 2
Vulnerable, 2
Web, 2
DVWA, 2
App, 1
Login, 1
Username, 1
Password, 1
Application, 1
RandomStorm, 1
OpenSource, 1
project, 1
end, 1
align, 1
div, 1

Si deseamos aumentar la profundidad de rastreo (predeterminado es 2) del rastreador para generar archivos de diccionario más grandes, podemos usar el parámetro -d.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/index.php -d 3

Para generar diccionarios que contengan números y caracteres:

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/index.php --with-numbers

Para opciones de autenticación tenemos lo siguientes parámetros:

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl http://10.1.1.15/login.php --auth_type Digest --auth_user admin --auth_pass password -v
CeWL 6.1 (Max Length) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
Starting at http://10.1.1.15/login.php
Visiting: http://10.1.1.15/login.php, got response code 200

Si el sitio web que se desea analizar con CeWL está detrás de un servidor proxy, el comando estándar de CeWL no podrá acceder al sitio para extraer palabras y generar la lista. En estas circunstancias, es necesario emplear la opción –proxy, seguida de la dirección del servidor proxy, para que CeWL pueda navegar correctamente hasta el sitio web objetivo.

Al hacer esto, CeWL redirige sus solicitudes a través del servidor proxy especificado, lo que le permite acceder al sitio web de destino y realizar su tarea de recopilación de palabras. Este ajuste es esencial para asegurar que la herramienta funcione como se espera en entornos que requieren el uso de un servidor proxy.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl --proxy_host 10.1.1.14 --proxy_port 4646 -w dict.txt http://10.1.1.14/wordpress/

Para encontrar direcciones de correo elctrónico podemos usar la opción -e para habilitar el parámetro del correo electrónico y usar la opción -n para ocultar el diccionario de contraseñas generado por la herramienta durante el proceso de rastreo:

┌─[root@kali]─[/home/user/wordlists]
└──╼ cewl https://10.1.1.14/ -n -e

Crunch

Crunch es un generador de listas de palabras donde puede especificar un juego de caracteres estándar o un juego de caracteres que usted especifique. crunch puede generar todas las combinaciones y permutaciones posibles según criterios dados. Los datos que procesan los resultados se pueden mostrar en la pantalla, guardarse en un archivo o canalizarse a otro programa.

Ejemplos de uso

El siguiente comando genera todas las combinaciones posibles de números de longitud 1 a 2 utilizando los dígitos del 0 al 9 y los guarda en un archivo con datos como por ejemplos 0, 76, 99, entre otros.

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 1 2 0123456789 -o numeros09.txt

Para el caso de letras, se generará una lista con combinaciones de caracteres del conjunto abc y longitudes que varían desde 2 hasta 5 caracteres, es decir aa, ccccc, entre otros.

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 2 5 abc -o abc.txt

Si se quiere limitar la cantidad de palabras de la lista, realizamos lo siguiente:

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 5 5 testing -c 24 -o limit.txt

Esta lista por lo tanto tendrá solo 24 líneas generadas:

┌─[root@kali]─[/home/user/wordlists]
└──╼ cat limit.txt 
gggst
gggse
gggss
gggsi
gggsn
gggsg
gggit
gggie
gggis
gggii
gggin
gggig
gggnt
gggne
gggns
gggni
gggnn
gggng
ggggt
gggge
ggggs
ggggi
ggggn
ggggg

En el siguiente caso, se generarán palabras de exactamente 10 caracteres de longitud, en donde el patrón que Crunch utilizará para generar la lista de palabras cada carácter especial (^, %, @, ,) se sustituirá por un tipo específico de caracteres:

Entonces, cada palabra generada seguirá el patrón “test”, seguido por un número, una letra en minúscula, una letra en mayúscula y un carácter especial. Por ejemplo, algunas de las palabras que podrían generarse incluyen test!2oK, test!2oL, test!2oM, entre otras.

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 8 8 -t test^%@, -o test.txt

Si necesitamos ingresar un patrón con algún carácter especial, podemos con el parámetro -l especificar la estructura de la longitud y el carácter de las palabras generadas. Es decir, si la estructura es a@aaaaa mantendremos el formato ingresado quedando palabras como p@ssA3*, p@ssK7-, p@ssZ9/, entre otras:

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 7 7 -o prueba.txt -t p@ss,%^ -l a@aaaaa

A continuación se indica que Crunch debe generar permutaciones de las palabras proporcionadas en lugar de seguir las reglas de longitud mínima y máxima.

┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 0 0 -o perm.txt -p test prueba auto
Crunch will now generate approximately the following amount of data: 90 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 6 

Debido a -p, crunch ignora los valores de tamaño mínimo y máximo y mostrará todas las permutaciones posibles.

┌─[root@kali]─[/home/user/wordlists]
└──╼ cat perm.txt                          
autopruebatest
autotestprueba
pruebaautotest
pruebatestauto
testautoprueba
testpruebaauto

Por último ocuparemos los siguientes parámetros:

┌─[root@kali]─[/home/user/wordlists]
└──╼ ls -l
total 145676
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'ab!001-af+299.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'af+300-aj"599.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'aj"600-ao$899.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'ao$900-as[199.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'as[200-aw,499.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'aw,500-bc*799.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'bc*800-bg|099.txt'
-rw-r--r-- 1 root root 999999 Aug 27 03:38 'bg|100-bk 399.txt'
....
┌─[root@kali]─[/home/user/wordlists]
└──╼ crunch 6 6 -t @@^%%% -d 1@ -d 2% -b 1mb -o START

Estos darían salidas como:

Recordar que: