Conseguir Hash de una clave de un software

Iniciado por rakax, 8 Enero 2019, 20:39 PM

0 Miembros y 1 Visitante están viendo este tema.

rakax

Buenas,
Perdon por el titulo tan confuso pero no sabia como explicarlo, pero aqui vamos:

Estoy analizando el funcionamiento de un software (encryptpad), es algo asi como un block de notas el cual te permite cifrar los documentos poniendoles una clave, soporta varios alforitmos de cifrado pero por defecto utiliza AES-253 hash Sha256 y un salt, segun especifica el mismo documento cuando lo vemos en las propiedades


Entonces conociendo esta informacion me gustaria saber como seria posible conseguir el hash de la contraseña con el cual el archivo fue cifrado para poder hacerle algun tipo de ataque con hashcat.
Existen programas para sacar la hash de .rar o .zip pero no se como manipular esete tipo de archivo. Gracias
Cuanto mas aprendo mas cuenta me doy de lo ignorante que soy.

www.raka.uni.cc

kub0x

Hola,

he de comunicarte de que el hash que tu mencionas no se utiliza para almacenar una huella de la contraseña, sino que se utiliza para la derivación de la contraseña simétrica para su uso posterior en AES-256. Me explico: una contraseña de usuario (passphrase) no basta para cifrar, ha de aplicarse una KDF y para eso necesitamos concatenar passphrase + salt y hashear el resultado para pasarlo a otra ronda, asi n veces (iteraciones). Así se consigue una contraseña pseudo aleatoria y cada vez que cifras/descifras te pregunta el passphrase para generar dicha contraseña de nuevo.

¿Ahora, que pasaría si yo cambio varios bytes en tu archivo cifrado? ¿Detectará la falla de integridad o simplemente descifrará contaminando tu texto plano original? Bueno ellos dicen que usan SHA-256 para la integridad pero no se si guardan esa info en otro fichero que tu mantienes seguro en un USB por ejemplo, asi sí detectarías la falla.

Resumiendo, WinRar utiliza otra KDF basada en la descripción que he mencionado, no se guarda nada de la contraseña, sólo los parametros que identifican al algoritmo de cifrado simétrico, salt, función hash para la KDF y número de iteracciones. La passhprase la introduces tu. Sólo es posible mediante crackeo.

Aunque todavía se siguen viendo aplicaciones supuestamente crypto-friendly que utilizan mal la criptografía, conviertiendo a sus usuarios en perfiles vulnerables.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


rakax

Wao, muchas gracias por tu respuesta, muy completa y clara.
Por otro lado me surge una duda, como es posible entonces que a la hora de crackear un archivo .zip saques un "hash" con john2zip y este depues lo puedas pasar por hashcat para atacarlo? La metodologia utilizada entonces no es igual que para atacar (programa que mencione). Estoy un poco confundido, entendia que a hashcat le estaba pasando una hash y que especificando el tipo de crifrado,protocolo o servicio el crackeaba esa hash.

Gracias por adelantado
Cuanto mas aprendo mas cuenta me doy de lo ignorante que soy.

www.raka.uni.cc

kub0x

Hola,

los hashes se utilizan meramente para la integridad, normalmente en funciones MAC. Por ejemplo cuando quieres almacenar una clave privada RSA, no lo vas a hacer en plano, sino que la cifrarás con un algoritmo simétrico. Ahora, cada vez que descifres dicha clave RSA, tienes que comprobar que el MAC del descifrado sea equivalente al MAC inicial. Esto se hace utilizando la misma passhprase para derivar una clave simétrica para la MAC. Así tendrías que generar 2 salts, el nº de its puede ser el mismo.

Si un atacante roba dicha clave RSA privada cifrada por AES-256-CBC (por ejemplo) y quiere obtener la RSA privada original, ha de probar combinaciones de claves simétricas y verificar que la MAC original equivale a la MAC computada con la clave actual. No se incluye un hash sino un MAC o una firma digital. Un claro ejemplo es el estándar PKCS12:

CitarAs described in Appendix B, the MAC key is
       derived from the password, the macSalt, and the iterationCount;
       as described in Section 5, the MAC is computed from the authSafe
       value and the MAC key via HMAC [11] [20].  The password and the
       MAC key are not actually present anywhere in the PFX.
  The salt
       and (to a certain extent) the iteration count thwarts dictionary
       attacks against the integrity password.

Ahora en los .zip, pasa lo mismo, las funciones hash se utilizan para KDF y MAC. Citando de Winzip:

CitarThe current consensus in the cryptographic community is that associating a message authentication code (or MAC) with encrypted data has strong security value because it makes a number of attacks more difficult to engineer. For AES CTR mode encryption in particular, a MAC is especially important because a number of trivial attacks are possible in its absence. The MAC used with WinZip's AES encryption is based on HMAC-SHA1-80, a mature and widely respected authentication algorithm.

Y un poco más arriba de ese texto dicen que la KDF también se basa en HMAC (sección C. Key generation).

Un ejemplo más para terminar, el handshake WPA-PSK, es un MAC también, no lo tomes como un hash sobre la contraseña así a pelo,

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


rakax

Cuanto mas aprendo mas cuenta me doy de lo ignorante que soy.

www.raka.uni.cc

kub0x

De nada, para eso estamos. Aprovecho para decirte que sigues pudiendo crackear los ficheros de la aplicación que comentas. Veo que es software libre, tendrías que ver donde guarda la información de la integridad, para poder probar clave a clave si es la correcta. O bien, ver que está bien implementada la crypto.

Suerte y saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate