martes, 10 de julio de 2012

Diccionarios, mutaciones CEWL-Rsmangler

Después de leer varios post sobre este asunto, he decidido contar el proceso que sigo para la generación de diccionarios. Los diccionarios nos pueden servir para muchas cosas, pero es una parte imprescindible del proceso de PenTest el realizar ataques de fuerza bruta contra servicios protegidos, cotejar mediante el handshake la clave de una wpa, en fin...
Para ello, uso el clásico CEWL Custom Word List Generator.
Con este script´s lo que hacemos es un "spider" o barrido por toda la web buscando literales que usaremos en nuestras pruebas de fuerza bruta.
Como siempre en estos casos ( mundo linux) el manual de la web responsable del proyecto está mal, incompleto, a propósito o no, pero aparte de hacer esto:

Installation

CeWL needs the rubygems package to be installed along with the following gems:
  • nokogiri
  • hpricot
  • http_configuration
  • mime-types
  • mini_exiftool
  • rubyzip
  • spider
All these gems were available by running:
gem install xxx
as root. The mini_exiftool gem also requires the exiftool application to be installed.
On BT5 there is a problem with the version of Ruby installed by default. To get around this I've found the following works well on a brand new BT5 install:
gem source -c
gem install --user-install spider http_configuration mini_exiftool zip mime-type
***añadir nokogiri ***

Como podéis comprobar en la página oficial, los parámetros son muy sencillos. Probamos este:
ruby cewl.rb -v (tipico verbose) -w ( ruta al fichero de destino) dominio.com >> fichero.txt (redirección de salida).


Siempre que me es posible tiro la salida hacia un fichero, para poder añadir estos datos a la documentación final a entregar, para no olvidar mis parámetros favoritos, o para depurar errores. **Tengo que agradecer aquí a robin@digininja.org el esfuerzo dedicado en solventar algunos problemas que hemos encontrado, y que el hombre ha tenido la amabilidad de atender***

Con esto tenemos una buena lista de palabras asociadas al ambito de la empresa/web que queremos "brutear", pero... ya tiene que ser muy malo el sysadmin para usar palabras de diccionario, pero seguro que una combinacion de nombre123, 123nombre,añonombre, nombreaño y demás coletillas es más que probable que nos de eroticos-resultados.
Si eres nervioso ya te habrás puesto a hacerlo a mano, pero para eso está RSMANGLER.
Como siempre me pasa con las aplicaciones On Ruby, nunca me andan !!! pero después de preguntar un poco a la camarera de la cafetería donde desayuno, se me ocurrió añadir # encoding: utf-8 al fichero .rb y andando... Tambien le pregunto a la camarera los parámetros del script, y muy amablemente me dijo:

ruby rsmangler.rb
No input file specified
rsmangler v 1.1 Robin Wood (robin.wood@randomstorm.com) <www.randomstorm.com>
To pass the initial words in on standard in do:
cat wordlist.txt | ./rsmangler.rb > new_wordlist.rb
All options are ON by default, these parameters turn them OFF
Usage: rsmangler.rb [OPTION]
        --help, -h: show help
        --file, -f: the input file, use - for STDIN
        --perms, -p: permutate all the words
        --double, -d: double each word
        --reverse, -r: reverser the word
        --leet, -t: l33t speak the word
        --capital, -c: capitalise the word
        --upper, -u: uppercase the word
        --lower, -l: lowercase the word
        --swap, -s: swap the case of the word
        --ed, -e: add ed to the end of the word
        --ing, -i: add ing to the end of the word
        --punctuation: add common punctuation to the end of the word
        --years, -y: add all years from 1990 to current year to start and end
        --acronym, -a: create an acronym based on all the words entered in order
 and add to word list
        --common, -c: add the following words to start and end: admin, sys, pw,
pwd
        --pna: add 01 - 09 to the end of the word
        --pnb: add 01 - 09 to the beginning of the word
        --na: add 1 - 123 to the end of the word
        --nb: add 1 - 123 to the beginning of the word
        --force - don't check ooutput size

Es muy importante leer de arriba y abajo, sobre todo donde dice que por defecto, si no le metemos parámetros, usará todas las opciones.
Aunque no lo ponga, pero siempre es recomendable redirigir el comando hacia un fichero de texto, mas que nada para poder usar la lista... recuerda... >>fichero.txt
Antes de poner a hacer tostadas el microprocesador de vuestro pc, deciros que probéis con una palabra, y con todas las opciones marcadas, y veáis que crea la friolera de 670 combinaciones... si le pasas un diccionario de varios megas, verás subir el proceso del ruby framework a gigas y gigas en Ram.
Como siempre os recomiendo hacer varias pruebas, e intentar personalizar un poco los parámetros o directamente el script.
Happy brute--forcing !!!