RainbowCrack — комп'ютерна програма для швидкого злому хешів. Є реалізацією техніки Філіпа Оксліна faster time-memory trade-off.[1] Вона дозволяє створити базу предсгенерированих LanManager хешів, з допомогою якої можна майже миттєво зламати практично будь-який алфавітно-цифровий пароль.

RainbowCrack
Тип Злам хешів
Розробники Zhu Shuanglei
Стабільний випуск 1.7 (11 квітня 2017)
Операційна система Windows и Linux
Вебсайт project-rainbowcrack.com

Введення ред.

У той час як більшість проектів, пов'язаних з комп'ютерною безпекою, витрачає багато часу для злому пароля шифрувальних систем (простий перебір), RainbowCrack за час, порівнянний з часом злому одного хеша простим перебором, отримує таблиці хешів, за якими з дуже високою ймовірністю можна в тисячі разів швидше зламати будь-який хеш з перевіреного діапазону.[2]

Зазвичай хеші та алгоритм хешування відомі всім, але зворотне перетворення занадто складне. На цьому ґрунтується безпека багатьох систем.

Володіючи відсортованою таблицею хешів і відповідною таблицею паролів, можна отримати систему, що дозволяє з допомогою швидкого бінарного пошуку по всіх таблицях виконати зворотне перетворення хеша в пароль.[3]

Стандартний клієнт підтримує наступні алгоритми: LM, NTLM, MD5, SHA1, MYSQLSHA1, HALFLMCHALL, NTLMCHALL, ORACLE-SYSTEM і MD5-HALF, інші алгоритми можуть бути підключені у вигляді плагінів.[4]

Історія ред.

У 1982 році була створена основна частина проекту RainbowCrack, але у неї було кілька недоліків, пов'язаних з перетинами ланцюжків. Тому проекти, створені у той час, до цих пір є не настільки ефективними. Для виправлення цих недоліків у початку 90-х років творці UNIX-систем внесли зміни в проект, тим самим надавши великий вплив на розвиток методу. Вони ввели динамічну складову в хеш-функцію, котра створює унікальну функцію для кожної окремої UNIX-системи. У той же час Internet-проекти, системи Windows, бази даних, досі продовжують використовувати статичні хеш-функції, для яких за один повний прохід ключового простору можна розшифрувати всі паролі сервісів і цілого класу програм.

У 2003 році частково вирішена проблема перетинів ланцюжків, у зв'язку з чим проект став працювати ефективніше.

В кінці 2004 року в мережу були викладені вихідні коди програми, яка створює таблиці і підбирає паролі за допомогою нової версії алгоритму.[5]

У 2005 році в BitTorrent з'явилися готові пораховані таблиці (близько 120 ГБ) для основного ключового простору паролів LanMan (авторизація Windows).[6]

У тому ж 2005 році було запущено кілька проектів: латвійський passcracking.com[7], російський passcracking.ru[8] та ін., де всі бажаючі мали можливість використовувати ці таблиці через онлайн-сервіс. Зараз всі ці проекти закриті.

Наприкінці 2005 року був запущений проект rainbowcrack.com[9]. Його можна було поліпшити, збільшуючи розміри ланцюжків, тобто зменшуючи розміри таблиць (чим менше таблиця, тим менше час пошуку по ній) і надавши всім бажаючим доступ до подібного сервісу.[10]

Зараз проект RainbowCrack розширює кількість задіяних серверів.

Основна проблема ред.

Розмір райдужних таблиць занадто великий. Для розв'язання цієї проблеми використовується наступний спосіб: хеші розташовуються в ланцюжки по кілька тисяч комбінацій. Знаючи один ланцюжок, ми можемо одержати наступну комбінацію з попередньої за допомогою функції хешування. В таблиці записуються тільки початок і кінець ланцюжка.

Для знаходження пароля по такій таблиці потрібно застосувати до заданого хешу функцію хешування багато разів (залежить від довжини ланцюжків) і на черговому циклі вийде хеш, який є кінцем одного з ланцюжків в райдужній таблиці. Після цього ми проганяємо цей ланцюжок і заново застосовуємо функцію хешування від початкового до потрібного нам хешу. Після декількох ланцюжків ми знаходимо комбінацію, відповідну заданому хешу — це і є шуканий пароль.

Такі таблиці називають райдужними. Їх перевага полягає в тому, що, по-перше, вони мають менший розмір (в тисячі разів менше звичайних таблиць, що містять ті ж паролі), по-друге, вони дозволяють за кілька хвилин знайти зворотне перетворення будь-якого алгоритму хешування, якщо шуканий пароль вже був в цих таблицях.

Опис алгоритму ред.

Програмне забезпечення RainbowCrack складається з наступних частин:

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

Крок 1. Використання rtgen для генерації райдужних таблиць ред.

Для початку генерації таблиць необхідно визначити наступні параметри:

rtgen hash_algorithm charset plaintext_len_min plaintext_len_max table_index chain_len chain_num part_index

Пояснення цих параметрів ред.

Параметр Зміст
hash_algorithm Хеш-алгоритм (LM, NTLM, md5 і т.д.).
charset Кодування всіх відкритих текстів у райдужній таблиці. Всі можливі кодування визначені в Charset.txt файлі.
plaintext_len_min

plaintext_len_max

Ці два параметри визначають можливу довжину всіх відкритих текстів у райдужній таблиці. Якщо кодування є числовим, то plaintext_len_min дорівнює 1 і plaintext_len_max дорівнює 5. Тоді текст "12345", швидше за все, буде включений в таблицю, а "123456" - не буде.
table_index Table_index пов'язаний з "reduce function", яка використовується в райдужній таблиці.
chain_len Chain_len — довжина кожного «Райдужного ланцюга» в таблиці. «Райдужний ланцюг» розміром 16 байт є найменшою одиницею в райдужної таблиці. Райдужна таблиця містить багато райдужних цілей.
chain_num Chain_num — число райдужних ланцюжків в таблиці.
part_index Part_index — параметр, який визначається, як «startpoint» при генерації кожного райдужного ланцюжка. Він повинен бути числом (або починатися з цифри) в RainbowCrack 1.3 і 1.4.

Приклад ред.

hash_algorithm Lm, NTLM або md5
charset alpha-numeric = [ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]

або loweralpha-numeric = [abcdefghijklmnopqrstuvwxyz0123456789]

plaintext_len_min 1
plaintext_len_max 7
chain_len 3800
chain_num 33554432
key space  

Ключовий простір — кількість можливих відкритих текстів для кодування, plaintext_len_min і plaintext_len_max вибрані.

table size 3 GB
chain_num 33554432
success rate 0,999

Шанс успіху 99,9 %.

table generation commands Команди, що використовуються при створенні райдужних таблиць такі:
rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0

rtgen md5 loweralpha-numeric 1 7 1 3800 33554432 0

rtgen md5 loweralpha-numeric 1 7 2 3800 33554432 0

rtgen md5 loweralpha-numeric 1 7 3 3800 33554432 0

rtgen md5 loweralpha-numeric 1 7 4 3800 33554432 0

rtgen md5 loweralpha-numeric 1 7 5 3800 33554432 0

Для створення NTLM або LM-таблиць, необхідно замінити «md5» на «NTLM» або «LM». Для створення alpha-numeric charset необхідно замінити «loweralpha-numeric» на «alpha-numeric».

У результаті будуть створені наступні файли:

md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt    512 MB
md5_loweralpha-numeric#1-7_1_3800x33554432_0.rt    512 MB
md5_loweralpha-numeric#1-7_2_3800x33554432_0.rt    512 MB
md5_loweralpha-numeric#1-7_3_3800x33554432_0.rt    512 MB
md5_loweralpha-numeric#1-7_4_3800x33554432_0.rt    512 MB
md5_loweralpha-numeric#1-7_5_3800x33554432_0.rt    512 MB

Крок 2. Використання rtsort для сортування райдужних таблиць  ред.

Райдужні таблиці, породжені програмою rtgen, необхідно опрацювати для того, щоб пошук по ним став легше. Програма rtsort використовується для сортування «end point» всіх райдужних ланцюжків в райдужних таблицях.

Використовуються наступні команди:

rtsort md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt
rtsort md5_loweralpha-numeric#1-7_1_3800x33554432_0.rt
rtsort md5_loweralpha-numeric#1-7_2_3800x33554432_0.rt
rtsort md5_loweralpha-numeric#1-7_3_3800x33554432_0.rt
rtsort md5_loweralpha-numeric#1-7_4_3800x33554432_0.rt
rtsort md5_loweralpha-numeric#1-7_5_3800x33554432_0.rt

Кожна команда виконується кілька хвилин. Програма rtsort записує відсортовані райдужні таблиці у вихідному файлі. Якщо вільний об'єм оперативної пам'яті системи менше розміру відсортованих райдужних таблиць, то для зберігання даних, що залишилися буде виділено місце на жорсткому диску.

Крок 3. Використання програми rcrack для пошуку райдужних таблиць ред.

Переваги ред.

  • Велика потужність системи розшифровки паролів.
  • Процес розрахунку таблиці може бути продовжений після його некоректного переривання або зависання машини.
  • При розрахунках потрібно мало пам'яті (2 МБ).
  • Вхідні дані займають мало пам'яті (кілька байт для однієї таблиці).
  • В програму, яка дозволяє розшифрувати паролі за отриманими таблицями, можна додавати нові алгоритми хешування. Таким чином, існує можливість створення власного проекту, аналогічного RainbowCrack.

Недоліки ред.

  • На даний момент в таблицях ще немає паролів з символів кирилиці.
  • У таблицях можуть бути присутні або великі, або тільки малі символи, а паролі виду LanMan (Windows) не розрізняють малі/великі літери.

Результати ред.

На даний момент розмір райдужних таблиць перевищує 900 ГБ. Вони дозволяють із заданого хеша за кілька хвилин з дуже високою ймовірністю (близько 99 %) знайти пароль довжиною не більше 7 символів, що складається з букв, цифр і багатьох спеціальних символів. Процес розшифровки паролів реалізується наступними алгоритмами: LanMan, SHA1, NT, MD2, Cisco PIX, MD4, MD5, MySQL 3.23, RIPEMD-160, MySQL SHA1 (бази даних).

Примітки ред.

  1. Philippe Oechslin. Making a Faster Cryptanalytic Time-Memory Trade-Off // Lecture Notes in Computer Science. — 2003. — Т. 2729. — С. 617-630. — DOI:10.1007/978-3-540-45146-4_36.
  2. The Ethical Hacker Network — Tutorial: Rainbow Tables and RainbowCrack [Архівовано 2007-05-01 у Wayback Machine.]
  3. RainbowCrack — Распределённые вычисления. Архів оригіналу за 28 вересня 2013. Процитовано 13 квітня 2018.
  4. А.В. Аграновский, И.В. Мамай. . — № 4.1 (26).
  5. [1]
  6. [2] [Архівовано 13 вересня 2008 у Wayback Machine.] (вже закритий)
  7. [3] [Архівовано 1 грудня 2021 у Wayback Machine.]
  8. [4]
  9. [5] [Архівовано 25 квітня 2022 у Wayback Machine.]
  10. Проект RainbowCrack :: Распределённые вычисления в Интернете

Дивись також ред.

Посилання ред.