Brute Force SSH с помощью Hydra

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

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

Введение

В этой лабораторной работе вы узнаете, как выполнять атаки методом перебора (brute force attacks) против SSH-сервисов с использованием Hydra, популярного инструмента для взлома паролей в кибербезопасности. Упражнение охватывает установку Hydra, настройку целевого сервера со слабыми учетными данными и выполнение атак с использованием подготовленных списков слов (wordlists).

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


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/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/troubleshooting("Basic Troubleshooting") subgraph Lab Skills hydra/installation -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/password_creation -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/username_creation -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/ssh_attack -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/output_saving -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/verbose_mode -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} hydra/troubleshooting -.-> lab-549926{{"Brute Force SSH с помощью Hydra"}} end

Установка Hydra

На этом шаге мы установим Hydra, мощный инструмент для взлома паролей, используемый для атак методом перебора (brute-force attacks) против различных сетевых сервисов. Hydra особенно полезна для тестирования на проникновение (penetration testing), поскольку она может систематически перебирать различные комбинации имени пользователя и пароля для получения доступа к защищенным системам. Она поддерживает несколько протоколов, включая SSH (который мы будем использовать в этой лабораторной работе), FTP, HTTP и другие.

  1. Сначала откройте терминал в вашей виртуальной машине (VM) LabEx. Терминал - ваш основной интерфейс для выполнения команд в Linux. Убедитесь, что вы находитесь в рабочем каталоге по умолчанию, где мы будем выполнять всю нашу лабораторную работу:

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

    sudo apt update
  3. Теперь мы установим Hydra с помощью менеджера пакетов apt, который обрабатывает установку программного обеспечения в системах на основе Debian, таких как Ubuntu. Флаг -y автоматически подтверждает установку:

    sudo apt install -y hydra
  4. После установки давайте убедимся, что Hydra установлена правильно, проверив ее версию. Команда head -n 1 показывает только первую строку вывода, которая содержит информацию о версии:

    hydra -h | head -n 1
    Вывод, показывающий версию Hydra

    Вы должны увидеть вывод, похожий на:

    Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
  5. Hydra также предлагает версию с графическим интерфейсом (GUI) для тех, кто предпочитает инструменты GUI. Хотя в этой лабораторной работе мы будем использовать версию командной строки, вы можете дополнительно установить версию GTK+ GUI с помощью:

    sudo apt install -y hydra-gtk
    Вывод, показывающий версию Hydra

Настройка целевого SSH-сервера

На этом шаге мы настроим локальный SSH-сервер, который будет служить нашей целью для взлома паролей на последующих шагах. Это позволит нам практиковать методы тестирования на проникновение (penetration testing) в контролируемой среде. SSH (Secure Shell) - это протокол, используемый для безопасного удаленного входа между компьютерами, и мы настроим уязвимую версию в учебных целях.

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

    cd ~/project
  2. Установите пакет OpenSSH server. Это программное обеспечение превратит вашу машину в SSH-сервер, который может принимать удаленные соединения:

    sudo apt install -y openssh-server
  3. Создайте специальную тестовую учетную запись пользователя со слабым паролем (только для демонстрационных целей). В реальных сценариях слабые пароли, подобные этому, - это именно то, что ищут злоумышленники:

    sudo useradd -m testuser
    echo "testuser:password123" | sudo chpasswd
  4. Настройте SSH для разрешения аутентификации по паролю (временно для этой лабораторной работы). По умолчанию многие системы отключают аутентификацию по паролю из соображений безопасности, но мы включаем ее здесь, чтобы продемонстрировать, как работают атаки методом перебора (brute force attacks):

    sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
  5. Перезапустите службу SSH, чтобы применить изменения. Службы часто необходимо перезапускать после внесения изменений в конфигурацию:

    sudo service ssh restart
  6. Убедитесь, что SSH-сервер запущен. Эта команда проверяет, правильно ли активен наш SSH-сервер и прослушивает ли он соединения:

    sudo service ssh status

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

  7. Проверьте SSH-соединение локально. Эта заключительная проверка подтверждает, что все работает, прежде чем мы перейдем к фазе атаки:

    ssh testuser@localhost -o StrictHostKeyChecking=no

    Когда будет предложено, введите пароль password123. После успешного входа в систему введите exit, чтобы вернуться в основной сеанс. Опция -o StrictHostKeyChecking=no предотвращает запрос SSH на подтверждение отпечатка сервера (server's fingerprint), что приемлемо для этой лабораторной среды.

    Результат локального теста SSH-соединения

Подготовка списка имен пользователей и паролей

На этом шаге мы создадим текстовые файлы, содержащие потенциальные имена пользователей и пароли, которые Hydra будет использовать для попыток аутентификации SSH. Эти файлы необходимы для атак методом перебора по словарю (dictionary-based brute-force attacks). Атака по словарю работает путем систематической попытки всех возможных комбинаций имен пользователей и паролей из предопределенных списков, поэтому подготовка хороших списков имеет решающее значение.

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

    cd ~/project
  2. Создайте файл списка имен пользователей с помощью текстового редактора nano. Общие имена пользователей часто пробуют первыми при атаках методом перебора, потому что многие системы используют имена пользователей по умолчанию или предсказуемые имена пользователей:

    nano usernames.txt

    Добавьте эти общие имена пользователей (нажмите Ctrl+O, чтобы сохранить, затем Ctrl+X, чтобы выйти):

    admin
    root
    testuser
    user
    guest
  3. Создайте файл списка паролей. Слабые пароли, подобные этим, часто используются и часто являются первыми целями при тестировании безопасности:

    nano passwords.txt

    Добавьте эти общие пароли:

    password
    password123
    123456
    qwerty
    letmein
  4. Убедитесь, что файлы были созданы правильно, отобразив их содержимое. Этот шаг подтверждения гарантирует отсутствие опечаток или проблем с форматированием в ваших списках:

    cat usernames.txt
    cat passwords.txt

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

  5. (Необязательно) Сгенерируйте дополнительные варианты паролей с помощью crunch. Этот инструмент помогает создавать более полные списки паролей, автоматически генерируя комбинации на основе указанных шаблонов:

    sudo apt install -y crunch
    crunch 4 6 0123456789 -o num_passwords.txt

    Это создает числовые пароли длиной от 4 до 6 символов. Команда указывает минимальную длину (4), максимальную длину (6) и набор символов (цифры 0-9).

Запуск Hydra против SSH

На этом шаге мы будем использовать Hydra для выполнения атаки методом перебора (brute-force attack) против нашего локального SSH-сервера. Brute-forcing - это метод перебора множества комбинаций имени пользователя/пароля до тех пор, пока не будет найдена правильная. Мы будем использовать списки слов (wordlists), которые мы подготовили ранее, чтобы автоматизировать этот процесс.

  1. Сначала перейдите в каталог проекта, содержащий ваши списки слов. Это гарантирует, что Hydra сможет найти созданные нами файлы:

    cd ~/project
  2. Теперь мы выполним Hydra с определенными параметрами. Структура команды сообщает Hydra, что атаковать и как. Давайте разберем это:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -vV

    Объяснение параметров:

    • -L usernames.txt: Указывает на наш список возможных имен пользователей
    • -P passwords.txt: Указывает наш файл словаря паролей (password dictionary file)
    • ssh://localhost: Нацеливается на службу SSH на этой машине
    • -t 4: Контролирует скорость, ограничивая 4 одновременными попытками
    • -vV: Показывает подробный прогресс в терминале
  3. Во время работы Hydra будет отображать каждую попытку в режиме реального времени. Когда он найдет действительные учетные данные (valid credentials), они четко отобразятся в выводе, например так:

    [22][ssh] host: localhost   login: testuser   password: password123
    Отображение результатов запуска Hydra
  4. (Необязательно) Чтобы сохранить постоянную запись результатов, мы можем сохранить их в файл. Это полезно для документации или дальнейшего анализа:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -o results.txt
  5. После завершения сканирования вы можете просмотреть сохраненные результаты с помощью:

    cat results.txt

Итог

В этой лабораторной работе вы узнали, как проводить атаку методом перебора (brute force attack) на SSH с использованием Hydra, мощного инструмента для взлома паролей (password-cracking tool). Упражнение охватывало установку Hydra, настройку SSH-сервера для тестирования и создание целевых списков имен пользователей/паролей (username/password lists).

Вы попрактиковались в выполнении атак на основе словаря (dictionary-based attacks) и анализе результатов, демонстрируя, как можно использовать слабые учетные данные (weak credentials). Этот практический опыт подчеркивает критическую необходимость использования надежных паролей и безопасных методов аутентификации в кибербезопасности.