Вы находитесь на странице: 1из 23
\\\\\\\\\\\\ CURSO orientación HACKER ////////////// //////////// By DarKh|s.exe ³ (n+1) \\\\\\\\\\\\\\

\\\\\\\\\\\\ CURSO orientación HACKER ////////////// //////////// By DarKh|s.exe ³ (n+1) \\\\\\\\\\\\\\

Disclamer: NO se asume ninguna responsabilidad debida al mal empleo de la información aquí contenida, puesto que este texto solamente tiene fines educativos y en ningún caso pretende incitar a nadie a cometer ningún delito ya sea informático o de otra índole.

Tablas Rainbow en detalle (Criptografía)

o de otra índole. Tablas Rainbow en detalle (Criptografía) Se preguntaran que son las tablas Rainbow

Se preguntaran que son las tablas Rainbow o "tablas arcoiris" :P. La respuesta es relativamente simple, son un tipo de tablas de búsqueda especial que permiten recuperar passwords usando sus hashes. Estas tablas están basadas en la teoría de cambio de tiempo por espacio.

La teoría de cambio de tiempo por espacio (tiempo-espacio) es como una balanza, en este caso, necesitaremos más espacio para reducir el tiempo, y como el tiempo es oro, las tablas rainbow son muy rápidas, y en este manual veremos como funcionan básicamente.

Philippe Oechslin (a que no pueden pronunciarlo ;P) fue el primero quien utilizó estas tablas en el programa Ophcrack. Ophcrack es una herramienta para crackear contraseñas de Windows, y está basado justamente en las tablas Rainbow.

Oechslin se basó en la teoría de cambio de tiempo por espacio, desarrollada en el año 1980 por Martin Hellman, luego fue usada por Ron Rivest en el año 1982, y desde entonces no fue optimizado ni desarrollado nuevos avances, Philippe logró crear un análisis criptográfico más eficiente basado en las teorías anteriores.

Ahora las tablas rainbow se utilizan para romper gran variedad de hashes y algoritmos criptográficos. Es importante mencionar que cada tabla rainbow está creada para sólo una función hash, es decir, hay tablas rainbow solamente para MD5, LM, NTLM, etc.

Estas tablas pueden crackear fácilmente una contraseña de entre 1 y 16 caracteres.

Ya sabemos que la función de hash es unilateral, o sea, no existe una función inversa, luego de encriptar texto plano, por ejemplo una clave de acceso, convirtiéndola en un hash, luego el hash no puede ser desencriptado para saber que escondía, básicamente porque los hashes funcionan así, quizá recuerden las propiedades de los hashes en la lección de la semana de criptografía, si no la recuerden léanla o esperen a que les llegue ;-).

Si se quiere averiguar que texto se oculta bajo determinado hash, hay dos métodos básicos:

- Hashear cada texto que se ocurra uno por uno, y compararlo con el hash original

- Hashear cada texto que se ocurra uno por uno, pero guardarlos en una tabla ordenada, para que luego la comparación sea más rápida, entonces no generamos nuevamente los hashes.

Por tanto ganamos en velocidad, y se utilizan menos recursos de memoria Ram y procesador que hasheando cada posibilidad y comparando. Las tablas rainbow son una optimización eficiente del segundo punto, te dan todo en bandeja de plata :D.

Ok, entonces las tablas rainbow son para realizar ataques por fuerza bruta, pero de forma bastante eficiente, y sin duda lo que caracteriza utilizar estas tablas es que además de utilizar bastante espacio en disco, es que las búsquedas son muy rápidas, veamos su funcionamiento:

En las tablas rainbow se utiliza una función de reducción que ingresa hashes y devuelve texto plano, pero NO es una función inversa, la función de reducción nunca resultará en el texto que produjo el hash.

Por ejemplo si pasamos una tendríamos:

clave a través

de

la función MD5,

MD5("493823") -> "222f00dc4b7f9131c89cff641d1a8c50".

Y para este caso aplicaremos una función de reducción R() que simplemente recogerá los primeros seis números del hash:

R("222f00dc4b7f9131c89cff641d1a8c50") -> "222004".

Y obtenemos un texto plano de 6 dígitos del hash reducido, eso es básicamente lo que hace la función de reducción, y en esto se basan las tablas rainbow.

Ventajas y desventajas de utilizar tablas rainbow:

Ventajas

La principal ventaja de utilizar tablas rainbow es el menor espacio de almacenamiento necesario en comparación con guardar todas las posibles claves y sus hashes y el menor tiempo de búsqueda. Además existe mayor probabilidad de encontrar contraseñas a partir de un hash que utilizando ataques de diccionario, pero este sistema no es tan exitoso como la fuerza bruta.

Luego de tener las tablas generadas, el tiempo para crackear un hash es poco. Las tablas rainbow están generadas para un amplio rango de algoritmos de hash, como MD5, SHA-1, LM, RIPEMD, etc.

El número de búsquedas es reducido, comparado con el método de fuerza bruta convencional.

Desventajas

La gran desventaja es el tiempo en el cual se pre-computan las tablas, o sea, el tiempo de generación y el esfuerzo que requiere. Además, si se cambia el juego de caracteres, se deberán rehacer las tablas.

Mientras el largo de la contraseña aumente, aumentará el número de posibilidades, y mientras el espacio de claves (cantidad de caracteres distintos) aumente, con ello más lento se hará factible realizar un ataque a hashes utilizando tablas rainbow. Esto se debe al aumento de tamaño de la tabla.

Además, sí el juego de caracteres aumenta mucho, el tiempo de pre- computación se convierte en un largo y lento proceso y la probabilidad de éxito disminuye. Por ejemplo, sí el juego de caracteres es alpha-numeric-symbol la cantidad de caracteres es 76 14 y para generar una tabla óptima y eficiente se tardaría más de 3 meses o muchos GB en disco para generarla.

Comparación técnicas de cracking de contraseñas:

 

Ataque de

   

#

Fuerza bruta

Tablas Rainbow

diccionario

     

Espacio de claves

23.109

8.031.810.176

8.031.810.176

Tiempo de pre- computo

1.05 segundos

96,54 horas

20,15 horas

(estimado)

   

Depende del orden/función de búsqueda

 

Tiempo de

< 1 segundo

2,6 segundos

búsqueda

(0,165)

máximo

 

Almacenamiento

~947 KB

300 GB!

~611 MB

requerido

requerido
requerido
requerido

Como se construye una tabla rainbow

En las tablas rainbow no se almacenan todas las posibles combinaciones y sus correspondientes hash, sino que solamente se almacenan algunas de ellas. Se guardan de tal manera que se puede deducir las que no están guardadas a partir de las que están. Esto se puede gracias a la función de reducción, en la tabla se guardan cadenas de hash a partir de esta función.

La función de reducción ingresa un hash y devuelve texto plano. Se puede elegir cualquier algoritmo criptográfico (MD5, LM, SHA1, etc), siempre que cumpla con lo anterior.

Para generar una cadena de hashes, se comienza calculando el hash de una contraseña elegida al azar. El resultado es pasado a una función de reducción, el texto plano devuelto es hasheado nuevamente, el cual pasa, otra vez, a la función de reducción. Así sucesivamente.

Al

contraseña y el último hash calculado, los cuales son almacenados

La primera contraseña y el último hash de la

cadena comprenden una entrada en la tabla rainbow.

cadena con excepción de la primera

final se

desecha toda la

dentro de la tabla.

de la primera final se desecha toda la dentro de la tabla. Así una cadena que

Así una cadena que contiene miles de funciones de un solo sentido, se representa en un texto y un hash.

Al final la tabla contara con entradas parecidas a lo siguiente:

Primer contraseña de cadena

Último hash calculado

ntvglaband

108a21b81de05cc7448b992678be3e33

S0rdromo

9179538774ac2c0caad3b435b51404ee

merkk99

19fd2590e6f8dd8a25e6c6a091ddab09

:

:

192i6877

3f6288969a7cab11c633b63571044597

Pueden crackear esos hashes LM para probar, diviértanse ;) Si aún no saben hacerlo, sigan leyendo

Por tanto, cuanto más filas se tenga más combinaciones de contraseñas tendremos y más probabilidad de encontrar una clave a partir de su hash.

Cuando crackean claves, o sea, cuando buscamos la contraseña que esconde un hash, se realiza el siguiente proceso:

Se busca el hash original en la tabla, si no se encuentra, se aplica la función de reducción al hash, el resultante texto plano se hashea y este se busca en la tabla. Esto se repite hasta que el hash aparece en la tabla.

Luego de encontrado el hash, se conoce la cadena que cuenta con la contraseña que produjo el hash. Lo único que falta hacer es volver a hashear esa cadena y comparar los resultados con el hash original.

esa cadena y comparar los resultados con el hash original. no encontramos coincidencias. Notar que es

no

encontramos coincidencias.

Notar que

es posible

ir hacia

atrás desde

el punto dónde

La función de reducción es usada para generar la tabla como para buscar resultados en ella. La estructura de la tabla y su función de reducción, garantiza que el hash coincidirá con el hash final de alguna de las cadenas.

El contenido de la tabla no depende de la entrada del algoritmo. Es creada una vez y luego utilizada repetidamente para las b úsquedas sin sufrir alteración alguna.

El resultado final de la generación, es una tabla que contiene estadísticamente una alta probabilidad de revelar una contraseña en un corto período de tiempo, generalmente menos de un minuto. El tiempo depende de cómo se haya creado la tabla, pero si es eficiente no se tardará más de un minuto encontrar el texto plano que generó el hash.

La probabilidad de éxito de la tabla depende en los parámetros que se hayan usado para generarla, esto es muy importante (ya lo veremos cuando generemos nuestra propias tablas). Esto incluye el juego de caracteres usado, largo de las contraseñas, largo de las cadenas, cantidad de cadenas (filas) de la tabla.

La probabilidad de acierto está definida por la probabilidad de encontrar un texto plano a partir de uno encriptado. En el caso de contraseñas, la contraseña es el texto plano, y el hash de la password el cifrado/encriptado, por lo tanto, la probabilidad de éxito, es la probabilidad de recuperar la contraseña original a partir del hash.

RainbowCrack

Este programa sirve para

crackear contraseñas, fue desarrollado por Zhu Shuanglei, luego de que nuestro amigo Philippe Oechslin desarrollara tablas rainbow eficientes. RainbowCrack es un programa disponible tanto para sistemas Windows como para GNU/Linux. Es libre (código fuente disponible) y muy personalizable, permite romper gran cantidad de hashes, podremos crear nuestras propias tablas rainbow, utilizando herramientas sencillas, que iremos viendo en este manual.

No, no es una nueva droga callejera

El

programa

se

descarga

desde

su

página

oficial:

Luego de descomprimir o compilar el programa, tendremos el programa rcrack para empezar a crackear, pero antes necesitamos las tablas, estas las podemos descargar de Internet, o bien, generarlas nosotros.

Pueden

encontrar

tablas

rainbow

para

usar

en:

Ya saben dónde las pueden descargar, ahora les explicaremos como generar sus propias tablas.

Generando nuestras tablas

Para esto tenemos herramientas que nos ayudaran en nuestro camino a la gloria. Rtgen es una aplicación que se distribuye junto al paquete de RainbowCrack. En su versión 1.2 (última al día de hoy) permite generar tablas para hashes lm, md5 y sha1.

Démosle manija y echémosle andar

Si ejecutamos rtgen sin parámetros nos dará la clásica ayuda, como debe ser. Los parámetros que debemos pasarle son estos:

rtgen algoritmo hash \ juego de caracteres \ largo mínimo contraseña \ largo máximo \ index de tabla \ largo de cadena \ cantidad de cadenas \ sufijo de archivo \ [-bench]

Ejemplos:

rtgen lm alpha 1 7 0 100 16 test rtgen md5 byte 4 4 0 100 16 test rtgen sha1 numeric 1 10 0 100 16 test rtgen lm alpha 1 7 0 bench

Explicación de los parámetros:

El primer parámetro a pasar obligatoriamente, es el algoritmo hash, los disponibles son lm, md5 y sha1 que son los más comunes y utilizados.

El segundo parámetro a pasar es el juego de caracteres, se debe pasar un nombre del juego de caracteres representado en el archivo charset.txt, el cual debe estar dentro del mismo directorio de ejecución. (Recomendación ver el archivo charset.txt)

Largo mínimo de contraseña, se refiere a cuantos caracteres tendrán los texto plano de los hashes. Largo máximo es la cantidad máxima de caracteres que tendrá. Claro que cuanto más largo sea el texto plano del hash, más posibilidades habrá y más cadenas que generar.

Index de tabla es el índice de la tabla, se refiere al número que tendrá el nombre del archivo.

Largo de cadena indica la cantidad en caracteres que tendrán las cadenas a generar. Cantidad de cadenas será cuantas cadenas hay que generar (filas de la tabla)

Sufijo de archivo, es para diferenciar entre archivos con iguales características, me refiero a haber creado otros archivos con los mismos parámetros anteriores, entonces para diferencias se coloca un sufijo.

El parámetro bench (de benchmark) es para simular, probar los tiempos y resultados de crear esa tabla.

Generando tablas en modo gráfico

Una opción más linda visualmente, que nos da mucho más posibilidades que rtgen. Winrtgen una especie de front-end recargado de rtgen, que añade nuevas funciones.

En primer lugar pueden descargar este programa desarrollado para sistemas MS Windows desde la siguiente dirección:

Luego de descomprimir el archivo descargado y ejecutar el archivo winrtgen.exe observarán una ventana que tiene dos columnas y varias filas, además 6 botones en su parte inferior. Para configurar los parámetros de nuestra nueva tabla debemos elegir el primer botón “Add Table” y les aparecerá algo similar a lo correspondiente en la siguiente imagen.

Podrán percibir que el Winrtgen tiene los mismos parámetros que el rtgen, por lo tanto

Podrán percibir que el Winrtgen tiene los mismos parámetros que el rtgen, por lo tanto no los explicaré de nuevo.

En primer lugar elegimos el algoritmo para usar en la tabla, en la opción “Hash”, podrán notar que disponen de más algoritmos que con rtgen.

Min Len y Max Len se refieren al largo mínimo y máximo que tendrán las contraseñas a crackear. Chain Len es el largo de la cadena, cuanto más larga es la cadena más tiempo de procesamiento y más probabilidad de éxito, pero el tamaño de la tabla no se afecta.

Chain Count, indica cuantas cadenas generar, cuanto mayor sea el número, más grande será la tabla y más posibilidad de éxito, se puede ver en tiempo real en “Table properties” (propiedades de tabla) como varían los indicadores.

Las propiedades de tabla indican cuantas claves son posibles con el juego de caracteres seleccionado (Charset)

En “Nº of tables” se indica cuantas tablas generar. ¿ Porqué crear más de una tabla ? Para tener mayor probabilidad de éxito una sola tabla sería muy grande y tardaría más en el proceso de búsqueda. Por ello creamos

varias, ya que creando una sola muy grande deberemos ordenarla, lo que llevaría bastante tiempo de proceso y de búsqueda. Reduciendo el tamaño de cada tabla y dividiéndola en varias, tendremos un uso más eficiente de la memoria y el ordenamiento de cada una sería más veloz.

Debemos elegir el juego de caracteres que queremos utilizar, podemos utilizar las que vienen predefinidas o editar el archivo charset.txt nosotros mismos, creando o modificando juegos de caracteres.

Muy importante es el botón de “Benchmark” este realizará un simulacro de la generación de la tabla con los parámetros y opciones indicados.

de la tabla con los parámetros y opciones indicados. En la imagen se observa un Benchmark

En la imagen se observa un Benchmark de generar tablas, explicaremos los datos que nos entrega:

Hash speed será la velocidad de generar hashes por segundo. Step speed la cantidad de pasos que hará por segundo al generar la tabla.

Table precomputation time, es el tiempo que llevará generar una tabla en ese computador. Total precomputation time, es el tiempo total de generar las tablas, en la imagen creamos 3 tablas, por tanto será el tiempo de creación de cada tabla multiplicado por 3, los tiempos pueden ser horas, días, años, etc

Max cryptanalysis time, tiempo máximo de criptoanálisis, es el tiempo que llevaría encontrar una coincidencia en las tablas, cuanto más filas/más cadenas (Chain Count) tenga la tabla más rápido será el proceso de encontrar una coincidencia, pero la tabla será más grande, nunca olviden la teoría de cambio de tiempo por espacio.

Los datos del simulacro se cumplen en la realidad cuando se genera la tabla con un pequeño margen de error.

Casos prácticos

Tablas Rainbow Vs. Brute Force

Compararemos dos técnicas de cracking de hashes; tablas rainbow y brute force.

En primer lugar demostraremos de forma práctica como crackear contraseñas con el juego de caracteres ASDFGHJKL. Generaremos una tabla rainbow utilizando winrtgen, y crackearemos con rainbowcrack. Posteriormente crackearemos contraseñas utilizando jtr y el mismo juego de caracteres. Quien será el ganador para este primer reto, se lo imaginan ?

Vamos a ensuciarnos las manos un poco

;)

se lo imaginan ? Vamos a ensuciarnos las manos un poco ;) Especificamos los parámetros como

Especificamos los parámetros como se muestra en la imagen. La tabla de 458 MB se generará en 13 minutos aproximadamente, tendrá una probabilidad de éxito del 100%

También se pudiera haber realizado la misma tabla con el siguiente comando de rtgen:

rtgen lm CursoHacker 1 7 0 24 30000000 algo

Les comento que generar tablas utiliza toda la capacidad del procesador, al igual que crackear contraseñas con rainbowcrack.

Luego de dar ok dos veces se comenzará a generar la tabla, como mostramos en la imagen a continuación.

la tabla, como mostramos en la imagen a continuación. Mientras avance, se mostrará el progreso de

Mientras avance, se mostrará el progreso de generación. Luego de completado tendremos el archivo.

de generación. Luego de completado tendremos el archivo. Se habrán dado cuenta que los archivos se

Se habrán dado cuenta que los archivos se generan con una nomenclatura especial, los archivos que son generados dentro del directorio de winrtgen, tienen la particularidad que sus nombres comienzan con el algoritmo hash que fueron generadas esas tablas, luego el nombre del juego de caracteres usado, que debe estar especificado en el archivo charset.txt también dentro del mismo directorio, luego del primer símbolo de numeral # indica el mínimo y máximo número de caracteres que contiene la contraseña.

El nombre del archivo contiene todos los parámetros que especificamos al crearla, el nombre del archivo no debe ser cambiado, porque es parte de los datos que toma el programa crackeador, por ejemplo el rainbowcrack.

Luego de tener la tabla generada, pasamos a ejecutar el rainbowcrack. No olviden que deben tener el archivo con las passwords, pueden haberlo obtenido con pwdump. En nuestro caso utilizamos pwdump2 y dejamos solamente tres usuarios en el archivo de hashes. Nuestro archivo de hashes contiene lo siguiente:

ganja:1005:b44789a28ab64d03aad3b435b51404ee:970acf0644a6cb

7e6da9e10174827590:::

kuntakinte:1006:85367c4a7c154243b94745df070199fd:e83f97aacf4

0bf7cc3248ad3b6bf3ddf:::

salomon:1004:1c82ca536a599f103e04f4ef84e62dfa:f05eda915b9355

4aa8a0ebfd2fcaf2e9:::

Los usuarios son, ganja, kuntakinte y salomon.

Primero debemos copiar el archivo charset.txt desde el directorio de winrtgen hacía el directorio del rainbowcrack, esto es para tener el mismo juego de caracteres en ambos, de lo contrario al crackear nos dará error de redundancia, al comprobar que el juego de caracteres no existe.

Abrimos una consola de comandos, y luego nos ubicamos en el directorio de los ejecutables de rainbowcrack. El primer paso es reordenar la tabla rainbow, para ello utilizamos el programa rtsort utilizando el comando con su propio nombre.

programa rtsort utilizando el comando con su propio nombre. Luego de reordenarla, pasamos al cracking con

Luego de reordenarla, pasamos al cracking con tablas rainbow, el momento esperado, dónde la magia se hace realidad, y develamos el secreto del ratón Pérez ;P

El ejecutable de rainbowcrack es rcrack lo ejecutamos y observamos maravillados:

es rcrack lo ejecutamos y observamos maravillados: Luego de haber ejecutado el comando : rcrack.exe

Luego de haber ejecutado el comando :

rcrack.exe lm_CursoHacker#1-7_0_24x30000000_oxid#000.rt f hashes.local

El

primer parámetro es la tabla rainbow a utilizar, que es justamente

la

que creamos anteriormente, luego del parámetro f especificamos

el

archivo de hashes que ya saben cual era el contenido, porque lo

dije en la página anterior ;P

Como habrán podido observar en la imagen anterior, todas las contraseñas fueron descubiertas, el tiempo que llevó realizar toda la operación fue de 19.75 segundos, de los cuales 19.72 segundos fueron de la lectura y verificación del archivo de tablas. Y 0.03 segundos fueron del análisis criptográfico.

Ahora vamos con JTR (John The Ripper), lo primero es crear el juego de caracteres y configurar el archivo john.ini, les explicamos como:

Si todavía

no

lo tienen

en

su sistema

se

lo descargan desde:

Luego de tenerlo y orejearlo un poco, debemos editar el archivo john.pot y dejarlo solamente con la siguiente línea:

$LM$:ASDFGHJKL

Eso indica el juego de caracteres que vamos a utilizar. Para crear el archivo con el juego de caracteres ejecutamos el siguiente comando:

john-386.exe --make-charset=CursoHacker.chr

En pocos segundos tendremos el archivo con el juego de caracteres.

A continuación editamos con cualquier editor de textos el archivo

john.ini, buscamos el texto “# Incremental modes” (sin comillas) allí encontraremos las opciones para el crackeo por fuerza bruta.

Agregamos la siguientes líneas:

[Incremental:CH] File = $JOHN/CursoHacker.chr MinLen = 0 MaxLen = 7 CharCount = 9

Como sabrán, o no? Lo que allí se indica es el archivo que contiene el juego de caracteres, el largo mínimo y máximo de las contraseñas, y

la cantidad de caracteres distintos del juego de caracteres.

Luego de guardar todos los cambios en los archivos, nos dirigimos a

la consola de comandos. Ahora es el momento de la verdad, no se

asusten y continúen

Ejecutamos john-386.exe i:CH hashes.local

Yyyy…. magia !!

john-386.exe – i:CH hashes.local Yyyy…. magia !! Tan solo 3 segundos !! Tenemos un ganador !!

Tan solo 3 segundos !! Tenemos un ganador !! Como podrán observar muy rápido, las contraseñas las separa en 2, porque así trabaja el algoritmo LM. Por tanto nosotros debemos unirlas.

En este primer reto, concluimos que era más simple y eficiente utilizar JTR que generar las tablas rainbow, y crackear con ellas, claro, las tablas se podrían haber echo más grandes y así consumir menos tiempo, pero de todas formas necesitaríamos tiempo de procesamiento en generarlas y/o descargarlas de internet, por tanto y sin dudas JTR es más eficiente, hagamos otra prueba para comprobar cuando utilizar una opción u otra.

Prueba Nº 2

En esta prueba práctica crackearemos contraseñas con el juego de caracteres alfa (solo letras), generamos la tabla rainbow, como ya sabemos, y seleccionamos el juego de caracteres alpha.

Crackeamos las contraseñas de 3 usuarios utilizando rainbowcrack:

Como habrán observado, se descubrieron todas las contraseñas en un tiempo total de 50 segundos.

Como habrán observado, se descubrieron todas las contraseñas en un tiempo total de 50 segundos.

Ahora veamos que tal nos va con el JTR. Ejecutaremos el JTR también utilizando el juego de caracteres alpha, y hemos probado solamente descifrar una de las contraseñas, para ello utilizamos el parámetro u para indicar la contraseña de que usuario queremos crackear:

indicar la contraseña de que usuario queremos crackear: JTR tardó 26 minutos en descifrar una sola

JTR tardó 26 minutos en descifrar una sola de las contraseñas, mientras que con rainbowcrack y una tabla rainbow eficiente (99% probabilidad de éxito y 700MB de espacio) tardó 50 segundos en las contraseñas de 3 usuarios !

Con estas pruebas prácticas concluimos que:

Cuanto más contraseñas a deducir tengamos, es preferible utilizar tablas rainbow. Cuando se generen las tablas es importante saber que cuanto más filas/cadenas más rápida será la búsqueda pero más grande será la tabla. Y que cuanto más largas las cadenas y más cantidad de cadenas por tabla, más probabilidad de éxito. Utilizando winrtgen pueden ir viendo y probando todo esto, no olviden tener un equilibrio, entre tamaño de la tabla y tiempo de generación de la misma.

Estas gráficas aclararán su mente:

Estas gráficas aclararán su mente: Por último decirles que es posible crackear un solo hash, utilizando

Por último decirles que es posible crackear un solo hash, utilizando el parámetro h de rcrack. Supongamos que tenemos la siguiente línea de un archivo de hashes generado por pwdump:

salomon:1004:0c2951af971ffcd13bef6036f4d71807:de0e4eea4e5898

f4a0d5a0c3638befc5:::

Lo primero que tenemos es el nombre del usuario y su UID (User ID, número identificador de usuario), el usuario es salomon y su UID es 1004, luego vienen los hashes de la contraseña, recuerden que en LM se descompone la contraseña en 2 secciones de 7 caracteres y luego se hashean por separado y se juntan en una, por tanto para crackear debemos pasarle el hash verdadero que son 16 caracteres.

Entonces a las manos:

rcrack.exe lm_CursoHacker#1-7_0_24x30000000_oxid#000.rt h

0c2951af971ffcd1

Con ello tendremos la primer parte de la contraseña, luego deberemos crackear la segunda sección.

OphCrack

Otro programa que pueden utilizar es el OphCrack, sencillo y efectivo. Sus tablas están más optimizadas que las de rainbowcrack. Y de regalo les voy a dar una pequeña introducción práctica para que disfruten, sólo por esta vez, que no se les haga costumbre pedir más ;P

OphCrack se distribuye tanto como liveCD, o sea, un CD booteable que en este caso ejecuta un sistema operativo GNU/Linux, específicamente SLAX, que a su vez es derivado de Slackware. Este liveCD ya contiene tablas rainbow para LM y NTLM. También se distribuyen programas para ser utilizados tanto en GNU/Linux como en MS Windows, ambos utilizan las librerías GTK+.

Luego de descargarnos el programa ophcrack-win32-installer- 2.4.1.exe para Windows desde SourceForge (la red más grande de distribución y alojamiento de software libre) pasamos a la instalación. El mismo nos da la posibilidad de descargar las tablas rainbow (Ophcrack no cuenta con generador de tablas).

Las tablas:

(Ophcrack no cuenta con generador de tablas). Las tablas: La primera opción es para instalar las

La primera opción es para instalar las tablas para NTLM desde DVD. Nosotros y ustedes por un tema práctico instalaremos la versión descargable por internet de 776 MB. Esta contiene hashes LM del 99,9% de todas las combinaciones alfanuméricas, contraseñas con combinaciones de letras y números (cerca de 80 billones de hashes!).

Los hashes LM no son case sensitive por eso la diferencia con los hashes NTLM. La tabla que indicamos tiene 2 83 passwords.

La tabla de 8.5 GB contiene hashes NTLM es utilizado cuando se deshabilitó LM en la pc, tiene el 99% de hashes posibles, son más de 7 trillones de hashes!

Algunas pruebas prácticas con passwords:

Aquí tenemos una tabla que muestra en cuantos segundos fueron descubiertas las siguientes passwords (utilizando hashes LM y la tabla antes mencionada):

0d1n 120 segundos virtualpc 450 segundos m4r1hu4n4 500 segundos

abracadabra 615 segundos elvelozmurciélagohindúcomíafelizcardilloykiwi 700 segundos Contraseña no encontrada: 4+Y>!6i

La última contraseña no la encontró, porque esta contiene caracteres que no están en el juego de caracteres alfanuméricos.

Luego de instalado y ejecutado:

caracteres alfanuméricos. Luego de instalado y ejecutado: En primer lugar debemos tomar un archivo que tenga

En primer lugar debemos tomar un archivo que tenga las contraseñas, si queremos tomar automáticamente el archivo de

hashes de la maquina local como se ve en la imagen, presionamos en

Load

> From local SAM

Nos cargará los usuarios del sistema y datos sobre sus contraseñas.

Luego en el botón Tables

utilizar. Para comenzar el crackeo le damos al botón Launch.

podremos elegir que tablas rainbow

Luego de 2 minutos en nuestro caso, encontramos la contraseña del usuario VirtualOdin que era 0d1n, y luego de 45 minutos terminó por recorrer todas las tablas para descifrar las otras contraseñas que tenían passwords fuertes y no pudieron ser descubiertas, veamos la imagen:

Como verán muy fácil de utilizar. Encuentran este hermoso programa en: http://ophcrack.sourceforge.net/ El índice de

Como verán muy fácil de utilizar.

Encuentran este hermoso programa en:

El índice de éxito de encontrar contraseñas con Ophcrack es del 99,9% para hashes LM y NTLM, o sea, para Windows. También para RainbowCrack utilizando las tablas rainbow que distribuyen para romper varios hashes.

Como defenderse de las tablas rainbow en nuestros sistemas?

En primera instancia las medidas de seguridad a implementar son:

Limitar el acceso físico, enforzar las contraseñas para que sea más difícil o imposible descubrirlas por métodos de fuerza bruta, utilizando caracteres especiales. Utilizar protocolos de autenticación fuertes, protocolos de acceso remoto fuertes, comunicaciones seguras (encriptadas con algoritmos fuertes).

Proteger las bases de datos de passwords, investigar las técnicas de password cracking. Forzar políticas de passwords y realizar entrenamientos de concientización y auditorías de passwords. Tener el sistema actualizado. Como medidas básicas y generales, ahora en cuanto a las tablas rainbow:

Las tablas rainbow no sirven para crackear hashes generados con bits aleatorios. Los llamados “salts” o semillas aleatorias, son muy efectivos, ya que añaden complejidad y extienden el largo del hash. Actualmente se guardan hashes con salt nativamente en sistemas tipo Unix, BSD, GNU/Linux. El resultado de añadir semillas es un hash derivado del original.

Por ejemplo con la siguiente función tendríamos un hash derivado utilizando semillas aleatorias (salt):

hash = MD5 (password . salt)

(El punto es un operador de concatenación)

Sistemas Windows NT/2000, XP y Vista (por compatibilidad hacia atrás) utilizan Lan Manager (LM) y NT Lan Manager (NTLM), que no emplean salts, es por eso que la mayoría de las tablas rainbow que pueden encontrar serán para romper estos sistemas poco seguros.

LM utiliza DES, cifrando con la clave del usuario la constante “KGS!@#$%”. El hash se divide en dos bloques de 7 caracteres. Si la clave tiene menos de 14 caracteres, se rellena con null.

Las contraseñas con hash LM son más proclives a ataques de fuerza bruta y menos seguras que NTLM (NTLMv1 utiliza md4, NTLMv2 utiliza md5), por lo tanto si no es necesaria la compatibilidad hacia atrás con sistemas Windows, es mejor desactivar LM, para conocer el procedimiento, les recomiendo esta lectura:

Para contraseñas que se guardan en Active Directory de Windows, es mejor utilizar el protocolo Kerberos.

Por lo tanto una buena defensa además de utilizar salts, para evitar este tipo de ataques, es incluir espacios y caracteres raros en las contraseñas y aumentar su longitud, por tanto hacerlas más “fuertes” ya que todo lo que aumente la complejidad del password será en beneficio de la seguridad.

Conclusiones

Las tablas rainbow se utilizan para descubrir el texto plano que esconden determinados hashes, las tablas son creadas para algoritmos específicos, luego de crear las tablas se pueden utilizar indefinidamente sin modificar su contenido.

Se basan en la teoría de cambio de tiempo por espacio. Se utiliza la función de reducción para crear las tablas y para realiza búsquedas en ellas.

Dependiendo del caso, nos será más efectivo utilizar las tablas rainbow u otro sistema de crackeo. Utilizando tablas rainbow destaca su velocidad y probabilidad de éxito en casos de tener muchas contraseñas a deducir.

Por último, se debe tener en cuenta una política de contraseñas, (muchas de estas serán obvias luego de leer todo el material entregado):

* Cambiar las contraseñas cada cierto tiempo.

* Deben de contener, idealmente, una mezcla de letras, números y otros caracteres.

* Deben de tener cierta cantidad de caracteres, ya que cuanto más cortas, más fáciles de descubrir.

* No se debe usar la misma contraseña para sitios distintos.

* No deben de contener información personal de ningún tipo.

* No debe de ser alguna palabra conocida o pertenecer a otro idioma (contramedida para ataques de diccionario).

* No deberían ser mutaciones simples de palabras, estas son

contraseñas débiles: unouno, tr3s, casa23, elgoog (google al revés).

* Aunque al mismo tiempo ha de ser fácilmente recordable, porque no se debe escribir en ningún lugar.

* No se deben anotar en ningún lugar, nada de pegatinas en el

monitor que diga; “Usuario de alumnoz.com es c4nibal contraseña

comohombrestmbmujeres” ;P

Les recomiendo una página interesante para crear contraseñas fuertes y recordarlas:

Este sitio nos da la posibilidad de crear contraseñas fuertes de largo entre 5 y 21 caracteres, utilizar símbolos, y lo más interesante nos da una pauta de cómo recordar la contraseña, por ejemplo:

La contraseña dR5h"75 será recordada como disney RADIO 5 harry " 7 5. Ya me olvidé ;P

Claro que utilizando este método pueden generar sus propias contraseñas fuertes y recordarlas, la mía es mb1vaAySt3< (la recuerdo como: “Me baño 1 vez al Año y Se tapa 3l <año” XD)

Otro servicio muy útil que les caerá como anillo al dedo si quieren comprobar que tan fuerte es una contraseña, es:

Dónde además de decirnos que tan fuerte es una contraseña, nos dará consejos de cómo mejorarla para hacerla más fuerte e indeducible?

Happy cracking !

FIN DEL MANUAL Autor: 0d1n Fecha última revisión: 29/05/2008

Elaborada con material ofrecido por autores Anónimos y elaboración propia. El presente material se promueve con fines completamente educativos, por lo que el Autor no se responsabiliza de malos usos o de usos de terceros. Esta prohibida la reproducción parcial o total del material aquí contenido sin expresa autorización de cursohacker.com.