¿Cómo sabe un atacante cuando tiene la contraseña?

6

Un atacante obtiene una lista de contraseñas con hash. ¿Cómo sabe cuándo ha descifrado la (s) contraseña (s)? No puede probar millones de veces en la cuenta comprendida.

El atacante obtiene una contraseña con hash. ¿Cómo sabe que "pAssword" es la contraseña correcta y no "passwoRd"?

EDITAR:

Estoy perdiendo algo básico. Déjame asegurarme de que lo entiendo:

  1. El DBA toma mi gran contraseña (palabra pa $$) y la pulsa.
  2. El atacante obtiene una lista de contraseñas.
  3. El atacante intenta "contraseña". Se hace hash Él ve que el hash de contraseña no es igual a mi contraseña. 3a. Él intenta hash-de-pa $$ palabra. Se hace hash y ve que los dos son iguales. Por lo tanto, él rompió mi contraseña.
  4. Después de un tiempo (x cantidad de tiempo), ha descifrado (por ejemplo) el 90% de las contraseñas y luego se detiene debido a los rendimientos decrecientes. (A menos que realmente quiera MI contraseña).
pregunta Mayo 18.05.2015 - 16:52
fuente

1 respuesta

10

Sí, tus pasos parecen ser correctos. El atacante tiene muchas palabras o secuencias de caracteres hasta que encuentra una que coincida con el hash objetivo.

Pseudocódigo:

hashlist = [ "a235b8320c...", "688b4302c57f3...", ... ]
wordlist = file.readlines("/path/to/wordlist")
for each word in wordlist:
    h = hash(word)
    # is the hash of this word in the list of target hashes?
    if h in hashlist:
        print "Found: " + h + " = " + word

Como mucho lo solicitó, aquí hay algunos pseudocódigos sobre cómo funcionaría con sales únicas:

hashlist = [ "salt1:a235b8320c...", "salt2:688b4302c57f3...", ... ]
wordlist = file.readlines("/path/to/wordlist")
for each h in hashlist:
    salt = split(h, ':')[0]
    h = split(h, ':')[1]
    for each word in wordlist:
        if hash(salt + word) == h:
            print "Found: " + salt + ":" + hash + " = " + word

Tenga en cuenta que, después de agregar una sal única a cada hash, tenemos que probar cada palabra candidata individual para cada hash objetivo, en lugar de simplemente hash todas las palabras y esperar a que una coincida con un hash. Esto aumenta el costo de la fuerza bruta cuando se tienen varios hashes para crackear, pero lo más importante es que evita los ataques de precomputación como tablas de arco iris .

    
respondido por el Polynomial 18.05.2015 - 17:50
fuente

Lea otras preguntas en las etiquetas