Tablas Rainbow

download Tablas Rainbow

of 23

Transcript of Tablas Rainbow

  • \\\\\\\\\\\\ CURSO orientacin HACKER ////////////// //////////// By DarKh|s.exe (n+1) \\\\\\\\\\\\\\

    http://www.cursohacker.com [email protected]

    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