Hash algoritmusának azonosítása

azonosítja egy hash valószínű algoritmusát (MD5, SHA-1, SHA-256, bcrypt, argon2…) annak hossza és formátuma alapján, és megpróbálja visszanyerni a tiszta szöveget gyakori jelszavak szótárából
Illesszen be bármilyen hash-t (hexadecimális, bcrypt $2y$..., argon2 $argon2id$...). Az eszköz felismeri a valószínű algoritmust.

Mi az a kriptográfiai hash?

A hash (vagy kriptográfiai ujjlenyomat) egy olyan függvény eredménye, amely egy tetszőleges méretű bemeneti adatot (jelszót, fájlt, karakterláncot) fix méretű karakterlánccá alakít. Ez a függvény egyirányú: egy hash-ből matematikailag kivitelezhetetlen az eredeti bemenet visszanyerése. Két azonos bemenet mindig ugyanazt a hasht eredményezi, de a bemenet legkisebb változtatása is teljesen módosítja az eredményt.

Eszközünk a formátuma alapján azonosítja a valószínű algoritmust, és megpróbál egy keresést (lookup) végezni a főbb algoritmusokra előre kiszámított, ultragyakori jelszavakat tartalmazó szótárban.

Hogyan lehet azonosítani egy hasht?

Az azonosítás három nyomon alapul:

  • A hosszúság: minden algoritmus fix méretű ujjlenyomatot készít.
  • A formátum: tiszta hexadecimális, Base64, vagy Modular Crypt Format specifikus előtagokkal.
  • Az előtag: a modern jelszó-hash-ek a $id$params$salt$hash formátumot követik, ahol az id egyértelműen azonosítja a használt funkciót.

Gyakori hexadecimális hosszúságok

  • 8 karakter: CRC32 (ellenőrző összeg, nem kriptográfiai hash)
  • 32 karakter: MD5, MD4, NTLM, RIPEMD-128
  • 40 karakter: SHA-1, RIPEMD-160
  • 64 karakter: SHA-256, SHA3-256
  • 96 karakter: SHA-384, SHA3-384
  • 128 karakter: SHA-512, SHA3-512, Whirlpool

A hosszúság önmagában nem elég a következtetéshez: például az MD5 és az NTLM azonos, 32 hexadecimális karakteres méreten osztozik. Eszközünk ilyenkor a lehetséges algoritmusok listáját adja vissza.

Modular Crypt Format előtagok

A crypt()-ből vagy modern könyvtárakból származó jelszó-hash-ek explicit előtagot használnak:

  • $1$: MD5 crypt
  • $5$: SHA-256 crypt
  • $6$: SHA-512 crypt
  • $2y$, $2a$, $2b$: Bcrypt (változatok platformtól függően)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (felhasználási változatok, ma az Argon2id az ajánlott)

Példa Bcrypt hash-re

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Felhasználási esetek

  • Adatszivárgások elemzése: egy kompromittálódott adatbázis által használt algoritmus azonosítása a támadás nehézségének felméréséhez.
  • Hibakeresés (Debug): gyorsan megerősíteni, melyik algoritmus generált egy API válaszban vagy logban talált ujjlenyomatot.
  • Miért nem visszafordítható a hash

    A hash függvényt úgy tervezték, hogy egyirányú legyen. Nincs algoritmus "hash decryption", mert a hash nem titkosítás: ez egy vetítés. Több Különböző bemenetek elméletileg ugyanazt a hash-t (ütközést) hozhatják létre, tehát még tudva is egy bejegyzés, amely a megfelelő hash-t produkálja, nem garantálja, hogy az eredeti bejegyzés.

    A gyakorlatban a hash „feltörése” azt jelenti, hogy a jelölt bejegyzések tömegesen tesztelik amíg meg nem találja azt, akinek az ujjlenyomata egyezik. Ezt teszik a szótári támadások és nyers erővel.

    Integrált szótár keresés

    Eszközünk egy miniszótárat tartalmaz 39 rendkívül gyakori jelszóból: üres karakterlánc, jelszó, admin, 123456, qwerty, letmein stb. Ez a 39 bemenet 10 algoritmuson előre ki van számítva (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM stb.). Ha a hash egyezik ezen ujjlenyomatok egyikével, az eszköz tiszta szövegben adja vissza a jelszót.

    Ez a funkció azt szemlélteti,miért nem alkalmasak az egyszerű hash-ek a következő szavakra passzt: a támadónak nem is kell számolnia, egy táblázatot konzultál.

    Egyszerű hash vs jelszó hash

    Nem minden hash egyenlő a jelszavak tárolására:

    • Egyszerű kivonatok (MD5, SHA-256, SHA-512): gyorsra tervezték, amely alapértelmezés, ha ellenállni akar egy brute force támadásnak. Nem tartalmazzák Alapértelmezés szerint sel, így két azonos jelszóval rendelkező felhasználó kapja meg a ugyanaz a hash, ami előre kiszámított táblák (szivárványtáblák) támadásainak teszi ki.
    • Jelszókivonat (bcrypt, scrypt, Argon2): úgy tervezték, hogy felépítésük szerint lassú, integráljon egy véletlenszerű sót és egy tényezőt konfigurálható költség. Az Argon2id ma az OWASP által ajánlott csúcstechnológia.

    Hogyan kell használni az eszközt

    1. Illessze be a hash-t a beviteli mezőbe.
    2. Az eszköz észleli a formátumot (hossz, előtag), és javaslatokat tesz a lehetséges algoritmusokra.
    3. Ha a hash egy rendkívül gyakori jelszóval egyezik, akkor az egyszerű szöveges szó jelenik meg.
    4. Egyébként megkapja a jelölt algoritmusok listáját, amelyeket egy eszközzel tovább kell vizsgálni dedikált.

    Gyakran ismételt kérdések

    Miért nem egyezik a bcrypt hash-em a szótárral?

    A Bcrypt egyedi véletlenszerű sót használ hashenként: még a password jelszóval is, minden felhasználó más-más hash-t állít elő. A szótári előszámítás ezért nem működik. Pontosan ez a tulajdonság teszi ellenállóvá a bcrypt-et az asztali támadásokkal szemben.

    Mi a teendő, ha több algoritmus is lehetséges azonos hosszúságban?

    Keresztezés más nyomokkal: a hash forrása (Az Active Directory NTLM-re, Linuxra mutat /etc/shadow az SHA-512 kriptába, egy régi MySQL adatbázis az MD5-re stb.), és a alkalmazási környezet. Egyenlő hosszúság mellett statisztikailag továbbra is az MD5 a legvalószínűbb régi rendszerek.

    Hogyan lehet "megtörni" a hash-t a gyakorlatban?

    A törvényes biztonsági tesztekhez (audit, pentest) a szabványos eszközök Hasfelmetsző János és hashcat. Elfogadják a szólistákat masszív (rockyou stb.), és használja ki a GPU-t több milliárd jelölt tesztelésére második. A megvalósíthatóság az algoritmustól függ: az MD5 és az SHA-1 gyorsan termel, a bcrypt és az Argon2 több nagyságrenddel lassítja a támadást.

    Kereshető a beépített szótár?

    A szótár szándékosan minimalista (39 szócikk), és a gyengeség szemléltetésére szolgál egyszerű hash-ek triviális jelszavakon. Komoly lefedettséghez használj szólistát külső (rockyou, SecLists) Hasfelmetsző Jánossal vagy hashcattel.

    „Dekódolhatunk” egy hash-t?

    Nem. A hash nem titkosítás: nincs inverz függvény. Bármelyik webhely azt ígéri, hogy "dekódol egy hash"-t, valójában egy előre kiszámított bázisban való keresést alkalmaz. Ha a te A jelszó egyedi és hosszú, nincs ott.

Kérés példa

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

Bemeneti séma

Mező Típus Kötelező Alapértelmezett
hash text

Végpontok

  • GET https://cdrn.fr/api/v1/tools - listázza az összes elérhető eszközt
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - lekéri ezen eszköz sémáját
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - végrehajtja ezen eszközt JSON payloaddal