John the ripper - як розшифрувати пароль linux shadows passwd
Для того щоб використовувати програму John The Ripper, вам знадобиться копія файлу з паролями. Дуже часто у користувачів, що заглянули вперше в файлetc / passwd або ж etc / shadow. з'являється дуже багато питань. Зараз я постараюся коротко пояснити, як же влаштований файл etc / passwd. У цьому файлі знаходиться список всіх користувачів. Для кожного користувача відведена окрема рядок, яка описує його облікову інформацію. Розглянемо на прикладі формат однієї з таких рядків:
Тепер приступлю до опису самої програми. Перш за все, ви повинні отримати копію файлу паролів. Якщо ви, скориставшись правами root'a, отримали файл, який містить так звані тіньові (shadow) паролі, то вам знадобиться перетворити цей файл в нормальний вигляд, виконавши наступну команду: unshadow / etc / passwd / etc / shadow> passwd.1. Таким чином, вийде файл 'passwd.1'. що містить зашифровані паролі користувачів, який нам в подальшому і знадобиться для розшифровки. Якщо ви збираєтеся розшифровувати AFS або NT паролі, то вам необхідно для цього використовувати програму 'unafs', що входить в поставку John The Ripper, або cкачать утиліту PWDUMP (ftp://samba.anu.edu.au/pub/samba/pwdump/ ), відповідно. Припустимо, що ви отримали файл паролів, 'passwd.1'. і хочете почати його розшифровку. Найлегший спосіб полягає в тому, щоб використовувати заданий за замовчуванням порядок режимів розшифровки. Для цього необхідно виконати наступну команду: john passwd.1. В результаті John The Ripper почне розшифровку з режиму 'single crack', потім буде використаний режим 'wordlist', і, нарешті, ви дійдете до останнього режиму роботи програми під назвою 'incremental mode'. Для збільшення швидкості розшифровки за допомогою підбору паролів по словнику рекомендується скористатися великим словником паролів, тому що словник, що поставляється з самою програмою, невеликий. Якщо у вас є такий словник, то вам необхідно в файлі john.ini відредагувати рядок, що вказує на застосування іншого словника. Наприклад, якщо словник з паролями носить назву 'passwordlist', то у файлі john.ini вам необхідно знайти рядок 'Wordfile =' і написати наступне: Wordfile =
Припустимо, що після використання режиму 'single crack' у вас розшифрувати не всі паролі. Наступним кроком до розкриття всіх зашифрованих паролів ви можете застосувати більш потужний режим розшифровки - підбір паролів по словнику. Однак цей метод буде хороший для вгадування паролів лише тих користувачів, які не подбали як слід про свою безпеку і вибрали в якості свого пароля легко підбирається слово. Тому ми будемо використовувати опцію wordlist: john -w: words.lst passwd.1. Для любителів наочності пропонується використовувати довгий синтаксис параметрів: john - wordfile = words.lst passwd.1. Однак те ж саме можна записати і коротко: john -w = words.lst passwd.1. Для атаки перебору паролів по словнику, використовуючи спеціальні правила, потрібно в командному рядку написати наступне: john -w: words.lst -rules passwd.1. Але даний метод працює повільніше, ніж атака по словнику без використання опції 'rules', однак це підвищує ваші шанси розшифрувати більшість слабких паролів, щоб не витрачати час на їх розшифровку згодом. Тому я рекомендую не нехтувати цією опцією.
Тепер розглянемо наступний приклад. Припустимо, у вас набралося багато паролів користувачів, які не мають доступ до Шеллі, і ви не бажаєте витрачати час на підбір паролів до їх облікових записів. Ви можете вказати john'y, щоб той не підбирав паролі для таких користувачів: john -w: words.lst -rules -shells: sh, csh, tcsh, bash passwd.1. Цей варіант перебору працює у всіх режимах. Хочу зауважити, що для зломщика, атакуючого систему, паролі користувачів, які не мають доступу до Шеллі, представляють найменше значення, тому основний упор він буде робити саме на користувачів з доступом до Шеллі, ну і, звичайно ж, на суперкористувача - root'a. Подібно до всіх інших режимів злому паролів, для того, щоб якомога швидше розшифрувати всі файли, вам необхідно при розшифровці використовувати відразу всі файли з паролями: john -w: words.lst -rules passwd. *. При цьому ви заощадите багато часу, тому як якщо в одному файлі на злом пароля root'a у вас може піти багато часу, то при використанні відразу кілька файлів шанси на швидку розшифровку збільшуються за рахунок одночасного підбору паролів відразу до всіх користувачів. Ну, а далі все залежить тільки від швидкості вашого процесора.
Так само як і в попередніх режимах злому, у вас є можливість розшифровки якихось окремих паролів. Наступна команда виробляє розшифровку всіх root'ов (універсальний ідентифікатор 0) у всіх файлах паролів: john -w: words.lst -rules -users: 0 passwd. *. Для альтернативи, якщо ви не бажаєте витрачати даремно час на розшифровку ваших власних паролів, будучи впевненим у тому, що вони не зламують: john -w: words.lst -rules -users: -root, solar passwd. *. Іноді корисно розбити ваші файли паролів на дві частини, які згодом можна буде розшифровувати окремо: john -w: words.lst -rules -salts: 2 passwd. * І john -w: words.lst -rules -salts: -2 passwd . *.
У деяких випадках, для підвищення швидкодії, необхідно використовувати деякі інші зумовлені зростаючі параметри режиму і тільки розшифровувати більш прості паролі, з обмеженою кількістю набором символів. Наступна команда буде намагатися підбирати пароль, використовуючи тільки 26 різних символів, тобто ми будемо використовувати всі маленькі латинські літери від 'a' до 'z'. Можливі комбінації паролів будуть варіюватися від від 'а' до 'zzzzzzzz': john -i: alpha passwd.1. Знову ж таки, ви можете розшифровувати лише обліковий запис root'a і використовувати деякі інші можливості John'a з використанням режиму 'incremental'. Ця команда спробує розшифрувати всі облікові записи з універсальним ідентифікатором 0 у всіх файлах паролів, що мають розширення 'pwd': john -i -users: 0 -salts: 2 * .pwd. Якщо ви отримали файл паролів, в якому багато паролів вже розшифровані, при цьому більшість з підібраних паролів є унікальними, то ви могли б згенерувати новий файл символів, заснований на символах тільки з цього файлу паролів: john -makechars: custom.chr passwd.1 . Тоді ви зможете використовувати отриманий файл для режиму 'incremental'. Крім цього, ви можете використовувати деякі зумовлені фільтри слів при створенні файлу символів, в результаті цієї команди програма буде пробувати підібрати більш прості слова для розшифровки паролів: john -makechars: my_alpha.chr -external: filter_alpha passwd.1.
Якщо ваш файл john.pot став досить великим, то ви могли б використовувати цей файл для створення нового файлу символів:
john -makechars: alpha.chr -external: filter_alpha
john -makechars: digits.chr -external: filter_digits
john -makechars: lanman.chr -external: filter_lanman
У прикладі, показаному вище, John запише поверх старих файлів з символами нові файли, які згенерує і будуть засновані тільки на файлі john.pot (John The Ripper використовує саме цей файл для генерації всіх можливих символів, якщо ви не вкажете для цього який-небудь інший файл з паролями). Зверніть увагу, що фільтри слів, які використовуються в цьому прикладі, зумовлені в файлі конфігурації john.ini і поставляються для вашого ж зручності разом з програмою.
Нарешті, якщо ви захочете, то можете відправити всім користувачам, які мають слабкі паролі, лист, в якому повідомте їм про необхідність заміни обраного пароля. Однак вчинити так не завжди гарна ідея, тому як, на превеликий жаль, велика кількість людей просто ігнорують таку пошту.
Тепер розглянемо файл конфігурації програми John The Ripper. Припустимо, що ви звернули увагу на те, що в деяких файлах паролів більшість користувачів як паролі використовують імена для входу в систему з деякими змінами, а саме, вони додають до кінця логіна символи '?!'. Тоді ви можете зробити нове правило для режиму 'single crack' і розмістити його на самому початку конфігураційного файлу:
Якщо ви генеруєте новий файл символів (його генерацію я описав вище), ви повинні будете також це вказати в файлі john.ini в розділі, які можуть застосовуватися до режиму 'incremental'. У найпростішому випадку це може виглядати наступним чином:
де 'Custom' може бути замінено будь-яким ім'ям. Це змусить John'a використовувати тільки ті символи, які були в підібраних паролі. Для того щоб вказати John The Ripper'y на те, щоб він при розшифровці використовував і інші символи, вам необхідно в файлі конфігурації записати наступний рядок: Extra =! @ # $%. В результаті записані після знака "=" символи будуть додаватися при розшифровці паролів, але програма буде вважати можливість їх появи найменш вірогідною. Якщо ж ви хочете упевнитися в тому, що разом з вашими додатковими символами John буде використовувати всі 95 символів, то вам необхідно записати наступне: CharCount = 95. Записана рядок підкаже програмі видати попередження, якщо не всі з 95 символів будуть знаходитися в отриманому файлі можливих символів. Тим не менш, ви можете обмежити число різних символів, що беруть участь в розшифровці паролів, записавши замість 95 інше число, навіть якщо воно перевищує кількість символів в сівольной таблиці. Ви можете також використовувати CharCount. щоб обмежити число різних символів, які будуть використані John'ом, навіть якщо charset файл містить більшу кількість символів: CharCount = 25. Якщо Ви не використали якісь фільтри при генерації файлів символів, то установка маленького значення CharCount просто не буде використовувати рідкісні символи при переборі. Для того щоб встановити рамки можливої мінімальної і максимальної довжини, вам необхідно скористатися нижченаведеними рядками. MinLen = 6, MaxLen = 8. Установка значень 'MinLen' і 'MaxLen' вам може стати в нагоді в тому випадку, якщо в системі використовуються обмеження на довжину можливого пароля, тобто системний адміністратор заборонив використовувати короткі паролі для входу в систему. Однак можлива така ситуація, коли сам адміністратор (root) вибрав для конкретного користувача пароль на свій розсуд. Причому якщо ви вважаєте, що в досліджуваній вами системі є багато коротких паролів, то ви можете встановити значення 'MinLen' якнайнижче. Це дозволить вам заощадити багато часу.
Використовуючи, за можливості, весь цей арсенал команд, ви можете в найкоротші терміни добитися бажаного результату. А значить, і вжити заходів боротьби зі слабкими паролями, звернувшись вже до конкретного користувача з проханням замінити слабкий пароль чимось більш стійким. І наостанок хочу зауважити, що за всі наслідки, до яких може привести використання цієї програми, я відповідальності не несу.