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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/password_creation -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/single_username -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/ftp_attack -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/output_saving -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/verbose_mode -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/service_options -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} hydra/troubleshooting -.-> lab-550769{{"Генерация паролей с помощью Hydra при переборе"}} end

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

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

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

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

Сначала перейдите в каталог ~/project:

cd ~/project

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

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

hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp

Разберем эту команду по частям:

  • hydra: Командная утилита Hydra.
  • -l user: Указывает имя пользователя, которое будет использоваться. Здесь мы используем "user", но это может быть любое имя пользователя.
  • -P /dev/null: Сообщает Hydra не использовать файл со списком паролей. Вместо этого мы используем опцию -x для генерации паролей. /dev/null - это специальный файл, который отбрасывает любые данные, записанные в него.
  • -vV: Включает подробный вывод, показывающий каждую попытку входа.
  • -x 6:8:lc: Это ключевая часть. Она сообщает Hydra сгенерировать пароли с:
    • 6: Минимальной длиной 6 символов.
    • 8: Максимальной длиной 8 символов.
    • lc: Использованием только строчных букв (от a до z). Другие варианты включают uc (заглавные буквы), 12 (цифры), sc (символы). Вы можете комбинировать их, например, lcuc12 для строчных, заглавных букв и цифр.
  • localhost: Целевой хост (в данном случае - наш фиктивный FTP-сервер).
  • ftp: Сервис, на который будет произведена атака (FTP).

Вы увидите, как Hydra пытается войти с сгенерированными паролями, такими как "aaaaaa", "aaaaaaa", "aaaaaaaa", "aaaaab" и так далее. Поскольку мы используем /dev/null в качестве файла с паролями, Hydra будет использовать только пароли, сгенерированные опцией -x.

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

Теперь попробуем более сложный пример. Предположим, что мы знаем, что пароли могут начинаться с "prefix" и заканчиваться цифрой, а между ними могут быть от 4 до 6 алфавитно-цифровых символов.

Мы не можем напрямую указать префикс и суффикс с помощью опции -x. Однако мы можем сгенерировать среднюю часть и затем добавить известные части с помощью других инструментов (например, sed или awk) для создания файла со списком паролей, который мы затем будем использовать с Hydra. Для простоты мы ограничимся базовым использованием опции -x на этом этапе. Более продвинутую обработку списка паролей мы рассмотрим на последующих этапах.

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

hydra -l user -P /dev/null -vV -x 8:10:lc12 localhost ftp

Это сгенерирует пароли, такие как "aaaaaaaa", "aaaaaaa1", "aaaaaa11" и так далее.

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

Атака на FTP-сервер с использованием сгенерированных паролей

На этом этапе мы продолжим работу, начатую на предыдущем этапе, и воспользуемся возможностями генерации паролей в Hydra для атаки на (фиктивный) FTP-сервер. Мы сосредоточимся на использовании списка паролей, сгенерированного "на лету" с помощью опции -x.

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

Для этого этапа предположим, что у вас запущен базовый FTP-сервер (даже если это фиктивный сервер, который принимает любые учетные данные). Если его нет, вы можете быстро настроить простой сервер с помощью Python:

sudo apt update
sudo apt install python3-pyftpdlib

Затем создайте каталог, который будет обслуживать FTP-сервер:

mkdir ~/project/ftp_root

И запустите FTP-сервер:

python3 -m pyftpdlib -p 2121 -w ~/project/ftp_root

Эта команда запускает FTP-сервер на порту 2121, обслуживая файлы из каталога ~/project/ftp_root. Опция -w позволяет запись. Вы можете остановить сервер, нажав Ctrl+C. Обратите внимание, что это очень простой сервер для тестирования и не подходит для использования в производственной среде.

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

hydra -l testuser -P /dev/null -vV -x 4:6:lc 127.0.0.1 ftp

Разберем эту команду еще раз:

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

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

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

hydra -l testuser -P /dev/null -vV -x 5:7:lc12 127.0.0.1 ftp

Это сгенерирует пароли, такие как "aaaaa", "aaaaa1", "aaaa11" и так далее.

Важные аспекты:

  • Ограничение скорости (Rate Limiting): В реальных FTP-серверах часто есть ограничение скорости, чтобы предотвратить атаки методом перебора. В Hydra есть опции для управления количеством одновременных подключений и задержкой между попытками.
  • Сложность паролей: Эффективность атаки методом перебора в значительной степени зависит от сложности паролей. Более длинные и сложные пароли (с использованием комбинации заглавных и строчных букв, цифр и символов) намного сложнее взломать.
  • Правовые и этические аспекты: Всегда получайте явное разрешение перед попыткой тестирования безопасности любой системы.

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

Отключение символов с помощью опции -y

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

Опция -y сообщает Hydra игнорировать любые символы, присутствующие в файле со списком паролей. Она не влияет на генерацию паролей с помощью опции -x; она применяется только при чтении паролей из файла.

Сначала создадим файл со списком паролей, содержащий несколько паролей с символами. Перейдите в каталог ~/project:

cd ~/project

Теперь создайте файл с именем passwords.txt с помощью nano:

nano passwords.txt

Добавьте в файл следующие пароли:

password123
P@sswOrd
secret!
12345
qwerty

Сохраните файл и выйдите из nano (Ctrl+X, затем Y, затем Enter).

Теперь используем Hydra для атаки на наш фиктивный FTP-сервер (предполагая, что он все еще запущен с предыдущего этапа) с использованием этого списка паролей, без опции -y:

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

Hydra попытается войти в систему, используя каждый пароль из файла passwords.txt, включая те, которые содержат символы.

Теперь используем опцию -y для отключения символов:

hydra -l testuser -P passwords.txt -y -vV 127.0.0.1 ftp

С опцией -y Hydra фактически будет обрабатывать пароли типа "P@sswOrd" как "PsswOrd" и "secret!" как "secret". Он удаляет символы перед попыткой входа в систему.

Важное примечание: Опция -y изменяет пароли перед тем, как они будут отправлены в целевой сервис. Это означает, что если настоящий пароль требует наличия символа, использование опции -y не позволит вам его найти.

Для дальнейшего пояснения создадим сценарий, в котором правильный пароль - это "secret!". Если мы используем опцию -y, Hydra попытается войти с паролем "secret" и потерпит неудачу.

Когда использовать опцию -y:

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

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

Анализ вывода при переборе паролей

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

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

Сначала запустим простую команду Hydra против нашего фиктивного FTP-сервера (убедитесь, что он все еще запущен):

hydra -l testuser -P passwords.txt -vV 127.0.0.1 ftp

Предполагая, что у вас есть файл passwords.txt из предыдущего шага, Hydra попытается войти в систему, используя каждый пароль из этого файла.

Вот разбор общих сообщений вывода, которые вы можете увидеть:

  • [DATA] 127.0.0.1:21 - banner: 220 pyftpdlib 1.5.6: Это показывает баннер, полученный от FTP-сервера. Баннер содержит информацию о программном обеспечении сервера и его версии.
  • [STATUS] 127.0.0.1:21 - 1/5 [5/5 pp]: Это указывает на прогресс атаки.
    • 1/5: означает, что Hydra попробовал 1 пароль из общего количества 5.
    • [5/5 pp]: показывает количество паролей на процесс.
  • [DEBUG] ...: Отладочные сообщения предоставляют более подробную информацию о процессе подключения и аутентификации. Они полезны для устранения неполадок.
  • [21][ftp] host: 127.0.0.1 login: testuser password: password123: Это показывает учетные данные, которые пробуются.
  • [21][ftp] host: 127.0.0.1 login: testuser password: P@sswOrd: Это показывает следующие учетные данные, которые пробуются.
  • [ATTEMPT][ftp] 127.0.0.1:21 - login: 'testuser' password: 'password123': Эта строка указывает, что Hydra пытается войти в систему с указанным именем пользователя и паролем.
  • [21][ftp] 127.0.0.1: Login incorrect: Это указывает на неудачную попытку входа. Точное сообщение зависит от конфигурации FTP-сервера.
  • [21][ftp] 127.0.0.1: Invalid username or password: Это также указывает на неудачную попытку входа.
  • [21][ftp] 127.0.0.1: ftp:Login OK: Это самое важное сообщение! Оно указывает на успешную попытку входа. Hydra нашел действительную комбинацию имени пользователя и пароля.

Если Hydra находит действительные учетные данные для входа, он выведет сообщение "Login OK" и затем остановит атаку (по умолчанию).

Сохранение вывода в файл:

Вы можете сохранить вывод Hydra в файл для последующего анализа, используя опцию -o:

hydra -l testuser -P passwords.txt -vV -o output.txt 127.0.0.1 ftp

Это сохранит все сообщения вывода в файл с именем output.txt в каталоге ~/project. Затем вы можете использовать такие инструменты, как grep, чтобы найти определенные сообщения, например, "Login OK".

Например, чтобы найти успешные попытки входа в файле output.txt:

grep "Login OK" output.txt

Интерпретация вывода:

  • Отсутствие сообщений "Login OK": Это означает, что Hydra не смог найти действительную комбинацию имени пользователя и пароля. Это может быть по нескольким причинам:
    • Правильный пароль отсутствует в вашем списке паролей.
    • Имя пользователя указано неверно.
    • Целевой сервис не уязвим для атак методом перебора паролей (например, из-за политики блокировки учетных записей).
    • Существуют проблемы с сетевым подключением.
  • Много сообщений "Login Incorrect": Это указывает на то, что Hydra пытается использовать множество недействительных комбинаций имени пользователя и пароля. Это ожидаемо во время атаки методом перебора паролей.
  • Ошибки "Connection refused" или "Timeout": Они указывают на проблемы с сетевым подключением. Убедитесь, что целевой сервис запущен и доступен с вашего компьютера.

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

Резюме

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

В лабораторной работе показано, как использовать опцию -x с определенными ограничениями по длине и набором символов lc (строчные буквы) для генерации паролей и попытки взлома фиктивного FTP - сервера, запущенного на локальном компьютере. Команда hydra -l user -P /dev/null -vV -x 6:8:lc localhost ftp была использована для иллюстрации этого процесса, подчеркивая важность понимания синтаксиса и доступных опций наборов символов для эффективной генерации паролей.