Hash algoritmusának azonosítása
- Irányítópult
- Dokumentáció
- API
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$hashformátumot követik, ahol azidegyé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.
- 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.
- Illessze be a hash-t a beviteli mezőbe.
- Az eszköz észleli a formátumot (hossz, előtag), és javaslatokat tesz a lehetséges algoritmusokra.
- Ha a hash egy rendkívül gyakori jelszóval egyezik, akkor az egyszerű szöveges szó jelenik meg.
- Egyébként megkapja a jelölt algoritmusok listáját, amelyeket egy eszközzel tovább kell vizsgálni dedikált.
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:
Hogyan kell használni az eszközt
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öztGET https://cdrn.fr/api/v1/tools/hash-identifier- lekéri ezen eszköz sémájátPOST https://cdrn.fr/api/v1/tools/hash-identifier/execute- végrehajtja ezen eszközt JSON payloaddal