Jump to content
BitMap

Hashcat Mask Attack

Recommended Posts

20f7145081c127fbe10867d89e56407f.png

Cred ca majoritatea dintre voi ati folosit un astfel de program ( nu neaparat acesta,

sau aceasta metoda ), sau macar ati citit despre el si de aceea sper sa nu ma repet.

De ce hashcat ?

Poate din curiozitate, mai multe optiuni ( din care am folosit doar 10% cred ),

multe tipuri de hash-uri suportate, la fel si modele de gpu. De incercat am mai incercat

si ighashgpu, de care am fost la fel de multumit, la nivelul la care l-am folosit.

De ce Bruteforce ?

Nu am multa experienta pe, partea de 'password cracking', dar cred ca pentru a sparge o parola

(hash) trebuie sa incerci cam de toate, sau macar cate putin din toate.

Chiar si asa exista o sansa mare sa nu reusim nimic, dar incercand macar mai eliminam

din posibilitati. Iar Bruteforce-ul elimina sigur o parte din ele.

Si atunci ce este Mask Attack?

Cei de la hahscat au combinat cele doua metode pentru a forma una singura. De ce?

Pentru ca ele au multe in comun.

Mask Attack, la fel ca Bruteforce genereaza toate combinatiile posibile, dar pentru un anumit

pattern ( mask ). Cu totii stim ca generarea acestora poate dura foarte mult,

in functie de numarule de caractere sau lungime, dar, din experienta stim ca nu toate parolele

folosite de noi oamenii sunt random, ex: A%2/.dTs+1-2(*+6.

Ele de obicei au o semnificatie sau contin secvente mici din diferite semnificatii/cuvinte/numere

etc, adica au un pattern. Iar generarea combinatiile pentru un anumit pattern

poate dura mult mai putin, deoarece nu trebuie sa le generam pe toate.

Ca exemplu am ales un hash MD5, despre care presupunem ca nu stim nimic:

# target hash

e0db131766c68bdcc8d64d1bb0dbd02b

+-------------------------------------------------------------------------------------------+

| Clasicul Bruteforce:

+-------------------------------------------------------------------------------------------+

Dupa cum spuneam mai sus, Bruteforce-ul a fost combinat cu Mask Attack, iar asta inseamna ca

trebuie sa folosim tot un pattern, dar acesta va fi unul care va genera toate combinatiile.

Toti acesti pasi care urmeaza trebuie facuti prin incercari si modificati in functie de

puterea de calcul al procesorului pe care il avem, tipul de hash ce trebuie calculat/lungimea

acestuia, sau de cat timp suntem dispusi sa astepatm.

+---------------------------------------------+

| #1 ( lowercase alpha )

+---------------------------------------------+

Ca un prim test sa presupunem ca parola noastra ar contine doar caractere

lowercase ( a-z ) de lungime 8

# command:

cudaHashcat-plus64.exe -a 3 -m 0 e0db131766c68bdcc8d64d1bb0dbd02b

-1 ?l ?1?1?1?1?1?1?1?1 -p --show --force

Prima data vedem ce parametrii contine comanda, iar apoi vedem si rezultatul.

La capitolul parametrii cel mai bun prieten este help-ul: ( cudaHashcat-plus64.exe --help ),

iar pentru a nu lungi tutorialul si mai mult prin copy/paste am sa includ doar titlul

sectiunii din help pentru mai multe informatii despre parametrii.

[1] -a 3 : reprezinta tipul atacului, si anume bruteforce. Altele: --help * Attack modes:...

[2] -m 0 : reprezinta tipul hash-ului, si anume md5. Altele: --help * Generic hash types:...

[3] hash-ul

[4] -1 ?l : reprezinta charset-ul cu nr.1, adica ce caractere dorim sa folosim

( am spus nr.1, pentru ca putem avea mai multe, dar vom discuta mai tarziu ), si avem asa:

?l = lowercase [a-z]

?u = uppercase [A-Z]

?d = digit [0-9]

?s = symbol [space!”#$%&'()*+,-./:;??@[\]^_`{|}~]

?a = all

Toate acestea se pot concatena pentru a rezulta un charset custom,

spre exemplu:

- ?a se poate rescrie si ca ?l?u?d?s

[5] ?1?1?1?1?1?1?1?1 : reprezinta lungimea primului charset ( ?charset_nr de n ori)

[6] -p --show : va afisa rezultatul la consola daca hash-ul a fost gasit

Exista si posibilitatea de a citi hash-urile din fisiere, sau de a scrie rezultatele in fisiere,

dar deocamdata ramanem la consola.

[7] -- force : ignora unele warning-uri

OBS.!!!

[1] In consola litera 'l' si cifra '1' se pot confunda usor.

[2] Exista o legatura intre numarul charset-ului si lungime lui.

Ex:

- pentru charsetul nr.2: -2 ?l

- lungimea de 8 caractere va fi: ?2?2?2?2?2?2?2?2

# result:

Daca nu exista erori, ar trebui sa avem un rezultat asemanator:

0f83b793a52892e99c9d6c8243795632.png

Jos exista un mic meniu ce il putem folosi pentru a vedea din cand in cand progresul,

sau pentru a opri procesul daca nu are rost.

Exista multa informatie in output, dar ceea ce ne intereseaza deocamdata este:

- Status.........: Cracked/Exhausted( daca nu a fost gasit hahs-ul )

- Time.Estimated.: un timp aproximativ

Acesta nu este tot timpul foarte precis, dar daca dorim se poate calcula

folosind viteza si nr. total de combinatii.

1M = 10^6 = 1.000.000

1G = 10^9 = 1.000.000.000

- Speed.GPU.#1...: viteza de calcul al hash-ului

- Progress.......: cate combinatii au fost calculate/cate sunt in total

- HWMon.GPU.#1...: un hardware monitor minimal, daca nu aveti deja altul pe care sa il folositi.

Parola nu a fost gasita, daca dorim mai putem incerca acelasi charset,

dar cu o lungime mai mare si sa vedem ce rezultate avem si daca merita sau nu:

- 9 caractere: ?1?1?1?1?1?1?1?1?1 : Time.Estimated.: ... (1 hour, 24 mins)

- 10 caractere: ?1?1?1?1?1?1?1?1?1?1 : Time.Estimated.: ... (1 day, 13 hours)

+---------------------------------------------+

| #2 ( digit )

+---------------------------------------------+

La fel putem incerca sa schimbam charset-ul si sa folosim doar caractere numerice,

fiind doar 10 caractere putem compensa prin a creste lungimea, deocamdata la 12.

# command:

cudaHashcat-plus64.exe -a 3 -m 0 e0db131766c68bdcc8d64d1bb0dbd02b

-1 ?d ?1?1?1?1?1?1?1?1?1?1?1?1 -p --show --force

# result:

Time.Estimated.: ... (15 mins, 39 secs) : chiar daca durata nu este foarte mare,

nu cred ca are rost sa mai continuam daca parola nu a fost gasita.

Status.........: Exhausted

+---------------------------------------------+

| #3 ( lowercase aplha + digit )

+---------------------------------------------+

La acest test vom incerca o combinatie intre primele doua, modificand charset-ul la: ?l?d.

Lungimea charset-ului va creste, deci si timpul, asa ca vom incepe cu lungimea de 8 caractere.

# command:

cudaHashcat-plus64.exe -a 3 -m 0 e0db131766c68bdcc8d64d1bb0dbd02b

-1 ?l?d ?1?1?1?1?1?1?1?1 -p --show --force

# result:

Time.Estimated.: ... (45 mins, 52 secs)

Status.........: Exhausted

Timpul pentru o lungime mai mare:

- 9 caractere: Time.Estimated.: ... (1 day, 2 hours)

- 10 caractere: Time.Estimated.: ... (39 days, 23 hours)

+---------------------------------------------+

| #4 ( lowercase/uppercase alpha + digit )

+---------------------------------------------+

Un ultim test pe care il mai incercam va fi acela prin care vom include

si caractere uppercase ( A-Z ).

Fiindca charset-ul aproape s-a dublat ne limitam la o lungime de 7 caractere.

# command:

cudaHashcat-plus64.exe -a 3 -m 0 e0db131766c68bdcc8d64d1bb0dbd02b

-1 ?l?u?d ?1?1?1?1?1?1?1?1 -p --show --force

# result:

Time.Estimated.: ... (47 mins, 1 sec)

Status.........: Exhausted

Timpul pentru o lungime mai mare:

- 8 caractere: Time.Estimated.: ... (1 day, 22 hours)

Chiar daca rezultatele sunt foarte bune, modificarile pe care le putem face sunt putine,

iar timpul creste foarte mult pentru fiecare.

Dar folosirea acelui pattern ne permite o flexibilitate mult mai mare,

ceea ce inseamna ca putem face mai multe teste diferite intr-un timp mai scurt.

+-------------------------------------------------------------------------------------------+

| Mask Attack:

+-------------------------------------------------------------------------------------------+

Dupa cum spuneam mai la inceput, nu toate parolele sunt alese random

asa ca ne putem gandi la cateva pattern-uri posibile, sau folosite mai des.

+----+

| #1 |

+----+

Unele parole pot contine diferite cuvinte/nume la care doar prima litera ar putea fi uppercase:

- Abcdwxyz: 8 caractere [a-z|A-Z], folosind Bruteforce: Time.Estimated.: ... (11 hours, 26 mins)

# command:

cudaHashcat-plus64.exe -a 3 -m 0 8050823581961426150c6a9e170e1338

-1 ?l?u -2 ?l ?1?2?2?2?2?2?2?2 -p --show --force

#result

Time.Estimated.: ... (5 mins, 16 secs)

Status.........: Cracked

Timpul este mult, mult mai mic, dar sa evaluam comanda, iar diferentele sunt

la charset si lungime.

Tot mai sus undeva spuneam ca putem avea mai multe charset-uri, si ca o sa le folosim mai tarziu,

adica aici.De ce? Pentru a putea aplica cate unul pentru o portiune din lungimea parolei,

si nu toata.

- primul charset contine [a-z|A-Z] ( ?l?u ), un spatiu destul de mare,

dar l-am aplicat doar pentru prima pozitie

- al doilea contine doar lowercase, pentru celelalte 7 pozitii

Pentru a vedea mai bine diferenta am putea face un mic calcul.

- numarul total de combinatii se calculeaza ca: nr_total_caractere^lungime_parola

- in cazul nostru, pentru bruteforce este 52^8 ( 26 lowercase + 26 uppercase),

care pentru simplitate il aprox. ca 53459 G

- aplicand acel pattern care care foloseste uppercase doar pentru prima pozitie,

calculul devine: 52^1 ([a-z|A-Z] lung. 1) * 26^7 ([a-z] lung. 7) care este aprox. 417 G

Acest tip de parola ar putea parea simplu, dar timpul fiind mic putem creste lungimea,

iar atunci acest pattern ar putea avea succes in unele situatii.

Timpul pentru o lungime mai mare:

- 9 caractere: Time.Estimated.: ... (2 hours, 49 mins)

+----+

| #2 |

+----+

Un alt tip de pattern poate fi alcatuit din litere si cifre, raportul dintre ele

se poate face dupa orice regula, eu am ales 50/50:

- wxyz6789 : 8 caractere [a-z|0-9], folosind Bruteforce: Time.Estimated.: ... (36 mins, 44 secs)

# command

cudaHashcat-plus64.exe -a 3 -m 0 76a2c5f4297bcabd36dcfc96bbc536c9

-1 ?l -2 ?d ?1?1?1?1?2?2?2?2 -p --show --force

#result

Time.Estimated.: < 1 sec

Status.........: Cracked

Fiind timpul mai mic putem incerca si lungimi mai mari, spre exemplu 10 caractere,

tot pe acelasi pattern:

- vwxyz98765

# command

cudaHashcat-plus64.exe -a 3 -m 0 70d07f981b2cfc7e041a4232d226c64e

-1 ?l -2 ?d ?1?1?1?1?1?2?2?2?2?2 -p --show --force

#result

Time.Estimated.: ... (19 mins, 8 secs)

Status.........: Cracked

+----+

| #3 |

+----+

Se pot face multe combinatii de charset-uri, dupa orice pattern, cateva ar mai putea fi:

+-------------------------------------------------------------------------------------------+

| - lungime 8, primele caractere 'year19', 2 numere. keyspace: year1900 - year1999

|

| # command

| cudaHashcat-plus64.exe -a 3 -m 0 hash -1 ?d year19?1?1 -p --show --force

+-------------------------------------------------------------------------------------------+

| - lungime 7, primele 2 caractere din intervalul 'MBCJTSARGHVZI', simbolul '-', doua numere,

| simbolul '-', trei caractere uppercase. keyspace: AA-00-AAA - ZZ-99-ZZZ

|

| # command

| cudaHashcat-plus64.exe -a 3 -m 0 hash

-1 MBCJTSARGHVZI -2 ?d -3 ?u ?1?1-?2?2-?3?3?3 -p --show --force

+-------------------------------------------------------------------------------------------+

| - lungime 9, 4 caractere, 1 simbol, 4 numere. keyspace: aaaaSpace0000 - zzzz~9999

|

| # command

| cudaHashcat-plus64.exe -a 3 -m 0 hash -1 ?l -2 ?s -3 ?d ?1?1?1?1?2?3?3?3?3 -p --show --force

+-------------------------------------------------------------------------------------------+

A venit si timpul sa incercam aceasta metoda si pe vechiul nostru hash.

- pattern-ul pe care il vom folosi contine elemente din exemplele de mai sus, si anume:

- lungime 9, 5 caractere, simbolul '-', 3 caractere, dar toate caracterele vor fi

din intervalul 'youlearnedtohack'.

# command

//

// Daca ati inteles cate ceva din acest tutorial, atunci inseamna ca nu a fost scris in zadar.

// Rezultatul l-am lasat pe mana voastra iar daca aveti timp si vreti sa incercati,

// lasati un reply cu un screenshot la rezultat daca se poate.

// Nu ar trebui sa dureze mult, pentru ca asa am incercat sa il fac,

// dar daca vedeti ca dureaza, nu forjati pc-ul din cauza mea.

Bineinteles, orice parere, buna/rea sau orice adaugare/corectare sunt bine venite.

  • Upvote 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...