| # | modus |
|---|---|
| 0 | rett |
| 1 | kombinasjon |
| 3 | Brute-force |
| 6 | Hybrid ordliste + maske |
| 7 | Hybrid maske + ordliste |
Denne angrepsmodusen er også kjent som" ordbokangrep ". Det er ikke mye å si, bare gitt en ordbok, vil hashcat lese innholdet i ordboken linje for linje, beregne hash-verdien for hver linje og sammenligne den med mål-hash-verdien.
Eksempel:
hashcat -a 0 -m 400 eksempel400.hash eksempel.dict
Baidu fortalte meg at kombinasjon er et substantiv, som betyr: "kombinasjon; konsortium; passordkombinasjon; jumpsuit og undertøy". Denne angrepsmodusen er faktisk veldig enkel, det vil si å kombinere innholdet i to passordordbøker. Bruk av denne angrepsmodusen krever å spesifisere to passordbøker ikke mer eller mindre. Anta at vi har to passordordbøker dict1.txt og dict2.txt, hvis innhold er:
jakt kattunge rainbow
og
paris rock
Deretter kommandoen:
hashcat -m 0 -a 1 hash.txt dict1.txt dict2.txt
Ordboken som faktisk ble forsøkt var:
huntingparis Jaktstein kittyparis kittyrock Regnbueparis rainbowrock
Ordene i dict1.txt er til venstre og ordene i dict2.txt er til høyre, totalt 3×2=6.
Parametrene knyttet til denne modusen er:
-j, - -rule-left -k, - -rule-right
-Reglene etter j virker på venstre side, og reglene etter-k virker på høyre side, for eksempel å legge til parameteren-j' $-', så er den faktiske ordboken som ble prøvd:
hunting-paris jakt-stein kitty-paris kitty-rock Regn-BowParis rain-bowrock
Legg til parameter-j '^!', Da er den faktiske ordboken som er prøvd:
! jaktparis ! jaktstein ! kittyparis ! kittyrock ! RegnbueParis ! rainbowrock
Legg til parameteren-k '^ >', så er den faktiske ordboken du prøver:
jakt > paris jakt > stein kitty > paris kitty > rock Regn > bowparis rain > bowrock
Hva er denne regelen? Bruken av "$" og "^" ligner på vanlige uttrykk, så er de vanlige? Faktisk er det ikke tilfelle. Hashcats regler implementeres av seg selv. Dette er en annen stor del av innholdet. For detaljer, se regelbasert angrep
. et gitt tegnsett Ulike kombinasjoner. I følge den offisielle Hashcat-wikien er denne metoden utdatert og fullstendig erstattet av Mask-Attack, så ingen forskning vil bli utført,
Dette er en relativt ny angrepsmetode Eksempel er som følger:
hashcat -a 3 -m 0 md5.hash ? l? l? l? l? l
Selv om i henhold til "Attack Modes"-tabellen tilsvarer-a 3 Brute-force, bruker-a 3 faktisk maskeangrep. Maskeangrep kan betraktes som avansert brutal kraft.
-m-parameteren brukes til å spesifisere hash-funksjonstypen MD5-verdien er lagret i md5.hash-filen. Nøkkelen er den siste strengen "? l? l? l? l? l? l" En slik streng kalles en maske.
En maske er en streng som består av flere plassholdere. "? l" er en plassholder, hvor "?" er et nøkkelord, som brukes til å modifisere den etterfølgende "l". "? l" representerer sammen et sett med tegn I tillegg til "? l", kan det også være "? u", "? d", "? h", "? h", "? s", "? a" og "? b" representerer tegnsettet som vist i tabellen nedenfor.
| ? | tegnsett |
|---|---|
| l | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| u | ABCDEFGHIJKLMNOPQRSTUVWXYZ |
| d | 0123456789 |
| h | 0123456789abcdef |
| h | 0123456789abcdef |
| s | ! "#$% & ' () * +, -. /:; < = >? @ [\] ^_` ~ {|} |
| a | ? l? Du? d? s |
| b | 0 – 0xff |
På denne måten forstår vi, "? l? l? l? l? l" tilsvarer faktisk en kryptografisk ordbok:
aaaaa aaaab ... zzzzz
På samme måte tilsvarer "? l? u? d" en kryptografisk ordbok:
aA0 aA1 ... bA0 ... zZ9
Tegnsettet i tabellen ovenfor er innebygd i hashcat, vi kan også spesifisere tegnsettet selv:
- -custom-charset1= tegnsett 1 - -custom-charset2= tegnsett 2 - -custom-charset3= tegnsett 3 - -custom-charset4= tegnsett 4
Parameter – custom-charsetN kan forkortes til-n, for eksempel – custom-charset1 kan forkortes til-1. Settet med tegn spesifisert med-n er spesifisert som en plassholder "? N" i masken, for eksempel:
-1 abc123 ? 1? 1? 1
tilsvarer en kryptografisk ordbok:
aaa aab ... aa3 ... 333
-N I tillegg til strengen som representerer tegnsettet, kan det også være en fil som ender med. hcchr, og tegnsettet er lagret i filen. hashcat kommer med mange. hcchr-filer i charsets/ -katalogen til installasjonspakken.
Samlingen av tegn representert av plassholderen "??" er selve "?". I tillegg, når de resterende tegnene brukes som plassholdere, representerer de selve tegnene. For eksempel tilsvarer "? lwerner? d" en passordordbok:
awerner0. awerner1 ... zwerner9
Med kunnskapen ovenfor er det lett å forstå mask. En maske består av flere plassholdere, hver plassholder er et sett med tegn, og en maske er en kombinasjon av hvert sett med plassholdertegn. Antall plassholdere er lik lengden på passordet. Hva er fordelene med denne typen design i forhold til bare å gi et sett med tegn og passordlengde?
Anta at vi vet at noens passord har totalt 7 siffer. Det første siffret er store bokstaver, de neste 3 siffret er små bokstaver, og de siste 3 siffret er tall. Hvis det er tradisjonell brute force cracking, krever det tegnsett A-Z, A-Z og 0-9, totalt 62 tegn, og krever opptil 62^7=3 521 614 606 208 forsøk, som er billionnivå. Når du bruker maske for å beskrive dette passordet, er det "\u\l\l\l\d\d\d", som er lett å beregne. Det er totalt (26^4) × (10^3) =456 976 000 muligheter, som er 100 millioner nivå, som er 4 størrelsesordener mindre enn forrige metode.
For å ta et skritt tilbake, selv om vi ikke kjenner fordelingen av passord, er det enkelt å simulere effekten av tradisjonell brute force cracking ved å bruke maske.
Spørsmålet nå er at masken er fast, hvor mange plassholdere i den er dødskrevet, og hva skal vi gjøre hvis vi ikke vet lengden på passordet? Det er greit at passordet er for langt Hvis andres passord bare har 3 siffer og vi har 4 plassholdere, og vi ikke kan løse det uansett, ville det ikke vært et stort tap? Skal vi starte fra 1 og skrive alle masker av hver lengde? Det er så plagsomt.
Det er to løsninger Den ene er å bruke maskefilen, skrive flere masker i én fil, og deretter spesifisere filen på kommandolinjen. Merk at maskefilen må ende med. hcmask.
For eksempel er innholdet i test.hcmask:
? l ? l? l ? l? l? l ? l? l? l? l
Bruk deretter følgende kommando for å bruke filen:
hashcat -m 0 -a 3 - -show md5.hash test.hcmask
En annen løsning er å legge til parameteren – increment, som forteller hashcat at i henhold til masken vi ga, start med en plassholder Prøv, prøv to og tre til lengden vi har gitt. Hvis vi skriver denne plassholderen "abc", beregner vi deretter MD5-verdien til 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 opprinnelige strengen for å beregne hash-verdien, og etter ":" er den beregnede hasn-verdien. Lagre innholdet ovenfor i filen md5.hash, og kjør deretter følgende kommando:
hashcat -m 0 -a 3 - -show - -username md5.hash abc
Legg til parameter – brukernavn er fordi det er en opprinnelig streng foran hver av våre hashverdier Hvis du ikke legger til denne parameteren, vil hashcat vise at den riktige hashverdien ikke er funnet. Hvis du legger til denne parameteren, vil hashcat tro at strengen foran hashverdien er brukernavnet for hashverdien, slik at hashverdien kan lastes inn jevnt.
Resultatet av å kjøre er at bare én hash er løst:
900150983cd24fb0d6963f7d28e17f72:abc
Legg til parameteren – increment, kjør igjen:
hashcat -m 0 -a 3 - -show - -increment - -username md5.hash abc
Denne gangen ble ytterligere to hasher løst:
0cc175b9c0f1b6a831c399e269772661:a 187ef4436122d1cc2f40dc2b92f0eba0:ab
Det kan sees at – increment spiller en rolle. Men samtidig vet vi også at med denne parameteren vil hashcat bare prøve A, ab og abc i rekkefølge, og vil ikke ordne og kombinere plassholdere ut av rekkefølge, og prøve ulike muligheter.
Hybrid Attack ligner på Combinator Attack kombinerer to ordbøker, mens Hybrid Attack krysser en ordbok og en maske.
Anta at vi allerede har en ordbok eksempel.dict som lyder som følger:
Hei werner
Deretter kommandoen:
hashcat -m 0 -a 6 md5.hash eksempel.dict ? d? d
tilsvarer å bare bruke en ordbok:
hello00 Hei01 ... Hei99 werner00 werner01 ... werener99
Deretter kommandoen:
hashcat -m 0 -a 7 md5.hash ? d? dexample.dict
Tilsvarer å bare bruke en ordbok:
00Hei 01Hei ... 99Hei 00werner 01werner ... 99werener