Взлом паролей в Kali с помощью John the Ripper

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

Введение

В этой лабораторной работе вы изучите основы взлома паролей в Kali Linux, сосредоточившись на мощном инструменте John the Ripper. Основная цель — понять, как взламывать хеши паролей Linux, которые представляют собой зашифрованные версии паролей, обычно хранящиеся в файле /etc/shadow. Этот навык необходим при тестировании на проникновение для выявления слабых паролей и повышения безопасности системы.

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

Настройка среды и установка инструментов

На первом этапе мы подготовим среду Kali Linux, установив необходимые инструменты для взлома паролей. Как уже упоминалось, ваш терминал уже запущен внутри контейнера Kali Linux.

Мы будем использовать два основных инструмента: John the Ripper, универсальный и широко используемый взломщик паролей, и Hashcat, еще один мощный инструмент, известный своей скоростью и гибкостью.

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

apt update

Затем установите John the Ripper и Hashcat с помощью следующей команды. Флаг -y автоматически подтверждает установку.

apt install -y john hashcat

Процесс установки может занять несколько минут. После завершения вы можете проверить правильность установки John the Ripper, запустив его без каких-либо параметров.

john

Вы должны увидеть справочную информацию и версию программы, что подтверждает готовность инструмента. Вывод будет выглядеть примерно так:

John the Ripper 1.9.0-jumbo-1+bleeding-aec1328d6c 2021-11-02 10:45:52 +0100 OMP [linux-gnu 64-bit x86_64 AVX512BW AC]
Copyright (c) 1996-2021 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
...

Затем проверьте установку Hashcat, посмотрев его версию.

hashcat --version

Ожидаемый вывод отобразит номер версии, например:

v6.2.5

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

Создание файла с примерами хешей

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

Все операции будут выполняться в каталоге /root контейнера Kali. Мы создадим файл хешей напрямую, используя заранее сгенерированные реальные хеши для простых и распространенных паролей, которые можно быстро взломать.

Создайте файл с примерами хешей с помощью следующей команды:

cd /root
echo -e "user1:\$6\$randomsalt\$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::\nuser2:\$6\$anothersalt\$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::" > sample_hashes.txt

Альтернативно, вы можете создать файл вручную, скопировав и вставив содержимое:

cd /root
cat > sample_hashes.txt << 'EOF'
user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::
EOF

Префикс $6$ в каждой строке указывает на то, что хеш является хешем SHA-512 crypt, что является общим стандартом для современных систем Linux. Формат соответствует структуре файла shadow: username:hashed_password:last_change:min_age:max_age:warning:inactive:expire:reserved.

Чтобы убедиться, что файл создан правильно, отобразите его содержимое с помощью команды cat:

cat /root/sample_hashes.txt

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

user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::

Важные примечания:

  • Это реальные, правильно отформатированные хеши SHA-512, которые может обработать John the Ripper.
  • Пароли — password и 123456 — очень простые и распространенные, которые гарантированно есть в словаре по умолчанию John the Ripper.
  • Это обеспечивает быстрый взлом для демонстрационных целей, обычно в течение нескольких секунд.

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

Взлом хешей с помощью режима по умолчанию John the Ripper

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

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

john /root/sample_hashes.txt

John загрузит хеши и начнет сеанс взлома. Вы увидите вывод, указывающий на прогресс. Поскольку мы создали реальные хеши с очень простыми и распространенными паролями (password и 123456), John сможет быстро взломать их, используя режим словаря по умолчанию.

Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
...

Вы можете позволить John поработать некоторое время или остановить процесс с помощью Ctrl-C, если хотите проверить результаты раньше. Чтобы просмотреть взломанные пароли, используйте опцию --show.

john --show /root/sample_hashes.txt

Если пароли успешно взломаны, вывод должен выглядеть так:

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

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

На следующем этапе мы рассмотрим, как предоставить John пользовательские словари и настроить различные параметры для повышения эффективности взлома.

Использование пользовательского словаря с John the Ripper

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

Создайте файл с именем custom_wordlist.txt в каталоге /root с несколькими распространенными паролями, включая те, которые, как мы знаем, есть в нашем файле хешей.

echo -e "password\n123456\nadmin123\ntest1234\nqwerty\npassword123" > /root/custom_wordlist.txt

Проверьте содержимое вашего нового словаря.

cat /root/custom_wordlist.txt

Вывод должен отобразить шесть паролей, которые вы только что добавили:

password
123456
admin123
test1234
qwerty
password123

Теперь снова запустите John the Ripper, но на этот раз укажите свой пользовательский словарь с помощью опции --wordlist.

john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt

Эта команда говорит John протестировать каждый пароль из custom_wordlist.txt на соответствие хешам в sample_hashes.txt. Поскольку наш словарь содержит реальные пароли (password и 123456), соответствующие хешам в нашем файле, John должен взломать их очень быстро.

После завершения процесса снова проверьте результаты.

john --show /root/sample_hashes.txt

Поскольку наш словарь содержит правильные пароли, вывод теперь должен показать взломанные учетные данные:

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

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

Взлом хешей с помощью Hashcat для сравнения

Хотя John the Ripper — отличный инструмент, полезно знать альтернативы, такие как Hashcat. Hashcat славится своей скоростью, особенно в системах с графическими процессорами (GPU). Здесь мы выполним ту же атаку по словарю с помощью Hashcat.

Hashcat предпочитает чистый файл, содержащий только значения хешей. Используйте команду awk, чтобы извлечь второе поле (хеш) из sample_hashes.txt и сохранить его в новый файл clean_hashes.txt.

awk -F':' '{print $2}' /root/sample_hashes.txt > /root/clean_hashes.txt

Проверьте содержимое нового файла.

cat /root/clean_hashes.txt

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

$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0
$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/

Теперь запустите Hashcat. Вам нужно указать режим хеширования (-m 1800 для SHA-512 crypt) и режим атаки (-a 0 для прямого словаря).

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 1800 (sha512crypt $6$, SHA512 (Unix))
Hash.Target......: /root/clean_hashes.txt
Time.Started.....: Mon Sep  1 06:33:21 2025 (0 secs)
Time.Estimated...: Mon Sep  1 06:33:21 2025 (0 secs)
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (/root/custom_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:      226 H/s (5.08ms) @ Accel:8 Loops:1024 Thr:1 Vec:8
Recovered........: 2/2 (100.00%) Digests (total), 1/2 (50.00%) Digests (new), 2/2 (100.00%) Salts
Progress.........: 6/12 (50.00%)
Rejected.........: 0/6 (0.00%)
Restore.Point....: 0/6 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:4096-5000
Candidate.Engine.: Device Generator
Candidates.#1....: password -> password123

Перед запуском атаки убедитесь, что Hashcat может обнаружить бэкенд OpenCL:

hashcat -I

Если эта команда сообщает, что платформа OpenCL недоступна, установите пакет среды выполнения Intel OpenCL и проверьте снова:

apt update
apt install -y intel-opencl-icd
hashcat -I

Если Hashcat по-прежнему выводит CL_PLATFORM_NOT_FOUND_KHR, установите портативную среду выполнения OpenCL и проверьте снова:

apt install -y pocl-opencl-icd
hashcat -I

После обнаружения OpenCL снова запустите команду взлома. Если Hashcat выводит предупреждение в этой контейнеризированной среде, добавьте --force.

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt --force

После завершения атаки просмотрите взломанные пароли, выполнив команду с флагом --show.

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt --show

Когда атака проходит успешно, Hashcat отображает каждый хеш, за которым следует взломанный пароль, разделенные двоеточием:

$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:password
$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:123456

Этот этап познакомил вас с Hashcat как с мощной альтернативой для взлома паролей. На последнем этапе вы научитесь правильно документировать свои результаты.

Резюме

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

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