Craccare un hash MD5 da un input numerico

3

Sto cercando di decifrare uno degli hash MD5 multipli creati da input numerici.

Ho un campione di 1000 hash MD5 generati da input numerici. So che l'input è compreso tra 10^6 e 10^27 .

C'è qualche possibilità di crackare in modo affidabile 1 hash dal mio campione (o di ricominciare da una gamma più limitata di possibili input)?

Ho provato a calcolare quanto a lungo avrei bisogno di crackare un hash dal mio campione manualmente quando sono in grado di calcolare 10^9 hash al secondo dall'input numerico (con oclHashcat) ma non ho alcuna possibilità di ottenere il risultato mentre sei ancora vivo.

Quindi ci sono tabelle arcobaleno davvero grandi là fuori, eventuali metodi matematici o punti deboli dell'MD5 che non so su quale potrebbe aiutarmi?

Suppongo che non ci sia modo di calcolare anche una distanza "approssimativa" tra due input MD5 dagli hash, così che dati i miei campioni non posso dedurre un intervallo numerico ridotto di possibili input, il che aiuterebbe anche (- ma che ovviamente non è lontano dal cracking.

Quindi, poiché MD5 si dice che sia così debole, c'è qualche possibilità di crearlo in pratica con grandi input numerici?

    
posta Michael Helwig 06.04.2017 - 11:20
fonte

2 risposte

1

Ovviamente è troppo tardi per aiutarti qui, ma perché non rispondere comunque. La risposta breve è che la tua comprensione è corretta: non c'è molto che tu possa fare guardando gli hash stessi per determinare l'intervallo di valori possibili. La tua unica opzione è la variazione della forza bruta, ma se i numeri sono distribuiti su tutto lo spazio di ricerca, allora non c'è nulla che chiunque può fare anche con tutta la potenza di calcolo del mondo. Ancora, ecco i tipi di cose che vorrei provare:

1. Ricerca hash pre-computata

Per un hash MD5 semplice (non salato) questo è il punto di partenza più semplice. Una rapida ricerca su google ti troverà qualsiasi numero di servizi che "crack" gli hash MD5 perché contengono già un enorme database di valori MD5 per un'ampia varietà di input. Sfortunatamente per te questi sono in genere volti a crackare le password, quindi nessuno di quelli che ho trovato online contiene input solo numerici, specialmente nell'intervallo che stai guardando (la maggior parte contiene parole reali, variazioni di parole, combinazioni di parole o tutte le combinazioni di stringhe alfanumeriche fino a determinate lunghezze). Quindi sfortunatamente questo non funziona per te.

2. Stima dell'intervallo di valori

Il tuo primo obiettivo dovrebbe quindi essere quello di capire quale sia la gamma di valori potenziale. Dovresti essere in grado di capire almeno se puoi craccarlo in un ragionevole lasso di tempo. Lo fai, molto semplicemente, partendo dal fondo dell'intervallo ( 1000000 ) e procedendo verso l'alto, un numero alla volta, per una quantità ragionevole di tempo (forse un'ora?). Hai quotato un tasso di hash di 1e9 / s (o 1GHs / s). Dopo un'ora significa che avrai provato i numeri 3.6e12. Hai trovato una corrispondenza?

2a. hai trovato una corrispondenza in un'ora!

Se sì hai trovato una corrispondenza, allora il problema è stato risolto! Puoi anche iniziare a stimare l'intervallo di valori che i numeri occupano e quanto tempo impiegare per trovarli tutti. In una certa misura, questa è una variazione del problema dei carri armati tedeschi . Non farò finta di sapere come fare i calcoli con precisione in cima alla mia testa, quindi potresti chiedere aiuto per stimare la gamma totale di numeri dai tuoi dati (e quindi per quanto tempo potresti aspettarti di prendere per trovarli tutti), o provare qualcosa di ingenuo come:

hours_to_crack_everything = 1000/number_found_in_first_hour

Ovviamente la tua stima diventerà più accurata man mano che ne trovi di più. È importante sottolineare che c'è sempre la possibilità che tu abbia appena avuto la fortuna. Potrebbe essere che i numeri coprano l'intera gamma di valori consentiti ( 1e6 - 1e27 e ci sia appena stato uno nei primi trilioni di valori. Le probabilità che ciò accada sono minuscole ( 3.6e-15 ), quindi se fai trovi un valore garantisce virtualmente che i numeri coprono una gamma molto più piccola, ma chissà che tu abbia appena vinto la lotteria (anche se per essere onesti le tue probabilità di vincere alla lotteria sono molto, molto meglio ).

2b. Un'ora, nessuna corrispondenza

Se non hai trovato una corrispondenza in un'ora, probabilmente sei fregato. Hai detto in un commento che hai 11,5 giorni disponibili ( 10e6 secondi). Dopo un'ora hai già esaurito ~ 1/300 del tuo tempo disponibile. Di conseguenza, dato che hai coperto solo una minuscola frazione del tuo spazio di ricerca in una frazione molto più ampia del tuo tempo disponibile, allora molto probabilmente non sarà possibile trovare un singolo hash nel periodo di tempo assegnato. Probabilmente avrei lasciato che il mio hash box fosse eseguito (perché questa è l'unica opzione disponibile per te che mi viene in mente), ma molto probabilmente fallirai.

3. Hashing più veloce?

Merita una menzione: in questi giorni puoi ottenere trucioli (per poche migliaia di dollari) con tassi di hash molto più alti. Tuttavia, si applica la stessa matematica di base. Anche con una percentuale di hash un fattore di 1000 in più, con uno spazio di ricerca così ampio ci sono solo due opzioni: o i numeri non riempiono l'intero spazio di ricerca, nel qual caso c'è speranza, oppure riempiono l'intero spazio di ricerca spazio di ricerca, che è troppo grande per essere in grado di potenziare la forza con la tecnologia di oggi.

Ironia della sorte, le probabilità di successo sarebbero state più alte se fossero state le password anziché i numeri.

    
risposta data 31.08.2018 - 20:33
fonte
1

Sebbene sia considerato insicuro, MD5 è ancora considerato come resistente alle preimage, quindi la tua opzione migliore è ancora la forza bruta.

Conoscere alcune informazioni sull'input ti aiuterà nel processo brute-force, ma non c'è alcuna debolezza nota che potrebbe aiutarti.

    
risposta data 04.03.2018 - 15:21
fonte

Leggi altre domande sui tag