Сохранение результатов атаки Hydra

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

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

Введение

В этом лабораторном занятии мы рассмотрим, как сохранить результаты атаки с использованием Hydra. Hydra, мощный инструмент для взлома паролей, будет использован для проверки безопасности имитированной HTTP-формы входа. Мы начнем с выполнения базовой HTTP-атаки на целевой веб-сервер, используя списки имен пользователей и паролей, созданные в каталоге ~/project.

Затем в рамках лабораторного занятия вы научитесь сохранять результаты атаки с помощью опции -o и выводить их в формате JSON с помощью опции -b. Наконец, мы сравним текстовый и JSON-выводы, чтобы понять, какими разными способами Hydra может представлять свои результаты.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/http_form("HTTP Form Attack") hydra/HydraGroup -.-> hydra/output_saving("Output File Saving") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550773{{"Сохранение результатов атаки Hydra"}} hydra/single_password -.-> lab-550773{{"Сохранение результатов атаки Hydra"}} hydra/http_form -.-> lab-550773{{"Сохранение результатов атаки Hydra"}} hydra/output_saving -.-> lab-550773{{"Сохранение результатов атаки Hydra"}} hydra/success_detection -.-> lab-550773{{"Сохранение результатов атаки Hydra"}} end

Выполнение базовой HTTP-атаки

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

Прежде чем приступить, давайте разберемся с некоторыми базовыми концепциями:

  • HTTP (Hypertext Transfer Protocol, Протокол передачи гипертекста): Основа передачи данных в Всемирной паутине.
  • Hydra: Параллельный инструмент для взлома логинов, поддерживающий множество протоколов для атаки.
  • Цель (Target): В нашем случае - веб-сервер с формой входа.
  • Список имен пользователей (Username List): Файл, содержащий список возможных имен пользователей.
  • Список паролей (Password List): Файл, содержащий список возможных паролей.

Сначала создадим простой список имен пользователей и список паролей. Мы будем использовать nano для создания этих файлов в каталоге ~/project.

Создайте файл с именем users.txt со следующим содержимым:

nano ~/project/users.txt

Добавьте в файл следующие имена пользователей:

admin
user
test

Сохраните файл, нажав Ctrl+X, затем Y, а затем Enter.

Далее создайте файл с именем passwords.txt со следующим содержимым:

nano ~/project/passwords.txt

Добавьте в файл следующие пароли:

password
123456
test

Сохраните файл, нажав Ctrl+X, затем Y, а затем Enter.

Теперь предположим, что у нас есть веб-сервер, работающий по адресу 127.0.0.1 на порту 80 с формой входа. Форма требует имя пользователя и пароль, а страница входа расположена по адресу /login.php. Мы будем использовать Hydra для попытки взлома входа.

Примечание: В рамках этого лабораторного занятия мы будем имитировать HTTP-сервис. В реальной ситуации вы должны заменить 127.0.0.1 на фактический IP-адрес или доменное имя целевого сервера.

Для выполнения базовой HTTP-атаки используйте следующую команду:

hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Разберем эту команду:

  • hydra: Команда запуска Hydra.
  • -L ~/project/users.txt: Указывает файл со списком имен пользователей.
  • -P ~/project/passwords.txt: Указывает файл со списком паролей.
  • 127.0.0.1: Целевой IP-адрес.
  • http-post-form: Указывает модуль атаки на HTTP POST-форму.
  • "/login.php:username=^USER^&password=^PASS^:Invalid username or password": Указывает страницу входа, поля для имени пользователя и пароля, а также сообщение об ошибке, которое отображается при неудачном входе. ^USER^ и ^PASS^ - это заполнители, которые Hydra заменяет именами пользователей и паролями из списков.

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

Пример вывода (если вход успешен):

Hydra v9.6 (c) 2024 by van Hauser/THC - Use freely but only for legal purposes.

Hydra is starting...

[DATA] 1 task, 3 servers, 3 login tries (l:3/p:3), ~1 try per server
[DATA] attacking service http-post-form on port 80
[ATTACK] attacking 127.0.0.1:80/login.php
[80][http-post-form] host: 127.0.0.1   login: admin   password: password

Этот вывод показывает, что Hydra успешно нашел комбинацию имени пользователя admin и пароля password.

Если удачный вход не будет найден, Hydra завершит работу без отображения каких-либо успешных учетных данных для входа.

Сохранение результатов с использованием опции -o

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

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

Продолжим с тем же сценарием, что и на предыдущем этапе. У нас есть веб - сервер, работающий по адресу 127.0.0.1 на порту 80, с формой входа, расположенной по адресу /login.php. Мы будем использовать те же файлы users.txt и passwords.txt.

Для сохранения результатов в файл с именем hydra.log в каталоге ~/project используйте следующую команду:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Единственное отличие от предыдущей команды - это добавление опции -o ~/project/hydra.log. Это сообщает Hydra сохранить результаты в файл hydra.log.

После выполнения команды Hydra попытается войти, используя каждую комбинацию имени пользователя и пароля. Если удачный вход будет найден, имя пользователя и пароль будут записаны в файл hydra.log.

Для просмотра содержимого файла hydra.log вы можете использовать команду cat:

cat ~/project/hydra.log

Пример вывода (если вход успешен):

Если Hydra найдет комбинацию admin:password, файл hydra.log будет содержать строку, похожую на следующую:

127.0.0.1 http-post-form: admin:password

Если удачный вход не будет найден, файл hydra.log будет пустым.

Важно отметить, что опция -o перезапишет выходной файл, если он уже существует. Если вы хотите добавить результаты в существующий файл, вы можете использовать опцию -O (заглавная буква О) вместо этого. Однако в рамках этого лабораторного занятия мы сосредоточимся на опции -o.

Вывод результатов в формате JSON с использованием опции -b

На этом этапе мы узнаем, как выводить результаты атаки Hydra в формате JSON с помощью опции -b. JSON (JavaScript Object Notation, Объектная нотация JavaScript) - это легковесный формат обмена данными, который легко читается и пишется человеком, а также легко обрабатывается и генерируется машинами. Этот формат особенно полезен, когда вам нужно программно обработать результаты.

Опция -b, в сочетании с опцией -o, сообщает Hydra сохранить выходные данные в формате JSON в указанный файл.

Продолжим с тем же сценарием, что и ранее. У нас есть веб - сервер, работающий по адресу 127.0.0.1 на порту 80, с формой входа, расположенной по адресу /login.php. Мы будем использовать те же файлы users.txt и passwords.txt.

Для сохранения результатов в формате JSON в файл с именем hydra.json в каталоге ~/project используйте следующую команду:

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

В этой команде мы добавили опцию -b вместе с опцией -o ~/project/hydra.json. Это информирует Hydra сохранить выходные данные в формате JSON в файл hydra.json.

После выполнения команды Hydra попытается войти, используя каждую комбинацию имени пользователя и пароля. Если удачный вход будет найден, имя пользователя и пароль будут записаны в файл hydra.json в формате JSON.

Для просмотра содержимого файла hydra.json вы можете использовать команду cat:

cat ~/project/hydra.json

Пример вывода (если вход успешен):

Если Hydra найдет комбинацию admin:password, файл hydra.json будет содержать JSON - объект, похожий на следующий:

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Если удачный вход не будет найден, файл hydra.json будет содержать пустой JSON - массив:

[]

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

Сравнение текстового и JSON - вывода

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

Мы продолжим использовать тот же сценарий: веб - сервер, работающий по адресу 127.0.0.1 на порту 80, с формой входа, расположенной по адресу /login.php, а также файлы users.txt и passwords.txt.

Сначала запустим Hydra для генерации как текстового, так и JSON - выходного файлов.

Запустите следующую команду для генерации текстового выходного файла (hydra.log):

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.log 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Затем запустите следующую команду для генерации JSON - выходного файла (hydra.json):

hydra -L ~/project/users.txt -P ~/project/passwords.txt -o ~/project/hydra.json -b 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password"

Теперь сравним содержимое двух файлов.

Просмотрите содержимое текстового выходного файла (hydra.log) с помощью команды cat:

cat ~/project/hydra.log

Пример вывода (если вход успешен):

127.0.0.1 http-post-form: admin:password

Просмотрите содержимое JSON - выходного файла (hydra.json) с помощью команды cat:

cat ~/project/hydra.json

Пример вывода (если вход успешен):

[
  {
    "host": "127.0.0.1",
    "port": 80,
    "service": "http-post-form",
    "login": "admin",
    "password": "password"
  }
]

Сравнение:

  • Текстовый вывод: Текстовый вывод представляет собой простой, удобочитаемый формат. Легко быстро увидеть разгаданное имя пользователя и пароль. Однако его сложно обработать машинами.
  • JSON - вывод: JSON - вывод представляет собой структурированный формат, который легко обрабатывается машинами. Он содержит больше информации, чем текстовый вывод, например, хост, порт и службу. Однако он не так удобочитаем, как текстовый вывод.

Когда использовать каждый формат:

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

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

Резюме

В этом практическом занятии мы научились выполнять базовую HTTP - атаку с использованием Hydra, мощного инструмента для взлома паролей. Мы создали списки имен пользователей и паролей с помощью nano, а затем использовали Hydra для попытки взлома имитированной HTTP - формы входа по адресу 127.0.0.1. Для выполнения атаки была использована команда hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid username or password", которая была направлена на конечную точку /login.php с указанными параметрами имени пользователя и пароля.