Использование John the Ripper для аудита паролей

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы получите практический опыт работы с John the Ripper, широко используемым инструментом с открытым исходным кодом для аудита безопасности паролей и восстановления паролей. Понимание того, как использовать такие инструменты, имеет решающее значение для выявления уязвимостей в политиках паролей и повышения общей безопасности системы. Вы изучите практические шаги, связанные со сбором хэшей паролей, использованием John the Ripper для выявления слабых паролей, генерацией отчетов о взломанных паролях и формулированием рекомендаций по улучшению политик паролей. Эта лабораторная работа также затронет автоматизацию процесса аудита паролей, предоставляя всесторонний обзор передовых методов обеспечения безопасности паролей.

Сбор хэшей паролей для аудита

На этом этапе вы научитесь собирать хэши паролей, которые необходимы для аудита паролей. В системах Linux хэши паролей обычно хранятся в файле /etc/shadow. Однако прямой доступ к этому файлу требует привилегий root. Для целей этой лабораторной работы мы создали фиктивный файл shadow с именем /etc/shadow_dummy, который вы будете использовать.

Сначала давайте рассмотрим содержимое фиктивного файла shadow.

cat /etc/shadow_dummy

Вы должны увидеть вывод, похожий на этот, показывающий имена пользователей и их соответствующие хэши паролей:

user1:5f4dcc3b5aa765d61d8327deb882cf99
user2:21232f297a57a5a743894a0e4a801fc3
user3:d41d8cd98f00b204e9800998ecf8427e
user4:e10adc3949ba59abbe56e057f20f883e
user5:a8b7c6d5e4f3g2h1i0j9k8l7m6n5o4p3

Далее вы скопируете этот фиктивный файл shadow в вашу текущую рабочую директорию (~/project), чтобы сделать его легкодоступным для John the Ripper.

cp /etc/shadow_dummy ~/project/hashes.txt

Теперь убедитесь, что файл hashes.txt был успешно скопирован в вашу директорию ~/project.

ls ~/project/hashes.txt

Вывод должен подтвердить наличие файла:

/home/labex/project/hashes.txt

Запуск John the Ripper для идентификации слабых паролей

На этом этапе вы будете использовать John the Ripper для идентификации слабых паролей из подготовленного вами файла hashes.txt. John the Ripper может использовать различные режимы взлома, включая словарные атаки. Мы выполним словарную атаку, используя предопределенный список слов (wordlist).

Сначала убедитесь, что вы находитесь в директории ~/project, где расположены ваши файлы hashes.txt и wordlist.txt.

cd ~/project

Теперь запустите John the Ripper, используя файл hashes.txt и файл wordlist.txt. Опция --wordlist указывает путь к вашему списку слов.

john --wordlist=wordlist.txt hashes.txt

John the Ripper начнет обрабатывать хэши. Если он найдет совпадения, он отобразит взломанные пароли. Вывод может выглядеть примерно так:

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
123456           (user2)
test             (user3)
admin            (user4)
4g 0:00:00:00 DONE (2023-10-27 08:30) 400% (ETA: 08:30) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.

В этом примере John the Ripper успешно взломал пароли для user1, user2, user3 и user4. Пароль для user5 не был взломан, потому что его нет в нашем простом списке слов.

Чтобы увидеть пароли, которые John взломал на данный момент, вы можете использовать опцию --show.

john --show hashes.txt

Вывод будет содержать список взломанных паролей:

user1:password
user2:123456
user3:test
user4:admin

4 password hashes cracked, 1 left

Эта команда полезна для просмотра результатов вашей сессии взлома.

Генерация отчетов по взломанным паролям

На этом этапе вы научитесь генерировать отчеты по взломанным паролям. John the Ripper сохраняет взломанные пароли в файле, обычно ~/.john/john.pot. Вы можете использовать опцию --show для отображения этих взломанных паролей, что служит базовым отчетом.

Чтобы получить чистый список взломанных паролей, вы можете перенаправить вывод команды john --show в файл. Это распространенная практика для создания отчетов, которые могут быть далее проанализированы или распространены.

Сначала убедимся, что мы находимся в директории ~/project.

cd ~/project

Теперь перенаправим вывод команды john --show hashes.txt в новый файл с именем cracked_passwords.txt.

john --show hashes.txt > cracked_passwords.txt

Эта команда не выведет ничего в терминал, но создаст файл cracked_passwords.txt в вашей текущей директории.

Далее просмотрите содержимое файла cracked_passwords.txt, чтобы убедиться, что отчет сгенерирован правильно.

cat cracked_passwords.txt

Вы должны увидеть список взломанных паролей, похожий на следующий:

user1:password
user2:123456
user3:test
user4:admin

4 password hashes cracked, 1 left

Этот файл cracked_passwords.txt теперь служит вашим отчетом, детализирующим учетные записи пользователей со слабыми, взломанными паролями. В реальном сценарии этот отчет будет использоваться для выявления пользователей, которым необходимо немедленно сменить свои пароли.

Рекомендации по улучшению политики паролей

На этом этапе вы сформулируете рекомендации по улучшению политики паролей на основе результатов аудита паролей. Идентификация слабых паролей — это только первый шаг; следующий важный шаг — внедрение мер для предотвращения подобных уязвимостей в будущем.

Исходя из взломанных паролей (password, 123456, test, admin), очевидно, что текущая политика паролей (или ее отсутствие) допускает использование очень простых и распространенных паролей.

Вот несколько ключевых рекомендаций по улучшению политики паролей:

  1. Минимальная длина: Установите минимальную длину пароля, обычно 12 символов или более. Более длинные пароли экспоненциально труднее взломать.
  2. Требования к сложности: Обязательно используйте комбинацию типов символов:
    • Заглавные буквы (A-Z)
    • Строчные буквы (a-z)
    • Цифры (0-9)
    • Специальные символы (!@#$%^&*()_+-=[]{}|;:'",.<>/?`~)
  3. Избегайте распространенных паролей: Внедрите черный список часто используемых или легко угадываемых паролей (таких как те, что были найдены в нашем wordlist.txt). Многие системы могут проверять новые пароли по таким черным спискам.
  4. Никакой личной информации: Посоветуйте пользователям не использовать личную информацию (имена, дни рождения, клички питомцев), которую легко угадать или найти в Интернете.
  5. Регулярные смены (с осторожностью): Хотя это исторически рекомендовалось, частые обязательные смены паролей могут привести к тому, что пользователи будут выбирать более простые и предсказуемые пароли. Лучший подход — требовать надежные пароли и только при подозрении на утечку данных.
  6. Многофакторная аутентификация (MFA): Для критически важных систем внедряйте MFA. Даже если пароль скомпрометирован, MFA добавляет дополнительный уровень безопасности.
  7. Менеджеры паролей: Поощряйте или предоставляйте пользователям менеджеры паролей. Эти инструменты могут генерировать и хранить надежные, уникальные пароли для различных сервисов.

Чтобы продемонстрировать понимание, подумайте, как бы вы донесли эти рекомендации. Например, вы могли бы составить простое заявление о политике.

Давайте создадим файл с именем password_policy_recommendations.txt в вашей директории ~/project и добавим в него несколько ключевых рекомендаций.

cd ~/project
echo "--- Password Policy Recommendations ---" | tee password_policy_recommendations.txt > /dev/null
echo "1. Minimum length: 12 characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "2. Complexity: Mix of uppercase, lowercase, numbers, special characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "3. Avoid common passwords and personal information" | tee -a password_policy_recommendations.txt > /dev/null
echo "4. Implement Multi-Factor Authentication (MFA) for critical systems" | tee -a password_policy_recommendations.txt > /dev/null

Теперь просмотрите содержимое файла password_policy_recommendations.txt.

cat password_policy_recommendations.txt

Вывод должен содержать ваши рекомендации:

--- Password Policy Recommendations ---
1. Minimum length: 12 characters
2. Complexity: Mix of uppercase, lowercase, numbers, special characters
3. Avoid common passwords and personal information
4. Implement Multi-Factor Authentication (MFA) for critical systems

Этот файл представляет собой базовый отчет о ваших рекомендациях.

Автоматизация процесса аудита паролей

На этом этапе вы изучите, как автоматизировать части процесса аудита паролей. Хотя John the Ripper является инструментом, требующим ручного запуска, его выполнение можно скриптовать для периодического запуска, делая процесс аудита более эффективным и проактивным. Автоматизация помогает в непрерывном мониторинге надежности паролей и выявлении новых уязвимостей по мере их появления.

Простой способ автоматизации — создать скрипт оболочки (shell script), который выполняет шаги, которые вы изучили: сбор хэшей, запуск John the Ripper и генерацию отчета.

Давайте создадим простой скрипт оболочки с именем audit_script.sh в вашей директории ~/project.

cd ~/project
nano audit_script.sh

В редакторе nano добавьте следующее содержимое:

#!/bin/bash

## Определение путей
HASH_FILE="/etc/shadow_dummy" ## В реальном сценарии это будет /etc/shadow
WORDLIST_FILE="wordlist.txt"
OUTPUT_DIR="~/project/audit_results"
CRACKED_REPORT="$OUTPUT_DIR/cracked_passwords_$(date +%Y%m%d_%H%M%S).txt"

## Создание директории вывода, если она не существует
mkdir -p "$OUTPUT_DIR"

echo "--- Начало аудита паролей ---"

## Шаг 1: Копирование хэшей
cp "$HASH_FILE" "$OUTPUT_DIR/hashes.txt"
echo "Хэши скопированы в $OUTPUT_DIR/hashes.txt"

## Шаг 2: Запуск John the Ripper
echo "Запуск John the Ripper..."
john --wordlist="$WORDLIST_FILE" "$OUTPUT_DIR/hashes.txt"

## Шаг 3: Генерация отчета
echo "Генерация отчета по взломанным паролям..."
john --show "$OUTPUT_DIR/hashes.txt" > "$CRACKED_REPORT"

echo "Аудит завершен. Отчет сохранен в $CRACKED_REPORT"
echo "--- Аудит завершен ---"

Нажмите Ctrl+X, затем Y, затем Enter, чтобы сохранить и выйти из nano.

Далее, сделайте скрипт исполняемым:

chmod +x audit_script.sh

Теперь запустите скрипт, чтобы увидеть его в действии:

./audit_script.sh

Вы увидите вывод, аналогичный ручным шагам, указывающий, что процесс аудита выполняется и отчет генерируется.

--- Starting Password Audit ---
Hashes copied to /home/labex/project/audit_results/hashes.txt
Running John the Ripper...
Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password         (user1)
123456           (user2)
test             (user3)
admin            (user4)
4g 0:00:00:00 DONE (2023-10-27 08:35) 400% (ETA: 08:35) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.
Generating cracked password report...
Audit complete. Report saved to /home/labex/project/audit_results/cracked_passwords_YYYYMMDD_HHMMSS.txt
--- Audit Finished ---

Наконец, убедитесь, что директория audit_results и файл отчета в ней были созданы.

ls ~/project/audit_results/

Вы должны увидеть hashes.txt и файл cracked_passwords_YYYYMMDD_HHMMSS.txt (где YYYYMMDD_HHMMSS — это текущая временная метка).

cracked_passwords_20231027_083500.txt  hashes.txt

Этот скрипт может быть запланирован для периодического запуска с использованием таких инструментов, как cron, в реальной системе Linux, что обеспечивает непрерывный аудит паролей.

Резюме

В этой лабораторной работе вы успешно научились использовать John the Ripper для аудита паролей. Вы начали со сбора хэшей паролей из фиктивного файла shadow, затем использовали John the Ripper со списком слов для выявления слабых паролей. Вы сгенерировали отчет по взломанным паролям и сформулировали ключевые рекомендации по улучшению политики паролей, такие как требование минимальной длины, сложности и избегание распространенных паролей. Наконец, вы создали базовый скрипт оболочки для автоматизации процесса аудита паролей, демонстрируя, как эти задачи могут быть интегрированы в стратегию непрерывного мониторинга безопасности. Этот практический опыт дает фундаментальное понимание аудита безопасности паролей, что является критически важным навыком для любого системного администратора или специалиста по безопасности.