Настройка количества потоков Hydra

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

Введение

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

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

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

Сначала нам нужно установить сервер OpenSSH. OpenSSH — это набор инструментов сетевого уровня, связанных с безопасностью, основанных на протоколе Secure Shell, и это наиболее распространённая реализация SSH.

Откройте терминал на виртуальной машине LabEx. Вы можете использовать стандартный терминал Xfce.

Выполните следующую команду для обновления списка пакетов:

sudo apt update

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

Далее установите сервер OpenSSH:

sudo apt install openssh-server -y

Флаг -y автоматически отвечает «да» на все запросы во время установки, делая процесс неинтерактивным.

После завершения установки SSH-сервер должен автоматически запуститься. Вы можете проверить его состояние с помощью следующей команды:

sudo service ssh status

Чтобы подтвердить, что SSH-сервер работает, вы можете проверить, прослушивает ли порт SSH (порт 22). Используйте команду netstat:

netstat -tulnp | grep 22

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

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Это указывает, что SSH-сервер прослушивает порт 22 для подключений IPv4 и IPv6.

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

Запуск Hydra с 16 потоками по умолчанию

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

Список паролей уже был загружен во время процесса настройки. Файл ~/project/password.txt содержит список слов unix_passwords.txt из фреймворка Metasploit, который включает в себя сотни распространенных Unix-паролей. Этот более обширный список паролей обеспечит лучшее демонстрирование различий в производительности потоков по сравнению с небольшим ручным списком.

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

ls -la ~/project/password.txt
wc -l ~/project/password.txt

Это покажет вам подробности файла и количество паролей в списке (должно быть несколько сотен записей).

Теперь выполните команду Hydra. Опция -l указывает имя пользователя для атаки (labex), -P указывает путь к вашему списку паролей (~/project/password.txt), а -V включает подробный режим, чтобы отобразить каждую попытку. ssh://localhost указывает, что вы нацелены на SSH-службу на локальной машине.

hydra -V -l labex -P ~/project/password.txt ssh://localhost

Hydra начнет попытки входа в SSH-сервер, используя каждый пароль из файла password.txt. Поскольку вы не указали опцию -t, Hydra будет использовать значение по умолчанию в 16 потоков, что означает, что он будет пытаться выполнить 16 попыток ввода пароля одновременно. Флаг -V покажет вам каждую попытку в реальном времени.

Важное примечание о флаге -V:

Параметр -V (подробный вывод) имеет решающее значение для наблюдения за процессом атаки. Без него Hydra отображает только сводную информацию и конечный результат, но вы не увидите отдельные строки [ATTEMPT], которые показывают каждый тестируемый пароль. Этот подробный вывод поможет вам понять, как потоки влияют на скорость и характер атаки.

Вы увидите вывод, похожий на этот, по мере продвижения Hydra:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 16 tasks per 1 server, overall 16 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

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

Увеличение числа потоков до 32 и сравнение скорости

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

Выполните следующую команду в терминале, чтобы запустить Hydra с 32 потоками:

hydra -V -t 32 -l labex -P ~/project/password.txt ssh://localhost

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

Обратите внимание на вывод. Вы должны заметить, что Hydra сообщает о запуске 32 задач/потоков:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 32 tasks per 1 server, overall 32 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Сравнение скорости:

С более обширным списком паролей вы должны заметить более заметные различия во времени выполнения между запусками с 16 и 32 потоками. Обратите внимание на:

  • Время начала и окончания, сообщенное Hydra
  • Расчет "попыток на задачу", который показывает, как распределяется рабочая нагрузка
  • Общее время, затраченное на завершение атаки

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

Уменьшение числа потоков до 4 и наблюдение

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

Выполните следующую команду в терминале, чтобы запустить Hydra с 4 потоками:

hydra -V -t 4 -l labex -P ~/project/password.txt ssh://localhost

Эта команда похожа на предыдущие, но теперь вы явно устанавливаете количество потоков в 4 с помощью -t 4. Флаг -V покажет вам подробности каждой попытки ввода пароля.

Обратите внимание на вывод. Вы должны увидеть, что Hydra запускает только 4 задачи/потока:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Наблюдение за влиянием:

С только 4 потоками и более обширным списком паролей вы должны заметить значительную разницу в производительности:

  • Число "попыток на задачу" будет намного больше, так как каждый поток должен обрабатывать больше паролей.
  • Общее время завершения должно быть заметно больше по сравнению с запусками с 16 и 32 потоками.
  • Вы увидите меньше одновременных сообщений [ATTEMPT], так как одновременно выполняются только 4 попытки.

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

Анализ влияния числа потоков на производительность

На этом шаге вы проанализируете влияние количества потоков на производительность Hydra, основываясь на наблюдениях из предыдущих шагов. Вы экспериментировали с 4, 16 (по умолчанию) и 32 потоками, используя обширный список слов из фреймворка Metasploit.

Ключевые моменты для выбора количества потоков:

  • Системные ресурсы: Оптимальное количество потоков сильно зависит от доступных ресурсов вашей системы, включая процессорные ядра, память и пропускную способность сети. Если вы установите слишком большое количество потоков, ваша система может перегрузиться, что приведёт к снижению производительности из-за накладных расходов на контекстную смену и конкуренции за ресурсы.
  • Ограничения целевой службы: Целевая служба (в данном случае SSH) может иметь ограничения скорости или другие механизмы безопасности. Если служба ограничивает количество попыток входа в единицу времени, увеличение числа потоков за определённый предел не улучшит производительность и может даже вызвать срабатывание системных оповещений или временные блокировки.
  • Задержка сети: Высокая задержка сети между Hydra и целевой службой также может ограничить эффективность увеличения количества потоков. Каждый поток должен установить и поддерживать соединение, а высокая задержка может сделать эти операции медленными, сводя на нет преимущества параллелизма.
  • Размер списка слов: С более крупными списками слов, такими как используемый в этом лабораторном эксперименте, различия в количестве потоков становятся более заметными. Список слов unix_passwords.txt содержит сотни записей, что делает влияние различных количеств потоков на производительность более заметным.

Наблюдения и общие рекомендации:

  • 4 потока: Этот параметр, как правило, медленнее, но подходит для систем с ограниченными ресурсами или при атаке на службы с жёсткими ограничениями скорости. Вероятность перегрузки системы или немедленного срабатывания системных оповещений ниже. С большим списком слов вы должны были заметить значительно более длительное время завершения.
  • 16 потоков (по умолчанию): 16 потоков по умолчанию в Hydra часто представляют собой хороший баланс между производительностью и использованием ресурсов для многих систем и целевых служб. Он обеспечивает разумный уровень параллелизма, не перегружая, как правило, атакующую машину или цель.
  • 32 потока: Увеличение количества потоков до 32 может потенциально улучшить производительность, особенно если ваша система имеет достаточные ресурсы (например, несколько процессорных ядер) и целевая служба не имеет жёстких ограничений скорости. Однако крайне важно отслеживать использование ресурсов вашей системы, чтобы убедиться, что она не становится узким местом.

Метрики производительности для рассмотрения:

При оценке производительности потоков рассмотрите следующие факторы:

  • Общее время выполнения: Время от начала до завершения.
  • Попытки в секунду: Скорость, с которой выполняются попытки ввода паролей.
  • Использование системных ресурсов: Использование процессора, памяти и сети.
  • Ответ целевой службы: Становится ли служба неотзывчивой или применяет блокировки.

Заключение:

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

Резюме

В этом лабораторном эксперименте вы изучили, как настроить количество потоков Hydra и его влияние на производительность, используя обширный список паролей. Вы начали с настройки базового SSH-сервера на вашей виртуальной машине LabEx. Затем вы использовали Hydra для попыток взлома паролей этого SSH-сервера с различным количеством потоков: стандартные 16, увеличенные до 32 и уменьшенные до 4, используя список слов unix_passwords.txt из фреймворка Metasploit. Наблюдая за скоростью и временем завершения каждого сценария с реалистичным списком слов, вы получили практическое понимание того, как количество потоков влияет на эффективность Hydra. Этот лабораторный эксперимент продемонстрировал важность оптимизации количества потоков, основываясь на доступных системных ресурсах и характеристиках целевой службы, для достижения наилучшей производительности при операциях взлома паролей.