Использование John the Ripper для взлома паролей Linux Shadow

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

Введение

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

Извлечение файла /etc/shadow

На этом этапе вы научитесь получать доступ и извлекать содержимое файла /etc/shadow. Файл /etc/shadow хранит зашифрованные пароли пользователей и другую информацию, связанную с безопасностью. Из-за его конфиденциальности только пользователь root имеет права на чтение этого файла. Для этой лабораторной работы мы создали фиктивные файлы passwd_dummy и shadow_dummy в вашем каталоге ~/project, чтобы имитировать реальные файлы без необходимости привилегий root для прямого доступа к /etc/shadow.

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

cat ~/project/passwd_dummy

Вы должны увидеть вывод, похожий на этот:

root:x:0:0:root:/root:/bin/bash
labex:x:1000:1000:LabEx User,,,:/home/labex:/bin/bash
testuser:x:1001:1001:Test User,,,:/home/labex/testuser:/bin/bash

Далее давайте посмотрим содержимое фиктивного файла shadow_dummy. Этот файл содержит фактические хэши паролей.

cat ~/project/shadow_dummy

Вы должны увидеть вывод, похожий на этот, где второе поле — это хэшированный пароль:

root:$6$rounds=40000$abcdefghijklmnop$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./:18000:0:99999:7:::
labex:$6$rounds=40000$fedcba9876543210$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./:18000:0:99999:7:::
testuser:$6$rounds=5000$testsalt$testpasswordhash:18000:0:99999:7:::

В реальной ситуации для извлечения файла shadow вы бы обычно использовали sudo cat /etc/shadow, но для этой лабораторной работы мы будем использовать фиктивные файлы.

Объединение файла паролей

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

Выполните следующую команду, чтобы объединить passwd_dummy и shadow_dummy в новый файл с именем unshadowed.txt в вашем каталоге ~/project:

unshadow ~/project/passwd_dummy ~/project/shadow_dummy > ~/project/unshadowed.txt

Теперь давайте посмотрим содержимое только что созданного файла unshadowed.txt, чтобы понять его формат.

cat ~/project/unshadowed.txt

Вы должны увидеть вывод, где каждая строка начинается с имени пользователя, за которым следует хэш пароля, а затем другая информация о пользователе. Например:

root:$6$rounds=40000$abcdefghijklmnop$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./:0:0:root:/root:/bin/bash
labex:$6$rounds=40000$fedcba9876543210$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./:1000:1000:LabEx User,,,:/home/labex:/bin/bash
testuser:$6$rounds=5000$testsalt$testpasswordhash:1001:1001:Test User,,,:/home/labex/testuser:/bin/bash

Этот файл unshadowed.txt теперь готов к использованию John the Ripper для взлома паролей.

Взлом хэшей Shadow с помощью John the Ripper

На этом шаге вы будете использовать John the Ripper для взлома хэшей паролей, содержащихся в файле unshadowed.txt. John the Ripper может выполнять различные типы атак, включая словарные атаки, которые включают перебор слов из предопределенного списка. Мы уже создали простой список слов под названием wordlist.txt в вашем каталоге ~/project во время настройки.

Выполните следующую команду, чтобы начать взлом паролей с использованием файла wordlist.txt:

john --wordlist=~/project/wordlist.txt ~/project/unshadowed.txt

John the Ripper попытается взломать хэши. Если он найдет совпадение, он отобразит взломанный пароль. В наших фиктивных файлах у пользователя testuser слабый пароль, который присутствует в wordlist.txt.

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

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to test (sha512crypt, crypt(3) $6$)
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
testpassword     (testuser)
3g 0:00:00:00 DONE (2024-01-01 12:00) 100.0% (ETA: 00:00:00) 3.000g/s 180.0p/s 180.0c/s 180.0C/s testpassword
Session completed.

После взлома вы можете просмотреть взломанные пароли, найденные John the Ripper, используя опцию --show:

john --show ~/project/unshadowed.txt

Эта команда отобразит все успешно взломанные пароли из сеанса.

testuser:testpassword

1 password hash cracked, 2 left

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

Понимание формата файла Shadow

На этом шаге вы глубже изучите структуру и значение полей в файле /etc/shadow. Понимание этого формата имеет решающее значение для понимания того, как Linux безопасно хранит и управляет информацией о паролях пользователей.

Файл /etc/shadow содержит одну строку на пользователя, причем каждая строка состоит из девяти полей, разделенных двоеточиями. Давайте еще раз рассмотрим строку из нашего файла shadow_dummy:

testuser:$6$rounds=5000$testsalt$testpasswordhash:18000:0:99999:7:::

Вот разбивка каждого поля:

  1. Имя пользователя (Username): testuser - Имя пользователя для входа.
  2. Зашифрованный пароль (Encrypted Password): $6$rounds=5000$testsalt$testpasswordhash - Это самое важное поле. Оно содержит хэшированный пароль.
    • $6 указывает используемый алгоритм хэширования (в данном случае SHA-512). Другие распространенные типы включают $1 (MD5), $2a (Blowfish), $5 (SHA-256).
    • rounds=5000 указывает количество раундов хэширования, что увеличивает вычислительную сложность взлома.
    • testsalt — это соль (salt), случайная строка, добавляемая к паролю перед хэшированием для предотвращения атак с использованием радужных таблиц (rainbow table attacks).
    • testpasswordhash — это фактический хэшированный пароль.
  3. Последнее изменение пароля (Last Password Change): 18000 - Количество дней с 1 января 1970 года, прошедших с момента последнего изменения пароля.
  4. Минимальный возраст пароля (Minimum Password Age): 0 - Минимальное количество дней, требуемое между изменениями пароля. Значение 0 означает, что пользователь может изменить свой пароль в любое время.
  5. Максимальный возраст пароля (Maximum Password Age): 99999 - Максимальное количество дней, в течение которых пароль действителен. По истечении этого срока пользователь будет вынужден сменить пароль. 99999 обычно означает, что пароль никогда не истекает.
  6. Период предупреждения о пароле (Password Warning Period): 7 - Количество дней до истечения срока действия пароля, за которое пользователь получит предупреждение.
  7. Период неактивности пароля (Password Inactive Period): (пусто) - Количество дней после истечения срока действия пароля, в течение которых учетная запись будет отключена. Если поле пустое, учетная запись никогда не отключается из-за неактивности пароля.
  8. Дата истечения срока действия учетной записи (Account Expiration Date): (пусто) - Дата (в днях с 1 января 1970 года), когда учетная запись будет отключена. Если поле пустое, учетная запись никогда не истекает.
  9. Резервное поле (Reserved Field): (пусто) - Это поле зарезервировано для будущего использования.

Понимание этих полей помогает в настройке политик паролей и повышении безопасности системы.

Внедрение лучших практик безопасности файла Shadow

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

Вот некоторые ключевые лучшие практики:

  1. Политики надежных паролей:

    • Сложность: Обеспечьте строгие требования к сложности паролей (например, минимальная длина, сочетание прописных и строчных букв, цифр и специальных символов).
    • Уникальность: Предотвращайте повторное использование старых паролей пользователями.
    • Регулярные изменения: Внедряйте политики регулярного изменения паролей, хотя современные рекомендации по безопасности иногда отдают предпочтение длинным, надежным, уникальным паролям вместо частых изменений для непривилегированных учетных записей.
    • Парольные фразы (Passphrases): Поощряйте использование длинных парольных фраз вместо коротких, сложных паролей, поскольку их часто легче запомнить и труднее взломать.
  2. Разрешения файла (File Permissions):

    • Файл /etc/shadow должен иметь очень строгие разрешения: 0640 (-rw-r-----). Это означает, что только root может читать и записывать в него, а члены группы shadow могут его читать. Никакие другие пользователи не должны иметь доступа.
    • Проверьте разрешения с помощью команды ls -l /etc/shadow (в реальной системе, а не в нашем фиктивном файле).
  3. Алгоритмы хэширования (Hashing Algorithms):

    • Всегда используйте современные, надежные алгоритмы хэширования, такие как SHA-512 ($6) или Blowfish ($2a, $2b, $2y). Избегайте старых, более слабых алгоритмов, таких как MD5 ($1) или DES.
    • Убедитесь, что конфигурация PAM (Pluggable Authentication Modules) вашей системы настроена на использование надежных алгоритмов хэширования.
  4. Соль (Salting):

    • Всегда используйте уникальные соли для каждого пароля. Это автоматически обрабатывается современными алгоритмами хэширования и предотвращает атаки с использованием радужных таблиц (rainbow table attacks).
  5. Политики блокировки учетных записей (Account Lockout Policies):

    • Внедряйте политики блокировки учетных записей для предотвращения атак методом перебора (brute-force attacks). После определенного количества неудачных попыток входа учетная запись должна быть временно заблокирована.
  6. Мониторинг подозрительной активности:

    • Регулярно отслеживайте системные журналы на предмет необычных попыток входа или изменений в файле /etc/shadow. Такие инструменты, как AIDE или Tripwire, могут обнаруживать изменения целостности файлов.
  7. Обучение пользователей:

    • Обучайте пользователей важности надежных, уникальных паролей и рискам фишинга и социальной инженерии.

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

Резюме

В этой лабораторной работе вы получили практический опыт в процессе взлома паролей в системах Linux с использованием John the Ripper. Вы научились извлекать и объединять файлы /etc/passwd и /etc/shadow с помощью утилиты unshadow, а затем использовали John the Ripper со списком слов (wordlist) для взлома слабых хэшей паролей. Кроме того, вы изучили подробный формат файла /etc/shadow, поняв значение каждого поля, особенно алгоритма хэширования и соли (salt). Наконец, вы рассмотрели основные лучшие практики по обеспечению безопасности паролей пользователей и файла shadow, включая политики надежных паролей, правильные разрешения файлов и использование надежных алгоритмов хэширования. Эти знания имеют решающее значение как для наступательной безопасности (понимание того, как системы могут быть скомпрометированы), так и для оборонительной безопасности (внедрение мер для защиты от подобных атак).