it-swarm-eu.dev

Come possono i cracker ricostruire così velocemente hash password salati da 200k?

Sto cercando un piccolo discorso sulla sicurezza dei siti Web e ho trovato un articolo sull'hack del formpring, che mi ha incuriosito. affermano di aver usato SHA-256 + sale

Siamo stati in grado di risolvere immediatamente il buco e aggiornato i nostri meccanismi di hashing da sha-256 con sali casuali a criptati per rafforzare la sicurezza (10 luglio 2012)

... tuttavia gli aggressori rivendicato hanno trovato ~ 200k password all'interno dei set di dati pubblicati da 400k (hanno 11 milioni di utenti, è probabile che IMHO ne abbia copiato la maggior parte).

Circa la metà dei 400.000 hash sono già stati ricostruiti da cracker di password. (11 luglio 2012)

Questo mi sembra sospetto. So che senza usare PKCS # 5 o tecniche simili, la sicurezza di SHA-256 è limitata, ma quanta potenza di calcolo avrebbero bisogno per trovare così tante password così in fretta?

La mia ipotesi è che il formpring stesse mentendo sull'hashish. Qualcuno ha qualche idea al riguardo?

33

Nessuna delle risposte esistenti copre la parte critica di questa domanda con mia soddisfazione: che dire dei sali?

Se sono stati pubblicati solo i valori di hash della password, altri cracker non possono sapere:

  1. Il valore salato effettivo per password (apparentemente casuale, per l'origine).

  2. Come si mescola il sale con la password nel codice.

Tutto ciò che hanno è l'ultimo hash risultante!

Ci sono molti modi la password e il sale possono essere combinati per formare l'hash:

sha256(pass + salt)
sha256(salt + pass)
sha256(sha256(pass) + sha256(salt))
sha256(pass + sha256(salt))
sha256(sha256(...(salt + pass + salt)...))

Ma se il sale è consigliato 8 caratteri di pura casualità ...

sha256("monkey1" + "w&[email protected]")
sha256("w&[email protected]" + "monkey1")

... questo significa che una "tipica" password di 7 o 8 caratteri diventa estremamente difficile da forzare, perché è effettivamente di 15 o più caratteri! Inoltre, per rompere gli hash delle password che conosci sei salato, a meno che tu non abbia anche il sale, non hai altra scelta tranne forza bruta !

Sulla base di ricerca che ho fatto usando il cracking della GP , ho raggiunto 8213,6 M c/s usando due schede ATI di fascia alta con cracking forzato degli hash della password MD5. Nel mio benchmarking ciò significava che potevo provare:

all 6 character password MD5s   47 seconds
all 7 character password MD5s   1 hour, 14 minutes
all 8 character password MD5s   ~465 days
all 9 character password MD5s   fuggedaboudit

Si noti che SHA-256 è il 13% della velocità di MD5 su GPU usando Hashcat . Quindi moltiplica questi numeri per circa 8 per vedere quanto tempo ci vorrebbe.

Se i sali erano non conosciuti, ciò significa che sei essenzialmente bruto forzando l'equivalente di oltre 12 password di caratteri. Questo è molto al di là del regno di qualsiasi potere computazionale noto.

Ora se vuoi sostenere che ...

  1. Anche i cracker originali hanno ottenuto i sali, ma hanno scelto di non pubblicarli.

  2. I cracker original hanno anche il codice sorgente (o è open source), quindi sanno come vengono salate le password, ma hanno scelto di non pubblicare tali informazioni.

  3. Formspring sta mentendo e le loro password non sono state salate o salate in modo improprio in modo tale che i sali non abbiano avuto effetto.

... quindi sì, è possibile rompere 200k di hash di password 400k in pochi giorni.

34
Jeff Atwood

Modifica: Tutto quanto sotto presuppone che i sali siano noti, perché che è l'uso standard del settore del sale di Word (3a riga) .

Proprio come un esempio di come questo spesso appare nel database, dai un'occhiata a questo SHA-256 Unix Crypt output:

$5$rounds=80000$wnsT7Yr92oJoP28r$cKhJImk5mfuSKV9b3mumNzlbstFUplKtQXXMo4G6Ep5

.. dove wnsT7Yr92oJoP28r è il sale in chiaro. La Python Passlib ha buone descrizioni di molti formati comuni di password con hash , e la maggior parte di questi memorizza sali di testo in chiaro concatenati insieme alla rappresentazione della password con hash.

Il ' sconosciuto all'aggressore salt' di cui parla @Jeff Atwood viene spesso chiamato "pepe". Vedi Hashing password aggiungi sale + pepe o sale è sufficiente?


Nel 2009 Daniel J. Bernstein ha scritto un'implementazione SHA-1 altamente ottimizzata per il framework CUDA di NVIDIA. Allora gestivano 690 milioni di hash SHA-1 al secondo su un singolo server usando quattro schede grafiche.

Gli attacchi di forza bruta contro le password con hash sono un carico di lavoro "imbarazzantemente parallelo" . Nel 2010 Thomas Roth ha dimostrato forza bruta che attacca ~ 10 hash per ~ 2 $ usando Amazon EC2. Questo potrebbe essere facilmente ingrandito, se il tasso non è abbastanza alto, quindi aggiungi solo più istanze EC2.

Quindi essenzialmente non si tratta di quanto tempo ci vorrà per rinforzare le password. È più una questione di quanta potenza computazionale l'attaccante è disposto o in grado di pagare per ottenere risultati più velocemente.

gli aggressori hanno affermato di aver trovato circa 200.000 password

Una spiegazione ragionevole è che gli attaccanti non hanno preso di mira rappresentazioni con hash specifico, hanno semplicemente scelto il "frutto basso". In altre parole, cercavano solo password "facili da indovinare". Forse qualcosa del tipo:

  • Un elenco di candidati le password più comuni in testo semplice, creato da elenchi pubblicizzati di password utente effettive. (Nel corso degli anni ci sono stati diversi perdite di password utente reali .)
  • E forse hanno anche provato tutte le password minuscole pronunciabili fino a un limite superiore basso, ad esempio fino a 6 caratteri. (Nel set di dati MySpace del 2006 sopra riportato è emerso che il 17% di tutte le password degli utenti finali era composto da 6 o meno caratteri.)

La mia ipotesi è che Formpring mentiva sull'hashish.

Se capisco correttamente i tuoi collegamenti, gli hash sono stati scoperti su un forum il 7 luglio. Ma avrebbero potuto essere rubati da Formspring settimane o mesi prima?

Dato quello che descrivo sopra, non mi sembra irragionevole che sia stato usato un singolo round di SHA256 con un unico salt per password, come ha detto Formspring.

Dipende tutto da quanto tempo e sforzo gli aggressori mettono nel cracking della forza bruta. Ma all'interno delle risorse che potrebbero avere un piccolo gruppo di singoli hacker, sembra plausibile scoprire 200.000 password deboli da un set di dati di 11 milioni di semplici rappresentazioni con hash SHA-256.

16
Jesper M

Craccare gli hash non salati è abbastanza banale: basta cercare l'hash in una tabella pre-calcolata e trovare la risposta. Non ha senso forzare brutalmente il resto perché i tavoli Rainbow coprono già il tuo dizionario della forza bruta.

Ma decifrare le password salate è ancora semplice; più lento ma ancora semplice. Nella maggior parte degli attacchi di forza bruta, l'attaccante cerca ampiezza non profondità. Invece di provare 1 miliardo di password su 1 account, prova decine o centinaia o migliaia di password comuni su TUTTI gli account. Certamente i tavoli Rainbow sono più veloci, ma il sale da solo non impedisce la classica metodologia della forza bruta. Inizia dalla parte superiore del tuo dizionario e prova quella password su tutti gli account: questo ovviamente comporta la ricompilazione dell'hash per ciascun account, ma d'altra parte, le tue probabilità di successo sono piuttosto alte (questo è esattamente ciò che significa "password comune" , Comunque). Quindi, prendi la tua prossima password più comune, quindi la successiva, ecc.

Alla fine, potresti ottenere solo diverse migliaia di password, ma statisticamente parlando, ci sono probabilmente centinaia di account con la password "123456" nel tuo elenco e un numero abbastanza grande che usa "password1" e "111111" e "test" .

200K su 11M sono credibili; solo circa il 2%. 200K su 400K in meno. Non impossibile ma non altrettanto probabile. La legge dei rendimenti decrescenti entra da qualche parte; Non sono sicuro di quanto lontano ma probabilmente è un rapporto davvero semplice come 1/e o qualcosa del genere. Oltre a ciò divento scettico.

8
tylerl

È logico che non stiano mentendo.

  1. Come @ Jeff notato che l'accesso al sale è essenziale per il cracking veloce, ma come ha notato @Remus Rusanu: "se hanno ottenuto gli hash, è difficile per me vedere come potrebbero non ottenere il sale come bene "poiché devono essere memorizzati in modo tale da poter essere associati tra loro. Suppongo che: almeno gli hacker iniziali avevano accesso al sale.1

  2. @Jeff afferma inoltre che devono avere accesso al codice sorgente per sapere come combinare salt e password. Propongo un approccio diverso per scoprire come combinare salt e password:

    1. supponiamo che abbiano un account di formpring prima dell'attacco (un presupposto abbastanza ragionevole)
    2. cerca quell'account specifico (salt, hash) nell'elenco ottenuto
    3. conoscendo la password, il salt e l'hash risultante, dovrebbe essere facile costruire un piccolo script per testare tutti i modi ragionevoli (e alcuni irragionevoli) di combinare password e salt (non più di qualche migliaio di modi?)
    4. ???
    5. profitto!
  3. sostengono di avere "decine di milioni di membri", il che rende la teoria di @Jesper frutta bassa molto ragionevole.

Ok, possono ancora mentire, ma almeno sembra ragionevole che non lo siano.

1. Se questa ipotesi è errata - gli hacker iniziali non hanno pubblicato il sale E non hanno provato a decifrare le password stesse - il resto potrebbe no Essere possibile.

7
João Portela

hashcat può fare poco più di 1 miliardo di hash SHA256 al secondo su Radeon HD7970, che è solo la metà della velocità di SHA1 e un quarto della velocità di MD5. Tuttavia, questo non è nemmeno collo di bottiglia :

Un'altra cosa prima di andare avanti; hai notato che la velocità del cracking era "solo" 258,7 milioni al secondo? Che cosa è successo al throughput teorico di un paio di miliardi di hash SHA1 al secondo? Il problema è che il throughput più elevato può essere raggiunto solo con "mutazioni" dei valori del dizionario delle password o lavorando attraverso diverse possibilità di password direttamente all'interno della GPU. In altre parole, se lasci che la GPU prenda un valore di dizionario, lo trasformi in un numero di diverse possibilità che può funzionare molto più velocemente. La GPU non può ricevere password abbastanza velocemente da raggiungere lo stesso livello di throughput, quindi avere un elenco di password efficace è un collo di bottiglia.

Quindi l'uso di SHA256 (o anche SHA512) non è più sicuro dell'uso di SHA1 o MD5 contro questo tipo di attacchi.

4
mgorven

Nessuno dei due post menziona se gli autori abbiano o meno accesso al codice sorgente di Formspring. Se così fosse, il metodo di costruzione dell'hash e la generazione casuale dei sali sarebbero disponibili per gli aggressori. Ciò renderebbe il compito del cracking molto più semplice, in particolare se il metodo di generazione dei sali "casuali" li limitasse a valori impostati relativamente piccoli.

Data la velocità apparente con cui questo set limitato è stato rotto, la mia ipotesi migliore sarebbe che questo è il caso.

3
mitchellrj

Se usassero hash con un unico salt per password, normalmente ci vorrebbe molto tempo prima che si possano decifrare queste password. A meno che le password non fossero estremamente deboli o le password fossero parole nel dizionario. Il brutoforcing puro sembra un po 'improbabile se fossero forti.

L'hardware di Tom ha un articolo su password GPGP cracking. Le password deboli ( non più di 10 caratteri inclusi lettere maiuscole, minuscole, segni, ...) possono essere violate in pochi minuti, anche con un sale se il sale è noto.

Altrimenti, ci vorranno molti giorni, mesi, password più lunghe anche migliaia di anni. Ma questo è senza sale. Con un sale ci vorrà per sempre.

1
Lucas Kauffman