Использование дополнительных проверок паролей в Hydra

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

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

Введение

В этом лабораторном занятии мы рассмотрим использование дополнительных проверок паролей в Hydra, популярном инструменте для взлома паролей. Лабораторное занятие посвящено демонстрации настройки Telnet-сервиса на виртуальной машине LabEx и последующего использования Hydra с опцией -e nsr для попыток взлома паролей, используя пустые пароли, имена пользователей и перевернутые имена пользователей в качестве потенциальных паролей.

В рамках лабораторного занятия необходимо установить и настроить Telnet-сервис, изменить файл /etc/inetd.conf для отключения аутентификации в демонстрационных целях, а затем запустить Hydra с флагом -e nsr. В конце мы проанализируем вывод, чтобы увидеть успешные проверки и сравним результаты с использованием опции -e ns, подчеркнув эффективность использования дополнительных проверок паролей при попытках взлома.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") subgraph Lab Skills hydra/installation -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} hydra/single_username -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} hydra/single_password -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} hydra/verbose_mode -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} hydra/success_detection -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} hydra/service_options -.-> lab-550776{{"Использование дополнительных проверок паролей в Hydra"}} end

Настройка Telnet-сервиса

На этом этапе мы настроим Telnet-сервис на виртуальной машине LabEx. Telnet - это сетеевой протокол, используемый для обеспечения двусторонней интерактивной текстовой связи с использованием виртуального терминального соединения. Хотя Telnet обычно считается небезопасным из-за отсутствия шифрования, он полезен для демонстрации и тестирования в контролируемой среде, такой как наша виртуальная машина LabEx.

Сначала нам нужно установить Telnet-сервер. Поскольку виртуальная машина LabEx использует контейнер Docker, мы не можем напрямую использовать systemctl для управления службами. Вместо этого мы воспользуемся обходным путем для запуска Telnet-сервиса внутри контейнера.

  1. Установка Telnet-сервера:

    Откройте терминал в директории ~/project и выполните следующую команду:

    sudo apt update
    sudo apt install -y telnetd

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

    ...
    Setting up openbsd-inetd (0.20180617-1) ...
    ...
    Processing triggers for systemd (247.3-7ubuntu3.9) ...
    Processing triggers for man-db (2.9.1-1) ...
  2. Настройка Telnet для запуска без аутентификации (только для демонстрационных целей - НИКОГДА не делайте этого в рабочей среде):

    Отредактируйте файл /etc/inetd.conf для отключения аутентификации. Используйте nano для редактирования файла:

    sudo nano /etc/inetd.conf

    Найдите строку, начинающуюся с telnet, и закомментируйте ее, добавив # в начале строки. Затем добавьте новую строку ниже, которая отключает аутентификацию.

    #telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd
    telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i

    Нажмите Ctrl+S для сохранения изменений и Ctrl+X для выхода из nano.

  3. Перезапуск службы inetd:

    Поскольку мы не можем использовать systemctl, мы воспользуемся скриптом /etc/init.d для перезапуска службы inetd, которая управляет Telnet.

    sudo /etc/init.d/openbsd-inetd restart

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

     * Restarting internet superserver inetd

Запуск Hydra с проверками -e nsr

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

  1. Запуск Hydra с опцией -e nsr:

    Откройте терминал в директории ~/project и выполните следующую команду:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e nsr telnet://localhost

    Разберем эту команду по частям:

    • hydra: Команда для запуска инструмента Hydra.
    • -l labex: Указывает имя пользователя, которое нужно попробовать. Мы используем labex, стандартного пользователя на виртуальной машине LabEx.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Указывает файл со списком паролей. Этот файл содержит список распространенных паролей.
    • -vV: Включает подробный режим, показывающий каждую попытку входа.
    • -e nsr: Это ключевая опция для этого этапа. Она сообщает Hydra попробовать:
      • n: Пустой пароль (пустая строка).
      • s: Имя пользователя в качестве пароля.
      • r: Перевернутое имя пользователя в качестве пароля.
    • telnet://localhost: Указывает целевую службу и адрес. telnet обозначает протокол Telnet, а localhost - локальную машину.

    Теперь Hydra попытается войти в Telnet-сервис, используя указанное имя пользователя и список паролей, а также пустой пароль, имя пользователя и перевернутое имя пользователя. Вывод будет показывать каждую попытку входа и результат ее выполнения.

    Пример вывода (может отличаться в зависимости от списка паролей):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    [ATTEMPT] target localhost - login: 'labex' - pass: 'xebal'
    [23][telnet] host: localhost   login: labex   password: xebal
    ...

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

Анализ вывода на наличие успешных проверок

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

  1. Просмотр вывода Hydra:

    Прокрутите вверх вывод терминала с предыдущего этапа. Найдите строки, которые указывают на успешный вход. Обычно эти строки содержат фразу [23][telnet] host: localhost login: labex password:, за которой следует успешный пароль.

    Поскольку мы отключили аутентификацию для Telnet, вы должны увидеть строку, похожую на следующую:

    [23][telnet] host: localhost   login: labex   password:

    Это означает, что Hydra смог войти в Telnet-сервис на localhost как пользователь labex с пустым паролем (без пароля).

  2. Понимание вывода:

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

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

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

Сравнение с проверками -e ns

На этом этапе мы снова запустим Hydra, но на этот раз с использованием опции -e ns. Эта опция сообщает Hydra попробовать пустые пароли и использовать имя пользователя в качестве пароля. Затем мы сравним результаты с предыдущим запуском с использованием -e nsr, чтобы понять разницу.

  1. Запуск Hydra с опцией -e ns:

    Откройте терминал в директории ~/project и выполните следующую команду:

    hydra -l labex -P /usr/share/wordlists/metasploit/unix_passwords.txt -vV -e ns telnet://localhost

    Как и ранее, разберем эту команду по частям:

    • hydra: Команда для запуска инструмента Hydra.
    • -l labex: Указывает имя пользователя, которое нужно попробовать. Мы используем labex, стандартного пользователя на виртуальной машине LabEx.
    • -P /usr/share/wordlists/metasploit/unix_passwords.txt: Указывает файл со списком паролей. Этот файл содержит список распространенных паролей.
    • -vV: Включает подробный режим, показывающий каждую попытку входа.
    • -e ns: Эта опция сообщает Hydra попробовать:
      • n: Пустой пароль (пустая строка).
      • s: Имя пользователя в качестве пароля.
    • telnet://localhost: Указывает целевую службу и адрес. telnet обозначает протокол Telnet, а localhost - локальную машину.

    Теперь Hydra попытается войти в Telnet-сервис, используя указанное имя пользователя и список паролей, а также пустой пароль и имя пользователя. Вывод будет показывать каждую попытку входа и результат ее выполнения.

    Пример вывода (может отличаться в зависимости от списка паролей):

    Hydra v9.1 (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
    
    Hydra is starting...
    
    [DATA] 1 task, 1 server, 1337 service(s)
    [DATA] attacking service telnet on port 23
    [DATA] attacking target localhost
    [ATTEMPT] target localhost - login: 'labex' - pass: ''
    [23][telnet] host: localhost   login: labex   password:
    [ATTEMPT] target localhost - login: 'labex' - pass: 'labex'
    [23][telnet] host: localhost   login: labex   password: labex
    ...
  2. Сравнение результатов:

    Сравните вывод этой команды с выводом из предыдущего этапа (с использованием -e nsr). Вы должны заметить следующее:

    • Обе команды, скорее всего, найдут успешный вход с пустым паролем, так как мы настроили Telnet для разрешения этого.
    • Обе команды попробуют использовать имя пользователя в качестве пароля.
    • Команда -e nsr также попробовала использовать перевернутое имя пользователя в качестве пароля, чего не делала -e ns.

    Это сравнение показывает, как разные опции в Hydra могут повлиять на объем и эффективность атаки. В данном случае -e nsr включает дополнительную проверку (перевернутое имя пользователя), которая может быть полезна в определенных сценариях.

Резюме

В этом практическом занятии мы настроили Telnet-сервис на виртуальной машине LabEx в целях демонстрации и тестирования. Это включало установку пакета telnetd с помощью apt и настройку файла /etc/inetd.conf для отключения аутентификации, что является важным для демонстрации возможностей Hydra по взлому паролей в контролируемой среде.

Поскольку виртуальная машина LabEx использует Docker-контейнер, мы обошли стандартные команды systemctl и вместо этого изменили файл inetd.conf и использовали скрипт /etc/init.d для перезапуска службы inetd. Эта конфигурация, хотя и небезопасна для производственных окружений, позволяет нам продолжить демонстрацию возможностей Hydra по взлому паролей на последующих этапах.