RainbowCrack
Тип | Злам хешів |
---|---|
Розробники | Zhu Shuanglei |
Стабільний випуск | 1.7 (11 квітня 2017) |
Операційна система | Windows и Linux |
Вебсайт | project-rainbowcrack.com |
RainbowCrack — комп'ютерна програма для швидкого злому хешів. Є реалізацією техніки Філіпа Оксліна faster time-memory trade-off.[1] Вона дозволяє створити базу предсгенерированих LanManager хешів, з допомогою якої можна майже миттєво зламати практично будь-який алфавітно-цифровий пароль.
Введення
У той час як більшість проєктів, пов'язаних з комп'ютерною безпекою, витрачає багато часу для злому пароля шифрувальних систем (простий перебір), 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 складається з наступних частин:
- rtgen — програма для генерації райдужних таблиць.
- rtsort - програма для сортування райдужних таблиць, породжених rtgen.
- rcrack — програма для пошуку райдужних таблиць, упорядкованих за rtsort.
Процес пошуку таблиць еквівалентний злому хешів. Подробиці використання цих програм будуть описані нижче.
Крок 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 (бази даних).
Примітки
- ↑ 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.
- ↑ The Ethical Hacker Network — Tutorial: Rainbow Tables and RainbowCrack [Архівовано 2007-05-01 у Wayback Machine.]
- ↑ RainbowCrack — Распределённые вычисления. Архів оригіналу за 28 вересня 2013. Процитовано 13 квітня 2018.
- ↑ А.В. Аграновский, И.В. Мамай. . — № 4.1 (26).
- ↑ [1]
- ↑ [2] [Архівовано 13 вересня 2008 у Wayback Machine.] (вже закритий)
- ↑ [3] [Архівовано 1 грудня 2021 у Wayback Machine.]
- ↑ [4]
- ↑ [5] [Архівовано 25 квітня 2022 у Wayback Machine.]
- ↑ Проект RainbowCrack :: Распределённые вычисления в Интернете
Дивись також
Посилання
- Офіційний сайт