| # | Mode |
|---|---|
| 0 | prosto |
| 1 | Combination |
| 3 | Brute-force |
| 6 | Hybrydowa lista słów + maska |
| 7 | Hybrydowa maska + lista słów |
Ten tryb ataku jest również znany jako „atak słownika". Nie ma nic do powiedzenia. Biorąc pod uwagę słownik, hashcat odczyta zawartość słownika wiersz po wierszu, obliczy wartość skrótu każdego wiersza i porówna ją z docelową wartością skrótu.
Przykład:
hashcat -a 0 -m 400 przykład400.hash przykład.dict
Baidu powiedział mi, że kombinacja to rzeczownik, co oznacza: „kombinacja; konsorcjum; kombinacja haseł; kombinacje i bielizna ". Ten tryb ataku jest w rzeczywistości bardzo prosty, polega na łączeniu zawartości dwóch słowników haseł. Korzystanie z tego trybu ataku wymaga określenia dwóch słowników haseł. Załóżmy, że mamy dwa słowniki haseł dict1.txt i dict2.txt, których zawartość to:
polowanie Kot Tęcza
i
Paryż rock
Następnie polecenie:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Właściwie wypróbowany słownik to:
huntingparis Skała polownicza KotyParyż kittyrock TęczowyParyż rainbowrock
Słowa w dict1.txt są po lewej stronie, a słowa w dict2.txt po prawej stronie, w sumie 3×2=6.
Parametry związane z tym wzorcem to:
-j, - -rule-left -k, - -rule-right
-reguła po j działa po lewej stronie, reguła po-k działa po prawej stronie, np. dodanie parametru-j' $-', wówczas faktycznie wypróbowany słownik to:
hunting-paryż Łownictwo-skała Kot-Paryż kitty-rock Deszcz-łukParyż rain-bowrock
Dodaj parametr-j '^!', Następnie faktycznie wypróbowany słownik to:
! PolowanieParyż ! Skała polownicza ! kotkiParyż ! kotka skała ! TęczaParyż ! rainbowrock
Dodaj parametr-k '^ >', wówczas faktycznie wypróbowany słownik to:
polowanie > paryż Polowanie > Skała Kot > Paryż Kot > rock deszcz > bowparyż rain > bowrock
Co to za zasada? Używanie „$ "i „^" jest podobne do użycia wyrażeń regularnych, więc czy są one regularne? Właściwie nie, reguły Hashcata są wdrażane samodzielnie, co jest kolejną dużą częścią treści. Szczegółowe informacje można znaleźć w punkcie Atak oparty na regułach
Próbuj podanego zestawu znaków Różne kombinacje. Według oficjalnego wiki hashcat metoda ta jest przestarzała i została w pełni zastąpiona atakiem maski, więc nie ma żadnych badań,
Jest to stosunkowo nowatorska metoda ataku, przykład jest następujący:
hashcat -a 3 -m 0 md5.hash ? Ja? Ja? Ja? Ja? l
Chociaż zgodnie z tabelą „Tryby ataku "-a 3 odpowiada brutalnej siłie, w rzeczywistości-a 3 używa ataku maski. Atak maski można postrzegać jako zaawansowaną brutalną siłę. Parametr
-m służy do określenia typu funkcji skrótu, a wartość md5 jest przechowywana w pliku md5.hash. Kluczem jest ostatni ciąg „? l? l? l? l? l? l ". Taki ciąg nazywany jest maską.
Maska to ciąg znaków składający się z kilku znaków zastępczych. "? l" to symbol zastępczy, w którym "?" jest słowem kluczowym, używanym do modyfikacji następnego "l". "? l" razem reprezentuje zestaw znaków. Oprócz "? l" może być także „? u ","? d ","? h ","? h ","? s ","? a "i"? b "reprezentują zestaw znaków, jak pokazano w poniższej tabeli.
| ? | Zestaw znaków |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789abcdef |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? Ja? Ty? d? s |
| b | 0 – 0xff |
W ten sposób rozumiemy, że „? l? l? l? l? l "jest w rzeczywistości odpowiednikiem słownika haseł:
aaaaa aaaab ... zzzzz
W ten sam sposób „? l? u? d "jest równoważne słownikowi haseł:
aA0 aA1 ... bA0 ... zZ9
Zestaw znaków w powyższej tabeli jest wbudowany w hashcat, zestaw znaków możemy również określić sami:
- -custom-charset1= zestaw znaków 1 - -custom-charset2= zestaw znaków 2 - -custom-charset3= zestaw znaków 3 - -custom-charset4= zestaw znaków 4
Parametr – custom-charsetN można skrócić do-n, na przykład – custom-charset1 można skrócić do-1. Zestaw znaków określony za pomocą-n jest określony w masce jako zastępca „? N ", np.:
-1 abc123 ? 1? 1? 1
jest równoważny słownikowi haseł:
aaa ... aa3 ... 333
-N Oprócz ciągu reprezentującego zestaw znaków może to być także plik kończący się na. hcchr, w którym przechowywany jest zestaw znaków. hashcat zawiera wiele plików. hcchr w katalogu charsets/pakietu instalacyjnego.
Zbiór znaków reprezentowany przez symbol zastępczy „?? "to samo „?". Ponadto, gdy pozostałe znaki są używane jako symbole zastępcze, reprezentują one same znaki. Na przykład „? lwerner? d "jest równoważne słownikowi haseł:
awerner0 awerner1 ... zwerner9
Dzięki powyższej wiedzy łatwo jest zrozumieć maskę. Maska składa się z kilku symbolów zastępczych, każdy symbol zastępczy jest zestawem znaków, a maska jest kombinacją zestawów znaków zastępczych. Liczba zastępców jest równa długości hasła. Jakie są zalety takiego projektu w porównaniu z prostym podaniem zestawu znaków i długości hasła?
Załóżmy, że znamy czyjeś hasło w sumie 7 cyfr. Pierwsza cyfra to wielka litera, następne 3 cyfry to małe litery, a ostatnie 3 cyfry to cyfry. Jeśli jest to tradycyjne łamanie brute force, wymagane są zestawy znaków A-Z, A-Z i 0-9, w sumie 62 znaki, a maksymalna próba wymaga 62^7=3 521 614 606 208 razy, co jest bilionem poziom. Używanie maski do opisania tego hasła oznacza „\u\l\l\l\d\d\d ", które jest łatwe do obliczenia. Istnieje łącznie (26^4) × (10^3) =456 976 000 możliwości, czyli 100 milionów poziomów, o 4 rzędy wielkości mniej niż poprzednia metoda.
Cofnijąc się o krok, nawet jeśli nie znamy rozkładu haseł, łatwo jest użyć maski do symulacji efektu tradycyjnego łamania brute force.
Pytanie brzmi teraz, czy maska jest stała, ile symboli zastępczych jest w niej zapisanych martwo i co powinniśmy zrobić, jeśli nie znamy długości hasła. W porządku, jeśli hasło jest zbyt długie, jeśli hasło kogoś ma tylko 3 cyfry, a my mamy 4 zastępki zastępcze i nie możemy go rozwiązać, czy nie byłoby to wielka strata? Czy musimy zacząć od 1 i zapisać maski każdej długości? To kłopotliwe.
Istnieją dwa rozwiązania. Jednym z nich jest użycie pliku masek, zapisanie wielu masek w jednym pliku, a następnie wskazanie pliku w wierszu poleceń. Należy pamiętać, że plik maski musi kończyć się na. hcmask.
Na przykład zawartość test.hcmask to:
? l ? Ja? l ? Ja? Ja? l ? Ja? Ja? Ja? l
Następnie użyj następującego polecenia, aby użyć pliku:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
Innym rozwiązaniem jest dodanie parametru – increment, który mówi hashcatowi, aby naciskał na podaną przez nas maskę i zaczął od jednego zastępcy. Spróbuj dwóch, trzech, aż do podanej przez nas długości. Na przykład napiszemy symbol zastępczy „abc”, a następnie obliczymy wartość md5 następującego ciągu:
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
Poprzedzający „: "znajduje się oryginalny ciąg, dla którego należy obliczyć wartość hash, a po „:" znajduje się obliczona wartość hasn. Zapisz powyższą zawartość w pliku md5.hash, a następnie uruchom następujące polecenie:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Dodaj parametr – nazwa użytkownika, ponieważ przed każdą z naszych wartości skrótu znajduje się oryginalny ciąg, jeśli nie dodaj tego parametru, hashcat pokaże, że nie znaleziono prawidłowej wartości skrótu. Dodając ten parametr, hashcat pomyśli, że ciąg przed wartością skrótu jest nazwą użytkownika dla wartości skrótu, dzięki czemu wartość skrótu może być płynnie załadowana.
Wynik uruchomienia jest taki, że rozwiązano tylko jeden hash:
900150983cd24fb0d6963f7d28e17f72:abc
Teraz dodaj parametr – increment i uruchom ponownie:
hashcat -m 0 -a 3 - -show - -increment - -username md5.hash abc
Tym razem rozwiązano dwa kolejne skróty:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Widać, że – przyrost odegrał rolę. Ale jednocześnie wiemy również, że dzięki temu parametrowi hashcat będzie próbował jedynie A, ab i abc w kolejności i nie będzie układał i łączył symbolów zastępczych poza kolejnością, próbując różnych możliwości.
Atak hybrydowy jest podobny do ataku kombinatora. Atak kombinatora łączy dwa słowniki, natomiast atak hybrydowy łączy słownik i maskę. Oba są prawie takie same.
Załóżmy, że mamy już słownik example.dict, który brzmi następująco:
Witam werner
Następnie polecenie:
hashcat -m 0 -a 6 md5.hash przykład.dict ? d? d
jest równoznaczne z prostym użyciem słownika:
hello00 Witam01 ... Witam99 werner00 werner01 ... werener99
Następnie polecenie:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
To równoznaczne z użyciem słownika:
00hello 01Witam ... 99Witam 00Wernera 01werner ... 99werener