Идентифициране на алгоритъм на hash
- Табло
- Документация
- API
Какво е криптографски хеш?
Хеш (или криптографски отпечатък) е резултат от функция, която трансформира входни данни с произволен размер (парола, файл, низ) в низ от фиксиран размер. Тази функция е еднопосочна: от хеш, тя е математически невъзможно да се намери оригиналния запис. Два идентични входа произвеждат винаги един и същ хеш, но най-малката промяна във входа напълно променя резултата.
Нашият инструмент идентифицира вероятния алгоритъм на хеш въз основа на неговия формат и прави опит за търсене в речник на ултрачесто срещаните пароли предварително изчислени по основните алгоритми.
Как да идентифицираме хеш?
Идентификацията се основава на три улики:
- Дължина: всеки алгоритъм създава отпечатък с фиксиран размер.
- Форматът: чист шестнадесетичен, 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.
Как да използвате инструмента
- Поставете хеша в полето за въвеждане.
- Инструментът открива формата (дължина, префикс) и предлага възможни алгоритми.
- Ако хешът съвпада с ултрачесто срещана парола, се показва думата в обикновен текст.
- В противен случай получавате списък с кандидат-алгоритми, които да проучите допълнително с инструмент посветен.
Често задавани въпроси
Защо моят 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