Identificirati algoritam hasha

identificira vjerojatni algoritam hasha (MD5, SHA-1, SHA-256, bcrypt, argon2…) iz njegove dužine i formata, i pokušava pronaći čisti tekst kroz rječnik uobičajenih zaporki
Zalijepite bilo koji hash (heksadecimalni, bcrypt $2y$..., argon2 $argon2id$...). Alat detektira vjerojatni algoritam.

Što je kriptografski hash?

Hash (ili kriptografski otisak prsta) rezultat je funkcije koja transformira ulazni podatak proizvoljne veličine (lozinka, datoteka, niz) u niz od fiksna veličina. Ova je funkcija jednosmjerna: iz hasha, jest matematički neizvedivo pronaći izvorni unos. Dva identična ulaza proizvode uvijek isti hash, ali najmanja promjena u unosu potpuno mijenja rezultat.

Naš alat identificira vjerojatni algoritam hash-a na temelju njegovog formata i pokušava potražiti u rječniku vrlo uobičajenih zaporki unaprijed izračunati na glavnim algoritmima.

Kako prepoznati hash?

Identifikacija se temelji na tri traga:

  • Duljina: svaki algoritam proizvodi otisak fiksne veličine.
  • Format: čisti heksadecimalni, Base64 ili Modular Crypt Format s prefiksima specifično.
  • Prefiks: Suvremeni hashovi zaporki slijede format $id$params$salt$hash, gdje id nedvosmisleno identificira funkciju korišteno.

Uobičajene heksadecimalne duljine

  • 8 znakova: CRC32 (kontrolni zbroj, ne kriptografski hash)
  • 32 znaka: MD5, MD4, NTLM, RIPEMD-128
  • 40 znakova: SHA-1, RIPEMD-160
  • 64 znaka: SHA-256, SHA3-256
  • 96 znakova: SHA-384, SHA3-384
  • 128 znakova: SHA-512, SHA3-512, Whirlpool

Sama duljina nije dovoljna za zaključak: MD5 i NTLM dijele istu veličinu od 32 znaka hex, na primjer. Naš alat zatim vraća popis mogućih algoritama.

Modularni prefiksi formata kripte

Hashevi zaporki iz crypt() ili moderne biblioteke koriste a eksplicitni prefiks:

  • $1$: MD5 kripta
  • $5$: SHA-256 kripta
  • $6$: SHA-512 kripta
  • $2y$, $2a$, $2b$: Bcrypt (varijante ovisno o platformi)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (varijante upotrebe, danas se preporučuje Argon2id)

Primjer raspršivanja Bcrypt

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Slučajevi upotrebe

  • Analiza curenja podataka: identificirajte algoritam koji koristi baza podataka kompromitirano za procjenu težine napada.
  • Debug: brzo potvrdite koji je algoritam generirao pronađeni otisak prsta u API odgovoru ili zapisniku.
  • Sigurnosna revizija: uočite sustav koji još uvijek pohranjuje lozinke MD5 ili SHA-1 (izbjegavati).
  • Forenzika: okarakterizirajte artefakt u istrazi.

Zašto hash nije reverzibilan

Funkcija raspršivanja dizajnirana je da bude jednosmjerna. Nema algoritma "dešifriranja hasha", jer hash nije enkripcija: on je projekcija. nekoliko različiti ulazi mogu u teoriji proizvesti isti hash (sudar), pa čak i znajući unos koji daje točan hash, nemate jamstva da je to izvorni unos.

U praksi, "razbijanje" hasha znači masivno testiranje unosa kandidata dok ne pronađete onu čiji otisak prsta odgovara. To je ono što napadi rječnikom čine i grubom silom.

Integrirano pretraživanje rječnika

Naš alat uključuje mini-rječnik 39 vrlo uobičajenih zaporki: prazan niz, lozinka, admin, 123456, qwerty, letmein, itd. Ovih 39 ulaza su unaprijed izračunati na 10 algoritama (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM, itd.). Ako vaš hash odgovara jednom od ovih otisaka prstiju, alat vam vraća lozinku u čistom tekstu.

Ova značajka ilustrirazašto jednostavni hashovi nisu prikladni za riječi pass: napadač ne treba čak ni kalkulirati, on konzultira tablicu.

Jednostavan hash nasuprot hash lozinke

Nisu svi hashovi jednaki za pohranjivanje lozinki:

  • Jednostavni raspršivači (MD5, SHA-256, SHA-512): dizajnirani da budu brzi, što je zadana postavka kada se želite oduprijeti napadu grubom silom. Ne uključuju sel prema zadanim postavkama, tako da će dva korisnika s istom lozinkom imati isti hash, izlažući ga napadima unaprijed izračunatih tablica (duginih tablica).
  • Hash lozinka (bcrypt, scrypt, Argon2): osmišljeno da sporo po konstrukciji, integrirajte nasumičnu sol i faktor konfigurabilni trošak. Argon2id je danas najnovija dostignuća koju preporučuje OWASP.

Kako koristiti alat

  1. Zalijepite hash u polje za unos.
  2. Alat otkriva format (duljina, prefiks) i predlaže moguće algoritme.
  3. Ako se hash podudara s vrlo uobičajenom lozinkom, prikazuje se riječ otvorenog teksta.
  4. U suprotnom, dobivate popis algoritama kandidata za daljnje istraživanje pomoću alata posvećen.

Često postavljana pitanja

Zašto se moj bcrypt hash ne podudara s rječnikom?

Bcrypt koristi jedinstvenu slučajnu sol po raspršivanju: čak i uz lozinku password, svaki korisnik proizvodi drugačiji hash. Stoga predračunavanje rječnika ne radi. Upravo je to svojstvo koje bcrypt čini otpornim na napade na tablicu.

Što učiniti ako je moguće nekoliko algoritama za istu duljinu?

Usporedite s drugim tragovima: izvor hasha (Active Directory pokazuje na NTLM, Linux /etc/shadow u SHA-512 kriptu, staru MySQL bazu podataka u MD5 itd.), i kontekst aplikacije. Uz jednaku duljinu, MD5 ostaje statistički najvjerojatniji na stari sustavi.

Kako "razbiti" hash u praksi?

Za legitimne sigurnosne testove (audit, pentest), standardni su alati John the Ripper i hashcat. Prihvaćaju popise riječi masovni (rockyou, itd.) i iskorištavaju GPU za testiranje milijardi kandidata po drugo. Izvedivost ovisi o algoritmu: MD5 i SHA-1 daju brze rezultate, bcrypt i Argon2 usporiti napad za nekoliko redova veličine.

Može li se pretraživati ugrađeni rječnik?

Rječnik je namjerno minimalistički (39 natuknica) i služi za ilustraciju slabosti jednostavni hashovi na trivijalnim lozinkama. Za ozbiljnu pokrivenost upotrijebite popis riječi vanjski (rockyou, SecLists) s Johnom Trbosjekom ili hashcatom.

Možemo li “dekodirati” hash?

Ne. Hash nije enkripcija: ne postoji inverzna funkcija. Bilo koje mjesto koje obećava da će "dekodirati hash" zapravo primjenjuje pretraživanje u unaprijed izračunatoj bazi. Ako vaš lozinka je jedinstvena i duga, nema je.

Primjer zahtjeva

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

Ulazna shema

Polje Tip Obavezno Zadano
hash text

Krajnje točke

  • GET https://cdrn.fr/api/v1/tools - ispisuje sve dostupne alate
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - dohvaća shemu ovog alata
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - izvršava ovaj alat s JSON payloadom