Come utilizzare il software hashcat per rompere vari hash.

Zero, conoscenza di base

1. Funzione hash

La funzione hash è un termine generale per un tipo di funzione. L'input di questo tipo di funzione è qualsiasi dato binario e l'output è un dati binari di lunghezza fissa, questo tipo di funzione ha le seguenti caratteristiche:

  • Unidirezionalità: è semplice e rapido calcolare l'output dall'input, ma è matematicamente impossibile dedurre l'input dall'output

  • Vincolo di collisione: è estremamente difficile trovare due input diversi con lo stesso output

Le funzioni che soddisfano queste caratteristiche possono essere chiamate funzioni hash. Un determinato dato viene utilizzato come input della funzione hash e l'output viene calcolato. Questo output è abitualmente chiamato valore hash dei dati.

Una delle funzioni principali della funzione hash è memorizzare la password in modo sicuro. Non salva direttamente la password (cioè non memorizza la password in testo chiaro), ma salva il valore hash della password. Durante la verifica, devi solo calcolare nuovamente la password inserita. Il valore hash della password può essere confrontato con il valore hash della password salvata per sapere se la password è corretta. A causa della unidirezionalità della funzione hash e dei vincoli di collisione, è difficile per un aggressore conoscere la password stessa anche se ottiene il valore hash della password.

2.hashcat

L'attaccante ha ottenuto il valore hash della password, non c'è davvero modo di conoscere la password stessa? Naturalmente no. Sebbene sia matematicamente impossibile calcolare direttamente la password stessa in base al valore hash della password, sappiamo che la funzione hash è semplice e veloce per calcolare l'output dall'input. Nel peggiore dei casi, puoi provarlo. Le uniche password che gli esseri umani possono impostare sono quelle, provalo una per una, puoi comunque provarlo se sei fortunato. L'operazione di tentativo continuo di ottenere l'input corrispondente al valore hash è chiamata esplosione.

Sulla base di questa idea, è nato hashcat. Si dice che hashcat sia nato per dimostrare che esplodere hash è molto semplice. hashcat afferma di essere lo strumento di hash blasting più veloce al mondo e supporta anche GPU e FGPA, se ne hai.


hashcat non è solo veloce, ma supporta professionalmente più di duecento funzioni hash, usando il comando:

 hashcat   - -help 

puoi vedere l'elenco di tutte le funzioni hash supportate da hashcat, sono troppe e non le pubblicherò qui.

hashcat è installato per impostazione predefinita in Kali e può essere utilizzato direttamente. Ma il mio Kali è installato in VirtualBox e ho sempre la sensazione che la macchina virtuale sia più lenta, quindi voglio usare hashcat in un host fisico. Per prima cosa vai sul sito ufficiale di hashchat per scaricare hashcat. Al momento, l'ultima versione è v3.5.0, rilasciata il 05.04.2017. Dalla data di aggiornamento, si può vedere che hashchat è pieno di vitalità. Elimina il problema della compilazione e scarica direttamente il pacchetto binario, che pesa solo 2,7 milioni, il che è molto piccolo rispetto ai giochi che spesso costano decine di gigabytes.

Dopo aver completato il download, decomprimi hashcat e vedi:

File come questo sono file eseguibili in linux e windows a 32 bit e 64 bit, scegli uno di loro in base alla situazione del tuo computer. Ho scelto hashcat64.bin. Per la bellezza, aggiungo una riga al file ~ /. bashrc:

 alias   hashcat = ' Il percorso di hashcat64.bin ' 

Dopo aver salvato, riapri il terminale virtuale per rendere valido il file ~ /. bashrc. In questo modo, non importa dove ti trovi, puoi semplicemente inserire il comando hashcat senza cambiare directory o inserire il brutto "64.bin", come mostrato nella figura seguente.

Ok, ora puoi iniziare a esplodere tutti i tipi di hash con hashcat.

1. Blasting md5

md5 dovrebbe essere una delle funzioni hash più famose e ampiamente utilizzate. Usa innanzitutto Python per generare diversi valori md5 per l'esplosione. Il codice è il seguente:

     import   hashlib 
    Password   =   [' 123123 ',   ' bond007 ',   ' xxxxxx ',   ' *H@ & (NT*@BR#^ '] 
    per   password   in   password: 
        md5   =   hashlib.md5 () 
        md5.update (password) 
        print   md5.hexdigest () 

Il codice sopra calcola rispettivamente i valori hash delle quattro stringhe e il risultato in output è:

     4297f44b13955235245b2497399d7a93 
    cbdb7e2b1ed566ceb796af2df07205a3 
    dad3a37aa9d50688b5157698acfd7aee 
    d77db958c179bbffae04b2b908b75c26 

Salva l'output nel file md5.hash, un valore hahs per riga. Quindi usa hashcat per esplodere questi valori hash, il comando è il seguente:

     hashcat   -w   3   -a   0   -m   0   - -remove   -o   md5.out   md5.hash   wordlist.dic 

Il parametro-w viene utilizzato per specificare le modalità di lavoro, sono quattro, come mostrato nella tabella seguente:

N Prestazioni Runtime Consumo energetico Impatto sul Desktop
1 Basso 2 ms basso minimo
2 predefinito 12 ms economico notevole
3 Alto 96 ms Alto Non rispondente
4 Incubo 480 ms Insane Senza testa

Il parametro-a viene utilizzato per specificare la modalità di attacco, il significato di 0 è diretto e continuo, cioè utilizzare il dizionario delle password per esplodere, ci sono cinque valori di-a, come mostrato nella tabella seguente:

N modalità
0 dritto
1 combinazione
3 Brute-force
6 Hybrid Wordlist + Mask
7 Hybrid Mask + Wordlist

-m viene utilizzato per specificare l'hash da esplodere La funzione hash del valore, 0 significa che la funzione hash è md5, gli altri valori sono mostrati nella tabella seguente:

N nome categoria
0 MD5 Hash grezzo
300 MySQL4.1/MySQL5 Server di Database
1000 NTLM Sistemi operativi
1800 sha512crypt $6$, SHA512 (Unix) Sistemi operativi
2611 vBulletin < v3.8.5 Forum, CMS, E-Commerce, Frameworks

Questa tabella è troppo lunga. Qui mostrerò solo alcune funzioni hash coinvolte in questo articolo. Puoi vedere tutte con il parametro – help. Il significato del parametro

– remove è che se un valore hash viene esploso con successo, il valore viene rimosso da md5.hash. Il parametro

-o è seguito da un nome file che indica dove vengono salvati i risultati dell'esplosione.

Gli ultimi due parametri md5.hash e wordlist.dic sono rispettivamente il valore hash e il dizionario delle password da esplodere. Il valore hash e il dizionario delle password sono entrambi uno per riga. Il contenuto in md5.hash è stato calcolato da Python. Se non hai a portata di mano un dizionario di password appropriato, puoi utilizzare il comando:

     wget   -O   wordlist.dic   https://samsclass.info/123/proj10/500_passwords.txt

下载一个。现在完事具备,按下回车,结果华丽地报错:(

  clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

Probabilmente manca qualche ambiente operativo, quindi installa. Ho installato queste cose in totale:

     sudo   apt-get   install   gcc   make   p7zip-full   git   lsb-core 
    wget   http://registrationcenter-download.intel.com/akdlm/irc_nas/9019/opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
    tar   -xvf   opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25.tgz 
    cd   opencl_runtime_16.1.1_x64_ubuntu_6.4.0.25 
    sudo  . /install.sh 

Se la velocità della rete è buona, sarà installato in breve tempo. Il primo comando segnala un errore:

     /sbin/ldconfig.real:   /usr/lib/nvidia-375/libEGL.so.1   è   non   un   simbolico   link 
    /sbin/ldconfig.real:   /usr/lib32/nvidia-375/libEGL.so.1   è   non   un   simbolico   link 

ma non sembra influenzare nulla, quindi ignoralo. Dopo averli installati, premi nuovamente Enter ed esegui il comando che originariamente segnalava l'errore. Scopri che non c'è stato alcun altro errore e l'esecuzione è stata completata in un batter d'occhio. Dopo l'esecuzione del comando, ho controllato il contenuto dei file md5.hash e md5.out e ho scoperto che in md5.hash è rimasto solo un hash. I tre hash che sono stati esplosi con successo sono stati trasferiti nel file md5.out. md5.out Ci sono tre valori hash e i loro valori originali, come mostrato nella figura seguente:

2. hash della password di accesso di Windows 7

Il valore hash della password di accesso di Windows è salvato nel file SAM, SAM è l'acronimo di "security account manager". Di solito, si trova in

     C: \Windows\system32\config\SAM 

I file SAM sono protetti da Windows e non possono essere letti direttamente. È necessario utilizzare uno strumento come SAMInside. Trova una macchina virtuale Windows 7, crea un nuovo utente amministratore chiamato hashcat, imposta la password, scarica e decomprima SAMInside in Windows 7, esegui con i diritti di amministratore, quindi fai clic su File- > Importa utenti locali verso Scheduler, come mostrato nella figura seguente Come mostrato:

Dopo che SAMInside potrebbe "non rispondere", ma non importa, aspetta pazientemente per qualche secondo, SAMInside ha letto l'hash che desideriamo all'altezza delle aspettative, come mostrato nella figura seguente:

Seleziona l'utente "hashcat" di cui vogliamo esplodere la password, premi Ctrl +5 per copiare NT-hash, quindi torna a Ubuntu con hashcat installato, utilizza il seguente comando per salvare il valore hash copiato nel File win7.hash:

     echo   356CEAE0C89FB65ED6D6AA7A445C4CE5   {> 
     hashcat   -w   3   -a   0   -m   1000   - -remove   -o   win7.out   win7.hash   wordlist.dic 

L'esecuzione è stata completata dopo un po', ho controllato il file win7.out e ho scoperto che l'esplosione è andata a buon fine. La password di accesso dell'utente hashcat è rush2112:

     werner@Yasser: ~ /hashcat$   cat   win7.out 
    356ceae0c89fb65ed6d6aa7a445c4ce5:rush2112 

Per ottenere il file SAM, fare riferimento a "Come esportare Windows Hash Series 1". Di seguito è registrato il processo di lettura del file SAM nella macchina virtuale Windows 7.

Se si tratta di una macchina fisica, utilizza Win PE per avviare la macchina e leggere il file SAM sul disco. mio è una macchina virtuale e puoi leggere i file sul disco virtuale montando i file del disco virtuale sul file system. La macchina virtuale che sto usando è VirtualBox, che può essere fatta usando il comando vdfuse. Se non hai vdfuse, devi prima installare virtualbox-fuse:

     sudo   apt-get   install   virtualbox-fuse 

Puoi anche scaricare il pacchetto di installazione di virtualbox-fuse per installarlo da solo.

Una volta completata l'installazione, è disponibile il comando vdfuse e è possibile avviare la mappatura e il montaggio del disco virtuale:

     mkdir   -p   ~ /vmdisk 
    sudo   vdfuse   -t   vmdk   -f   Win7Pro32.vmdk   ~ /vmdisk/ 

Dopo aver eseguito questo passaggio, controlla la directory ~ /vmdisk, che contiene tre file: EntireDisk, Partition1 e Partition2, nuova directory:

     mkdir   -p   ~ /vmdisk_en 
    mkdir   -p   ~ /vmdisk_1 
    mkdir   -p   ~ /vmdisk_2 

Utilizzare il comando mount per montare rispettivamente i tre file EntireDisk, Partition1 e Partition2:

     sudo   mount   ~ /vmdisk/EntireDisk       ~ /vmdisk_en 
    sudo   mount   ~ /vmdisk/Partition1       ~ /vmdisk_1 
    sudo   mount   ~ /vmdisk/Partition2       ~ /vmdisk_2 

ha scoperto che il montaggio di intero disco non è riuscito, il contenuto in Partition1 non è quello che volevo, il contenuto in Partition2 è il file nella macchina virtuale di Windows 7, esattamente quello che volevo. Copia il nostro file SAM di destinazione da vmdisk_fs:

     cp   ~ /vmdisk_2/Windows/System32/config/SAM  . / 

A proposito, copia anche il file SYSTEM:

     cp   ~ /vmdisk_2/Windows/System32/config/SYSTEM  . / 

Controlla il contenuto del file SAM, come mostrato nella figura seguente, non è un file di testo semplice, è davvero lo stile di Windows,

Beh, anche se il file SAM è stato aperto con successo, non abbiamo ancora ottenuto l'hash. Cosa devo fare se lo modifico successivamente? Il contenuto del file SAM può essere analizzato solo con l'aiuto di strumenti. Inserisci sia il file sam che il file di sistema in Kali ed esegui il comando:

     samdump2   -o   sam.hash   SYSTEM   sam 

Quindi visualizza sam.hash e puoi anche vedere il valore hash della password di accesso di ciascun utente. Ogni riga nel file sam.hash è un utente e il formato di ciascuna riga è:

     Nome utente: RID:LM-hash value: NTLM-hash value 

Nota Questo formato è il formato di output del comando samdump2, non il "formato di password hash in Windows".

3. Exploding hash della password di accesso linux

Innanzitutto, devi avere un computer che esegua il sistema linux. Questo è facile da dire, basta una macchina virtuale. Quindi, eseguire il seguente comando per aggiungere un nuovo utente e impostare una password per i nostri scopi di esplosione:

     sudo   adduser   justforfun 

Il valore hash della password di accesso dell'utente in linux è memorizzato nel file/etc/shadow (nota: non/etc/passwd), utilizzare il seguente comando per visualizzare il valore hash della password di accesso del nuovo utente:

 test@test-VirtualBox: ~ $   sudo   tail   -n   1   /etc/shadow 
justforfun:$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:17373:0:99999:7::: 

Il comando tail viene utilizzato per leggere le ultime righe di un file, l'impostazione predefinita è di 10 righe, specificando il numero di righe con il parametro-n. L'utente che abbiamo appena creato è naturalmente all'ultima riga, quindi usa tail-n 1 per leggerlo. risultato della lettura sono i dati divisi con ":". La prima parte è il nome utente "justforfun", la seconda parte è il valore hash della password e le altre parti non devono essere preoccupate in questo articolo. Ci concentreremo sulla seconda parte.

"$6$" che inizia con

significa che il tipo di funzione hash utilizzata è SHA-512. Oltre a "$6$", in linux, "$1$" si riferisce a MD5, "$2a$" si riferisce a Blowfish, "$2y$" si riferisce a Blowfish (gestione corretta dei caratteri a 8 bit), "$5$" Si riferisce a SHA-256, vedi Wikipedia per i dettagli: passwd. Inoltre, il file/etc/login.defs descrive anche l'algoritmo hash.

La parte "0fokwg59" che inizia con "$6$" e prima del "$" successivo è sale. Cos'è il sale? Baidu sa che la risposta di CNB2009 alla domanda " Qual è il valore del sale md5 " è semplice e facile da capire:

In poche parole, è un metodo per rendere la stessa password ha valori hash diversi, cioè la salinizzazione. MD5 stesso è irreversibile, ma attualmente ci sono molti database su Internet che supportano l'anti-query. Se il database delle password utente viene accidentalmente trapelato, gli hacker possono ottenere la password utente attraverso l'anti-query o utilizzare il codice hash che appare più frequentemente nel database (cioè utilizzato da molte persone) per il brute force cracking (perché di solito è una password debole). Il valore sale è un valore casuale aggiuntivo aggiunto durante il processo di hash della password. Ad esempio, il mio id è epilepsia e la mia password è 123456. Quando è memorizzato nel database, posso hash la stringa "123456/epilepsia". Quando si verifica la password, viene utilizzata anche la stringa "(password da verificare) /epilepsia" per la verifica. In questo modo, quando la password di un altro idiota è 123456, è ancora possibile costruire diversi valori hash e verificarli con successo. In questo momento, il mio id viene utilizzato come valore sale per eseguire un hash complesso per la password. Allora.. Il ruolo del valore del sale è quello di ridurre le perdite causate da perdite di database. Se il tuo RP è molto buono e la mia password è 123456, non posso fermarti

Questa risposta è per md5 e lo stesso vale per altre funzioni hash. La parte dopo il sale è il valore hash. Ora copiare l'intera seconda parte nel file linux.hash, il contenuto in linux.hash dovrebbe essere:

   $6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0 

Quindi esplodere l'hash della password di accesso linux con il seguente comando:

     hashcat   -w   3   -a   0   -m   1800   - -remove   -o   linux.out   linux.hash   wordlist.dic 

Dopo un attimo, l'esplosione è terminata, visualizza il risultato:

 werner@Yasser: ~ /hashcat$   cat   linux.out 
$6$0fokwg59$6hpMS5dM9wDT/42DDoSD0i0g/wHab50Xs9iEvVLC3V20yf1kRmXZHGXCM0Efv6XU69hdgMZ4FwaMzso4hQaGQ0:4321 

Si può vedere che l'esplosione è stata riuscita.

4. hash della password di accesso Mysql

Innanzitutto, devi avere Mysql. È successo che ce l'abbia nella mia macchina virtuale. Baidu può sapere che il valore hash della password di accesso Mysql è salvato nel file user.MYD. Dov'è il file user.MYD? Non lo so neanche io, lo cerco solo:

     test@test-VirtualBox: ~ $   sudo   find   /   -name   user.MYD 
    /var/lib/mysql/mysql/user.MYD 

L'ho trovato. È su/var/lib/mysql/mysql/user.MYD. Visualizza il contenuto del file:

     sudo   cat   /var/lib/mysql/mysql/user.MYD 

Non è un file di testo semplice, quindi ha poco a che fare. Puoi ancora vedere che il valore hash della password di accesso dell'utente root è:

     6B825255FB466413D6B1B724644E23428C94BBCB 

Salva questo valore nel file mysql.hash e usa il seguente comando per esplodere l'hash della password di accesso mysql:

     hashcat   -w { 

Dopo un attimo, l'esplosione è completata, visualizza il risultato:

     werner@Yasser: ~ /hashcat$   cat   mysql.out 
    6b825255fb466413d6b1b724644e23428c94bbcb:viper 

Si vede che l'esplosione è andata a buon fine.

5. Discuz di esplosione! Password del forum

Discuz! È un noto programma di forum php in Cina ed è ampiamente utilizzato. Ora facciamo esplodere Discuz! Valore hash della password dell'utente. Innanzitutto devi trovare il valore hash, dove trovarlo? Da Discuz, ovviamente! nel database.

Puoi discutirlo! Dov'è il database? Ecco come l'ho risolto, scarica l'ultima versione di Discuz dal suo sito ufficiale! Codice sorgente, esegui l'installazione e ottieni Discuz! Database :smile:

Discuz! Il nome del database predefinito è ultrax. La tabella pre_ucenter_members memorizza il valore hash della password di accesso. "pre_" è il prefisso predefinito e può essere modificato durante l'installazione. "ucenter_members" non cambierà. Utilizzare la seguente istruzione sql per interrogare il valore hash della password di accesso:

     select   password,salt   from   pre_ucenter_members; 

Salva i valori hash e sale nel file:

     echo   69bcba126b93c6f397983629a0f70553:c13fd9   >   discuz.hash 

Il valore hash e il valore sale sono nella stessa riga, divisi con ":". Infine, esplodere l'hash della password di accesso di Discuz con il seguente comando:

     hashcat   -w   3   -a   0   -m   2611   - -remove   -o   discuz.out   discuz.hash   wordlist.dic 

Dopo un attimo, l'esplosione è terminata, visualizza i risultati:

     werner@Yasser: ~ /hashcat$   cat   discuz.out 
    69bcba126b93c6f397983629a0f70553:c13fd9:winter 

Si vede che l'esplosione è andata a buon fine.

6. Test del grande dizionario

Finora, utilizziamo un piccolo dizionario con solo 500 parole. Ci vuole solo un momento ogni volta per esplodere con successo vari hash. Non trovi strano? Questo perché ho deliberatamente impostato una password debole nel dizionario per esercitarmi nell'uso di hashcat, altrimenti non sarebbe un cattivo umore se non fosse riuscita a esploderla. In realtà non è possibile avere una fortuna così buona. Calcoliamo casualmente il valore md5 di una password non così debole, esplosiamo con un grande dizionario, da un lato tentiamo la fortuna e dall'altro vediamo quanto può essere veloce hashcat.

Per prima cosa calcola il valore md5:

     import   hashlib 
    md5   =   hashlib.md5 () 
    md5.update (" werner123456!!! ") 
    print   md5.hexdigest () 

L'output è:

     b17133f9abff287ed0546c1af2b171f7 

Quindi seleziona un dizionario di dimensioni 10,5G con 940 milioni di password e inizia a esplodere:

     hashcat   -w   3   -a   0   -m   0   - -remove   -o   big.out   b17133f9abff287ed0546c1af2b171f7   big.dic 

Nota che quando c'è solo un valore hash, non è necessario salvarlo in un file, ma può anche essere scritto direttamente nei parametri della riga di comando. Ho iniziato a esplodere prima di andare a letto, mi sono alzato il giorno successivo per guardare i risultati e ho scoperto:

     Iniziato:   Mer   Jul   26   22:55:27   2017 
    Stopped:   mer   lug   26   23:02:28   2017 

Si scopre che ci sono voluti solo 7 minuti! Pensavo che ci sarebbero volute 7 ore, 60 volte più veloce di quanto mi aspettassi! Sfortunatamente, il valore hash non è stato esploso con successo. Sembra che "werner123456!!!" non sia nel dizionario delle password. Sembra che devo preparare un dizionario di password da 100G, ma è molto scomodo salvare e trasferire un dizionario così grande. Non c'è altro modo? Certo che c'è, ricordi la modalità attacco? Abbiamo utilizzato la modalità "dritta". Successivamente, esaminiamo diverse altre modalità.

7. Riepilogo

Quando si utilizza hashcat per esplodere l'hash, la prima cosa è trovare l'hash corretto. Sistemi diversi e software diversi hanno posizioni diverse di archiviazione dell'hash, quindi è necessario trovare accuratamente il valore dell'hash; Il secondo è determinare correttamente il tipo di hash, determinare se hashcat supporta questo tipo di hash e selezionare il parametro-m corretto, altrimenti è quasi impossibile avere successo; Il terzo è che il dizionario delle password dovrebbe essere migliore. Se l'esplosione può riuscire alla fine dipende dal dizionario. Sebbene il dizionario delle password non sia più grande, meglio è, ma è comunque meglio essere più grande. Anche hashcat è famoso per la sua velocità. I grandi dizionari non sono un problema per hashcat. Ecco un dizionario migliore: Porte di perdita precedenti + raccolta di dizionari di password deboli comunemente usate. 7Z , la password di decompressione è: anywlan. Inoltre, se raccogli molti piccoli dizionari, puoi unire, ordinare e deduplicare i piccoli dizionari per ottenere un grande dizionario per l'esplosione di hashcat. Se i piccoli dizionari si trovano nella stessa directory, puoi usare un comando:

         cat   *   |   sort   |   uniq   >   Merge.dic 

E se i piccoli dizionari fossero organizzati per categorie e distribuiti in directory multistrato? Ovviamente non è possibile utilizzare solo il comando cat, ma in realtà è sufficiente solo un comando. Supponendo che i piccoli dizionari siano archiviati nella directory MyDictionary, il comando può essere scritto come segue:

         find  . /MyDictionary   -type   f   -exec   cat   {}   \;   |   sort   |   uniq   >   Merge.dic 

Precedente:Quali tipi di file crittografati possono decrittografare Document Password Recovery Master? Di seguito sono riportati i formati di file che supporta per il cracking:
Il prossimo:Diverse modalità di attacco in hashcat
  • Concentrarsi su Word, Excel, PPT, PDF, RAR, ZIP, 7Z, pacchetti compressi, sblocco e decrittografia dei file crittografati di Office
  • Forniamo agli utenti il recupero della password dei pacchetti compressi di file di alta qualità, il recupero della password di Word sbloccato da PDF
  • Copyright © Master di recupero della password del documento Piattaforma di decrittografia online