¿Cómo encontrar el método de creación de hash a través de la contraseña, la sal y el hash resultante?

3

Si conozco la contraseña, la sal (supuesta sal en realidad) y el hash de salida (formato sha1). ¿Cómo puedo encontrar el método de creación de hash?

Probé cosas básicas como

    sha1(salt+password)
    sha1(password+ salt)
    sha1(salt +sha1(password))
    sha1(sha1(password)+ salt)

... y mucho más, pero todos fallaron.

¿Cuál es la herramienta correcta para buscar el método de creación de hash? ¿Es la única mejor opción para descompilar el software?

    
pregunta Noonan 23.08.2017 - 21:20
fuente

1 respuesta

1

Probablemente, lo más fácil es descompilar el software.

Las contraseñas suelen estar saturadas con muchas iteraciones (como 100,000) de la función hash para ralentizar los ataques de fuerza bruta que intentan adivinar la contraseña. Normalmente, el código de hashing del lado del servidor se ve así:

hashval = password

count = 0
while(count++ < NUM_HASH_ITERATIONS):
  hashval = sha1(hashval + salt)

return hashval

Dependiendo del software que esté intentando romper, es posible que pueda encontrar la constante NUM_HASH_ITERATIONS en un archivo de configuración, de lo contrario, tendría que descompilar el binario o forzarlo. No sé si existe un software estándar para forzar la fuerza bruta el número de iteraciones, pero los valores típicos, pero no sería demasiado difícil ni consumiría mucha CPU, ya que simplemente lo intentas con hash, y si no es así. T Match, hash otra vez hasta cierto límite como 1 millón

hashval = "password"

count = 0
while(count++ < 1000000):
  hashval = sha1(hashval + salt)

  if (hashval == "3a58f2b..."):
    // We win!

que debería ejecutarse en unos pocos minutos, y pruébelo varias veces con diferentes permutaciones de cómo se combinan el hash y la sal. Tenga en cuenta que hay muchas cosas cuya salida se ve igual a SHA1, así que, a menos que sepa a ciencia cierta que es SHA1, es posible que deba probar esas variantes con MD5, SHA2-256, SHA2-384, SHA2-512, PBKDF2, BCRYPT, SCRYPT, ...

    
respondido por el Mike Ounsworth 23.08.2017 - 23:24
fuente

Lea otras preguntas en las etiquetas