| # | 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 Regnbue
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 rainbowparis 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:
jakt-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 Regn > 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, noe som er en annen stor del av innholdet. For detaljer, se Rule-based Attack
. Prøv 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 Eksempler er som følger:
hashcat -a 3 -m 0 MD5.hash ? l? l? l? l? l
Selv om i henhold til "Angrepsmoduser"-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", representerer sammen et sett med tegn I tillegg til "? l", kan det også være "? u", "? d", "? h", "? h", "? s", "? a" og "? b", representerer settet med tegn 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
Parameteren – custom-charsetN kan forkortes til-n, for eksempel – custom-charset1 kan forkortes til-1. Settet med tegn spesifisert med-n er spesifisert som plassholder "? N" i masken, for eksempel:
-1 abc123 ? 1? 1? 1
tilsvarer en passordordbok:
aaa aab ... aa3 ... 333
I tillegg til strengen som representerer tegnsettet etter-n, 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 passordbok:
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 mask.
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, prøv fra en plassholder, og prøv to, tre, til lengden vi har gitt. For eksempel skriver vi denne plassholderen "abc", og beregner deretter MD5-verdien til følgende streng:
A: 0cc175b9c0f1b6a831c399e269772661 b: 92eb5ffee6ae2fec3ad71c777531578f c: 4a8a08f09d37b73795649038408b5f33 ab: 187ef4436122d1cc2f40dc2b92f0eba0 ac: e2075474294983e013ee4dd2201c7a73 ba: 07159c47ee1b19ae4fb9c40d480856c4 f.Kr.: 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 hver av våre hash-verdier er foran den opprinnelige strengen Hvis du ikke legger til denne parameteren, vil hashcat vise at den riktige hash-verdien ikke er funnet. Hvis du legger til denne parameteren, vil hashcat tro at strengen før hash-verdien er brukernavnet for hash-verdien, slik at hash-verdien kan lastes inn jevnt.
Resultatet av kjøring er at bare én hash er løst:
900150983cd24fb0d6963f7d28e17f72: abc
Legg nå til parameteren – økning, kjør igjen:
hashcat -m 0 -a 3 - -vis - -økning - -brukernavn MD5.hash abc
Denne gangen ble to hasher til løst:
0cc175b9c0f1b6a831c399e269772661: a 187ef4436122d1cc2f40dc2b92f0eba0: ab
synlig, – 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 example.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