| # | Mode |
|---|---|
| 0 | suora |
| 1 | yhdistelmä |
| 3 | Brute-force |
| 6 | Hybridisanaluettelo + maski |
| 7 | Hybridisanaluettelo + sanaluettelo |
Tätä hyökkäystilaa kutsutaan myös nimellä" Sanakirjahyökkäys ". Ei ole paljon sanottavaa, vain annettu sanakirja, hashcat lukee sanakirjan sisällön rivi riviltä, laskee kunkin rivin hash-arvon ja vertaa sitä kohde-hash-arvoon.
Esimerkki:
hashcat -a 0 -m 400 esimerkki400.hash esimerkki.dict
Baidu kertoi minulle, että yhdistelmä on substantiivi, joka tarkoittaa: "yhdistelmä; yhdistelmä; salasanayhdistelmä; haalarit ja alusvaatteet". Tämä hyökkäystila on itse asiassa hyvin yksinkertainen, se on kahden salasanasanakirjan sisällön yhdistäminen. Tämän hyökkäystilan käyttäminen edellyttää kahden salasanan sanakirjan määrittämistä. Oletetaan, että meillä on kaksi salasanasanakirjaa dict1.txt ja dict2.txt, joiden sisältö on:
metsästys Kissa Sateenkaari
ja
Pariisi rock
Sitten komento:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Oikeastaan yritetty sanakirja oli:
huntingparis Metsästyskivi kissapariisi kittyrock rainbowparis rainbowrock
sanat dict1.txt:ssä vasemmalla ja sanat dict2.txt:ssä oikealla, yhteensä 3×2=6.
Tähän tilaan liittyvät parametrit ovat:
-j, - -rule-left -k, - -rule-right
-j:n jälkeiset säännöt vaikuttavat vasemmalle puolelle ja-k:n jälkeiset säännöt vaikuttavat oikealle puolelle, kuten lisäämällä parametri-j' $-', sitten varsinainen yritetty sanakirja on:
hunting-paris Metsästyskivi Kitty-Pariisi kitty-rock Sade-BowParis rain-bowrock
Lisää parametri-j '^!', Sitten todellinen kokeiltu sanakirja on:
! Metsästyspariisi ! metsästyskivi ! KissaPariisi ! kittyrock ! SateenkaariPariisi ! rainbowrock
lisää parametrin-k '^ >', sitten varsinainen yritetty sanakirja on:
metsästys > paris metsästys > kivi kitty > Pariisi kitty > rock Sade > bowparis rain > bowrock
Mikä on tämä sääntö? "$" ja "^": n käyttö on samanlainen kuin säännölliset lausekkeet, joten ovatko ne säännöllisiä? Itse asiassa ei, Hashcatin säännöt toteutetaan itse, mikä on toinen suuri osa sisältöä. Katso lisätietoja kohdasta Rule-based Attack
. Yritä tiettyä merkkijoukkoa Erilaisia yhdistelmiä. Hashcatin virallisen wikin mukaan tämä menetelmä on vanhentunut ja korvattu kaikin puolin maskihyökkäyksellä, joten tutkimusta ei tehty
Tämä on suhteellisen uusi hyökkäysmenetelmä Esimerkki on seuraava:
hashcat -a 3 -m 0 md5.hash ? minä? minä? minä? minä? l
Vaikka "hyökkäystilat"-taulukon mukaan-a 3 vastaa raakaa voimaa, itse asiassa-a 3 käyttää naamiohyökkäystä. Maskihyökkäystä voidaan pitää edistyneenä raakana voimana.
-m-parametria käytetään määrittämään hash-funktion tyyppi, ja md5-arvo on tallennettu md5.hash-tiedostoon. Avain on viimeinen merkkijono "? l? l? l? l? l? l". Tällaista merkkijonoa kutsutaan maskiksi.
Maski on merkkijono, joka koostuu useista paikkamerkeistä. "? l" on paikkamerkki, jossa "?" on avainsana, jota käytetään seuraavan "l": n muokkaamiseen. "? l" yhdessä edustaa merkkijoukkoa "? l": n lisäksi voi olla myös "? u", "? d", "? h", "? h", "? s", "? a" ja "? b" edustavat merkkijoukkoa seuraavassa taulukossa.
| ? | Merkkijoukko |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| H | 0123456789abcdef |
| H | 0123456789abcdef |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? minä? sinä? d? s |
| b | 0 – 0xff |
Tällä tavalla ymmärrämme, "? l? l? l? l? l" vastaa itse asiassa salasanasanakirjaa:
aaaaa aaaab ... zzzzz
Samalla tavalla "? l? u? d" vastaa salasanasanakirjaa:
aA0 aA1 ... bA0 ... zZ9
Yllä olevan taulukon merkkijoukko on sisäänrakennettu Hashcatiin, voimme myös määrittää merkkijoukon itse:
- -custom-charset1= merkkijoukko 1 - -custom-charset2= merkkijoukko 2 - -custom-charset3= merkkijoukko 3 - -custom-charset4= merkkijoukko 4
Parametri – custom-charsetN voidaan lyhentää-n:ksi, kuten – custom-charset1 voidaan lyhentää-1:ksi. -N:llä määritetty merkkijoukko määritetään Maskissa paikkamerkkinä "? N", kuten:
-1 abc123 ? 1? 1? 1
vastaa salasanasanakirjaa:
aaa aab ... aa3 ... 333
-N Merkkijoukkoa edustavan merkkijonon lisäksi se voi olla myös tiedosto, joka päättyy. hcchr, ja merkkijoukko on tallennettu tiedostoon. Hashcatin mukana tulee monia. hcchr-tiedostoja asennuspaketin charsets/ -hakemistossa.
Paikkamerkin "??" edustama merkkijoukko on itse "?". Lisäksi, kun muita merkkejä käytetään paikkamerkkeinä, ne edustavat itse merkkejä. Esimerkiksi "? lwerner? d" vastaa salasanasanakirjaa:
awerner0. awerner1 ... zwerner9
Yllä olevien tietojen avulla on helppo ymmärtää Maskia. Maski koostuu useista paikkamerkeistä, jokainen paikkamerkki on merkkijoukko ja maski on yhdistelmä jokaisesta paikkamerkkijoukosta. Paikkamerkkien lukumäärä on yhtä suuri kuin salasanan pituus. Mitä hyötyä tällaisesta suunnittelusta on verrattuna yksinkertaisesti merkkijoukkoon ja salasanan pituuteen?
Oletetaan, että tiedämme jonkun salasanan, jossa on yhteensä 7 numeroa. Ensimmäinen numero on iso kirjain, seuraavat 3 numeroa ovat pieniä kirjaimia ja viimeiset 3 numeroa ovat numeroita. Jos kyseessä on perinteinen brutal force-krakkaus, se vaatii merkkijoukot A-Z, A-Z ja 0-9, yhteensä 62 merkkiä, ja sitä on yritettävä jopa 62^7=3 521 614 606 208 kertaa, mikä on biljoonan taso. Maskin käyttäminen tämän salasanan kuvaamiseen on "\u\l\l\l\d\d\d", joka on helppo laskea. Mahdollisuuksia on yhteensä (26^4) × (10^3) =456 976 000, mikä on 100 miljoonaa tasoa, 4 suuruusluokkaa pienempi kuin edellinen menetelmä.
Otetaan askel taaksepäin, vaikka emme tiedä salasanojen jakautumista, on helppo simuloida perinteisen brute force-krakkauksen vaikutusta maskin avulla.
Nyt kysymys on, että naamio on kiinteä, kuinka monta paikkamerkkiä siinä on kirjoitettu kuolleeksi ja mitä meidän pitäisi tehdä, jos emme tiedä salasanan pituutta. Salasana on liian pitkä, jos jonkun salasanassa on vain 3 numeroa ja meillä on 4 paikkamerkkiä, emmekä voi ratkaista sitä, eikö se olisi suuri menetys? Pitäisikö meidän aloittaa 1:stä ja kirjoittaa kunkin pituiset naamiot uudelleen? Kuinka hankalaa se on.
On olemassa kaksi ratkaisua. Yksi on käyttää naamiotiedostoa, kirjoittaa useita naamioita yhteen tiedostoon ja määrittää sitten tiedosto komentoriville. Huomaa, että naamiotiedoston on lopetettava. hcmask.
Esimerkiksi test.hcmask sisältö on:
? l ? minä? l ? minä? minä? l ? minä? minä? minä? l
Käytä sitten tiedostoa seuraavalla komennolla:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
Toinen ratkaisu on lisätä parametri – inkrementti, joka kertoo hashcatille, että noudata antamaamme maskia ja aloita yhdestä paikkamerkistä Yritä ja kokeile kahta, kolmea, kunnes antamme pituuden. Jos kirjoitamme tämän paikkamerkin "abc", laskemme sitten seuraavan merkkijonon MD5-arvon:
a:0cc175b9c0f1b6a831c399e269772661 b:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 ac:e2075474294983e013ee4dd2201c7a73 ba:07159c47ee1b19ae4fb9c40d480856c4 eK:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 cb:d0d7fdb6977b26929fb68c6083c0b439 abc:900150983cd24fb0d6963f7d28e17f72 abc:900150983cd24fb0d6963f7d28e17f72 bac:79ec16df80b57696a03bb364410061f3 bca:b64eab8ce39e013604e243089c687e4f cba:3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
":" edeltää alkuperäinen merkkijono, jonka hash-arvo lasketaan, ja ":" seuraa laskettu hasn-arvo. Tallenna yllä oleva sisältö tiedostoon md5.hash ja suorita sitten seuraava komento:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Lisää parametri – käyttäjätunnus johtuu siitä, että jokaista hash-arvoamme edessä on alkuperäinen merkkijono Jos et lisää tätä parametria, hashcat näyttää, että oikeaa hash-arvoa ei löydy. Lisäämällä tämän parametrin hashcat ajattelee, että hash-arvoa edeltävä merkkijono on käyttäjätunnus, jolle hash-arvo on, jotta hash-arvo voidaan ladata sujuvasti.
Suorituksen tulos on, että vain yksi hash on ratkaistu:
900150983cd24fb0d6963f7d28e17f72:abc
Lisää parametri – lisäys ja suorita uudelleen:
hashcat -m 0 -a 3 - -show - -lisäys - -käyttäjätunnus md5.hash abc
Tällä kertaa ratkaistiin kaksi muuta hash:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Voidaan nähdä, että – inkrementti toimii. Mutta samalla tiedämme myös, että tällä parametrilla hashcat yrittää vain a, ab ja abc järjestyksessä, eikä järjestä ja yhdistä paikkamerkkejä järjestyksessä ja kokeile erilaisia mahdollisuuksia.
Hybridihyökkäys on samanlainen kuin Combinator Attack yhdistää kaksi sanakirjaa, kun taas hybridihyökkäys yhdistää sanakirjan ja maskin.
Oletetaan, että meillä on jo sanakirja esimerkki.dict, joka kuuluu seuraavasti:
Hei werner
Sitten komento:
hashcat -m 0 -a 6 md5.hash esimerkki.dict ? d? d
vastaa pelkkää sanakirjan käyttöä:
hello00 Hei01 ... Hei 99 werner00 werner01 ... werener99
Sitten komento:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
vastaa pelkkää sanakirjan käyttöä:
00Hei 01Hei ... 99Hei 00werner 01werner ... 99werener