tablas rainbow
Post on 31-Oct-2015
234 Views
Preview:
TRANSCRIPT
-
\\\\\\\\\\\\ CURSO orientacin HACKER ////////////// //////////// By DarKh|s.exe (n+1) \\\\\\\\\\\\\\
http://www.cursohacker.com informacion@cursohacker.com
Disclamer: NO se asume ninguna responsabilidad debida al mal
empleo de la informacin aqu contenida, puesto que este texto solamente tiene fines educativos y en ningn caso pretende incitar a
nadie a cometer ningn delito ya sea informtico o de otra ndole.
Tablas Rainbow en detalle (Criptografa)
Se preguntaran que son las tablas Rainbow o "tablas arcoiris" :P. La respuesta es relativamente simple, son un tipo de tablas de bsqueda
especial que permiten recuperar passwords usando sus hashes. Estas tablas estn basadas en la teora de cambio de tiempo por espacio.
La teora de cambio de tiempo por espacio (tiempo-espacio) es como
una balanza, en este caso, necesitaremos ms espacio para reducir el tiempo, y como el tiempo es oro, las tablas rainbow son muy rpidas,
y en este manual veremos como funcionan bsicamente.
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 contraseas de Windows, y est basado justamente en las tablas Rainbow.
Oechslin se bas en la teora de cambio de tiempo por espacio,
desarrollada en el ao 1980 por Martin Hellman, luego fue usada por Ron Rivest en el ao 1982, y desde entonces no fue optimizado ni
desarrollado nuevos avances, Philippe logr crear un anlisis criptogrfico ms eficiente basado en las teoras anteriores.
Ahora las tablas rainbow se utilizan para romper gran variedad de hashes y algoritmos criptogrficos. Es importante mencionar que
cada tabla rainbow est creada para slo una funcin hash, es decir, hay tablas rainbow solamente para MD5, LM, NTLM, etc.
-
Estas tablas pueden crackear fcilmente una contrasea de entre 1 y 16 caracteres.
Ya sabemos que la funcin de hash es unilateral, o sea, no existe una funcin inversa, luego de encriptar texto plano, por ejemplo una clave
de acceso, convirtindola en un hash, luego el hash no puede ser desencriptado para saber que esconda, bsicamente porque los
hashes funcionan as, quiz recuerden las propiedades de los hashes en la leccin de la semana de criptografa, si no la recuerden lanla o
esperen a que les llegue ;-).
Si se quiere averiguar que texto se oculta bajo determinado hash,
hay dos mtodos bsicos:
- 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 comparacin sea ms rpida, 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 optimizacin 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 adems de utilizar bastante espacio en
disco, es que las bsquedas son muy rpidas, veamos su
funcionamiento:
En las tablas rainbow se utiliza una funcin de reduccin que ingresa hashes y devuelve texto plano, pero NO es una funcin inversa, la
funcin de reduccin nunca resultar en el texto que produjo el hash.
Por ejemplo si pasamos una clave a travs de la funcin MD5,
tendramos:
MD5("493823") -> "222f00dc4b7f9131c89cff641d1a8c50".
Y para este caso aplicaremos una funcin de reduccin R() que simplemente recoger los primeros seis nmeros del hash:
R("222f00dc4b7f9131c89cff641d1a8c50") -> "222004".
Y obtenemos un texto plano de 6 dgitos del hash reducido, eso es bsicamente lo que hace la funcin de reduccin, 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 comparacin con guardar todas las
posibles claves y sus hashes y el menor tiempo de bsqueda. Adems existe mayor probabilidad de encontrar contraseas 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 estn generadas para un amplio rango de
algoritmos de hash, como MD5, SHA-1, LM, RIPEMD, etc.
El nmero de bsquedas es reducido, comparado con el mtodo de fuerza bruta convencional.
Desventajas
La gran desventaja es el tiempo en el cual se pre-computan las
tablas, o sea, el tiempo de generacin y el esfuerzo que requiere. Adems, si se cambia el juego de caracteres, se debern rehacer las
tablas.
Mientras el largo de la contrasea aumente, aumentar el nmero de
posibilidades, y mientras el espacio de claves (cantidad de caracteres distintos) aumente, con ello ms lento se har factible realizar un
ataque a hashes utilizando tablas rainbow. Esto se debe al aumento de tamao de la tabla.
Adems, s el juego de caracteres aumenta mucho, el tiempo de pre-computacin 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 7614
y para generar una tabla ptima y eficiente se tardara ms de 3 meses o muchos GB en disco para generarla.
Comparacin tcnicas de cracking de contraseas:
# Ataque de diccionario
Fuerza bruta Tablas Rainbow
Espacio de claves 23.109 8.031.810.176 8.031.810.176
Tiempo de pre-computo
1.05 segundos 96,54 horas (estimado)
20,15 horas
Tiempo de bsqueda
< 1 segundo (0,165)
Depende del orden/funcin de
bsqueda
2,6 segundos mximo
Almacenamiento ~947 KB 300 GB! ~611 MB
-
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 estn guardadas a partir de las que estn.
Esto se puede gracias a la funcin de reduccin, en la tabla se guardan cadenas de hash a partir de esta funcin.
La funcin de reduccin ingresa un hash y devuelve texto plano. Se puede elegir cualquier algoritmo criptogrfico (MD5, LM, SHA1, etc),
siempre que cumpla con lo anterior.
Para generar una cadena de hashes, se comienza calculando el hash
de una contrasea elegida al azar. El resultado es pasado a una funcin de reduccin, el texto plano devuelto es hasheado
nuevamente, el cual pasa, otra vez, a la funcin de reduccin. As sucesivamente.
Al final se desecha toda la cadena con excepcin de la primera
contrasea y el ltimo hash calculado, los cuales son almacenados dentro de la tabla. La primera contrasea y el ltimo hash de la
cadena comprenden una entrada en la tabla rainbow.
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 contrasea de cadena ltimo hash calculado
ntvglaband 108a21b81de05cc7448b992678be3e33
S0rdromo 9179538774ac2c0caad3b435b51404ee
merkk99 19fd2590e6f8dd8a25e6c6a091ddab09
: :
192i6877 3f6288969a7cab11c633b63571044597
Pueden crackear esos hashes LM para probar, divirtanse ;) Si an no saben hacerlo, sigan leyendo...
Por tanto, cuanto ms filas se tenga ms combinaciones de contraseas tendremos y ms probabilidad de encontrar una clave a
partir de su hash.
Cuando crackean claves, o sea, cuando buscamos la contrasea que
esconde un hash, se realiza el siguiente proceso: Se busca el hash original en la tabla, si no se encuentra, se aplica la
funcin de reduccin 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
contrasea que produjo el hash. Lo nico que falta hacer es volver a hashear esa cadena y comparar los resultados con el hash original.
Notar que no es posible ir hacia atrs desde el punto dnde encontramos coincidencias.
-
La funcin de reduccin es usada para generar la tabla como para buscar resultados en ella. La estructura de la tabla y su funcin de
reduccin, 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 bsquedas
sin sufrir alteracin alguna.
El resultado final de la generacin, es una tabla que contiene
estadsticamente una alta probabilidad de revelar una contrasea en un corto perodo de tiempo, generalmente menos de un minuto. El
tiempo depende de cmo se haya creado la tabla, pero si es eficiente no se tardar ms de un minuto encontrar el texto plano que gener
el hash.
La probabilidad de xito de la tabla depende en los parmetros 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 contraseas, 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
contraseas, la contrasea 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 contrasea original a partir del hash.
RainbowCrack
No, no es una nueva droga callejera... Este programa sirve para
crackear contraseas, 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 (cdigo 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.
El programa se descarga desde su pgina oficial:
http://www.antsight.com/zsl/rainbowcrack/
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: http://www.freerainbowtables.com/
http://rainbowtables.ddl.cx/
Ya saben dnde 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 aplicacin que se distribuye junto al
paquete de RainbowCrack. En su versin 1.2 (ltima al da de hoy) permite generar tablas para hashes lm, md5 y sha1.
Dmosle manija y echmosle andar...
Si ejecutamos rtgen sin parmetros nos dar la clsica ayuda, como debe ser. Los parmetros que debemos pasarle son estos:
rtgen algoritmo hash \ juego de caracteres \ largo mnimo contrasea \ largo mximo \ 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
Explicacin de los parmetros:
El primer parmetro a pasar obligatoriamente, es el algoritmo hash, los disponibles son lm, md5 y sha1 que son los ms comunes y
utilizados.
El segundo parmetro 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
ejecucin. (Recomendacin ver el archivo charset.txt)
Largo mnimo de contrasea, se refiere a cuantos caracteres tendrn
los texto plano de los hashes. Largo mximo es la cantidad mxima de caracteres que tendr. Claro que cuanto ms largo sea el texto
plano del hash, ms posibilidades habr y ms cadenas que generar.
Index de tabla es el ndice de la tabla, se refiere al nmero que
tendr el nombre del archivo.
-
Largo de cadena indica la cantidad en caracteres que tendrn 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
caractersticas, me refiero a haber creado otros archivos con los mismos parmetros anteriores, entonces para diferencias se coloca
un sufijo.
El parmetro bench (de benchmark) es para simular, probar los tiempos y resultados de crear esa tabla.
Generando tablas en modo grfico
Una opcin ms linda visualmente, que nos da mucho ms
posibilidades que rtgen. Winrtgen una especie de front-end recargado de rtgen, que aade nuevas funciones.
En primer lugar pueden descargar este programa desarrollado para sistemas MS Windows desde la siguiente direccin:
Winrtgen: http://www.oxid.it/downloads/winrtgen.zip
Luego de descomprimir el archivo descargado y ejecutar el archivo
winrtgen.exe observarn una ventana que tiene dos columnas y varias filas, adems 6 botones en su parte inferior. Para configurar
los parmetros de nuestra nueva tabla debemos elegir el primer botn Add Table y les aparecer algo similar a lo correspondiente en la siguiente imagen.
-
Podrn percibir que el Winrtgen tiene los mismos parmetros que el
rtgen, por lo tanto no los explicar de nuevo.
En primer lugar elegimos el algoritmo para usar en la tabla, en la
opcin Hash, podrn notar que disponen de ms algoritmos que con rtgen.
Min Len y Max Len se refieren al largo mnimo y mximo que tendrn las contraseas a crackear. Chain Len es el largo de la cadena,
cuanto ms larga es la cadena ms tiempo de procesamiento y ms probabilidad de xito, pero el tamao de la tabla no se afecta.
Chain Count, indica cuantas cadenas generar, cuanto mayor sea el nmero, ms grande ser la tabla y ms posibilidad de xito, se
puede ver en tiempo real en Table properties (propiedades de tabla) como varan 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 ms de una tabla ? Para tener mayor probabilidad de xito una sola tabla sera muy
grande y tardara ms en el proceso de bsqueda. Por ello creamos
-
varias, ya que creando una sola muy grande deberemos ordenarla, lo que llevara bastante tiempo de proceso y de bsqueda. Reduciendo
el tamao de cada tabla y dividindola en varias, tendremos un uso ms eficiente de la memoria y el ordenamiento de cada una sera
ms 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 botn de Benchmark este realizar un simulacro de la generacin de la tabla con los parmetros y opciones indicados.
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 creacin de cada tabla multiplicado por 3, los tiempos pueden ser horas, das, aos, etc...
Max cryptanalysis time, tiempo mximo de criptoanlisis, es el tiempo que llevara encontrar una coincidencia en las tablas, cuanto
ms filas/ms cadenas (Chain Count) tenga la tabla ms rpido ser el proceso de encontrar una coincidencia, pero la tabla ser ms
grande, nunca olviden la teora de cambio de tiempo por espacio.
Los datos del simulacro se cumplen en la realidad cuando se genera la tabla con un pequeo margen de error.
-
Casos prcticos
Tablas Rainbow Vs. Brute Force
Compararemos dos tcnicas de cracking de hashes; tablas rainbow y
brute force.
En primer lugar demostraremos de forma prctica como crackear contraseas con el juego de caracteres ASDFGHJKL. Generaremos
una tabla rainbow utilizando winrtgen, y crackearemos con rainbowcrack. Posteriormente crackearemos contraseas 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... ;)
Especificamos los parmetros como se muestra en la imagen. La
tabla de 458 MB se generar en 13 minutos aproximadamente, tendr una probabilidad de xito del 100%
Tambin 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 contraseas con rainbowcrack.
Luego de dar ok dos veces se comenzar a generar la tabla, como
mostramos en la imagen a continuacin.
Mientras avance, se mostrar el progreso de generacin. Luego de completado tendremos el archivo.
Se habrn 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 tambin dentro del mismo directorio, luego del primer smbolo de numeral # indica el mnimo y
mximo nmero de caracteres que contiene la contrasea.
El nombre del archivo contiene todos los parmetros 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:970acf0644a6cb7e6da9e10174827590:::
kuntakinte:1006:85367c4a7c154243b94745df070199fd:e83f97aacf40bf7cc3248ad3b6bf3ddf:::
salomon:1004:1c82ca536a599f103e04f4ef84e62dfa:f05eda915b93554aa8a0ebfd2fcaf2e9:::
Los usuarios son, ganja, kuntakinte y salomon.
-
Primero debemos copiar el archivo charset.txt desde el directorio de winrtgen haca 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.
Luego de reordenarla, pasamos al cracking con tablas rainbow, el
momento esperado, dnde la magia se hace realidad, y develamos el secreto del ratn Prez ;P
El ejecutable de rainbowcrack es rcrack lo ejecutamos y observamos
maravillados:
Luego de haber ejecutado el comando : rcrack.exe lm_CursoHacker#1-7_0_24x30000000_oxid#000.rt f
hashes.local
-
El primer parmetro es la tabla rainbow a utilizar, que es justamente la que creamos anteriormente, luego del parmetro f especificamos el archivo de hashes que ya saben cual era el contenido, porque lo dije en la pgina anterior ;P
Como habrn podido observar en la imagen anterior, todas las contraseas fueron descubiertas, el tiempo que llev realizar toda la
operacin fue de 19.75 segundos, de los cuales 19.72 segundos fueron de la lectura y verificacin del archivo de tablas. Y 0.03
segundos fueron del anlisis criptogrfico.
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 todava no lo tienen en su sistema se lo descargan desde:
http://www.openwall.com/john/
Luego de tenerlo y orejearlo un poco, debemos editar el archivo
john.pot y dejarlo solamente con la siguiente lnea:
$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 continuacin 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 lneas:
[Incremental:CH]
File = $JOHN/CursoHacker.chr MinLen = 0
MaxLen = 7 CharCount = 9
Como sabrn, o no? Lo que all se indica es el archivo que contiene el juego de caracteres, el largo mnimo y mximo de las contraseas, 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 continen...
-
Ejecutamos john-386.exe i:CH hashes.local
Yyyy. magia !!
Tan solo 3 segundos !! Tenemos un ganador !!
Como podrn observar muy rpido, las contraseas las separa en 2, porque as trabaja el algoritmo LM. Por tanto nosotros debemos
unirlas.
En este primer reto, concluimos que era ms simple y eficiente
utilizar JTR que generar las tablas rainbow, y crackear con ellas, claro, las tablas se podran haber echo ms grandes y as consumir
menos tiempo, pero de todas formas necesitaramos tiempo de procesamiento en generarlas y/o descargarlas de internet, por tanto
y sin dudas JTR es ms eficiente, hagamos otra prueba para comprobar cuando utilizar una opcin u otra.
Prueba N 2
En esta prueba prctica crackearemos contraseas con el juego de
caracteres alfa (solo letras), generamos la tabla rainbow, como ya sabemos, y seleccionamos el juego de caracteres alpha.
Crackeamos las contraseas de 3 usuarios utilizando rainbowcrack:
-
Como habrn observado, se descubrieron todas las contraseas en un
tiempo total de 50 segundos.
Ahora veamos que tal nos va con el JTR. Ejecutaremos el JTR
tambin utilizando el juego de caracteres alpha, y hemos probado solamente descifrar una de las contraseas, para ello utilizamos el
parmetro u para indicar la contrasea de que usuario queremos crackear:
JTR tard 26 minutos en descifrar una sola de las contraseas, mientras que con rainbowcrack y una tabla rainbow eficiente (99%
probabilidad de xito y 700MB de espacio) tard 50 segundos en las contraseas de 3 usuarios !
Con estas pruebas prcticas concluimos que:
Cuanto ms contraseas a deducir tengamos, es preferible utilizar
tablas rainbow. Cuando se generen las tablas es importante saber que cuanto ms filas/cadenas ms rpida ser la bsqueda pero ms
grande ser la tabla. Y que cuanto ms largas las cadenas y ms cantidad de cadenas por tabla, ms probabilidad de xito. Utilizando
winrtgen pueden ir viendo y probando todo esto, no olviden tener un equilibrio, entre tamao de la tabla y tiempo de generacin de la
misma.
-
Estas grficas aclararn su mente:
Por ltimo decirles que es posible crackear un solo hash, utilizando el
parmetro h de rcrack. Supongamos que tenemos la siguiente lnea de un archivo de hashes generado por pwdump:
salomon:1004:0c2951af971ffcd13bef6036f4d71807:de0e4eea4e5898f4a0d5a0c3638befc5:::
Lo primero que tenemos es el nombre del usuario y su UID (User ID, nmero identificador de usuario), el usuario es salomon y su UID es
1004, luego vienen los hashes de la contrasea, recuerden que en LM se descompone la contrasea 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 contrasea, luego
deberemos crackear la segunda seccin.
OphCrack
Otro programa que pueden utilizar es el OphCrack, sencillo y efectivo. Sus tablas estn ms optimizadas que las de rainbowcrack. Y de
regalo les voy a dar una pequea introduccin prctica para que disfruten, slo por esta vez, que no se les haga costumbre pedir ms
;P
-
OphCrack se distribuye tanto como liveCD, o sea, un CD booteable que en este caso ejecuta un sistema operativo GNU/Linux,
especficamente SLAX, que a su vez es derivado de Slackware. Este liveCD ya contiene tablas rainbow para LM y NTLM.
Tambin se distribuyen programas para ser utilizados tanto en GNU/Linux como en MS Windows, ambos utilizan las libreras GTK+.
Luego de descargarnos el programa ophcrack-win32-installer-2.4.1.exe para Windows desde SourceForge (la red ms grande de
distribucin y alojamiento de software libre) pasamos a la instalacin. El mismo nos da la posibilidad de descargar las tablas rainbow
(Ophcrack no cuenta con generador de tablas).
Las tablas:
La primera opcin es para instalar las tablas para NTLM desde DVD. Nosotros y ustedes por un tema prctico instalaremos la versin
descargable por internet de 776 MB. Esta contiene hashes LM del 99,9% de todas las combinaciones alfanumricas, contraseas con
combinaciones de letras y nmeros (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 283 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 ms de
7 trillones de hashes!
Algunas pruebas prcticas 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 elvelozmurcilagohindcomafelizcardilloykiwi 700 segundos
Contrasea no encontrada: 4+Y>!6i
La ltima contrasea no la encontr, porque esta contiene caracteres
que no estn en el juego de caracteres alfanumricos.
Luego de instalado y ejecutado:
En primer lugar debemos tomar un archivo que tenga las contraseas, si queremos tomar automticamente 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 contraseas. Luego en el botn Tables... podremos elegir que tablas rainbow
utilizar. Para comenzar el crackeo le damos al botn Launch.
Luego de 2 minutos en nuestro caso, encontramos la contrasea del
usuario VirtualOdin que era 0d1n, y luego de 45 minutos termin por recorrer todas las tablas para descifrar las otras contraseas que
tenan passwords fuertes y no pudieron ser descubiertas, veamos la imagen:
-
Como vern muy fcil de utilizar.
Encuentran este hermoso programa en:
http://ophcrack.sourceforge.net/
El ndice de xito de encontrar contraseas con Ophcrack es del
99,9% para hashes LM y NTLM, o sea, para Windows. Tambin 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 fsico, enforzar las contraseas para que sea ms
difcil o imposible descubrirlas por mtodos de fuerza bruta, utilizando caracteres especiales. Utilizar protocolos de autenticacin fuertes,
protocolos de acceso remoto fuertes, comunicaciones seguras (encriptadas con algoritmos fuertes).
Proteger las bases de datos de passwords, investigar las tcnicas de password cracking. Forzar polticas de passwords y realizar
entrenamientos de concientizacin y auditoras de passwords. Tener el sistema actualizado. Como medidas bsicas 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 aaden complejidad y extienden el largo del hash. Actualmente se guardan hashes con salt nativamente en sistemas
tipo Unix, BSD, GNU/Linux. El resultado de aadir semillas es un hash derivado del original.
Por ejemplo con la siguiente funcin tendramos un hash derivado utilizando semillas aleatorias (salt):
hash = MD5 (password . salt)
(El punto es un operador de concatenacin)
Sistemas Windows NT/2000, XP y Vista (por compatibilidad hacia
atrs) utilizan Lan Manager (LM) y NT Lan Manager (NTLM), que no emplean salts, es por eso que la mayora de las tablas rainbow que
pueden encontrar sern 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 contraseas con hash LM son ms 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 atrs con sistemas Windows, es mejor desactivar LM, para conocer el
procedimiento, les recomiendo esta lectura:
http://support.microsoft.com/kb/299656/
Para contraseas que se guardan en Active Directory de Windows, es mejor utilizar el protocolo Kerberos.
Por lo tanto una buena defensa adems de utilizar salts, para evitar este tipo de ataques, es incluir espacios y caracteres raros en las
contraseas y aumentar su longitud, por tanto hacerlas ms 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 especficos, luego de crear las tablas se pueden utilizar
indefinidamente sin modificar su contenido.
Se basan en la teora de cambio de tiempo por espacio. Se utiliza la
funcin de reduccin para crear las tablas y para realiza bsquedas en ellas.
Dependiendo del caso, nos ser ms 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 contraseas a deducir.
Por ltimo, se debe tener en cuenta una poltica de contraseas,
(muchas de estas sern obvias luego de leer todo el material
entregado):
* Cambiar las contraseas cada cierto tiempo.
* Deben de contener, idealmente, una mezcla de letras, nmeros y
otros caracteres.
* Deben de tener cierta cantidad de caracteres, ya que cuanto ms
cortas, ms fciles de descubrir.
* No se debe usar la misma contrasea para sitios distintos.
* No deben de contener informacin personal de ningn tipo.
* No debe de ser alguna palabra conocida o pertenecer a otro idioma (contramedida para ataques de diccionario).
* No deberan ser mutaciones simples de palabras, estas son contraseas dbiles: unouno, tr3s, casa23, elgoog (google al revs).
* Aunque al mismo tiempo ha de ser fcilmente recordable, porque no se debe escribir en ningn lugar.
* No se deben anotar en ningn lugar, nada de pegatinas en el monitor que diga; Usuario de alumnoz.com es c4nibal contrasea comohombrestmbmujeres ;P
Les recomiendo una pgina interesante para crear contraseas
fuertes y recordarlas: http://strongpasswordgenerator.com/
-
Este sitio nos da la posibilidad de crear contraseas fuertes de largo entre 5 y 21 caracteres, utilizar smbolos, y lo ms interesante nos da
una pauta de cmo recordar la contrasea, por ejemplo:
La contrasea dR5h"75 ser recordada como disney RADIO 5 harry "
7 5. Ya me olvid ;P
Claro que utilizando este mtodo pueden generar sus propias
contraseas fuertes y recordarlas, la ma es mb1vaAySt3< (la recuerdo como: Me bao 1 vez al Ao y Se tapa 3l
top related