Раннее прекращение атак Hydra

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

Введение

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

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

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

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

Сначала установим 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, нажмите Ctrl + X, затем Y для подтверждения сохранения и после этого 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>

Для выхода из FTP-клиента введите bye.

ftp> bye
221 Goodbye.

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

cd ~/project

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

nano users.txt

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

testuser1
testuser2

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

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

nano passwords.txt

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

password123
password456
password
123456
qwerty

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

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

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

На этом шаге мы воспользуемся параметром -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

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

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, используя имена пользователей и пароли из подготовленных списков. Как только на любом из хостов будет найдена корректная комбинация, Hydra выведет данные успешного входа и прекратит атаку на все хосты из 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, демонстрируя действие параметра -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 остановиться сразу после обнаружения любой корректной пары имени пользователя и пароля на любом хосте из списка. 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. Если там будет найдена корректная пара учетных данных, вся операция немедленно прекратится — Hydra даже не станет подключаться к ftp2.example.com и ftp3.example.com.

Итоги:

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

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

Итоги

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

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

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