Come trovare il metodo di creazione dell'hash conoscendo la password, il sale e l'hash risultante?

3

Se conosco la password, il salt (presunto salt in realtà) e l'output hash (formato sha1). Come posso trovare il metodo di creazione dell'hash?

Ho provato cose semplici come

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

... e molto altro ancora, ma tutti fallirono.

Qual è lo strumento corretto per cercare il metodo di creazione dell'hash? È l'unica opzione migliore per decompilare il software?

    
posta Noonan 23.08.2017 - 21:20
fonte

1 risposta

1

La decompilazione del software è probabilmente la più semplice.

Le password sono tipicamente sottoposte a hash con molte iterazioni (come 100.000) della funzione di hash per rallentare gli attacchi di forza bruta che cercano di indovinare la password. In genere il codice di hashing sul lato server è simile al seguente:

hashval = password

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

return hashval

A seconda del software che stai cercando di rompere, potresti essere in grado di trovare la costante NUM_HASH_ITERATIONS in un file di configurazione da qualche parte, altrimenti avresti bisogno di decompilare il file binario per esso o forzarlo brute-force. Non so se esiste un software standard per forzare il numero di iterazioni, ma i valori tipici, ma non sarebbe troppo difficile o intensivo per la CPU poiché si prova a eseguire l'hashing e se non lo fa t match, hash di nuovo fino ad un limite come 1 milione

hashval = "password"

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

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

che dovrebbe essere eseguito in pochi minuti e provarlo un paio di volte con diverse permutazioni su come l'hash e il sale sono combinati. Si noti che ci sono molte cose il cui output è uguale a SHA1, quindi a meno che non si sappia che è SHA1, potrebbe essere necessario provare queste varianti con MD5, SHA2-256, SHA2-384, SHA2-512, PBKDF2, BCRYPT, SCRYPT, ...

    
risposta data 23.08.2017 - 23:24
fonte

Leggi altre domande sui tag