Está en la página 1de 5

Crackeando contraseñas de CMS. PasswordsPro.

Hi

El otro día entro el muertito en el chat preguntando si podíamos ayudarle con un hash que no podía
sacarlo. Todavía no ha salido, pero es cuestión de tiempo. Esto prueba que la mejor defensa contra
este tipo de ataques es una contraseña fuerte, esto es, la combinación aleatoria de mayúsculas,
minúsculas, números y símbolos y nunca menor de 10 caracteres.

Lo primero que habría que saber es que tipo de hash es. En el caso del muertito era un hash de
Joolma. La tendencia de los CMS es diversificar los métodos de encriptación, pero utilizando
alguno de los algoritmos mas comunes como MD5 o SHA1. Con lo que lo primero a la hora de
enfrentarnos a un hash de un CMS es saber que tipo de hash es. Para eso ya tenemos el trabajo
hecho, existen tablas como estas:

http://img196.imageshack.us/img196/6757/foto1of.jpg

Y sino existen programas como el Hash Analizer que te dicen el tipo de encriptacion que lleva, pero
yo me fiaría mas de las tablas.

Una vez que ya sabemos que tipo de cifrado lleva vamos a ver el programa PasswordsPro. En el
caso del muertito era un hash de Joolma, donde $hash=md5($pass.$salt). Donde el hash es el
resultado de añadirle un salto generado aleatoriamente a la pass en claro, y luego el resultado
cifrarlo en MD5.

El programa PasswordsPro esta diseñado para recuperar contraseñas de diferentes tipos de hashes.
Funciona bajo windows (en linux el wine parece que lo emula bien), no lleva instalación y usa sus
propias librerias con los algoritmos. Soporta mas de 30 tipos de hashes y la version comercial
admite hasta 256 hash simultaneamente, la version shareware esta limitada a un hash. Tambien se le
pueden cargar plugins con utilidades como un generador de contraseñas seguras, un generador de
diccionario, conversores de texto y algunos mas.

La lista de algoritmos que admite es:

– MySQL5
– DES(Unix)
– MD2
– MD4
– MD4(HMAC)
– MD4(Base64)
– MD5
– MD5(APR)
– MD5(Unix)
– MD5(HMAC)
– MD5(Base64)
– MD5(phpBB3)
– MD5(Wordpress)
– MD5_HMAC($salt,MD5_HMAC($salt,$pass))
– SHA-1
– SHA-1(HMAC)
– SHA-1(Base64)
– SHA-1(Django)
– SHA-256
– SHA-256(Unix)
– SHA-256(Django)
– SHA-256(md5($pass))
– SHA-256(PasswordSafe)
– SHA-384
– SHA-384(Django)
– SHA-512
– SHA-512(Unix)
– Haval-128
– Haval-160
– Haval-192
– Haval-224
– Haval-256
– Tiger-128
– Tiger-160
– Tiger-192
– RipeMD-128
– RipeMD-160
– MaNGOS
– Whirlpool
– RAdmin v2.x
– Lineage II C4
– Domain Cached Credentials
– md5(md5($pass))
– md5($pass.$salt)
– md5($salt.$pass)
– md5(sha1($pass))
– md5($hex_salt.$pass)
– md5(md5(md5($pass)))
– md5(md5($pass).$salt)
– md5(md5($salt).$pass)
– md5($salt.md5($pass))
– md5($salt.$pass.$salt)
– md5(md5($salt).md5($pass))
– md5(md5($pass).md5($salt))
– md5(md5($pass).$const_salt)
– md5($salt.md5($salt.$pass))
– md5($salt.md5($pass.$salt))
– md5($salt.md5($pass).$salt)
– md5(sha1(md5(sha1($pass))))
– md5($hex_salt.$pass.$hex_salt)
– md5($username.md5($pass).$salt)
– md5(md5($username.$pass).$salt)
– sha1(md5($pass))
– sha1($salt.$pass)
– sha1($pass.$salt)
– sha1($username.$pass)
– sha1($salt.sha1($pass))
– sha1($username.$pass.$salt)
– sha1($salt.sha1($salt.sha1($pass)))
Podremos introducir los hash de varias formas:

– La primera seria desde un archivo .hashes, extension con la cual el programa puede
exportarlos.

– Desde un archivo de texto con el siguiente formato:


Login:Hash:Salt(or HMAC-key):Password:Comment

– Desde el menu edit → Add, Nos saldra un cuadro de dialogo como este,

http://img692.imageshack.us/img692/4778/foto2za.jpg
En este caso le puse el hash del muertito

Una vez que tenemos el/los hash a descifrar, vamos a ver los tipos de ataque que puede soportar el
programa y como se configurarían las opciones.

Ataque preliminar

Lo primero seria realizar un ataque preliminar (preliminary attack). Esto consiste en pasarle un
diccionario pequeño con las contraseñas débiles mas comunes, como podría ser qwerty, 123456,
contraseña en blanco, admin y cosas así.

En Service → options o settings tenemos las opciones de este tipo de ataque.

Podemos seleccionar opciones como que compruebe todas las combinaciones posibles de 1 y 2
caracteres, que compruebe también el comentario, caracteres repetidos o que incluya uno de los
diccionarios que incluye el programa, en concreto el combinations.txt.

Seleccionadas las opciones, iriamos a Audit, seleccionaríamos el preliminary attack y arrancariamos


el ataque.

Una vez pasado este ataque preliminar sin éxito, tendríamos que decantarnos entre varios tipos de
ataque por diccionario, que vamos explicar:

Ataque simple con diccionarios

No creo que haya que explicar mucho de como seria este ataque, a partir de uno o varios
diccionarios iría comparando los hash hasta dar con la contraseña o terminar el diccionario sin
obtener la contraseña en claro.
Para ello tendremos que añadirle nuestros diccionarios, en la sección Dictionaries de las opciones se
los añadiríamos. El programa viene con uno llamado insidepro.dic.

Luego en Audit elegiríamos el Simple Dictionary Attack y a darle caña.

Ataque combinado con diccionarios

Este tipo de ataque incluye la validación de contraseñas compuesto por varias palabras tomadas de
diferentes diccionarios. Este ataque permite recuperar contraseñas complejas pero compuestas con
dos palabras comunes, como "superadmin", "admin * admin", etc
En los settings del programa, en la sección Combined Dictionary Attack podremos elegir los
diccionarios a combinar.

Ataque híbrido de diccionario

Este tipo de ataque permite variar las contraseñas de los diccionarios (por ejemplo, cambio de
minúsculas a mayúsculas, añadir un “1” al final de la contraseña, etc). Estas acciones de variación
llaman reglas. La lista completa de estas normas se pueden encontrar en el archivo "rules.txt”. Si
queremos usarlas todas, simplemente tendremos que ir a las opciones, y en el apartado “Hybrid
Dictionary Attack” añadir el rules.txt.

Luego como siempre, seleccionaríamos el tipo de ataque y a esperar y tener suerte.

Si los ataques con diccionario no funcionases, malo malo, tendriamos que irnos a realizar un ataque
por fuerza bruta.

Ataque de fuerza bruta

Poco hay que decir de esta forma de sacar hash, es la mas efectiva pero a su vez la que mas tiempo
tardará en darnos la contraseña, consistiría en ir probando todas las combinaciones posibles. En las
opciones podemos elegir los juegos de caracteres a utilizar, podríamos combinar mayúsculas,
minúsculas y símbolos. Tiene la opción de limitar el ataque en cuanto a longitud de password y de
estar limitado también en un rango, para así hacer ataques distribuidos en varias maquinas. Es la
ultima opción que deberíamos seleccionar, y normalmente lleva mucho tiempo.

Ataque de mascara

Este seria una variación de un ataque de fuerza bruta limitando las combinaciones a una mascara en
concreto. Se utiliza cuando se dispone de información parcial sobre la contraseña. Por ejemplo:
- Contraseña comienza por "12345" o
- Los primeros 4 caracteres de la contraseña son los números, otras letras del alfabeto latino;
- Y así sucesivamente.

Para ello, definiremos lo que llamaremos una mascara. Tendremos caracteres comodín a los que
podremos asignar cierto comportamiento.
La mascara se pondría en las opciones, en la sección Mask Attack. Los juegos de caracteres que
utilizaría cada comodín están definidos en la opción “Character Sets”. Alli vemos que ?d utilizaría
solo los números, ?v utilizaría las vocales mayúsculas y minúsculas o que ?s combinaría solo los
caracteres, etc...

Por ejemplo, si queremos que compruebe todas las combinaciones que empiecen por un numero y
que el resto sean mayúsculas, limitandolo a una longuitud de 7 caracteres, tendríamos que poner
una mascara así: ?d?u?u?u?u?u?u en la sección Mask Attack de las opciones.

Ataque con rainbow tables.

El programa también admite rainbow tables como diccionarios. El que las tenga... yo tenia casi
todas las MD5 y ahora me estoy arrepintiendo bastante de haberlas borrado, Si alguien quiere saber
sobre el tema... san google. Y si alguien tiene rainbow tables MD5 en cualquier formato
(preferentemente rti), que se ponga en contacto conmigo, ya que no las encuentro por ningún sitio y
estoy interesado en volverlas a conseguir.

Si se han leido hasta aquí ya tendrán unos conocimientos básicos necesarios para crackear hashes de
los CMS. Una recomendación... paciencia, es la madre de las ciencias. Crackear una contraseña no
es fácil ni rápido (a no ser que sea muy débil). Faltaria tratar el tema de plugins, pero se haria
demasiado extenso, el que quiera que lo mire por su cuenta.

Espero que lo usen de una manera adecuada y educativa, o sea, no se dediquen a defacear x
defacear, eso es de lammers.

Bye

Fuentes:
http://hashkiller.com/index.php?topic=986.0
Ayuda del programa PasswordsPro

Software:
Hash Analizer: http://rapidshare.com/files/269982860/Hash_Analyzer_1.0.rar
PasswordsPro (version shareware): http://www.insidepro.com/download/passwordspro.zip

También podría gustarte