Home
» Wiki
»
Come provare a decifrare una password da soli per testarne la sicurezza
Come provare a decifrare una password da soli per testarne la sicurezza
L'articolo ha testato 3 password diverse con uno strumento open source per decifrare le password, per scoprire quale metodo funziona davvero in termini di sicurezza delle password.
Quando crei un account presso un servizio online, il provider solitamente crittografa le tue informazioni di accesso sui propri server. Questo viene fatto utilizzando un algoritmo per creare un "hash", una stringa casuale apparentemente unica di lettere e numeri per la tua password. Naturalmente, non si tratta di un evento del tutto casuale, bensì di una stringa di caratteri molto specifica che solo la tua password può generare, ma a un occhio inesperto sembra un pasticcio.
Trasformare una parola in un hash è molto più rapido e semplice che "decodificare" nuovamente l'hash in una parola. Quindi, quando imposti una password, il servizio a cui stai effettuando l'accesso esegue la scansione della tua password tramite un hash e memorizza il risultato sui propri server.
Se questo file di password dovesse trapelare, gli hacker cercheranno di scoprirne il contenuto decifrando la password. Poiché crittografare le password è più veloce che decrittografarle, gli hacker installeranno un sistema che accetta le potenziali password come input, le crittografa utilizzando lo stesso metodo del server e quindi confronta i risultati con un database di password.
Se l'hash di una potenziale password corrisponde a una qualsiasi voce nel database, l'hacker sa che ogni tentativo corrisponde alla potenziale password provata.
Per questi test, l'esempio craccherà le seguenti password:
123456 : una password classica e un incubo per la sicurezza informatica, 123456 è la password più comunemente utilizzata al mondo . NordPass ha calcolato che 3 milioni di account utilizzavano 123456 come password, di cui 1,2 milioni proteggevano account aziendali.
Susan48! : Una password che segue schemi che la maggior parte degli utenti utilizzerebbe per creare password sicure. In genere soddisfa i criteri di una protezione di base tramite password, ma, come vedremo più avanti, presenta alcune importanti debolezze che possono essere sfruttate.
t9^kJ$2q9a : una password generata utilizzando lo strumento Bitwarden. È impostato per generare una password lunga 10 caratteri con lettere maiuscole e minuscole, simboli e numeri.
Ora, crittografa la password utilizzando MD5. Ecco come apparirebbero le password se fossero salvate in un file di password:
123456 : e10adc3949ba59abbe56e057f20f883e
Susan48! : df1ce7227606805745ee6cbc644ecbe4
t9^kJ$2q9a : 450e4e0ad3ed8766cb2ba83081c0a625
Adesso è il momento di scoprirli.
Eseguire un semplice jailbreak utilizzando il metodo di attacco del dizionario
Per iniziare, eseguiamo un attacco tramite dizionario, uno dei metodi di attacco alle password più comuni. Si tratta di un attacco semplice in cui l'hacker prende un elenco di potenziali password, chiede a Hashcat di convertirle in MD5 e verifica se qualcuna delle password corrisponde alle 3 voci sopra. Per questo test, utilizziamo come dizionario il file "rockyou.txt", che rappresenta una delle più grandi fughe di password della storia.
Per iniziare a decifrare, l'autore dell'articolo è andato nella cartella Hashcat, ha fatto clic con il pulsante destro del mouse su uno spazio vuoto e ha cliccato su Apri nel terminale . Ora che il Terminale è aperto e impostato sulla directory Hashcat, richiama l'applicazione Hashcat con il seguente comando:
.\hashcat -m 0 -a 0 passwordfile.txt rockyou.txt -o results.txt
Ecco cosa fa il comando:
.\hashcat chiama Hashcat.
-m 0 : specifica il tipo di codifica da utilizzare. In questo caso verrà utilizzato MD5, elencato come 0 nella documentazione di aiuto di Hashcat.
-a 0 : Specifica l'attacco da eseguire. Nella documentazione di aiuto di Hashcat l'attacco al dizionario è elencato come zero, quindi qui lo chiamiamo così.
passwordfile.txt rockyou.txt : Il primo file contiene le 3 password crittografate che abbiamo impostato in precedenza. Il secondo file è l'intero database delle password rockyou.
-o results.txt : questa variabile determina dove posizionare i risultati. Nel comando, le password violate vengono inserite in un file TXT denominato "results".
Nonostante Rockyou fosse un fenomeno enorme, Hashcat è riuscito a elaborarli tutti in 6 secondi. Nel file risultante, Hashcat afferma di aver decifrato la password 123456, ma le password Susan e Bitwarden restano intatte. Questo perché la password 123456 è stata utilizzata da qualcun altro nel file rockyou.txt, ma nessun altro ha utilizzato la password Susan o Bitwarden, il che significa che erano sufficientemente sicure da sopravvivere a questo attacco.
Eseguire un jailbreak più complesso utilizzando attacchi Brute Force nascosti
Eseguire un attacco Brute Force con Hashcat
Gli attacchi tramite dizionario sono efficaci quando qualcuno utilizza la stessa password di una password presente in un lungo elenco di password. Sono rapidi e semplici da implementare, ma non riescono a decifrare le password che non sono presenti nel dizionario. Pertanto, se si vuole davvero testare la propria password, è necessario ricorrere agli attacchi Brute Force.
Se gli attacchi tramite dizionario si limitano a prendere un elenco preimpostato e a convertire i singoli elementi uno per uno, gli attacchi tramite forza bruta fanno lo stesso, ma con ogni combinazione immaginabile. Sono più difficili da implementare e richiedono più tempo, ma alla fine saranno in grado di decifrare qualsiasi password. Come vedremo tra poco, questa capacità può talvolta richiedere molto tempo.
Ecco il comando utilizzato per eseguire un "vero" attacco Brute Force:
.\hashcat -m 0 -a 3 target.txt --increment ?a?a?a?a?a?a?a?a?a?a -o output.txt
Ecco cosa fa il comando:
-a 3 : Questa variabile definisce l'attacco che vogliamo eseguire. La documentazione di aiuto di Hashcat elenca gli attacchi Brute Force al numero 3, perciò viene chiamato così.
target.txt : file contenente la password crittografata che vogliamo decifrare.
--increment : questo comando dice ad Hashcat di provare tutte le password lunghe un carattere, poi due, poi tre, ecc. finché non trova una corrispondenza.
?a?a?a?a?a?a?a?a?a?a?a : Questa è chiamata "maschera". Le maschere ci consentono di dire ad Hashcat quali caratteri vengono utilizzati e in quali posizioni. Ogni punto interrogativo specifica una posizione del carattere nella password e la lettera specifica cosa proviamo in ogni posizione. La lettera "a" rappresenta lettere maiuscole e minuscole, numeri e simboli, quindi questa maschera dice "Prova tutto in ogni posizione". Questa è una maschera terribile, ma più avanti vedremo come usarla al meglio.
-o output.txt : questa variabile determina dove posizionare i risultati. Il comando di esempio inserisce le password violate in un file TXT denominato "output".
Anche con questa pessima maschera, la password 123456 viene decifrata in 15 secondi. Sebbene sia la password più comune, è una delle più deboli.
Parola d'ordine "Susan48!" Molto meglio: il computer dice che ci vorranno 4 giorni per decifrarlo. Tuttavia c'è un problema. Ricordate quando nell'articolo si diceva che la password di Susan aveva delle falle gravi? L'errore più grande è che le password sono costruite in modo prevedibile.
Quando creiamo una password, spesso inseriamo elementi specifici in punti specifici. Come puoi immaginare, la creatrice della password Susan ha provato inizialmente a usare "susan", ma le è stato chiesto di aggiungere lettere maiuscole e numeri. Per facilitarne la memorizzazione, hanno scritto in maiuscolo la prima lettera e aggiunto dei numeri alla fine. Quindi forse un servizio di accesso ha richiesto un simbolo, quindi chi ha impostato la password lo ha aggiunto alla fine.
Possiamo quindi usare la maschera per dire a Hashcat di provare solo caratteri specifici in punti specifici, per sfruttare la facilità con cui le persone possono indovinare le password quando le creano. In questa maschera, "?u" utilizzerà solo lettere maiuscole in quella posizione, "?l" utilizzerà solo lettere minuscole e "?a" rappresenta qualsiasi carattere:
Con questa maschera, Hashcat ha decifrato la password in 3 minuti e 10 secondi, molto più velocemente di 4 giorni.
La password di Bitwarden è lunga 10 caratteri e non segue alcun modello prevedibile, quindi per decifrarla sarebbe necessario un attacco Brute Force senza alcuna maschera. Sfortunatamente, quando ho chiesto ad Hashcat di farlo, è stato restituito un errore, dicendo che il numero di combinazioni possibili supera il limite di numeri interi. Secondo un esperto di sicurezza informatica, Bitwarden ha impiegato 3 anni per decifrare la password, il che è sufficiente.
Come proteggere il tuo account dall'hacking della password
I principali fattori che impediscono all'articolo di decifrare la password di Bitwarden sono la sua lunghezza (10 caratteri) e l'imprevedibilità. Pertanto, quando create una password, cercate di renderla il più lunga possibile e di distribuire simboli, numeri e lettere maiuscole in modo uniforme al suo interno. Ciò impedisce agli hacker di utilizzare maschere per prevedere la posizione di ciascun elemento e rende le password molto più difficili da decifrare.
Probabilmente conosci i vecchi proverbi sulle password come "usa un array di caratteri" e "rendila il più lunga possibile". Spero che tu sappia perché le persone consigliano questi utili suggerimenti: sono la differenza fondamentale tra una password facilmente decifrabile e una sicura.