Identificēt hash algoritmu

identificē hash iespējamo algoritmu (MD5, SHA-1, SHA-256, bcrypt, argon2…) pēc tā garuma un formāta, un mēģina atrast tīro tekstu, izmantojot izplatītu paroļu vārdnīcu
Ielīmējiet jebkuru hash (heksadecimāls, bcrypt $2y$..., argon2 $argon2id$...). Rīks nosaka iespējamo algoritmu.

Kas ir kriptogrāfijas jaucējfunkcija?

Jauktais (jeb kriptogrāfiskais pirkstu nospiedums) ir pārveidojošas funkcijas rezultāts patvaļīga izmēra ievades dati (parole, fails, virkne) virknē fiksēts izmērs. Šī funkcija ir vienvirziena: no jaukšanas tā ir matemātiski nav iespējams atrast sākotnējo ierakstu. Izveido divas identiskas ievades vienmēr tas pats hash, bet mazākās izmaiņas ievadē pilnībā maina rezultātu.

Mūsu rīks identificē iespējamo jaucējkoda algoritmu, pamatojoties uz tā formātu un mēģina meklēt īpaši izplatītu paroļu vārdnīcu iepriekš aprēķināts pēc galvenajiem algoritmiem.

Kā atpazīt hash?

Identifikācijas pamatā ir trīs norādes:

  • Garums: katrs algoritms rada fiksēta izmēra nospiedumu.
  • Formāts: tīrs heksadecimāls, Base64 vai modulārais šifrēšanas formāts ar prefiksiem konkrēts.
  • Prefikss: mūsdienu paroļu jaucējkodi atbilst formātam $id$params$salt$hash, kur id nepārprotami identificē funkciju izmanto.

Kopējie heksadecimālie garumi

  • 8 rakstzīmes: CRC32 (kontrolsumma, nevis kriptogrāfiska jaucēja)
  • 32 rakstzīmes: MD5, MD4, NTLM, RIPEMD-128
  • 40 rakstzīmes: SHA-1, RIPEMD-160
  • 64 rakstzīmes: SHA-256, SHA3-256
  • 96 rakstzīmes: SHA-384, SHA3-384
  • 128 rakstzīmes: SHA-512, SHA3-512, Whirlpool

Ar garumu vien nepietiek, lai secinātu: MD5 un NTLM ir vienāds — 32 rakstzīmes. hex, piemēram. Pēc tam mūsu rīks atgriež iespējamo algoritmu sarakstu.

Moduļu šifrēšanas formāta prefiksi

Paroles jaucējkodi no crypt() vai mūsdienu bibliotēkām izmanto a skaidrs prefikss:

  • $1$: MD5 kripta
  • $5$: SHA-256 kripta
  • $6$: SHA-512 kripta
  • $2y$, $2a$, $2b$: Bcrypt (varianti atkarībā no platformas)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (varianti izmantošana, šodien ieteicams izmantot Argon2id)

Bcrypt hash piemērs

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Lietošanas gadījumi

  • Datu noplūdes analīze: identificējiet datu bāzes izmantoto algoritmu apdraudēta, lai novērtētu uzbrukuma grūtības.
  • Atkļūdošana: ātri apstipriniet, kurš algoritms ģenerēja atrasto pirkstu nospiedumu API atbildē vai žurnālā.
  • Drošības audits: atrodiet sistēmu, kurā joprojām tiek glabātas paroles MD5 vai SHA-1 (jāizvairās).
  • Tiesu ekspertīze: raksturojiet artefaktu izmeklēšanā.

Kāpēc hash nav atgriezenisks

Jaukšanas funkcija ir paredzēta vienvirziena. Algoritma nav "jaukšanas atšifrēšana", jo hash nav šifrēšana: tā ir projekcija. Vairākas dažādas ievades teorētiski var radīt vienu un to pašu hash (sadursmi), tāpēc pat zinot ieraksts, kas rada pareizo hash, jums nav garantijas, ka tas ir sākotnējais ieraksts.

Praksē “jaukšanas” pārtraukšana nozīmē masveida kandidātu ierakstu testēšanu līdz atrodat to, kura pirksta nospiedums atbilst. Tas ir tas, ko dara vārdnīcu uzbrukumi un ar brutālu spēku.

Integrēta vārdnīca meklēšana

Mūsu rīkā ir iekļauta 39 īpaši izplatītu paroļu mini vārdnīca: tukša virkne, parole, administrators, 123456, qwerty, letmein utt. Šīs 39 ieejas ir iepriekš aprēķinātas, izmantojot 10 algoritmus (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM utt.). Ja jūsu jauktais atbilst vienam no šiem pirkstu nospiedumiem, rīks atgriež jums paroli skaidrā tekstā.

Šī funkcija ilustrēkāpēc vienkāršas jaucējzīmes nav piemērotas vārdiem piespēle: uzbrucējam pat nav jāaprēķina, viņš konsultējas ar tabulu.

Vienkāršs hash vs paroles hash

Ne visas jaucējzīmes ir vienādas paroļu glabāšanai:

  • Vienkāršas jaucējkodas (MD5, SHA-256, SHA-512): izstrādātas tā, lai tās būtu ātras, ir noklusējuma iestatījums, ja vēlaties pretoties brutāla spēka uzbrukumam. Tie neietver Pēc noklusējuma sel, tāpēc diviem lietotājiem ar vienu un to pašu paroli būs to pašu hash, pakļaujot to iepriekš aprēķinātu tabulu (varavīksnes tabulu) uzbrukumiem.
  • Paroles jaukšana (bcrypt, scrypt, Argon2): paredzēts lēni pēc uzbūves, integrējiet nejaušu sāli un faktoru konfigurējamas izmaksas. Argon2id šodien ir OWASP ieteiktais jaunākais sasniegums.

Kā lietot rīku

  1. Ielīmējiet jaucējkodu ievades laukā.
  2. Rīks nosaka formātu (garumu, prefiksu) un iesaka iespējamos algoritmus.
  3. Ja jaucējkods atbilst īpaši izplatītai parolei, tiek parādīts vienkāršā teksta vārds.
  4. Pretējā gadījumā jūs iegūstat kandidātu algoritmu sarakstu, ko tālāk izpētīt, izmantojot rīku veltīta.

Bieži uzdotie jautājumi

Kāpēc mana bcrypt jaucējkods nav saskaņots ar vārdnīcu?

Bcrypt izmanto unikālu nejaušu sāli katram jaucējam: pat ar paroli parole, katrs lietotājs rada atšķirīgu hash. Tāpēc vārdnīcas priekšaprēķins nedarbojas. Tieši šis īpašums padara bcrypt izturīgu pret galda uzbrukumiem.

Ko darīt, ja vienā garumā ir iespējami vairāki algoritmi?

Krustojums ar citām norādēm: jaucējkoda avots (Active Directory norāda uz NTLM, Linux /etc/shadow uz SHA-512 kriptu, vecu MySQL datu bāzi uz MD5 utt.), un lietojumprogrammas konteksts. Vienādā garumā MD5 joprojām ir statistiski visticamākais vecās sistēmas.

Kā praksē "salauzt" jaucējvārdu?

Leģitīmām drošības pārbaudēm (audits, pentest) ir standarta rīki Jānis Uzšķērdētājs un Hashcat. Viņi pieņem vārdu sarakstus masveida (rockyou utt.) un izmantojiet GPU, lai pārbaudītu miljardus kandidātu katrā otrais. Iespējamība ir atkarīga no algoritma: MD5 un SHA-1 dod ātru rezultātu, bcrypt un Argon2 palēnināt uzbrukumu par vairākām kārtām.

Vai iebūvētajā vārdnīcā var meklēt?

Vārdnīca ir apzināti minimālistiska (39 ieraksti) un kalpo, lai ilustrētu vājumu vienkāršas jaukšanas metodes triviālām parolēm. Lai iegūtu nopietnu informāciju, izmantojiet vārdu sarakstu ārējais (rockyou, SecLists) ar John the Ripper vai hashcat.

Vai mēs varam "atšifrēt" jaucējkodu?

Nē. Hash nav šifrēšana: nav apgrieztas funkcijas. Jebkura vietne, kas sola "atšifrēt hash" faktiski piemēro uzmeklēšanu iepriekš aprēķinātā bāzē. Ja jūsu parole ir unikāla un gara, tās tur nav.

Pieprasījuma piemērs

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

Ievades shēma

Lauks Tips Obligāts Noklusējums
hash text

Endpoint

  • GET https://cdrn.fr/api/v1/tools - uzskaita visus pieejamos rīkus
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - iegūst šī rīka shēmu
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - izpilda šo rīku ar JSON payload