Прекращение атак Hydra на ранней стадии

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

Введение

В этом лабораторном практикуме мы рассмотрим, как остановить атаки Hydra на ранней стадии, используя её возможности ограничения числа попыток. Мы начнём с настройки FTP-сервера с помощью vsftpd и конфигурирования его с несколькими учётными записями пользователей, testuser1 и testuser2, каждая со своим паролем. Эта настройка позволит нам смоделировать сценарий, где Hydra пытается взломать несколько учётных записей одновременно.

Далее лабораторный практикум проведет вас через использование опции -f для остановки Hydra после первой успешной авторизации и опции -F с списком нескольких хостов. Наконец, мы сравним поведение опций -f и -F, чтобы понять, как они могут быть использованы для смягчения атак Hydra.

Настройка FTP с несколькими учетными данными

На этом шаге мы настроим FTP-сервер и сконфигурируем его с несколькими учётными данными пользователей. Это позволит нам протестировать способность Hydra взламывать несколько учётных записей одновременно. Мы будем использовать vsftpd (Very Secure FTP Daemon) в качестве нашего FTP-сервера.

Сначала установим vsftpd. Откройте терминал и выполните следующую команду:

sudo apt update
sudo apt install vsftpd -y

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

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Теперь отредактируем файл конфигурации /etc/vsftpd.conf с помощью nano. Этот файл управляет поведением FTP-сервера.

sudo nano /etc/vsftpd.conf

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

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

Чтобы сохранить файл в nano:

  1. Нажмите Ctrl + X для выхода.
  2. Нажмите Y, чтобы подтвердить сохранение.
  3. Нажмите Enter, чтобы подтвердить имя файла.

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

sudo cat /etc/vsftpd.conf | grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|listen)"

Убедитесь, что вывод показывает те же настройки, что и те, которые мы добавили.

Теперь создадим несколько учётных записей пользователей. Мы создадим двух пользователей: testuser1 и testuser2, и установим для них пароли. Эти пользователи будут использоваться Hydra для попыток входа.

Создайте testuser1 с домашним каталогом:

sudo useradd -m testuser1

Установите пароль для testuser1 с помощью неинтерактивной команды:

echo 'testuser1:password123' | sudo chpasswd

Создайте testuser2 с домашним каталогом:

sudo useradd -m testuser2

Установите пароль для testuser2 с помощью неинтерактивной команды:

echo 'testuser2:password456' | sudo chpasswd

Эти команды неинтерактивны и создадут пользователей напрямую без запроса ввода, что делает их более надёжными в автоматизированных средах.

Теперь нам нужно исправить разрешения домашнего каталога для конфигурации chroot. Когда chroot_local_user=YES включено, домашний каталог пользователя не должен быть доступен для записи пользователем по соображениям безопасности:

sudo chmod 755 /home/testuser1
sudo chmod 755 /home/testuser2

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

sudo mkdir /home/testuser1/files
sudo mkdir /home/testuser2/files
sudo chown testuser1:testuser1 /home/testuser1/files
sudo chown testuser2:testuser2 /home/testuser2/files

Далее перезапустите службу vsftpd, чтобы применить внесённые изменения в файл конфигурации и распознать новых пользователей.

sudo service vsftpd restart

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

ftp localhost

Вам будет предложено ввести имя пользователя. Введите testuser1, а затем пароль password123. Если всё настроено правильно, вы увидите сообщение, указывающее на успешный вход.

Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:labex): testuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Вы можете ввести bye, чтобы выйти из FTP-клиента.

ftp> bye
221 Goodbye.

Теперь подготовим файлы, которые Hydra будет использовать для атаки. Перейдите в каталог ~/project, который является вашим стандартным рабочим каталогом.

cd ~/project

Создайте файл с именем users.txt в каталоге ~/project. Этот файл будет содержать имена пользователей, которые Hydra будет пытаться использовать.

nano users.txt

Добавьте следующие имена пользователей в users.txt:

testuser1
testuser2

Сохраните файл и выйдите из nano.

Далее создайте файл с именем passwords.txt в каталоге ~/project. Этот файл будет содержать список паролей, включая правильные для наших тестовых пользователей, а также некоторые распространённые неправильные пароли.

nano passwords.txt

Добавьте следующие пароли в passwords.txt:

password123
password456
password
123456
qwerty

Сохраните файл и выйдите из nano.

Теперь у нас настроен FTP-сервер с несколькими учётными записями пользователей и списком имён пользователей и паролей, которые Hydra может использовать для попыток взлома учётных записей.

Запуск с опцией -f для остановки после первой пары

На этом шаге мы будем использовать опцию -f с Hydra. Опция -f сообщает Hydra о прекращении работы после обнаружения первой корректной пары имя пользователя/пароль для одного целевого объекта. Это полезно, когда вам нужно найти только одну корректную учётную запись на определённом сервисе и вы не хотите, чтобы Hydra продолжал пробовать другие комбинации после успешного входа.

Убедитесь, что вы находитесь в каталоге ~/project.

cd ~/project

Теперь запустим Hydra против нашего FTP-сервера, используя списки имён пользователей и паролей, которые мы создали на предыдущем шаге. Мы добавим опцию -f.

hydra -L users.txt -P passwords.txt localhost ftp -f

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

  • hydra: инструмент командной строки для перебора паролей.
  • -L users.txt: указывает файл, содержащий список имён пользователей (users.txt в текущем каталоге).
  • -P passwords.txt: указывает файл, содержащий список паролей (passwords.txt в текущем каталоге).
  • localhost: адрес целевого FTP-сервера.
  • ftp: протокол сервиса для атаки (в данном случае FTP).
  • -f: эта важная опция сообщает Hydra о прекращении работы после обнаружения первой корректной пары имя пользователя/пароль.

Обратите внимание на вывод в вашем терминале. Hydra будет пытаться войти в систему, используя имена пользователей и пароли из списков. Как только он найдёт корректную комбинацию (например, testuser1:password123), он отобразит успешный вход и остановит свою работу.

Вывод должен быть похож на этот:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:41:46
[DATA] max 10 tasks per 1 server, overall 10 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://localhost:21/
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:41:47

Обратите внимание, что Hydra остановился сразу после обнаружения первой корректной комбинации (testuser1:password123). Без опции -f Hydra продолжал бы пробовать все остальные комбинации в файле passwords.txt для testuser1, а затем перешёл бы к testuser2 и попробовал все пароли для этого пользователя.

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

Тестирование с -F и списком нескольких хостов

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

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

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

cd ~/project

Теперь создадим файл с именем hosts.txt в вашем каталоге ~/project. Этот файл будет содержать список целевых хостов.

nano hosts.txt

Добавьте следующие строки в hosts.txt:

localhost
localhost

Сохраните файл и выйдите из nano. Указав localhost дважды, мы говорим Hydra рассматривать это как две отдельные цели, даже если они указывают на одну и ту же машину.

Теперь запустим Hydra с опцией -F, нацелив её на список хостов, указанных в hosts.txt.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

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

  • -L users.txt: указывает файл, содержащий список имён пользователей.
  • -P passwords.txt: указывает файл, содержащий список паролей.
  • -M hosts.txt: эта новая опция указывает файл, содержащий список целевых хостов (hosts.txt в текущем каталоге).
  • ftp: протокол сервиса для атаки.
  • -F: эта важная опция сообщает Hydra о прекращении атаки после нахождения первого успешного входа на любой из хостов в списке.

Обратите внимание на вывод в вашем терминале. Hydra будет пытаться войти на каждый хост в файле hosts.txt, используя имена пользователей и пароли из списков. Как только он найдёт корректную комбинацию на любом из хостов, он отобразит успешный вход и прекратит атаку на все хосты, указанные в hosts.txt.

Вывод должен быть похож на этот:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:42:10
[DATA] max 10 tasks per 2 servers, overall 20 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://(2 targets):21/
[21][ftp] host: localhost   login: testuser1   password: password123
[STATUS] attack finished for localhost (valid pair found)
2 of 2 targets successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:42:11

Несмотря на то, что в hosts.txt есть два localhost, Hydra останавливается после нахождения первого успешного входа на первом localhost. Он не продолжает попытки найти учётные данные для второго localhost, демонстрируя эффект опции -F.

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

Сравнение поведения опций -f и -F

В этом шаге мы напрямую сравним поведение опций -f и -F, чтобы закрепить понимание их различий. Мы будем использовать ту же настройку, что и в предыдущих шагах: FTP-сервер, работающий на localhost, файлы users.txt и passwords.txt, а также файл hosts.txt, содержащий два входа для localhost.

Сначала давайте повторно запустим команду с опцией -f. Эта команда нацелена на один хост (localhost) и останавливается после нахождения первой корректной пары имя пользователя/пароль для этого конкретного хоста.

hydra -L users.txt -P passwords.txt localhost ftp -f

Как мы наблюдали в шаге 2, Hydra найдёт testuser1:password123 и затем остановится. Он не будет пытаться найти testuser2:password456 для localhost.

Теперь давайте повторно запустим команду с опцией -F. Эта команда нацелена на список хостов (hosts.txt) и останавливается после нахождения первой корректной пары имя пользователя/пароль на любом из хостов в этом списке.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Как мы наблюдали в шаге 3, Hydra найдёт testuser1:password123 на первом входе localhost в hosts.txt и затем остановится. Он не будет продолжать проверять второй вход localhost в файле hosts.txt.

Ключевое различие заключается в том, как Hydra интерпретирует цель и когда принимает решение остановить процесс:

  • -f (одна цель): Когда вы указываете одну цель (например, localhost), -f сообщает Hydra остановить процесс, как только он найдёт любую корректную пару имя пользователя/пароль для этой конкретной цели. Он не будет продолжать поиск других корректных данных для той же цели.

  • -F (список нескольких хостов): Когда вы указываете список целей с помощью -M, -F сообщает Hydra остановить процесс, как только он найдёт любую корректную пару имя пользователя/пароль на любом из хостов в этом списке. Он не будет продолжать поиск других корректных данных для того же хоста, и не будет проверять последующие хосты в списке.

Для дальнейшей иллюстрации различия рассмотрим гипотетический сценарий, где вы сканируете сеть с несколькими FTP-серверами: ftp1.example.com, ftp2.example.com и ftp3.example.com.

  • Если вы используете -f и нацеливаетесь на ftp1.example.com, Hydra найдёт первые корректные данные на ftp1.example.com и остановится. Если вы затем захотите проверить ftp2.example.com, вам потребуется запустить отдельную команду Hydra для него.

  • Если вы поместите все три сервера в файл hosts.txt и используете -F, Hydra начнёт проверять ftp1.example.com. Если он найдёт корректные данные там, он немедленно остановит весь процесс, даже не попытавшись подключиться к ftp2.example.com или ftp3.example.com.

Подводя итог:

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

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

Резюме

В этой лабораторной работе вы изучили, как управлять поведением атаки Hydra с помощью опций -f и -F. Вы начали с настройки локального FTP-сервера с помощью vsftpd и его конфигурации с несколькими учётными записями пользователей (testuser1 и testuser2), чтобы смоделировать реальную ситуацию. Вы также подготовили файлы users.txt и passwords.txt для использования Hydra.

Затем вы использовали опцию -f, чтобы указать Hydra остановить атаку после нахождения первой корректной пары имя пользователя/пароль для одной цели, продемонстрировав, как эффективно найти одну уязвимую учётную запись. После этого вы изучили опцию -F с использованием списка нескольких хостов (hosts.txt), узнав, как Hydra может остановить всю атаку на несколько целей, как только будет найдена одна корректная пара имя пользователя/пароль на любом из перечисленных хостов.

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