volumen truecrypt - Recuperar 18char contraseña conocida con hashcat (variaciones de caracteres)

2

Tengo un archivo antiguo de truecrypt que me gustaría descifrar. Sé que la contraseña de 18 caracteres que estaba usando en ese momento, estoy seguro de ello. Sin embargo, hice una "variación" de eso: asigné algunos caracteres a l33t equivalente (lo sé, lo sé ... ¡era joven!).

Quería usar hashcat para descifrarlo, pero estoy confundido sobre cómo comenzar desde la contraseña y generar variaciones.

En particular, ¿cómo intento las variaciones de l33t para un solo carácter en la contraseña? Por ejemplo, U es | _ | por lo que 1 char se asigna a 3 char.

He estado leyendo sobre máscaras y demás, pero es un poco confuso para mí. ¿Dónde debería empezar?

¡Gracias!

    
pregunta Pak 11.01.2018 - 11:32
fuente

1 respuesta

2

Actualmente no hay una forma nativa de hashcat de procesar una lista de reglas que realicen sustituciones de caracteres de uno a uno y de uno a múltiples para atacar TrueCrypt a velocidades eficientes. Debido a que TrueCrypt es un hash bastante lento, es mejor que realices las sustituciones utilizando un programa externo y luego transfieras los resultados a hashcat. (En otras palabras, la sobrecarga de generar contraseñas candidatas por sí mismo no obstaculizará el proceso de descifrado).

Sus otras opciones que usan hashcat directamente son las siguientes. Todos ellos tienen compensaciones.

Para reemplazar caracteres individuales con otros caracteres individuales , puede usar el sistema de reglas incorporado de hashcat, ya sea creando sus propias reglas o usando uno de los "leetspeak" "rulesets en el directorio" rules / "que se distribuye con hashcat. Para elaborar algunas reglas personalizadas, puedes estudiar el sistema de reglas y esos conjuntos de reglas para obtener la idea.

El ataque se vería algo así como:

hashcat -a 0 -m [62xx] -r rules/leetspeak.rule target.hashfile

Reemplazando un solo carácter por varios caracteres - tu 'U' - > '| _ |' Caso - es un poco más complicado.

Para propósitos generales, hay opciones:

  1. La asignación de caracteres individuales a múltiples caracteres se admite en lo que ahora se llama hashcat-legacy (solo CPU) , utilizando lo que se llama un ataque de mesa . Sin embargo, hashcat-legacy no admite los hashes de Truecrypt, por lo que no funcionará para ti.

  2. Un ataque similar es posible en el hashcat moderno usando los parámetros -j y -k y lo que se llama parámetros posicionales en el sistema de reglas. Básicamente, le está diciendo a hashcat que "recuerde" la posición en la que encontró un personaje, eliminando el personaje en esa posición y luego insertando los caracteres que desea.

El segundo enfoque es un caso especial de sustitución selectiva de caracteres, tal como figura en el hashcat wiki . Aquí está la parte relevante de esa documentación, con el enfoque de múltiples caracteres mencionado en último lugar:

Si solo quieres operar en la primera instancia de un personaje, puedes usar% 1s, o simplemente usar '/':

$ echo -n 'Odessa77' | hashcat --stdout -j '%1s Dp ip$'
Ode$sa77
$ echo -n 'Odessa77' | hashcat --stdout -j '/s Dp ip$'
Ode$sa77

Si solo desea operar en la segunda instancia:

$ echo -n 'Odessa77' | hashcat --stdout -j '%2s Dp ip$'
Odes$a77

... etc. A diferencia de la regla 's', que reemplaza todas las instancias de un personaje, esto permite seleccionar qué instancia de un personaje reemplazar.

También puede usar esta funcionalidad para reemplazar un carácter por varios caracteres:

$ echo -n 'p@ssW0rd' | hashcat --stdout -j '%1W DpM ip/ ip\ ip/ ip\'
p@ss\/\/0rd

Observe que la inserción es un carácter a la vez en relación con la posición recordada, por lo que los caracteres que se insertan se enumeran en orden inverso en el comando.

Aquí hay un ejemplo más cercano a su caso de uso:

$ echo TrueCrypt | hashcat --stdout -j '%1u ip| ip_ ip|'
Tr|_|ueCrypt

El principal inconveniente de este enfoque es que los parámetros posicionales solo funcionan con -j y -k , por lo que solo se pueden usar uno a la vez (para una sola sustitución, no como parte de una gran lista de sustituciones a medida que es probable que quieran).

Así que esa es la larga historia de por qué lanzar tu propio método de sustitución de personaje (con, por ejemplo, Python, perl o incluso sed) sería la solución más flexible (y porque TrueCrypt es un hash tan "lento", genera las cadenas a velocidades súper altas no son necesarias).

    
respondido por el Royce Williams 11.01.2018 - 16:11
fuente

Lea otras preguntas en las etiquetas