Identificirati algoritem hasha

identificira verjetni algoritem hasha (MD5, SHA-1, SHA-256, bcrypt, argon2…) iz njegove dolžine in formata, in poskuša najti čisto besedilo skozi slovar pogostih gesel
Prilepite kateri koli hash (heksadecimalni, bcrypt $2y$..., argon2 $argon2id$...). Orodje zazna verjetni algoritem.

Kaj je kriptografski hash?

Zgoščena vrednost (ali kriptografski prstni odtis) je rezultat funkcije, ki preoblikuje vnos podatkov poljubne velikosti (geslo, datoteka, niz) v niz fiksna velikost. Ta funkcija je enosmerna: iz zgoščene vrednosti je matematično neizvedljivo najti prvotni vnos. Dva enaka vhoda proizvajata vedno isti hash, vendar že najmanjša sprememba vnosa popolnoma spremeni rezultat.

Naše orodje prepozna verjeten algoritem zgoščene vrednosti na podlagi njegove oblike in poskuša poiskati v slovarju zelo pogostih gesel vnaprej izračunana na glavnih algoritmih.

Kako prepoznati hash?

Identifikacija temelji na treh sledeh:

  • Dolžina: vsak algoritem ustvari odtis fiksne velikosti.
  • Oblika: čista šestnajstiška, Base64 ali Modular Crypt Format s predponami specifično.
  • Predpona: Sodobne zgoščene vrednosti gesel sledijo formatu $id$params$salt$hash, kjer id nedvoumno identificira funkcijo rabljeno.

Pogoste šestnajstiške dolžine

  • 8 znakov: CRC32 (kontrolna vsota, ne kriptografska zgoščena vrednost)
  • 32 znakov: MD5, MD4, NTLM, RIPEMD-128
  • 40 znakov: SHA-1, RIPEMD-160
  • 64 znakov: SHA-256, SHA3-256
  • 96 znakov: SHA-384, SHA3-384
  • 128 znakov: SHA-512, SHA3-512, Whirlpool

Sama dolžina ni dovolj za zaključek: MD5 in NTLM imata enako velikost 32 znakov hex, na primer. Naše orodje nato vrne seznam možnih algoritmov.

Modularne predpone formata Crypt

Zgoščene vrednosti gesel iz crypt() ali sodobne knjižnice uporabljajo a eksplicitna predpona:

  • $1$: šifra MD5
  • $5$: šifra SHA-256
  • $6$: šifra SHA-512
  • $2y$, $2a$, $2b$: Bcrypt (različice so odvisne od platforme)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (različice uporabe, Argon2id se priporoča danes)

Primer zgoščevanja Bcrypt

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Primeri uporabe

  • Analiza uhajanja podatkov: določite algoritem, ki ga uporablja zbirka podatkov ogrožena za oceno težavnosti napada.
  • Odpravljanje napak: hitro potrdite, kateri algoritem je ustvaril najdeni prstni odtis v odgovoru ali dnevniku API-ja.
  • Varnostna revizija: poiščite sistem, ki še vedno shranjuje gesla MD5 ali SHA-1 (se je treba izogibati).
  • Forenzika: opredelite artefakt v preiskavi.

Zakaj hash ni reverzibilen

Zgoščevalna funkcija je zasnovana kot enosmerna. Algoritma ni "dešifriranja zgoščene vrednosti", ker zgoščena vrednost ni šifriranje: je projekcija. Več različni vnosi lahko v teoriji proizvedejo isti zgoščen (kolizija), tako da tudi vedenje vnos, ki ustvari pravilen hash, nimate nobenega zagotovila, da je to izvirni vnos.

V praksi "razbijanje" zgoščene vrednosti pomeni množično testiranje vnosov kandidatov dokler ne najdete tistega, katerega prstni odtis se ujema. To počnejo slovarski napadi in s surovo silo.

Integrirano iskanje po slovarju

Naše orodje vključuje mini slovar 39 zelo pogostih gesel: prazen niz, geslo, admin, 123456, qwerty, letmein itd. Teh 39 vnosov je predračunanih na 10 algoritmih (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM itd.). Če se vaš hash ujema z enim od teh prstnih odtisov, orodje vam vrne geslo v čistem besedilu.

Ta funkcija ponazarja,zakaj preproste zgoščene vrednosti niso primerne za besede pass: napadalcu ni treba niti izračunati, pogleda tabelo.

Enostavno zgoščevanje v primerjavi z zgoščevanjem gesla

Niso vse zgoščene vrednosti enake za shranjevanje gesel:

  • Enostavne zgoščene vrednosti (MD5, SHA-256, SHA-512): zasnovane tako, da so hitre, kar je privzeto, ko se želite upreti napadu s surovo silo. Ne vključujejo sel privzeto, tako da bosta imela dva uporabnika z istim geslom isti hash, ki ga izpostavi napadom vnaprej izračunanih tabel (mavričnih tabel).
  • Zgoščevanje gesla (bcrypt, scrypt, Argon2): zasnovano za počasno po konstrukciji, vključite naključno sol in faktor nastavljiv strošek. Argon2id je danes najsodobnejši, ki ga priporoča OWASP.

Kako uporabljati orodje

  1. Prilepite zgoščeno vrednost v polje za vnos.
  2. Orodje zazna format (dolžina, predpona) in predlaga možne algoritme.
  3. Če se zgoščena vrednost ujema z zelo pogostim geslom, se prikaže beseda v navadnem besedilu.
  4. V nasprotnem primeru dobite seznam možnih algoritmov za nadaljnje raziskovanje z orodjem posvečeno.

Pogosta vprašanja

Zakaj se moja zgoščena vrednost bcrypt ne ujema s slovarjem?

Bcrypt uporablja edinstveno naključno sol na razpršitev: tudi z geslom geslo, vsak uporabnik ustvari drugačen hash. Slovarski predračun torej ne deluje. Prav to je lastnost, zaradi katere je bcrypt odporen na napade na tabele.

Kaj storiti, če je za isto dolžino možnih več algoritmov?

Navzkrižno z drugimi namigi: vir zgoščene vrednosti (Active Directory kaže na NTLM, Linux /etc/shadow v kripto SHA-512, staro bazo podatkov MySQL v MD5 itd.) in kontekst aplikacije. Pri enaki dolžini ostaja MD5 statistično najverjetnejši na stari sistemi.

Kako "razbiti" zgoščeno vrednost v praksi?

Za zakonite varnostne teste (revizija, pentest) so standardna orodja Janez Razparač in hashcat. Sprejemajo sezname besed množično (rockyou itd.) in izkoriščanje GPE za testiranje milijard kandidatov na drugo. Izvedljivost je odvisna od algoritma: MD5 in SHA-1 se hitro obneseta, bcrypt in Argon2 upočasni napad za več velikosti.

Ali je po vgrajenem slovarju mogoče iskati?

Slovar je namerno minimalističen (39 gesel) in služi za ponazoritev šibkosti enostavne zgoščene vrednosti trivialnih gesel. Za resno pokritost uporabite seznam besed zunanji (rockyou, SecLists) z Johnom Razparačem ali hashcatom.

Ali lahko »dekodiramo« zgoščeno vrednost?

Ne. Zgoščena vrednost ni šifriranje: ni inverzne funkcije. Vsako spletno mesto, ki obljublja "dekodiranje zgoščene vrednosti" dejansko uporabi iskanje v vnaprej izračunani bazi. Če vaš geslo je edinstveno in dolgo, ga ni.

Primer zahteve

curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
  -H "Content-Type: application/json" \
  -d '{"hash":"..."}'

Vhodna shema

Polje Tip Obvezno Privzeto
hash text

Končne točke

  • GET https://cdrn.fr/api/v1/tools - izpiše vsa razpoložljiva orodja
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - pridobi shemo tega orodja
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - izvede to orodje s JSON payloadom