Идентифициране на алгоритъм на hash

идентифицира вероятния алгоритъм на hash (MD5, SHA-1, SHA-256, bcrypt, argon2…) от неговата дължина и формат, и опитва да възстанови чистия текст чрез речник от често срещани пароли
Поставете всеки hash (шестнадесетичен, bcrypt $2y$..., argon2 $argon2id$...). Инструментът открива вероятния алгоритъм.

Какво е криптографски хеш?

Хеш (или криптографски отпечатък) е резултат от функция, която трансформира входни данни с произволен размер (парола, файл, низ) в низ от фиксиран размер. Тази функция е еднопосочна: от хеш, тя е математически невъзможно да се намери оригиналния запис. Два идентични входа произвеждат винаги един и същ хеш, но най-малката промяна във входа напълно променя резултата.

Нашият инструмент идентифицира вероятния алгоритъм на хеш въз основа на неговия формат и прави опит за търсене в речник на ултрачесто срещаните пароли предварително изчислени по основните алгоритми.

Как да идентифицираме хеш?

Идентификацията се основава на три улики:

  • Дължина: всеки алгоритъм създава отпечатък с фиксиран размер.
  • Форматът: чист шестнадесетичен, Base64 или Modular Crypt Format с префикси конкретно.
  • Префикс: Съвременните хешове на пароли следват формата $id$params$salt$hash, където id недвусмислено идентифицира функцията използвани.

Общи шестнадесетични дължини

  • 8 знака: CRC32 (контролна сума, а не криптографски хеш)
  • 32 знака: MD5, MD4, NTLM, RIPEMD-128
  • 40 знака: SHA-1, RIPEMD-160
  • 64 знака: SHA-256, SHA3-256
  • 96 знака: SHA-384, SHA3-384
  • 128 знака: SHA-512, SHA3-512, Whirlpool

Дължината сама по себе си не е достатъчна, за да се заключи: MD5 и NTLM имат еднакъв размер от 32 знака шестнадесетичен, например. След това нашият инструмент връща списъка с възможни алгоритми.

Префикси на модулен Crypt формат

Хешове на пароли от crypt() или модерни библиотеки използват a ясен префикс:

  • $1$: MD5 крипта
  • $5$: SHA-256 крипта
  • $6$: SHA-512 крипта
  • $2y$, $2a$, $2b$: Bcrypt (варианти в зависимост от платформата)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (варианти употреба, Argon2id се препоръчва днес)

Пример за хеш на Bcrypt

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Случаи на употреба

  • Анализ на изтичане на данни: идентифицирайте алгоритъма, използван от база данни компрометиран за оценка на трудността на атаката.
  • Отстраняване на грешки: бързо потвърдете кой алгоритъм е генерирал намерен пръстов отпечатък в API отговор или журнал.
  • Одит на сигурността: открийте система, която все още съхранява пароли MD5 или SHA-1 (да се избягва).
  • Криминалистика: характеризиране на артефакт в разследване.

Защо хешът не е обратим

Хеш функцията е проектирана да бъде еднопосочна. Няма алгоритъм на "декриптиране на хеш", защото хешът не е криптиране: той е проекция. Няколко различни входове могат на теория да произведат един и същ хеш (сблъсък), така че дори да знаем запис, който произвежда правилния хеш, нямате гаранция, че това е оригиналният запис.

На практика "разбиването" на хеш означава мащабно тестване на записи на кандидати докато намерите този, чийто пръстов отпечатък съвпада. Ето какво правят речниковите атаки и с груба сила.

Интегрирано търсене в речник

Нашият инструмент включва мини-речник от 39 изключително често срещани пароли: празен низ, парола, admin, 123456, qwerty, letmein и т.н. Тези 39 входа са предварително изчислени на 10 алгоритъма (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM и др.). Ако вашият хеш съответства на един от тези отпечатъци, инструментът ви връща паролата в ясен текст.

Тази функция илюстриразащо простите хешове не са подходящи за думи на пропуск: нападателят дори не трябва да изчислява, той се консултира с таблица.

Прост хеш срещу хеш на парола

Не всички хешове са еднакви за съхраняване на пароли:

  • Прости хешове (MD5, SHA-256, SHA-512): проектирани да бъдат бързи, които е по подразбиране, когато искате да устоите на атака с груба сила. Те не включват sel по подразбиране, така че двама потребители с една и съща парола ще имат същия хеш, излагайки го на атаки от предварително изчислени таблици (таблици на дъгата).
  • Хеш на паролата (bcrypt, scrypt, Argon2): проектиран да бъде бавно по конструкция, интегрирайте произволна сол и фактор от конфигурируеми разходи. Argon2id днес е най-модерното, препоръчано от OWASP.

Как да използвате инструмента

  1. Поставете хеша в полето за въвеждане.
  2. Инструментът открива формата (дължина, префикс) и предлага възможни алгоритми.
  3. Ако хешът съвпада с ултрачесто срещана парола, се показва думата в обикновен текст.
  4. В противен случай получавате списък с кандидат-алгоритми, които да проучите допълнително с инструмент посветен.

Често задавани въпроси

Защо моят bcrypt хеш не е съпоставен с речника?

Bcrypt използва уникална произволна сол за хеш: дори с паролата password, всеки потребител произвежда различен хеш. Поради това предварителното изчисление на речника не работи. Точно това е свойството, което прави bcrypt устойчив на атаки към таблици.

Какво да направите, ако са възможни няколко алгоритъма за една и съща дължина?

В сравнение с други улики: източникът на хеша (Active Directory сочи към NTLM, Linux /etc/shadow към SHA-512 крипта, стара MySQL база данни към MD5 и т.н.) и контекст на приложението. При еднаква дължина MD5 остава статистически най-вероятният стари системи.

Как да "разбиете" хеш на практика?

За легитимни тестове за сигурност (одит, пентест) са стандартни инструменти Джон Изкормвача и котка. Те приемат списъци с думи масивни (rockyou и т.н.) и да използват GPU за тестване на милиарди кандидати на второ. Осъществимостта зависи от алгоритъма: MD5 и SHA-1 дават бързо, bcrypt и Argon2 забавят атаката с няколко порядъка.

Може ли да се търси във вградения речник?

Речникът е умишлено минималистичен (39 записа) и служи за илюстриране на слабостта на прости хешове на тривиални пароли. За сериозно покритие използвайте списък с думи външни (rockyou, SecLists) с John the Ripper или hashcat.

Можем ли да „декодираме“ хеш?

Не. Хешът не е криптиране: няма обратна функция. Всеки сайт, който обещава да "декодира хеш" всъщност прилага търсене в предварително изчислена база. Ако вашият паролата е уникална и дълга, няма я.

Пример за заявка

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

Входна схема

Поле Тип Задължително По подразбиране
hash text

Крайни точки

  • GET https://cdrn.fr/api/v1/tools - изброява всички достъпни инструменти
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - извлича схемата на този инструмент
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - изпълнява този инструмент с JSON payload