# Prepend digits (adds 10 more passes through the wordlist)
[0123456789]
Ми можемо розбити це правило на три частини. Символ ^ означає, що операція повинна починатися від початку слова. Іншими словами, вона повинна випереджати послідовність символів. Квадратні дужки [і] містять набір символів, які повинні слідувати за символом ^. Цифри 0123456789 є символами, які повинні передувати слово. Отже, якщо наше правило працює з рядком "letmein", йому знадобиться лише десять спроб, щоб пробігти від комбінації "0letmein" до"9letmein".
Ми можемо визначити будь-який набір символів, який буде вставлятися в рядок. Повний список слів буде перероблений для кожного з додаткових символів. Наприклад, список з 1000 слів може реально перетворитися на список з 10000, якщо до кожного слова в початок буде доданий один із символів від 0 до 9. Нижче наведені деякі, найбільш часто використовувані символи, які додаються до базових словами.
[0123456789]. Цифри.
[!@#$%^&*()]. Верхній регістр для цифр.
[,.?!]. Знаки пунктуації.
Ми можемо використовувати перетворення правил для зміни регістру або типу (верхній, нижній, від e до 3) символів, або видалення окремих типів символів.
? V? Голосні (a, e, i, o, u).
s? v.? Заміна голосних точкою (.).
@ @? V? Видалити всі голосні.
@ @ A? Видалити всі букви a.
sa4? Замінити всі букви a на 4.
se3? Замінити всі букви e на 3.
l *? Де * символ, який треба перевести в нижній регістр.
u *? Де * символ, який треба перевести у верхній регістр.
Правила - чудовий спосіб підвищити продуктивність підбору пароля, особливо ті з них, які додають символи або правила l33t, що замінюють символи і цифри. Правила найбільш підходять для випадку, коли швидкість роботи комп'ютера не більше, ніж у мавпи, яка вважає на рахунках. Сьогодні, коли за кілька сотень доларів можна купити процесор з тактовою частотою більше 1GHz, ви не багато втратите, пропустивши етап обробки складними правилами, і перейдете безпосередньо до прямого перебору.
Складні правила і великі словники не зможуть зламати будь-який пароль. Це змушує вдаватися до атаки методом прямого перебору. Іншими словами, ми будемо пробувати всі можливі комбінації символів заданої довжини. Програма може перемикатися в режим прямого перебору за замовчуванням, якщо в командному рядку не задано жодних параметрів. Щоб змусити програму перейти до прямого перебору, використовуйте параметр-incremental.
[Root @ hedwig run] #. / John-incremental: LanMan passwd.lanman
Loaded 1152 passwords with no different salts (NT LM DES [64/64 BS MMX])
За замовчуванням файл john.conf містить чотири адитивних параметра.
All. Нижній регістр, верхній регістр, цифри, пунктуація, SHIFT +.
Alpha. Нижній регістр.
Digits. Від 0 до 9.
LanMan. Те ж, що і All, за винятком нижнього регістра.
Кожен адитивний параметр має п'ять полів у файлі john. conf. Наприклад, стрічка для LanMan містить наступні поля.
[Incremental: LanMan]. Опис параметра.
File =. / Lanman.chr. Файл використовуваний як список символів.
MinLen = 0. Мінімальна довжина генерується рядка.
MaxLen = 7. Максимальна довжина генерується рядка.
CharCount = 69. Кількість символів у списку.
Аналогічно рядок для ALL містить наступні поля.
[Incremental: All]. Опис параметра.
File =. / All.chr. Файл, який використовується як список символів.
MinLen = 0. Мінімальна довжина генерується рядка.
MaxLen = 8. Максимальна довжина генерується рядка.
CharCount = 95. Кількість символів у списку.
Поля MinLen і MaxLen найбільш важливі, оскільки ми можемо змінювати їх для визначення атаки. У MaxLen для LanMan ніколи не може бути більше семи символів. Число CharCount в ступені MaxLen дає кількість комбінацій, необхідне для повного завершення атаки перебором. Наприклад, загальна кількість комбінацій для роботи з паролями LanMan становить 7.6 трильйона. Загальна кількість комбінацій при використанні параметра ALL становить близько 6700 трильйонів! Зауважимо, що безглуздо використовувати параметр incremental: All для підбору паролів LanMan, оскільки немає необхідності окремо перевіряти символи нижнього і верхнього регістрів.
Якщо в розпорядженні список паролів з Unix, про який відомо, що всі паролі складаються з восьми символів, ми можемо змінити значення параметрів. У даному випадку це економить час, оскільки можна не займатися перебором рядків довжиною в сім і менш символів.
[Incremental: All]
File =. / All.chr
MinLen = 8
MaxLen = 8
CharCount = 95
Потім запустимо програму.
[Root @ hedwig run] #. / John-incremental: All passwd.unix
Буде проводитися тільки перебір рядків довжиною у вісім символів. Ми можемо використовувати параметр-stdout, щоб перевірити це. Кожен використаний варіант буде роздруковуватися на екрані.
[Root @ hedwig run] #. / John-incremental: All-stdout
Це корисно, якщо ви перенаправляє вивід в файл, створюєте список слів для подальшого використання з програмою john або іншою утилітою, яка може використовувати файл зі списком слів, наприклад Whisker.
[Root @ hedwig run] #. / John-makechars: guessed
Loaded 3820 plaintexts
Generating charsets... 1 2 3 4 5 6 7 8 DONE
Generating cracking order... DONE
Successfully written charset file: guessed (82 characters)
Відновлення файлів і розподілений злом
Вам слід знати дещо про програму john, щоб керувати великими наборами паролів різного ступеня складності. Програма періодично зберігає стан процесу, записуючи проміжні результати у файл. Період збереження встановлюється у файлі john.conf.
# Crash recovery file saving delay in seconds
Save = 600
Ім'я файлу за замовчуванням restore, але його можна змінити, використовуючи параметр-session.
[Root @ hedwig run] #. / John-incremental: LanMan-session: pdc \
passwd.lanman
Loaded 1152 passwords with no different salts (NT LM DES
[64/64 BS MMX])
Вміст файлу restore виглядає приблизно так.
REC2
5
-Incremental: LanMan
-Session: pdc
passwd.lanman
-Format: lm
6
0
47508000
00000000
0
-1
488
0
8
3
2
6
5
2
0
0
0
Число можливих комбінацій не може бути представлено 32-бітним числом, тому програма використовує два 32-бітових поля для створення 64-бітного числа. Інформація про це числі й те, як ним можна маніпулювати, може бути використана для виконання розподілених обчислень. Візьмемо наш файл restore і використовуємо його для запуску паралельних версій програми на двох незалежних машинах. Файл restore для першого комп'ютера буде містити наступні рядки.
REC2
4
-Incremental: LanMan
passwd.lanman
-Format: lm
4
0
00000000
00000000
0
-1
333
0
8
15
16
0
0
0
0
0
0
Файл restore для другого комп'ютера буде таким.
REC2
4
-Incremental: LanMan
passwd.lanman
-Format: lm
4
0
00000000
0000036f
0
-1
333
0
8
15
16
0
0
0
0
0
0
Отже, перша система почне перебір комбінацій з нуля. Другий комп'ютер почне перебір з паролів для LanMan зі значення 0000036f 00000000. Тепер робота розподілена між двома машинами, і вам не слід турбуватися про надлишкові комбінаціях. Грамотність прийому для пошуку правильного значення "crypt" полягає в тому, щоб дозволити опрацювати системі деякий час.
Наприклад, уявімо собі, що у вашому розпорядженні 10 комп'ютерів. На кожній з цих систем програма виконує 400000 c / s (взломів у секунду). Для однієї з цих машин знадобитися 30 тижнів, щоб перебрати всі можливі комбінації з семи символів у випадку роботи з паролями LanMan (69 ^ 7 комбінацій). Запустіть програму на одній з машин на тиждень. Наприкінці тижня запишіть значення "crypt". Візьміть це значення і використовуйте його для іншої машини, і потім помножте значення на 2 і використовуйте отримане число для наступної машини. Тепер 10 комп'ютерів закінчать роботу по перебору всіх комбінацій за три тижні. Ця проста арифметика дозволяє визначити множник X для значення"crypt", яке необхідно записати в 10 файлів - по одному для кожної машини. Перша машина почне перебір з нуля, наступна зі значення нуль плюс X, і так далі.
Загальний час в тижнях.
Tw = (69 ^ 7 / взломів у секунду) / (секунд на тиждень)
Tw = (69 ^ 7 / 400,000) / (604800) = 30.8 тижнів.
"Crypt" множник.
X = Tw / (10 машин)
X = 30.8 / 10 = 3
Значення "crypt" після першого тижня (шістнадцяткове число, взяте з файлу restore): 00030000 00000000.
Нижче наведені значення параметра "crypt" (у шістнадцятковій запису). Це значення, які необхідно записати у файли на кожній системі.
System 1 = 0
System 2 = "crypt" * X = 00090000 00000000
System 3 = "crypt" * X * 2 = 00120000 00000000
System N = "crypt" * X * (N - 1) = restore value
System 10 = "crypt" * X * 9 = 00510000 00000000
Цей метод далекий від елегантності, але ефективний, коли використовується на кількох однакових машинах. Інший спосіб розподіленого злому - використання параметра-external. Цей параметр дозволяє написати свої програми і методи перебору паролів. Зовнішні програми зберігаються у файлі john.conf після директиви List.External. Просто використовуйте директиву-external, як це потрібно.
L0phtcrack
L0phtcrack - утиліта для аудиту і злому паролів знову з'явилася на світ, здобувши по дорозі ряд нових можливостей. Основні можливості програми: Імпорт різна інформації про облікові записи користувачів; Відновлення паролів (атакою по словнику або послідовним перебором); Розбиття послідовного перебору на частини; Обчислення хешей (LM-і NT-хеш за паролем та LM-і NT-відповідей за паролем і запиту сервера), має підтримку 64-бітових процесорів і самих останніх операційних систем від Microsoft, Ubuntu і інших. Крім того, утиліта запропонує новий ефективний підхід до злому хешу NTLM - захисного алгоритму Windows, увійшов у моду декілька років тому... і т.д.
L0phtcrack 6 пропонується світу все тією ж командою хакерів, яка вперше представила її десятиліття тому. У 2005 році, відразу ж після придбання утиліти компанією Symantec, розробка програми була припинена - ймовірно через те, що її агресивна призначення не відповідало духу інших продуктів, що випускаються Symantec.
Багато чого змінилося за ті п'ять років, що пройшли з моменту виходу L0phtcrack 5, і ряд таких змін знайшов відображення у новій версії. Так, L0phtcrack 6 має підтримку 64-бітових процесорів і самих останніх операційних систем від Microsoft, Ubuntu і інших. Крім того, утиліта запропонує новий ефективний підхід до злому хешу NTLM - захисного алгоритму Windows, увійшов у моду декілька років тому.