| # | Mode |
|---|---|
| 0 | lige |
| 1 | kombination |
| 3 | Brute-force |
| 6 | Hybrid ordliste + maske |
| 7 | Hybrid maske + ordliste |
Denne angrebstilstand er også kendt som" ordbogsangreb ". Der er ikke meget at sige, men givet en ordbog vil hashcat læse indholdet i ordbogen linje for linje, beregne hash-værdien for hver linje og sammenligne den med mål-hash-værdien.
Eksempel:
hashcat -a 0 -m 400 eksempel400.hash eksempel.dict
Baidu fortalte mig, at kombination er et navneord, der betyder: "kombination; konsortium; adgangskodekombination; jumpsuit og undertøj". Denne angrebstilstand er faktisk meget enkel, det vil sige at kombinere indholdet af to adgangskodeordbøger. Brug af denne angrebstilstand kræver ikke mere end to adgangskodeordbøger. Antag, at vi har to adgangskodeordbøger dict1.txt og dict2.txt, hvis indhold er:
jagt Kille Regnbue
og
paris rock
Så kommandoen:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Den ordbog, der faktisk blev forsøgt, var:
huntingparis Jagtsten kittyparis kittyrock Regnbueparis rainbowrock
Ordene i dict1.txt er til venstre og ordene i dict2.txt er til højre, i alt 3×2=6.
Parametrene relateret til dette mønster er:
-j, - -rule-left -k, - -rule-right
-Reglen efter j virker på venstre side, og reglen efter-k virker på højre side, såsom tilføjelse af parameteren-j' $-', så er den faktiske ordbog, der prøves:
hunting-paris Jagt-klippe kitty-paris kitty-rock Regn-BowParis rain-bowrock
Tilføj parameter-j '^!', Så er den faktiske ordbog, der prøves:
! JagtParis ! Jagtsten ! katteparis ! kittyrock ! RegnbueParis ! rainbowrock
Tilføj parameteren-k '^ >', så er den faktiske ordbog, der prøves:
jagt > paris Jagt > rock kitty > paris kitty > rock Regn > bowparis rain > bowrock
Hvad er denne regel? Brugen af "$" og "^" ligner regulære udtryk, så er de regulære? Faktisk er det ikke tilfældet. Hashcats regler implementeres af sig selv. Dette er endnu en stor del af indholdet. For detaljer, se Rule-based Attack
. Prøv et givet tegnsæt Forskellige kombinationer. Ifølge Hashcats officielle wiki er denne metode forældet og fuldt ud erstattet af maskeangreb, så der vil ikke blive foretaget nogen forskning,
Dette er en relativt ny angrebsmetode Eksempel er som følger:
hashcat -a 3 -m 0 md5.hash ? l? l? l? l? l
Selvom-a 3 ifølge tabellen "Angrebstilstande" svarer til brutal kraft, bruger-a 3 faktisk maskeangreb. Maskeangreb kan betragtes som avanceret brutal kraft.
-m-parameteren bruges til at angive hash-funktionstypen, og md5-værdien er gemt i md5.hash-filen. Nøglen er den sidste streng "? l? l? l? l? l" En sådan streng kaldes en maske.
En maske er en streng, der består af flere pladsholdere. "? l" er en pladsholder, hvor "?" er et søgeord, der bruges til at ændre det efterfølgende "l". "? l" repræsenterer sammen et sæt tegn. Ud over "? l" kan det også være "? u", "? d", "? h", "? h", "? s", "? a" og "? b", repræsenterer sættet af tegn som vist i tabellen nedenfor.
| ? | Charset |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789abcdef |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? l? Du? d? s |
| b | 0 – 0xff |
På denne måde forstår vi, "? l? l? l? l? l" svarer faktisk til en kryptografisk ordbog:
aaaaa aaaab ... zzzzz
På samme måde svarer "? l? u? d" til en kryptografisk ordbog:
aA0 aA1 ... bA0 ... zZ9
Tegnsættet i ovenstående tabel er indbygget i hashcat, vi kan også angive tegnsættet selv:
- -custom-charset1= tegnsæt 1 - -custom-charset2= tegnsæt 2 - -custom-charset3= tegnsæt 3 - -custom-charset4= tegnsæt 4
Parameter – custom-charsetN kan forkortes til-n, såsom – custom-charset1 kan forkortes til-1. Sættet af tegn angivet med-n er angivet som en pladsholder "? N" i masken, såsom:
-1 abc123 ? 1? 1? 1
svarer til en kryptografisk ordbog:
aaa aab ... aa3 ... 333
-N Ud over strengen, der repræsenterer tegnsættet, kan det også være en fil, der slutter med. hcchr, og tegnsættet er gemt i filen. hashcat kommer med mange. hcchr-filer i charsets/ -mappen i installationspakken.
Samlingen af tegn repræsenteret af pladsholderen "??" er selve "?". Derudover, når de resterende tegn bruges som pladsholdere, repræsenterer de selve tegnene. For eksempel svarer "? lwerner? d" til en adgangskodeordbog:
awerner0. awerner1 ... zwerner9
Med ovenstående viden er det nemt at forstå masken. En maske består af flere pladsholdere, hver pladsholder er et sæt tegn, og en maske er en kombination af hvert sæt pladsholdertegn. Antallet af pladsholdere er lig med længden af adgangskoden. Hvad er fordelene ved et sådant design i forhold til blot at give et tegnsæt og adgangskodelængde?
Antag, at vi kender en persons adgangskode med i alt 7 cifre. Det første ciffer er store bogstaver, de næste 3 cifre er små bogstaver, og de sidste 3 cifre er tal. Hvis det er et traditionelt brute force crack, kræver det tegnsæt A-Z, A-Z og 0-9, i alt 62 tegn, og det kræver op til 62^7=3 521 614 606 208 forsøg, hvilket er billionniveau. At bruge maske til at beskrive denne adgangskode er "\u\l\l\l\d\d\d", som er let at beregne. Der er i alt (26^4) × (10^3) =456 976 000 muligheder, hvilket er 100 millioner niveau, 4 størrelsesordener mindre end den forrige metode.
For at tage et skridt tilbage, selvom vi ikke kender fordelingen af adgangskoder, er det nemt at simulere effekten af traditionel brute force cracking ved hjælp af en maske.
Spørgsmålet nu er, at masken er fast, hvor mange pladsholdere i den er dødskrevet, og hvad skal vi gøre, hvis vi ikke kender længden af adgangskoden? Det er okay, at adgangskoden er for lang Hvis en andens adgangskode kun har 3 cifre, og vi har 4 pladsholdere, og vi ikke kan løse den, ville det så ikke være et stort tab. Skal vi starte fra 1 og skrive alle masker af hver længde? Det er så besværligt.
Der er to løsninger Den ene er at bruge maskefilen, skrive flere masker i én fil og derefter angive filen på kommandolinjen. Bemærk, at maskefilen skal ende med. hcmask.
For eksempel er indholdet af test.hcmask:
? l ? l? l ? l? l? l ? l? l? l? l
Brug derefter følgende kommando til at bruge filen:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
En anden løsning er at tilføje parameteren – increment, som fortæller hashcat, at i henhold til den maske, vi gav, starter fra en pladsholder Prøv, prøv to og tre igen, indtil vi giver længden. Hvis vi skriver denne pladsholder "abc", beregner vi derefter MD5-værdien af følgende streng:
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
Før ":" er den oprindelige streng, hvor hash-værdien skal beregnes, og efter ":" er den beregnede hasn-værdi. Gem ovenstående indhold i filen md5.hash, og kør derefter følgende kommando:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Tilføj parameter – brugernavn er fordi hver af vores hash-værdier er foran den originale streng Hvis du ikke tilføjer denne parameter, vil hashcat vise, at den korrekte hash-værdi ikke er fundet. Hvis du tilføjer denne parameter, vil hashcat tro, at strengen før hash-værdien er brugernavnet for hash-værdien, så hash-værdien kan indlæses problemfrit.
Resultatet af at køre er, at kun én hash er løst:
900150983cd24fb0d6963f7d28e17f72:abc
Tilføj nu parameteren – increment, kør igen:
hashcat -m 0 -a 3 - -show - -increment - -brugernavn md5.hash abc
Denne gang blev yderligere to hash løst:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Det kan ses, at – increment spiller en rolle. Men samtidig ved vi også, at med denne parameter vil hashcat kun prøve A, ab og abc i rækkefølge og vil ikke arrangere og kombinere pladsholdere uden for rækkefølge og prøve forskellige muligheder.
Hybrid Attack ligner Combinator Attack kombinerer to ordbøger, mens Hybrid Attack krydser en ordbog og en maske.
Antag, at vi allerede har en ordbog eksempel.dict, som lyder som følger:
Hej werner
Derefter kommando:
hashcat -m 0 -a 6 md5.hash eksempel.dict ? d? d
svarer til blot at bruge en ordbog:
hello00 Hej 01 ... Hej 99 werner00 werner01 ... werener99
Derefter kommandoen:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
svarer til blot at bruge en ordbog:
00Hej 01Hej ... 99Hej 00werner 01werner ... 99werener