Взлом паролей в 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 — это стандарт для современных систем Linux. Формат соответствует структуре файла shadow: имя_пользователя:хеш_пароля:дата_последнего_изменения:мин_срок:макс_срок:предупреждение:неактивность:истечение:зарезервировано.

Чтобы подтвердить, что файл был создан правильно, выведите его содержимое с помощью команды 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/

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