Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/29/13 in all areas

  1. 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: 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.
    1 point
  2. Windows Exploit Development Tutorial Series Part 1: Introduction to Exploit Development Part 2: Saved Return Pointer Overflows Part 3: Structured Exception Handler (SEH) Part 4: Egg Hunters Part 5: Unicode 0x00410041 Part 6: Writing W32 shellcode Part 7: Return Oriented Programming Part 8: Spraying the Heap [Chapter 1: Vanilla EIP] Part 9: Spraying the Heap [Chapter 2: Use-After-Free] Linux Exploit Development Tutorial Series Part 1: Introduction to Linux Exploit Development Part 2: Linux Format String Exploitation
    1 point
×
×
  • Create New...