Генерация паролей с помощью Hydra для атак методом грубой силы

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

Введение

В этом лабораторном практикуме вы научитесь использовать Hydra для генерации паролей для атак методом грубой силы (brute-force) с использованием различных методов генерации паролей. Вы сосредоточитесь на использовании опции Hydra -x для создания паролей на основе различных критериев, таких как длина, наборы символов и распространённые шаблоны паролей.

Лабораторный практикум проведет вас через несколько сценариев генерации паролей, включая базовые наборы символов, смешанные комбинации символов, числовые шаблоны и структуры паролей из реальной жизни. Вы будете атаковать тестовый FTP-сервер на localhost, чтобы практиковать эти методы и научиться эффективно анализировать результаты атак методом грубой силы.

Генерация паролей с помощью опции -x

В этом шаге вы узнаете, как использовать опцию -x в Hydra для генерации паролей на основе заданного формата. Это полезно, когда у вас есть информация о потенциальной структуре пароля, например, известный диапазон длины или набор символов.

Опция -x Hydra позволяет определить минимальную и максимальную длину генерируемых паролей, а также набор символов для использования. Синтаксис: -x min:max:charset.

Начнём с простого примера. Вы сгенерируете пароли длиной от 6 до 8 символов, используя только строчные буквы.

Сначала убедитесь, что вы находитесь в каталоге ~/project. Это стандартный каталог при запуске лабораторного практикума.

cd ~/project

Теперь вы будете использовать Hydra для генерации паролей. Для демонстрации вы будете атаковать SSH-сервис на localhost. Это позволит вам увидеть генерацию паролей без фактического выполнения успешной атаки (поскольку мы используем несуществующего пользователя).

Выполните следующую команду в терминале:

hydra -l testuser -vV -x 3:5:a-z localhost ssh

Давайте разберём эту команду:

  • hydra: Команда для запуска инструмента Hydra.
  • -l testuser: Указывает имя пользователя для использования. Здесь "testuser" используется как плейсхолдер (вероятно, такого пользователя не существует).
  • -vV: Включает подробный вывод, показывая каждую попытку.
  • -x 3:5:a-z: Это ключевая часть. Она сообщает Hydra сгенерировать пароли с:
    • 3: Минимальная длина 3 символа.
    • 5: Максимальная длина 5 символов.
    • a-z: Используются только строчные буквы (a-z). Другие варианты включают A-Z (заглавные буквы), 0-9 (цифры), и вы можете их комбинировать, например, a-zA-Z0-9 для строчных, заглавных и цифр.
  • localhost: Целевой хост.
  • ssh: Целевой SSH-сервис.

Вы увидите, как Hydra пытается подключиться с сгенерированными паролями, такими как "aaa", "aaaa", "aaaaa", "aab" и так далее. При использовании опции -x Hydra автоматически генерирует пароли на основе заданных критериев.

Примечание: Количество комбинаций для паролей длиной от 3 до 5 символов, используя только строчные буквы, управляемо: 26³ + 26⁴ + 26⁵ = 17 576 + 456 976 + 11 881 376 ≈ 12,4 млн комбинаций, что находится в пределах возможностей Hydra.

Важно: Используйте Ctrl+C для остановки атаки, так как её выполнение может занять много времени.

Вывод будет показывать сгенерированные пароли, поскольку Hydra пытается подключиться к SSH-сервису.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aab" - 1 of 1 [child 0] (0/0)
...

Важно: Ограничения комбинаций паролей

При использовании опции -x Hydra, крайне важно учитывать общее количество комбинаций паролей, которые будут сгенерированы. Hydra имеет встроенное ограничение в 4 миллиарда паролей, чтобы предотвратить непрактичные попытки brute-force.

Вот несколько примеров количества комбинаций:

  • 3-5 символов, только строчные буквы (a-z): ~12,4 млн комбинаций ✓
  • 4-6 символов, только строчные буквы (a-z): ~321 млн комбинаций ✓
  • 6-8 символов, только строчные буквы (a-z): ~217 млрд комбинаций ✗ (превышает лимит)
  • 4-6 символов, буквенно-цифровые (a-zA-Z0-9): ~57 млрд комбинаций ✗ (превышает лимит)

Всегда рассчитывайте количество комбинаций перед запуском: charset_size^min_length + ... + charset_size^max_length

Атака FTP сгенерированными паролями

В этом шаге вы будете использовать возможности Hydra по генерации паролей для атаки на тестовый FTP-сервер. Вы будете использовать список паролей, генерируемых "на лету" с помощью опции -x.

Сначала вам нужно настроить простой FTP-сервер для тестирования. Вы будете использовать python3-pyftpdlib, который является лёгкой библиотекой FTP-сервера для Python.

Установите python3-pyftpdlib, если она ещё не установлена:

sudo apt update
sudo apt install -y python3-pyftpdlib

Запустите FTP-сервер в фоновом режиме на порту 2121, обслуживая файлы из каталога ~/project. Опция -w разрешает запись.

nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &

Часть nohup ... & запускает команду в фоновом режиме и предотвращает её остановку при закрытии терминала. > /dev/null 2>&1 перенаправляет стандартный вывод и стандартную ошибку в /dev/null, сохраняя ваш терминал чистым. Опции -u testuser -P secret настраивают пользователя с паролем "secret", который может получить доступ к серверу.

Теперь вы будете использовать Hydra для атаки на этот FTP-сервер. Вы будете использовать опцию -x для генерации паролей и попытки входа как пользователя "testuser".

Выполните следующую команду в терминале:

hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121

Давайте разберём эту команду:

  • hydra: Инструмент командной строки Hydra.
  • -l testuser: Указывает имя пользователя для использования: "testuser".
  • -vV: Включает подробный вывод, показывая каждую попытку входа.
  • -x 4:6:a-z: Это сообщает Hydra генерировать пароли с:
    • 4: Минимальная длина 4 символа.
    • 6: Максимальная длина 6 символов.
    • a-z: Используются только строчные буквы (a-z).
  • 127.0.0.1: Целевой хост (localhost). Вы используете 127.0.0.1 вместо localhost, чтобы избежать потенциальных проблем с разрешением DNS внутри контейнера.
  • ftp: Сервис для атаки (FTP).
  • -s 2121: Указывает номер порта. Вы нацелены на FTP-сервер, работающий на порту 2121.

Вы должны увидеть, как Hydra пытается выполнить вход с сгенерированными паролями. Поскольку FTP-сервер настроен со специфическими учетными данными (имя пользователя: testuser, пароль: secret), Hydra найдёт правильный пароль, когда сгенерирует "secret" во время своих попыток brute-force.

Важно: Используйте Ctrl+C для остановки атаки, так как её выполнение может занять много времени.

Вывод будет показывать попытки входа и, в конечном итоге, сообщение об успешном входе.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Теперь давайте попробуем немного более сложный пример, объединив строчные буквы и цифры:

hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121

Это сгенерирует пароли, такие как "aaa", "aab", "aac" и так далее, систематически перебирая все комбинации из 3 символов сначала, затем из 4 символов и, наконец, из 5 символов. Наблюдайте за выводом, чтобы увидеть сгенерированные пароли и успешный вход.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Этот шаг продемонстрировал, как использовать Hydra с опцией -x для генерации паролей и атаки на FTP-сервер. Помните, что следует использовать эти методы ответственно и этично.

Генерация паролей с разными регистрами

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

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

Убедитесь, что вы находитесь в каталоге ~/project и ваш FTP-сервер всё ещё работает:

cd ~/project

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

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Эта команда генерирует пароли, используя:

  • a-z: строчные буквы (a-z)
  • A-Z: прописные буквы (A-Z)

Вы увидите пароли, такие как "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab" и т.д. Обратите внимание, как Hydra систематически комбинирует прописные и строчные буквы.

Давайте попробуем диапазон 3-4 символа, чтобы лучше увидеть шаблон:

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Это сгенерирует пароли длиной от 3 до 4 символов с использованием разных регистров. Вы можете наблюдать, как прогрессируют комбинации:

  • 3 символа: "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab" и т.д.
  • 4 символа: "aaaa", "Aaaa", "aAaa", "AAaa", "aaaA", "AaaA", "aAaA", "AAaA" и т.д.

Понимание шаблона:

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

  1. Многие политики паролей требуют использования разных регистров.
  2. Пользователи часто используют заглавную букву в начале или случайные заглавные буквы.
  3. Распространённые шаблоны включают использование заглавной буквы в начале слова.

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

Генерация буквенно-цифровых паролей

В этом шаге вы узнаете, как генерировать пароли, сочетающие буквы и цифры. Буквенно-цифровые пароли очень распространены, так как они балансируют безопасность и запоминаемость.

Буквенно-цифровые пароли являются одним из самых распространённых типов паролей, потому что:

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

Давайте сгенерируем буквенно-цифровые пароли с помощью Hydra:

hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121

Это генерирует пароли с использованием:

  • a-z: строчные буквы (a-z)
  • A-Z: прописные буквы (A-Z)
  • 0-9: цифры (0-9)

Примеры сгенерированных паролей: "abc", "A2b", "123", "aB1", "Te1" и т.д.

Давайте попробуем более целенаправленный подход, используя только строчные буквы и цифры:

hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121

Это сгенерирует пароли, такие как "aaa", "aa1", "a12", "123", "test" и т.д.

Общие буквенно-цифровые шаблоны:

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

  1. Слово + цифры (например, "pass123")
  2. Цифры + слово (например, "123pass")
  3. Переменное чередование букв и цифр (например, "a1b2")

Давайте смоделируем шаблон, где пользователи могут использовать короткие буквенно-цифровые комбинации:

hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121

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

Генерация паролей только из цифр

В этом шаге вы узнаете, как генерировать пароли, состоящие только из цифр. Такие пароли часто используются для ПИН-кодов, простых паролей и систем, где допускаются только цифры.

Пароли, состоящие только из цифр, часто используются в:

  • ПИН-кодах устройств и учетных записей
  • Простых паролях для базовых систем
  • Временных паролях
  • Системах со старыми требованиями, допускающими только цифры

Давайте сгенерируем пароли, состоящие только из цифр:

hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121

Это генерирует пароли, состоящие только из цифр, такие как "123", "1234", "0000", "9999", "5678" и т.д.

Для паролей, похожих на ПИН-коды (обычно 4-6 цифр), попробуйте:

hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121

Это генерирует комбинации ровно из 4 цифр, которые могут представлять:

  • Годы (1990, 2000, 2023 и т.д.)
  • Распространённые ПИН-коды (1234, 0000, 1111 и т.д.)
  • Годы рождения
  • Значимые даты

Давайте попробуем шаблон из 6 цифр, распространённый для более длинных ПИН-кодов:

hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121

Общие шаблоны паролей, состоящих только из цифр:

Пользователи часто выбирают предсказуемые пароли, состоящие только из цифр:

  1. Последовательные числа: 123456, 654321
  2. Повторяющиеся цифры: 111111, 000000
  3. Даты: годы рождения, текущий год
  4. Простые шаблоны: 121212, 123123

Применение в реальных условиях:

Генерация паролей, состоящих только из цифр, особенно полезна при атаке на:

  • ПИН-коды мобильных устройств
  • ПИН-коды банкоматов
  • Простые пароли для систем
  • Временные коды доступа

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

Генерация паролей с пользовательскими наборами символов, включая символы

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

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

Давайте сгенерируем пароли с настроенными наборами символов, включающими определённые знаки:

hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121

Это генерирует пароли, используя:

  • a-z: строчные буквы (a-z)
  • 0-9: цифры (0-9)
  • !@#: определённые символы

Примеры: "abc!", "a1@", "te#", "12!", и т.д.

Давайте попробуем другой набор распространённых символов:

hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121

Это использует строчные буквы и символы $, %, &.

Для паролей, которые могут включать более сложные символы:

hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121

Это создаёт комплексный набор символов с:

  • Строчными и прописными буквами
  • Цифрами
  • Распространёнными символами: !@#$%^&*

Наиболее распространённые символы в паролях:

Основываясь на анализе паролей, эти символы чаще всего используются:

  1. ! - Восклицательный знак
  2. @ - Знак "собаки"
  3. # - Решётка/фунт
  4. $ - Знак доллара
  5. % - Знак процента
  6. ^ - Знак возведения в степень
  7. & - Знак амперсанда
  8. * - Звёздочка

Стратегический выбор символов:

При создании настроенных наборов символов следует учитывать:

  • Доступность на клавиатуре (символы на числовой строке часто используются)
  • Требования политики паролей
  • Культурные предпочтения (некоторые символы более распространены в определённых регионах)
  • Ограничения системы (некоторые системы не допускают определённых символов)

Целевые наборы символов:

Для конкретных сценариев можно использовать целевые наборы символов:

## Распространённые знаки препинания
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121

## Символы скобок
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121

## Математические символы
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121

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

Резюме

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

Вы отработали различные стратегии генерации паролей, включая:

  • Генерация базовых паролей: Изучение синтаксиса опции -x и основных концепций
  • Сценарии атак на FTP: Применение генерации паролей к реальным сервисам
  • Пароли с прописными и строчными буквами: Объединение прописных и строчных букв для распространённых шаблонов паролей
  • Буквенно-цифровые пароли: Использование букв и цифр, наиболее распространённого типа паролей в реальных сценариях
  • Пароли, состоящие только из цифр: Целевое воздействие на ПИН-коды и простые цифровые пароли с высокой эффективностью взлома
  • Настраиваемые наборы символов: Создание целевых комбинаций символов на основе распространённых шаблонов использования