| # | Mode |
|---|---|
| 0 | rovný |
| 1 | kombinace |
| 3 | Brute-force |
| 6 | Hybridní seznam slov + maska |
| 7 | hybridní maska + seznam slov |
Tento režim útoku je také známý jako „útok slovníku". Není co říct, jen daný slovník, hashcat přečte obsah slovníku řádek po řádku, vypočítá hodnotu hash každého řádku a porovná ji s cílovou hodnotou hash.
Příklad:
hashcat -a 0 -m 400 příklad400.hash příklad.dict
Baidu mi řekl, že kombinace je podstatné jméno, což znamená: "kombinace; konsorcium; kombinace hesel; kombinace spodního prádla". Tento režim útoku je ve skutečnosti velmi jednoduchý, spočívá v kombinaci obsahu dvou slovníků hesel. Použití tohoto režimu útoku vyžaduje určení dvou slovníků hesel. Předpokládejme, že máme dva slovníky hesel dict1.txt a dict2.txt, jejichž obsah je:
lov Kočička rainbow
a
paris rock
pak příkaz:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Slovník, který se ve skutečnosti pokusil, byl:
huntingparis huntingrock kittyparis kittyrock rainbowparis rainbowrock
Slova v dict1.txt vlevo a slova v dict2.txt vpravo, celkem 3×2=6.
Parametry související s tímto vzorem jsou:
-j, - -rule-left -k, - -rule-right
-Pravidla po j působí na levé straně a pravidla po-k působí na pravé straně, jako je přidání parametru-j' $-', pak skutečný slovník, který se pokusil, je:
hunting-paris Lovecké skály kitty-paris kitty-rock rain-bowparis rain-bowrock
Přidat parametr-j'^!', Pak skutečný slovník je:
! LovkyPaříž ! lovecká skála ! kočičkaPaříž ! kočičkarock ! RainbowPaříž ! rainbowrock
Přidejte parametr-k'^ >', pak skutečný slovník je:
hunting > paříž Lov > Skála Kočička Paříž kitty > rock déšť > bowparis rain > bowrock
Jaké je toto pravidlo? Použití "$" a "^" je podobné použití regulárních výrazů, takže jsou regulární? Ve skutečnosti ne, pravidla hashcatu jsou implementována sama, což je další velká část obsahu. Podrobnosti viz Útok založený na pravidlech
Zkuste danou sadu znaků Různé kombinace. Podle oficiální wiki hashcat je tato metoda zastaralá a ve všech směrech byla nahrazena útokem na masku, takže nebude prováděn žádný výzkum,
Jedná se o relativně novou metodu útoku, příklad je následující:
hashcat -a 3 -m 0 md5.hash ? Já? Já? Já? Já? l
Ačkoli podle tabulky "Režimy útoku"-a 3 odpovídá hrubé síle, ve skutečnosti-a 3 používá útok masky. Mask Attack lze považovat za pokročilou hrubou sílu. Parametr
-m se používá ke specifikaci typu funkce hash a hodnota md5 je uložena v souboru md5.hash. Klíčem je poslední řetězec "? l? l? l? l? l" Takový řetězec se nazývá maska.
Maska je řetězec složený z několika zástupných symbolů. "? l" je zástupný symbol, kde "?" je klíčové slovo, které se používá k úpravě následujícího "l" dohromady představuje sadu znaků Kromě "? l" může být také "? u", "? d", "? h", "? h", "? s", "? a" a "? b" představují sadu znaků, jak je uvedeno v následující tabulce.
| ? | Charset |
|---|---|
| l | abcdefghijklmnopqrstuvwxyz |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789ABCDEF |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? Já? Ty? Díky? s |
| b | 0 – 0xff |
Tímto způsobem chápeme, že „? l? l? l? l? l "je ve skutečnosti ekvivalentní kryptografickému slovníku:
aaaaa aaaab ... zzzzz
Stejným způsobem je "? l? u? d" ekvivalentní slovníku hesel:
aA0 aA1 ... bA0 ... zZ9
Sada znaků ve výše uvedené tabulce je vestavěná v hashcatu, sadu znaků můžeme zadat i sami:
- -custom-charset1= sada znaků 1 - -custom-charset2= sada znaků 2 - -custom-charset3= sada znaků 3 - -custom-charset4= sada znaků 4
Parametr – custom-charsetN může být zkrácen na-n, například – custom-charset1 může být zkrácen na-1. Sada znaků zadaných-n je zadána v masce jako zástupný symbol "? N", například:
-1 abc123 ? 1? 1? 1
je ekvivalentní slovníku hesel:
aaa aab ... aa3 ... 333
-N Kromě řetězce představujícího sadu znaků může být také. Soubor končící hcchr, ve kterém je uložena sada znaků. hashcat je dodáván s mnoha soubory. hcchr v adresáři charsets/instalačního balíčku.
Sbírka znaků, kterou reprezentuje zástupný symbol "??", je samotná "?". Kromě toho, když se zbývající znaky používají jako zástupné symboly, představují samotné znaky, například "? lwerner? d" je ekvivalentní slovníku hesel:
awerner0 awerner1 ... zwerner9
S výše uvedenými znalostmi je snadné porozumět Masce. Maska se skládá z několika zástupných symbolů, každý zástupný symbol je sada znaků a maska je kombinací jednotlivých sad zástupných znaků. Počet zástupných symbolů se rovná délce hesla. Jaké jsou výhody tohoto návrhu ve srovnání s jednoduchou sadou znaků a délkou hesla?
Předpokládejme, že známe něčí heslo, které má celkem 7 číslic. První číslice jsou velká písmena, další 3 číslice jsou malá písmena a poslední 3 číslice jsou číslice. Pokud se jedná o tradiční crack brutální silou, vyžaduje znakové sady A-Z, A-Z a 0-9, celkem 62 znaků. Je třeba pokusit až 62^7=3 521 614 606 208krát, což je bilionová úroveň. Použití masky k popisu tohoto hesla je "\u\l\l\l\d\d\d", které se snadno vypočítá. Existuje celkem (26^4) × (10^3) =456 976 000 možností, což je miliardy úrovně, což je o 4 řády velikosti menší než předchozí metoda.
Abychom vzali krok zpět, i když neznáme distribuci hesel, lze pomocí masky snadno simulovat efekt tradičního crackingu hrubou silou.
Otázkou nyní je, že maska je pevná, kolik zástupných symbolů v ní je napsáno mrtvo a co bychom měli dělat, když neznáme délku hesla. Je v pořádku, že heslo je příliš dlouhé, pokud má něčí heslo pouze 3 číslice a my máme 4 zástupné symboly a nemůžeme ho vyřešit, nebyla by to velká ztráta? Měli bychom začít od 1 a napsat masky každé délky? To je obtížné.
Existují dvě řešení. Jedním z nich je použít soubor masky, zapsat více masek do jednoho souboru a poté zadat tento soubor na příkazovém řádku. Všimněte si, že soubor masky musí končit písmenem. hcmask.
Například obsah test.hcmask je:
? l ? Já? l ? Já? Já? l ? Já? Já? Já? l
Použijte tento soubor následujícím příkazem:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
Dalším řešením je přidání parametru – přírůstek, který říká hashcatovi, že stiskne masku, kterou jsme dali, začněte s jedním zástupným symbolem a zkuste další dva, tři, dokud nezadáme délku. Napište zástupný symbol "abc" pro toto a poté vypočítejte hodnotu md5 následujícího řetězce:
a:0cc175b9c0f1b6a831c399e269772661 b:92eb5ffee6ae2fec3ad71c777531578f c:4a8a08f09d37b73795649038408b5f33 ab:187ef4436122d1cc2f40dc2b92f0eba0 ac:e2075474294983e013ee4dd2201c7a73 ba:07159c47ee1b19ae4fb9c40d480856c4 bc:5360af35bde9ebd8f01f492dc059593c ca:5435c69ed3bcc5b2e4d580e393e373d3 cb:d0d7fdb6977b26929fb68c6083c0b439 abc:900150983cd24fb0d6963f7d28e17f72 abc:900150983cd24fb0d6963f7d28e17f72 bac:79ec16df80b57696a03bb364410061f3 bca:b64eab8ce39e013604e243089c687e4f cba:3944b025c9ca7eec3154b44666ae04a0 cab:16ecfd64586ec6c1ab212762c2c38a90
Předcházející ":" je původní řetězec, pro který má být vypočtena hodnota hash, a po ":" je vypočtená hodnota hasn. Uložte výše uvedený obsah do souboru md5.hash a poté spusťte následující příkaz:
hashcat -m 0 -a 3 - -show - -uživatelské jméno md5.hash abc
Přidejte parametr – uživatelské jméno je proto, že před každou naší hodnotou hash je původní řetězec Pokud nepřidáte tento parametr, hashcat zobrazí, že nebyla nalezena správná hodnota hash Přidáním tohoto parametru si hashcat myslí, že řetězec před hodnotou hash je uživatelské jméno pro hodnotu hash, takže hodnota hash může být hladce načtena.
Výsledkem spuštění je, že byl vyřešen pouze jeden hash:
900150983cd24fb0d6963f7d28e17f72:abc
Nyní přidejte parametr – přírůstek a spusťte znovu:
hashcat -m 0 -a 3 - -show - -přírůstek - -uživatelské jméno md5.hash abc
Tentokrát byly vyřešeny další dva hash:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Je vidět, že – přírůstek hraje roli. Ale zároveň také víme, že s tímto parametrem bude hashcat zkoušet pouze A, ab a abc v pořadí a nebude uspořádat a kombinovat zástupné symboly mimo pořadí a zkoušet různé možnosti.
Hybridní útok je podobný kombinátorskému útoku, zatímco hybridní útok kombinuje slovník a masku.
Předpokládejme, že už máme slovník example.dict, který zní následovně:
Dobrý den werner
pak příkaz:
hashcat -m 0 -a 6 md5.hash příklad.dict ? Díky? d
je ekvivalentní jednoduchému použití slovníku:
hello00 hello01 ... Ahoj99 werner00 werner01 ... werener99
pak příkaz:
hashcat -m 0 -a 7 md5.hash ? Díky? dexample.dict
je ekvivalentní jednoduchému použití slovníku:
00hello ... 99Ahoj 00werner 01werner ... 99werener