Взлом паролей в 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.
  • Это обеспечивает быстрый взлом для демонстрационных целей, обычно в течение нескольких секунд.

Теперь, когда файл с примерами данных готов, у вас есть цель для практики взлома паролей. На следующем этапе вы будете использовать 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/

Перед запуском атаки проверьте доступную информацию о бэкенде OpenCL:

hashcat -I

В этом контейнере LabEx Hashcat может предупреждать об ограниченном доступе к OpenCL, даже если необходимые зависимости среды выполнения уже присутствуют. Не пытайтесь устанавливать pocl-opencl-icd в этой среде. Вместо этого запустите команду взлома с флагом --force, чтобы проигнорировать предупреждение контейнера.

hashcat -m 1800 -a 0 /root/clean_hashes.txt /root/custom_wordlist.txt --force
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

После завершения атаки просмотрите взломанные пароли, выполнив команду с флагом --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 как мощную альтернативу. Наконец, вы освоили критически важный шаг — сохранение полученных данных для документации и отчетности. Эти навыки формируют прочную основу для тестирования на проникновение и подчеркивают важность внедрения строгих политик паролей для защиты от подобных атак.