Korleis hashcat-programmet skal brukast for å knekke ymse hashes.

Null, bakgrunnskunnskap

1. Hash-funksjon

Hash-funksjon er et generelt navn for en type funksjon. Inngangen til denne typen funksjon er vilkårlige binære data, og utgangen er en fast lengde binære data, denne typen funksjon har følgende egenskaper:

  • Enveishet: Det er enkelt og raskt å beregne utgangen fra inngangen, men det er matematisk umulig å utlede inngangen fra utgangen

  • Kollisjonsbegrensning: Det er ekstremt vanskelig å finne to forskjellige innganger med samme utgang

Funksjoner som tilfredsstiller disse egenskapene kan kalles hashfunksjoner. Ved å bruke visse data som inngang til hash-funksjonen, beregnes utgangen. Det er vanlig å referere til denne utgangen som hash-verdien til dataene.

En av hovedfunksjonene til hash-funksjonen er å lagre passordet sikkert. Den lagrer ikke passordet direkte (det vil si at den ikke lagrer passordet i klar tekst), men lagrer hashverdien til passordet. Under verifisering trenger du bare å beregne inngangspassordet på nytt. Sammenlign hashverdien til det lagrede passordet med hashverdien til det lagrede passordet for å vite om passordet er riktig. På grunn av unidirectionaliteten til hash-funksjonen og kollisjonsbegrensningene, er det vanskelig for en angriper å vite selve passordet selv om han får hash-verdien av passordet.

2.hashcat

Angriperen fikk hashverdien til passordet. Er det virkelig ingen måte å vite selve passordet på? Selvfølgelig ikke Selv om det er matematisk umulig å beregne selve passordet direkte fra hash-verdien til passordet, vet vi at hash-funksjonen er enkel og rask for å beregne utgangen fra inngangen. I verste fall kan du prøve passordet som mennesker kan sette er de, prøv det en etter en, du kan fortsatt prøve det hvis du er heldig. Operasjonen med kontinuerlig forsøk på å få inngangen som tilsvarer hash-verdien kalles sprengning.

Basert på denne ideen ble hashcat til. Det sies at hashcat ble født for å bevise at det er veldig enkelt å sprenge hash. hashcat hevder å være verdens raskeste hash-blast-verktøy, og det støtter til og med GPU og FGPA, hvis du har det.


hashcat er ikke bare rask, men støtter også profesjonelt mer enn to hundre hash-funksjoner Bruk kommandoen:

 hashcat   - -help 

Du kan se listen over alle hash-funksjonene som støttes av hashcat. Det er for mange og jeg vil ikke legge dem ut her.

hashcat er installert som standard i Kali og kan brukes direkte. Men min Kali er installert i VirtualBox, og jeg føler alltid at den virtuelle maskinen er tregere, så jeg vil bruke hashcat i den fysiske verten. Gå først til den offisielle nettsiden til hashchat for å laste ned hashcat. Per nå er den nyeste versjonen v3.5.0, utgitt 2017.04.05. Fra oppdateringsdatoen kan du se at hashchat er full av vitalitet. For å eliminere problemene med kompilering, last ned den binære pakken direkte, som bare er 2,7 millioner, noe som er veldig lite sammenlignet med spill som ofte veier dusinvis av gigabyte.

Etter at nedlastingen er fullført, pakker du ut hashcat og ser:

Slike filer er henholdsvis 32-bit og 64-bit Kjørbare filer i linux og windows, velg bare en av dem i henhold til situasjonen til din datamaskin. Jeg valgte hashcat64.bin For skjønnhetens skyld legger jeg til en linje i ~ /. bashrc-filen:

 alias   hashcat = ' banen til hashcat64.bin ' 

Etter lagring åpner du den virtuelle terminalen på nytt for å gjøre ~ /. bashrc-filen effektiv. På denne måten, uansett hvor du er, kan du bare skrive inn hashcat-kommandoen direkte uten å bytte katalog eller skrive inn den stygge "64.bin", som vist i figuren nedenfor.

Ok, nå kan du begynne å sprenge ulike hash med hashcat.

1. Blasting md5

md5 burde være en av de mest kjente og mest brukte hash-funksjonene. Bruk først Python til å generere flere MD5-verdier for sprengning. Koden er som følger:

     import   hashlib. 
    Passord   =   [' 123123 ',   ' bond007 ',   ' xxxxxx ',   ' *H@ & (NT*@BR#^ '] 
    for   passord   i   passord: 
        md5   =   hashlib.md5 () 
        md5.update (passord) 
        print   md5.hexdigest () 

Koden ovenfor beregner hashverdiene til de fire strengene, og utdataresultatet er:

     4297f44b13955235245b2497399d7a93 
    cbdb7e2b1ed566ceb796af2df07205a3 
    dad3a37aa9d50688b5157698acfd7aee 
    d77db958c179bbffae04b2b908b75c26 

Lagre utdataresultatet i filen md5.hash, en hahs-verdi per linje. Bruk deretter hashcat for å sprenge disse hash-verdiene, kommandoen er som følger:

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

Parameter-w brukes til å spesifisere arbeidsmoduser, det er fire, som vist i tabellen nedenfor:

N Ytelse Kjøringstid Strømforbruk Desktop Impact
1 Lav 2 ms lav Minimal
2 standard 12 ms økonomisk merkbar
3 Høy 96 ms Høy Uresponsiv
4 Mareritt 480 ms Insane Headless

Parameter-a brukes til å spesifisere angrepsmodus, betydningen av 0 er direkte og kontinuerlig, det vil si å sprenge med en passordordbok, det er fem verdier av-a, som vist i tabellen nedenfor:

N Mode
0 Rett
1 Kombinasjon
3 Brute-force
6 Hybrid ordliste + maske
7 Hybrid maske + ordliste

-m brukes til å spesifisere hashen som skal sprenges Hash-funksjonen til verdien, 0 betyr at hash-funksjonen er md5, og de andre verdiene er som vist i følgende tabell:

N navn kategori
0 MD5 rå Hash
300 MySQL4.1/MySQL5 databaseserver
1000 NTLM Operativsystemer
1800 sha512crypt $6$, SHA512 (Unix) Operativsystemer
2611 vBulletin < v3.8.5 Forums, CMS, E-Commerce, Frameworks

Dette Tabellen er for lang. Jeg vil bare vise noen få hash-funksjoner som er involvert i denne artikkelen. Du kan se dem alle ved å bruke parameteren – hjelp. Betydningen av

parameter – fjern er at hvis en viss hash-verdi er sprengt, vil verdien bli fjernet fra md5.hash.

Parameter-o følges av et filnavn som indikerer hvor sprengningsresultatene er lagret.

De to siste parametrene md5.hash og wordlist.dic er henholdsvis hash-verdien og passordboken som skal eksploderes. Hash-verdien og passordboken er begge én på hver linje. Innholdet i md5.hash er beregnet av Python Hvis du ikke har en passende passordordbok for hånden, kan du bruke kommandoen:

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

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

  clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

Det mangler sannsynligvis et kjøremiljø, så installer det. Jeg har installert disse tingene totalt:

     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 

Hvis nettverkshastigheten er god, vil den bli installert på kort tid. Den første kommandoen rapporterer en feil:

     /sbin/ldconfig.real:   /usr/lib/nvidia-375/libEGL.so.1   er   ikke   en   symbolsk   lenke 
    /sbin/ldconfig.real:   /usr/lib32/nvidia-375/libEGL.so.1   er   ikke   a   symbolsk   link 

Men det ser ikke ut til å påvirke noe, bare ignorer det. Etter å ha installert disse, trykket du Enter igjen og kjørte den opprinnelige feilkommandoen. Jeg fant ut at det ikke var noen feil igjen, og utførelsen ble fullført på et øyeblikk. Etter at kommandoen er utført, sjekk innholdet i filene md5.hash og md5.out og fant ut at det bare er én hash igjen i md5.hash. De tre hashene som ble sprengt med suksess har blitt overført til filen md5.out. md5.out er tre hashverdier og deres opprinnelige verdier, som vist i figuren nedenfor:

2. hash for Windows 7 påloggingspassord

Hashverdien til Windows påloggingspassord er lagret i SAM-filen, SAM er forkortelsen for "security account manager". Vanligvis er den plassert i

     C: \windows\system32\config\SAM 

SAM-filen er beskyttet av Windows og kan ikke leses direkte verktøy som SAMInside. Finn en virtuell Windows 7-maskin, opprett en ny administratorbruker som heter hashcat, angi et passord, last ned og pakk ut SAMInside i Windows 7, kjør deretter med administratortillatelser, og klikk deretter på File- > Import Local Users vis Scheduler, som vist nedenfor Som vist i bildet:

SAMInside kan "ikke svare" etter det, men det spiller ingen rolle, vent tålmodig i noen sekunder, og SAMInside lever opp til forventningene og leser ut det vi ønsker hash, som vist i bildet nedenfor:

Velg brukeren "hashcat" som vi vil eksplodere passordet, trykk Ctrl +5 for å kopiere NT-hash, gå deretter tilbake til Ubuntu med hashcat installert, bruk følgende kommando for å lagre den kopierte hash-verdien til filen win7.hash:

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

Utførelsen ble fullført etter et øyeblikk. Jeg sjekket win7.out-filen og fant ut at sprengningen var vellykket. Påloggingspassordet til brukeren hashcat er rush2112:

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

For hvordan du får SAM-filen, se "Hvordan eksportere Windows Hash Series 1". Følgende er prosessen med å lese SAM-filen i den virtuelle maskinen Windows 7.

Hvis det er en fysisk maskin, start maskinen med Win PE og les SAM-filen på disken. Min er en virtuell maskin. Du kan lese filene på den virtuelle disken ved å montere den virtuelle diskfilen til filsystemet. Den virtuelle maskinen jeg bruker er VirtualBox, som kan gjøres ved å bruke kommandoen vdfuse. Hvis du ikke har vdfuse, må du installere virtualbox-fuse først:

     sudo   apt-get   install   virtualbox-fuse 

Du kan også laste ned installasjonspakken til virtualbox-fuse og installere den selv.

Etter at installasjonen er fullført, vil vdfuse-kommandoen være tilgjengelig, og du kan starte virtuell diskkartlegging og montering:

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

Etter å ha utført dette trinnet, sjekk ~ /vmdisk-katalogen, som har tre filer: EntireDisk, Partition1 og Partition2, ny katalog:

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

Bruk mount-kommandoen til å montere henholdsvis hele disk, partisjon1 og partisjon2-filer:

     sudo   mount   ~ /vmdisk/hele disk       ~ /vmdisk_en 
    sudo   monter   ~ /vmdisk/Partition1       ~ /vmdisk_1 
    sudo   mount   ~ /vmdisk/Partition2       ~ /vmdisk_2 

fant ut at hele disken mislyktes å montere innholdet i Partition1 er ikke det jeg vil ha, Partition2 er filen i Windows 7 virtuelle maskiner, akkurat det jeg vil ha. Kopier mål-SAM-filen vår fra vmdisk_fs:

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

Forresten, kopier også systemfilen:

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

Se innholdet i SAM-filen, som vist på bildet nedenfor, er det ikke en vanlig tekstfil, det er virkelig Windows-stilen,

Vel, selv om SAM-filen ble åpnet, fikk vi fortsatt ikke hash. Hva skal vi gjøre hvis vi endrer den neste gang? Du kan bare bruke verktøyet til å analysere innholdet i SAM-filen. Sett SAM-filen og systemfilen til Kali og kjør kommandoen:

     samdump2   -o   sam.hash   SYSTEM   sam 

Se deretter sam.hash, og du kan også se hash-verdien til hver brukers påloggingspassord. Hver linje i sam.hash-filen er en bruker, og formatet til hver linje er:

     Brukernavn: RID:lm-hash-verdi: ntlm-hash-verdi 

Merk at dette formatet er samdump2-kommandoutdataformatet, ikke "hash-passordformatet under Windows".

3. hash for Linux-påloggingspassord

Først av alt må du ha en datamaskin som kjører Linux-systemet. Dette er lett å si, bare en virtuell maskin. Kjør deretter følgende kommando for å legge til en ny bruker og angi et passord som vi kan sprenge:

     sudo   adduser   justforfun 

Hash-verdien til brukerens påloggingspassord i linux er lagret i filen/etc/shadow (merk: ikke/etc/passwd Bruk følgende kommando for å se hash-verdien til den nye brukerens påloggingspassord:

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

hale Kommandoen brukes til å lese de siste linjene i en fil, standard er 10 linjer, bruk parameteren-n for å spesifisere antall linjer. Brukeren vi nettopp har opprettet er naturligvis på siste linje, så vi bruker tail-n 1 til å lese den. Resultatet av lesing er dataene delt med ":" Den første delen er brukernavnet "justforfun", den andre delen er hash-verdien av passordet, og de andre delene trenger ikke å være bekymret for i denne artikkelen. Vi fokuserer på den andre delen.

"$6$" som begynner med

betyr at typen hash-funksjon som brukes er SHA-512 I tillegg til "$6$", i linux, refererer "$1$" til MD5, "$2a$" refererer til Blowfish, "$2y$" refererer til Blowfish (korrekt håndtering av 8-biters tegn), "$5$" Refererer til SHA-256, se Wikipedia for detaljer: passwd. I tillegg forklarer filen/etc/login.defs også hash-algoritmen.

Delen "0fokwg59" fra begynnelsen av "$6$" til neste "$" er SALT. Hva er salt? Baidu vet at CNB2009s svar på spørsmålet " Hva er md5 saltverdien " er enkelt og lett å forstå:

Enkelt sagt er det en måte å få det samme passordet til å ha forskjellige hash-verdier, er salting. MD5 i seg selv er irreversibel, men det er for tiden mange databaser på Internett som støtter anti-forespørsel Hvis brukerpassorddatabasen ved et uhell blir lekket, kan hackere få brukerpassordet gjennom anti-forespørsel, eller bruke hash-koder som vises ofte i databasen. (dvs. brukt av mange) for brute force cracking (fordi det vanligvis er et svakt passord). Saltverdien er en ekstra tilfeldig verdi som legges til under passordhashprosessen. For eksempel er ID-en min og passordet mitt er 123456. Når den er lagret i databasen, kan jeg hashe strengen "123456/epilepsi". Når du bekrefter passordet, bruker du også strengen "(passord som skal bekreftes) /epilepsi omvendt ④" for verifisering. På denne måten, når et annet idiotpassord er 123456, kan forskjellige hash-verdier fortsatt konstrueres og verifiseres. På dette tidspunktet brukes ID-en min som saltverdien for å utføre kompleks hash for passordet. Så hva?. Rollen til saltverdien er å redusere tap forårsaket av databaselekkasje. Hvis RP er veldig bra og passordet mitt er 123456, kan jeg ikke stoppe deg

Dette svaret er for md5, og det samme gjelder for andre hash-funksjoner. Delen etter saltet er hash-verdien. Kopier nå hele den andre delen til filen linux.hash. Innholdet i linux.hash skal være:

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

Bruk deretter følgende kommando for å sprenge Linux-påloggingspassordet hash:

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

Etter et øyeblikk er sprengningen fullført, se resultatet:

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

Det kan sees at sprengningen var vellykket.

4. Eksplodere MySQL-påloggingspassord hash

Først må du ha Mysql. Det skjedde at jeg hadde det i min virtuelle maskin. Baidu vet at hash-verdien til MySQL-påloggingspassordet er lagret i filen user.MYD. Hvor er filen user.MYD? Jeg vet ikke heller, bare se etter det:

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

Fant den i/var/lib/mysql/mysql/user.MYD Se innholdet i filen:

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

Det er ikke en vanlig tekstfil og har lite å gjøre med det. Du kan fortsatt se at hash-verdien til brukerens root-påloggingspassord er:

     6B825255FB466413D6B1B724644E23428C94BBCB 

Lagre denne verdien til filen mysql.hash, bruk følgende kommando for å sprenge MySQL-påloggingspassordet hash:

     hashcat   -w { 

Etter et øyeblikk er sprengningen fullført, se resultatene:

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

Det kan sees at sprengningen var vellykket.

5. Eksplosjon Discuz! Forum Passord

Discuz! Det er et velkjent PHP-forumprogram i Kina og er mye brukt. La oss nå sprenge Discuz! Hash-verdien av brukerpassordet. Først må du finne hash-verdien. Hvor finner du den? Fra Discuz, selvfølgelig! i databasen.

kan Discuz! Hvor er databasen? Slik løste jeg det, last ned den nyeste versjonen av Discuz fra den offisielle nettsiden! Kildekoden, kjør den og installer den, og du får Discuz! Database :smile:

Discuz! Standarddatabasenavnet er ultrax, og tabellen pre_ucenter_members lagrer hash-verdien til påloggingspassordet "pre_" er standardprefikset, som kan endres under installasjonen, men "ucenter_members" vil ikke endres. Bruk følgende SQL-setning for å spørre etter hash-verdien til påloggingspassordet:

     select   PASSORD,salt   FRA   pre_ucenter_members; 

Lagre hash-og saltverdier til filen:

     echo   69bcba126b93c6f397983629a0f70553:c13fd9   >   discuz.hash 

Hash-verdien og saltverdien er i samme linje, delt med ":". Bruk til slutt følgende kommando for å sprenge Discuz-påloggingspassordet hash:

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

Etter et øyeblikk er sprengningen fullført, se resultatet:

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

Det kan sees at sprengningen var vellykket.

6. Stor ordboktest

Så langt bruker vi en liten ordbok med bare 500 ord. Det tar bare et øyeblikk hver gang å eksplodere ulike hash. Dette er fordi jeg bevisst satte et svakt passord i ordboken for å øve på å bruke hashcat, ellers ville det ikke være dårlig å eksplodere. Det er umulig å ha så god flaks i praksis. La oss tilfeldig beregne MD5-verdien til et mindre svakt passord, sprenge det med en stor ordbok, prøve lykken på den ene siden, og se hvor raskt hashcat kan være på den andre siden.

Beregn først MD5-verdien:

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

Utgangen er:

     b17133f9abff287ed0546c1af2b171f7 

Velg deretter en 10,5G-størrelse ordbok som inneholder 940 millioner passord og begynn å eksplodere:

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

Legg merke til at når det bare er én hash-verdi, trenger du ikke å lagre den i en fil, du kan også skrive den direkte i kommandolinjeargumentene. Jeg begynte å sprenge før jeg la meg, og da jeg våknet neste dag for å se på resultatene, fant jeg ut:

     startet:   ons   Jul   26   22:55:27   2017 
    stoppet:   ons   Jul   26   23:02:28   2017 

Det viste seg at det bare tok 7 minutter! Jeg trodde det ville ta 7 timer, og det var 60 ganger raskere enn jeg forventet! Det er litt synd at hash-verdien ikke ble sprengt. Det ser ut til at "werner123456!!!" ikke er i passordboken. Det ser ut til at jeg må forberede en 100G passordbok, men det er veldig upraktisk å lagre og overføre en så stor ordbok. Er det ingen annen måte? Selvfølgelig, husk angrepsmodusen? Vi har brukt "Straight"-modusen. La oss deretter studere flere andre moduser.

7. Oppsummering

Når du bruker hashcat til å eksplodere hash, er det første å finne den nøyaktige hash. Ulike systemer og forskjellig programvare har forskjellige plasseringer for å lagre hash, så du må finne ut hash-verdien nøyaktig. Den andre er å bedømme hash-typen riktig, avgjøre om hashcat støtter denne typen hash, og velge riktig-m-parameter, ellers er det nesten umulig å lykkes; Den tredje er at passordordboken bør være bedre Hvorvidt eksplosjonen kan lykkes til slutt, avhenger av ordboken. Selv om en større passordbok ikke er bedre, er det fortsatt bedre å være større. hashcat er også kjent for sin hastighet. Store ordbøker er ikke et problem for hashcat. Her er en bedre ordbok registrert: Tidligere lekkasjeporter + vanlig sett med svake passordordbøker. 7Z , dekomprimeringspassordet er: anywlan. I tillegg, hvis du samler mange små ordbøker, kan du slå sammen, sortere og deduplisere de små ordbøkene for å få en stor ordbok for Hashcat-eksplosjon. Hvis de små ordbøkene er i samme katalog, kan du gjøre det ved å bruke én kommando:

         cat   *   |   sort   |   uniq   >   Merge.dic 

Hva om små ordbøker er organisert etter kategorier og distribuert i flerlagskataloger? Det er åpenbart ikke mulig å bare bruke kattekommandoen, men faktisk er det bare én kommando. Forutsatt at alle små ordbøker er lagret i katalogen MyDictionary, kan kommandoen skrives slik:

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

Førre:Kva typer krypterte filer kan dokument Passord Recovery Master dekryptere? Følgjande er filformata det støttar for krakking:
Neste:Flere angrepsmodus i hashcat.
  • Fokuser på Word, Excel, PPT, PDF, RAR, ZIP, 7Z, komprimerte pakker, Office krypterte filer opplåsing og dekryptering
  • Vi gir brukere høykvalitets filkomprimert pakkepassordgjenoppretting, PDF-opplåsing Word-passordgjenoppretting
  • Opphavsrett © Document Password Recovery Master Online dekrypteringsplattform