| # | Mode |
|---|---|
| 0 | drept |
| 1 | combinație |
| 3 | Brute-force |
| 6 | Lista de cuvinte hibridă + mască |
| 7 | mască hibridă + listă de cuvinte |
Acest mod de atac este cunoscut și sub numele de „atac dicționar". Nu este nimic de spus, dar dat un dicționar, hashcat va citi conținutul dicționarului rând cu rând, va calcula valoarea hash a fiecărei rânduri și o va compara cu valoarea hash țintă.
Exemplu:
hashcat -a 0 -m 400 example400.hash example.dict
Baidu mi-a spus că combinația este un substantiv, care înseamnă: „combinație; combinație; combinație; combinație de parole; salopete ". Acest mod de atac este de fapt foarte simplu, adică combinarea conținutului a două dicționare de parole. Utilizarea acestui mod de atac necesită specificarea a două dicționare de parole. Să presupunem că avem două dicționare de parole dict1.txt și dict2.txt, ale căror conținut este:
vânătoare pisicuță Curcubeu
și
paris rock
Atunci comanda:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Dicționarul încercat de fapt este:
huntingparis stânca de vânătoare kittyparis kittyrock curcubeu paris rainbowrock
Cuvintele din dict1.txt sunt în stânga și cuvintele din dict2.txt sunt în dreapta, un total de 3×2=6.
Parametrii legați de acest model sunt:
-j, - -rule-left -k, - -rule-right
-Regula după j acționează pe partea stângă, iar regula după-k acționează pe partea dreaptă, cum ar fi adăugarea parametrului-j' $-', atunci dicționarul real încercat este:
hunting-paris Vânătoare-Stâncă kitty-paris kitty-rock ploaie-bowparis rain-bowrock
Adăugați parametrul-j '^!', Atunci dicționarul real încercat este:
! vânătoareparis ! huntingrock ! PisicuțăParis ! pisicuță ! curcubeuParis ! rainbowrock
adaugă parametrul-k '^ >', apoi dicționarul real încercat este:
vânătoare > paris Vânătoare > Stâncă Pisicuță > paris pisicuță > rock ploaie > bowparis ploaie > bowrock
Care este această regulă? Utilizarea „$ "și „^" este similară cu expresiile regulate, deci sunt regulate? De fapt, nu, regulile hashcat sunt implementate singure, ceea ce este o altă bucată mare de conținut. Pentru detalii, consultați atacul bazat pe reguli
. Încercați un anumit set de caractere Diverse combinații. Potrivit wiki-ului oficial hashcat, această metodă este depășită și a fost complet înlocuită cu atacul cu mască, așa că nu se vor face cercetări,
Aceasta este o metodă de atac relativ nouă. Exemplul este următorul:
hashcat -a 3 -m 0 md5.hash ? l? l? l? l? l
Deși conform tabelului „Moduri de atac ", -a 3 corespunde forței Brute, de fapt, -a 3 folosește atacul cu mască. Atacul cu mască poate fi privit ca o forță brută avansată. Parametrul
-m este folosit pentru a specifica tipul funcției hash, iar valoarea md5 este stocată în fișierul md5.hash. Cheia este ultimul șir „? l? l? l? l? l? l ". Un astfel de șir se numește mască.
O mască este un șir compus din mai multe substituente. "? l" este un substituent, în care "?" este un cuvânt cheie, folosit pentru a modifica "l" care urmează "? l" împreună reprezintă un set de caractere, pe lângă "? l", poate exista și „? u ","? d ","? h ","? h ","? s ","? a "și"? b ", setul de caractere reprezentat este prezentat în tabelul de mai jos.
| ? | set de caractere |
|---|---|
| l | abcdefghijklmnopqrstuvwxyz |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789ABCDEF |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? l? tu? d? s |
| b | 0 – 0xff |
În acest fel, înțelegem, „? l? l? l? l? l "este de fapt echivalent cu un dicționar de parole:
aaaaa aaaab ... zzzzz
În același mod, „? l? u? d "este echivalent cu un dicționar de parole:
aA0 aA1 ... bA0 ... zZ9
Setul de caractere din tabelul de mai sus este încorporat în hashcat, putem specifica și setul de caractere singuri:
- -custom-charset1= set de caractere 1 - -custom-charset2= set de caractere 2 - -custom-charset3= set de caractere 3 - -custom-charset4= set de caractere 4
Parametrul – custom-charsetN poate fi prescurtat la-n, de exemplu – custom-charset1 poate fi prescurtat la-1. Setul de caractere specificat cu-n este specificat sub forma substituentului "? N" în mască, cum ar fi:
-1 abc123 ? 1? 1? 1
este echivalent cu un dicționar de parole:
aaa aab ... aa3 ... 333
-N Pe lângă șirul care reprezintă setul de caractere, poate fi și un fișier care se termină cu. hcchr, iar setul de caractere este stocat în fișier. hashcat vine cu multe fișiere. hcchr în directorul charsets/al pachetului de instalare.
Colecția de caractere reprezentată de substituentul „?? "este „?" în sine. În plus, atunci când caracterele rămase sunt folosite ca substituente, ele reprezintă caracterele în sine. De exemplu, „? lwerner? d "este echivalent cu dicționarul de parole:
awerner0. awerner1 ... zwerner9
Cu cunoștințele de mai sus, este ușor să înțelegeți masca. O mască constă din mai multe substituente, fiecare substituent este un set de caractere, iar o mască este o combinație de seturi individuale de caractere substituente. Numărul de substituente este egal cu lungimea parolei. Care sunt beneficiile unui astfel de design în comparație cu pur și simplu un set de caractere și lungimea parolei?
Să presupunem că știm că parola cuiva are un total de 7 cifre. Prima cifră este o literă majusculă, următoarele 3 cifre sunt litere mici, iar ultimele 3 cifre sunt cifre. Dacă este un crack tradițional cu forță brută, necesită seturi de caractere A-Z, A-Z și 0-9, un total de 62 de caractere și trebuie încercate de până la 62^7=3 521 614 606 208 ori, ceea ce este nivelul unui trilion. Utilizarea mascii pentru a descrie această parolă este „\ u\l\l\l\d\d\d ", care este ușor de calculat. Există (26^4) × (10^3) =456 976 000 de posibilități, care este 100 de milioane de niveluri, cu 4 ordine de mărime mai mici decât metoda anterioară.
Pentru a face un pas înapoi, chiar dacă nu cunoaștem distribuția parolelor, este ușor să simulăm efectul spargerii tradiționale cu forță brută folosind mask.
Întrebarea acum este că masca este fixă, câte substituente sunt scrise moarte și ce ar trebui să facem dacă nu cunoaștem lungimea parolei. Este în regulă dacă parola este prea lungă Dacă parola cuiva are doar 3 cifre și avem 4 substituente și nu o putem rezolva, nu ar fi o mare pierdere? Trebuie să începem de la 1 și să scriem toate măștile de fiecare lungime? Cât de supărător este.
Există două soluții Una este să utilizați fișierul mask, să scrieți mai multe măști într-un singur fișier și apoi să specificați acest fișier pe linia de comandă. Rețineți că fișierul mask trebuie să se încheie cu. hcmask.
De exemplu, conținutul test.hcmask este:
? l ? l? l ? l? l? l ? l? l? l? l
Utilizați următoarea comandă pentru a utiliza fișierul:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
O altă soluție este să adăugați parametrul – increment, care spune hashcat să urmeze masca pe care am dat-o și să înceapă de la un substituent Încercați și încercați din nou două, trei până la lungimea pe care am dat-o. De exemplu, scriem substituentul „abc "pentru acest lucru și apoi calculăm valoarea md5 a următorului șir:
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
Înainte de ":" este șirul original pentru care trebuie calculată valoarea hash, iar după ":" este valoarea hasn calculată. Salvați conținutul de mai sus în fișierul md5.hash, apoi rulați următoarea comandă:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Adăugați parametrul – username se datorează faptului că fiecare dintre valorile noastre de hash are un șir original înainte, dacă nu adăugați acest parametru, hashcat va arăta că valoarea hash corectă nu a fost găsită. Adăugați acest parametru, hashcat va crede că șirul înainte de valoarea hash este numele de utilizator pentru care valoarea hash este valoarea hash, astfel încât valoarea hash să poată fi încărcată fără probleme.
Rezultatul rulării este că a fost rezolvat un singur hash:
900150983cd24fb0d6963f7d28e17f72:abc
Acum adăugați parametrul – increment, rulați din nou:
hashcat -m 0 -a 3 - -show - -increment - -username md5.hash abc
De data aceasta, încă două hash-uri au fost rezolvate:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Se vede că – incrementul joacă un rol. Dar, în același timp, știm și că, cu acest parametru, hashcat va încerca doar a, ab și abc în ordine și nu va aranja și combina substituentele în ordine și va încerca diverse posibilități.
Hybrid Attack este similar cu Combinator Attack combină două dicționare, în timp ce Hybrid Attack combină un dicționar și o mască.
Să presupunem că avem deja un dicționar example.dict care arată după cum urmează:
Buna ziua werner
apoi comanda:
hashcat -m 0 -a 6 md5.hash exempl.dict ? d? d
este echivalent cu pur și simplu utilizarea unui dicționar:
hello00 Bună01 ... Bună99 werner00 werner01 ... werener99
apoi comanda:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
este echivalent cu utilizarea simplă a unui dicționar:
00hello 01Buna ziua ... 99Buna ziua 00werner 01werner ... 99werener