Всі методи злому md5

Трохи про криптографії

Сучасна криптографія включає в себе три напрямки: шифрування із закритим ключем, шифрування з відкритим ключем і хешування. Сьогодні ми поговоримо про те, що таке змішування і з чим його їдять. В цілому під хешированием розуміють перетворення вхідних даних довільної довжини в вихідну бітову рядок фіксованої довжини. Найчастіше хеш-функції застосовують в процесі аутентифікації користувача (в базі даних зазвичай зберігається хеш пароля замість самого пароля) і для обчислення контрольних сум файлів, пакетів даних і т. П. Одним з найбільш відомих і широко використовуваних алгоритмів хешування є MD5.

перші атаки

Всі методи злому md5
Приклад колізії MD5-хеш-кодувань

Всі методи злому md5
Брут MD5 по масці

Використання алгоритму MD5 в ЕЦП неприйнятно внаслідок недостатньої стійкості цього алгоритму до пошуку колізій.

Це кінець?

Ighashgpu: злом за допомогою GPU

Ми використовуємо вищенаведений спосіб для злому одного певного хешу, згенерованого за допомогою алгоритму MD5. Максимальна довжина можливого пароля становить сім символів. Через якийсь час пароль буде знайдений (qwerty). Тепер давай спробуємо зламати ще один хеш, але з трохи іншими умовами. Нехай наш хеш має вигляд d11fd4559815b2c3de1b685bb78a6283, а включає в себе літери, цифри, знак підкреслення і має суфікс «_admin». В даному випадку ми можемо використовувати перебір пароля по масці, щоб спростити програмі завдання:

Тут параметр '-u' дозволяє вказати набір символів, які використовуються при переборі, а параметр '-m' задає маску пароля. У нашому випадку маска складається з шести довільних символів, після яких йде поєднання «_admin». Підбір пароля також не складе ніяких труднощів.

Колізією в криптографії називають два різних вхідних блоку даних, які для однієї і тієї ж хеш-функції дають один і той же хеш. Кожна функція на виході дає послідовність бітів певної довжини, яка не залежить від розміру початкових даних. Звідси випливає, що колізії існують для будь-якого алгоритму хешування. Однак імовірність того, що ти зможеш знайти колізію в «хорошому» алгоритмі, практично наближається до нуля. На жаль чи на щастя, алгоритми хешування можуть містити помилки, як і будь-які програми. Багато хеш-функції або вже були зламані, або скоро будуть. В даному випадку «зламати» - значить знайти колізію за час, який багато менші, ніж заявлена ​​нескінченності.

Ighashgpu: списки

Тепер давай спробуємо зламати відразу кілька паролів одночасно. Припустимо, що до нас в руки потрапила база даних хешів паролів. При цьому відомо, що кожен пароль закінчується символами c00l:

Збережи хеши в файлі encrypted.dat і запусти Ighashgpu як зазначено нижче:

Після завершення роботи програми в папці Ighashgpu з'явиться файл ighashgpu_results.txt зі зламаними паролями:

Всі методи злому md5
Взломание хеші з файлу encrypted.dat

Ighashgpu: сіль

Наостанок давай зробимо злом «підсоленого» хешу. Припустимо, що хеш генерується за наступним алгоритмом:

В результаті ми отримали такий хеш: 42151cf2ff27c5181bb36a8bcfafea7b. Ighashgpu дозволяє вказувати «сіль» в параметрі «-asalt»:

І ми знову отримали шуканий пароль легко і швидко.

Цікава математика

Для 8-символьного пароля, складеного з перших 126 символів ASCII, є 63 527 879 748 485 376 можливих комбінацій. Для 254 символів кількість можливих комбінацій зростає до 17 324 859 956 700 833 536, що аж в 2,7 мільярда разів більше, ніж людей на нашій планеті. Якщо створити текстовий файл, який містить всі ці паролі, то він займе мільйони терабайт. Звичайно, в сучасному світі це можливо, але вартість зберігання такого файлу буде просто захмарною.

Злом MD5 в режимі турбо

Тепер перейдемо від слів до справи і спробуємо зламати пару-трійку хешів паролів за допомогою цього методу.

Rainbow tables

«Веселкові» таблиці - це особливий тип словника, який містить ланцюжка паролів і дозволяє підібрати пароль протягом декількох секунд або хвилин з ймовірністю 85-99%.

«Райдужний» злом

Спочатку необхідно визначитися з програмою. Особисто мені нравітсяRainbowCrack. яка розповсюджується безкоштовно і працює як на Windows, так і на Linux. Вона підтримує чотири алгоритму хешування: LN / NTLM, MD5 і SHA1. Програма не вимагає установки, досить розпакувати її куди-небудь на диск. Після розпакування необхідно знайти «райдужні» таблиці для алгоритму MD5. Тут все не так просто: їх можна або завантажити безкоштовно, або купити, або згенерувати самостійно. Один з найбільших архівів безкоштовних таблиць доступний на сайті проекту Free Rainbow Tables. До речі, ти теж можеш допомогти проекту, якщо скачаєш клієнт з сайту і приєднаєшся до розподіленої міжнародної мережі, яка генерує «райдужні» таблиці. На момент написання статті на цьому сайті вже було доступно 3 Тб таблиць для алгоритмів MD5, SHA1, LM і NTLM. Якщо у тебе немає можливості злити такий обсяг інформації, то на тому ж сайті можна замовити диски з «райдужними» таблицями. На даний момент пропонується три пакети: LN / NTLM, MD5 і SHA1 - по 200 доларів кожен. Ми ж сгенерируем таблиці самостійно. Для цього необхідно використовувати програму rtgen, що входить до складу RainbowCrack. Вона приймає такі вхідні параметри:

  • hash_algorithm - алгоритм хешування (LM, NTLM, MD5 або SHA1);
  • charset - один з наборів символів, що міститься у файлі charset.txt;
  • plaintextlen min і plaintextlen max - мінімальна і максимальна довжина пароля;
  • tableindex, chain len, chainnum і part index - «магічні числа», описані в статті Філіпа Оешліна bit.ly/nndT8M.

Розглянемо останні параметри докладніше:

  1. table_index - індекс «райдужної» таблиці, який можна використовувати при розбивці таблиці на кілька файлів. Я використовував 0, так як моя таблиця складалася всього з одного файлу.
  2. chain_len - кількість унікальних паролів в ланцюжку.
  3. chain_num - кількість ланцюжків в таблиці.
  4. part_index - це параметр, що визначає початок ланцюжка. Творці програми просять використовувати в якості цього параметра тільки число (я використовував 0). Тепер запускаємо генерацію «райдужної» таблиці для MD5:

Далі отриману таблицю необхідно відсортувати, щоб оптимізувати пошук потрібної нам ланцюжка. Для цього запускаємо rtsort.exe:

Всі методи злому md5
Генеруючи райдужну таблицю

«Веселкові» таблиці vs. CPU vs. GPU

Я думаю, ти звернув увагу на те, наскільки швидко Ighashgpu здатний зламувати MD5-хеш-кодування повним перебором, і на те, що RainbowCrack робить це ще швидше при наявності хорошої «райдужної» таблиці. Я вирішив порівняти швидкість роботи цих програм. Для чистоти експерименту я використовував програму MDCrack, яка здійснює брут пароля на CPU (і є однією з кращих серед програм такого типу). Ось що вийшло в результаті для GPU (nVidia GeForce GT 220M), CPU (Intel Atom N450, два ядра) і «райдужних» таблиць:

Всі методи злому md5
Райдужна таблиця зсередини

bit.ly/vEhdir - додавання нового алгоритму хешування в RainbowCrack за допомогою API.

bit.ly/vTSB9K - опис формату «райдужної» таблиці.

замість висновку

В кінці я б хотів трохи поговорити про захист твоїх паролів. По-перше, не використовуй вразливі алгоритми хешування, такі як MD5 або SHA1. На даний момент варто задуматися про використання однієї з криптографічних хеш-функцій SHA2 або SHA3 (як тільки опублікують відповідний стандарт). По-друге, не використовуй функції хешування безпосередньо. Завжди старайся використовувати «сіль» і комбінувати різні алгоритми. І по-третє, вибирай складні довільні паролі довжиною як мінімум вісім символів. Звичайно, це не захистить тебе від злому на 100%, але хоча б ускладнить життя зловмисникам.

Покажи цю статтю друзям:

debugermd5

Найчастіше ім'я вже відомо (адже його треба показати в привітанні), значить воно як сіль не підходить. Пароль + сіль не дуже ефективний метод, знайти колізію в цілому хеше не складно. В інтернеті повно готових рішень. Однак існує панацея і від колізій. 1) Якщо це простий пароль в базі даних який перевіряється шляхом порівняння значень. Те саме просте «обрізок готового хешу пароля» + «обрізок готового хешу солі». Наприклад: логін ([2804e0bda79bd8b5] 016878442b110b95), пароль (749789e4982b0c56 [3f6729aac100a614]) = [2804e0bda79bd8b5 + 3f6729aac100a614] Звичайно, цього хешу теж належать значення проте маючи на руках тільки підлогу хешу ніколи не дізнатися його Істен значення! Виглядати буде як звичайний 32 символьний хеш. 2) Якщо необхідно в майбутньому дешифрувати дані можна запропонувати наступне рішення (хочу відразу зауважити цей спосіб в рази ускладнює пошук колізій, так як перед цим доведеться розставити символи по місцях): крім пароля потрібні 2 поля для введення чисел. Готовий хеш (32 символу) розбивається на блоки з 1-го поля - 2,4,8,16,32; друге число буде відповідати, заздалегідь визначеним, порядку перемішування. Однак варто зазначити що таким способом краще шифрувати окремі слова. Інакше згодом можуть виникнути проблеми з дешефраціей. Якщо я в чомусь помилився поправте мене!

debugermd5

На основі всього вищесказаного можна створити умовно закритий чат з використанням localStorage. У відкритому вигляді передається кожне слово хеш якого Переміщення. Основною трудністю мені представляється база хешів і слів їм відповідних, розмір якої може перевищувати 160 000 слів, і завантажуватися вона повинна один раз при старті чату. Браузеру буде не просто з цим работаь.

Схожі статті