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

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

Введение

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

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

Настройка службы Telnet

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

Сначала нам нужно создать тестовую учётную запись пользователя с пустым паролем:

sudo useradd -m testuser
sudo passwd -d testuser

Команда passwd -d удаляет пароль для пользователя, фактически создавая пустой пароль.

Нам нужно отредактировать файл конфигурации Telnet, который находится по адресу /etc/inetd.conf. Используйте редактор nano для открытия этого файла:

sudo nano /etc/inetd.conf

Внутри редактора nano найдите строку, начинающуюся с telnet. Она должна выглядеть примерно так:

telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd

Откомментируйте эту строку, добавив # в начале строки:

#telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd

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

telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i
Файл конфигурации Telnet

Теперь соответствующий раздел вашего файла /etc/inetd.conf должен выглядеть так:

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

Нажмите Ctrl+X для выхода из nano. При запросе сохранения нажмите Y, а затем Enter, чтобы сохранить изменения в /etc/inetd.conf.

Кроме того, нам нужно проверить, что PAM настроен для разрешения пустых паролей для Telnet. Проверьте конфигурацию PAM:

cat /etc/pam.d/common-auth | grep pam_unix.so

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

auth    [success=1 default=ignore]      pam_unix.so nullok

Если строка не содержит nullok, вам нужно её добавить. Откройте файл:

sudo nano /etc/pam.d/common-auth

Найдите строку, содержащую pam_unix.so, и добавьте nullok в конец, если она там ещё не присутствует. Сохраните и выйдите из файла, если вы внесли какие-либо изменения.

Наконец, нам нужно перезапустить службу inetd, чтобы изменения вступили в силу. Поскольку мы работаем в среде Docker контейнера, мы будем использовать скрипт /etc/init.d для перезапуска службы:

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

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

 * Restarting internet superserver inetd

Теперь служба Telnet настроена и готова принимать подключения без пароля для целей этого лабораторного практикума.

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

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

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

hydra -l testuser -P ~/project/unix_passwords.txt -vV -e nsr telnet://localhost

Давайте разберём эту команду:

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

Выполните команду. Hydra начнёт попытки входа в службу Telnet на порту 23 (стандартный порт Telnet) с указанным именем пользователя и паролями из списка, а также с пустым паролем, именем пользователя и именем пользователя в обратном порядке.

Вы увидите вывод, похожий на этот, по мере попыток Hydra:

Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.

Hydra is starting...

[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost   login: testuser   password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
[ATTEMPT] target localhost - login: 'testuser' - pass: 'resutest'
...

Поскольку мы настроили тестового пользователя с пустым паролем, Hydra должен быстро найти успешный вход с помощью пустого пароля (первая попытка с пустым паролем).

Проверка успешных проверок в выводе

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

Прокрутите вывод в своём терминале. Ищите строки, указывающие на успешный вход. Эти строки обычно помечены номером порта и службой, за которыми следуют хост, имя пользователя и пароль.

Поскольку мы настроили службу Telnet для разрешения входа без пароля, в выводе должна появиться строка, подобная этой:

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

Эта строка подтверждает, что Hydra успешно вошёл в службу Telnet на localhost с именем пользователя testuser и пустым паролем (указанным пустым пространством после password:).

Вы также можете увидеть другие успешные входы, если какой-либо из паролей в файле ~/project/unix_passwords.txt совпадает с фактическим паролем пользователя testuser (хотя в этой лабораторной настройке ожидается успешная проверка с пустым паролем).

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

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

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

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

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

hydra -l testuser -P ~/project/unix_passwords.txt -vV -e ns telnet://localhost

Эта команда почти идентична предыдущей, единственное отличие — опция -e ns.

  • -e ns: Эта опция указывает Hydra выполнить следующие дополнительные проверки:
    • n: Попробовать пустой пароль.
    • s: Попробовать имя пользователя (testuser) в качестве пароля.

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

Обратите внимание на вывод. Вы увидите попытки с пустым паролем и именем пользователя в качестве пароля, аналогично предыдущему запуску. Однако вы не увидите попытки с именем пользователя в обратном порядке (resutest).

Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.

Hydra is starting...

[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost   login: testuser   password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
...

Сравнивая вывод этой команды с выводом из шага 2, вы чётко увидите, что опция -e nsr включает проверку имени пользователя в обратном порядке, а опция -e ns — нет. Это демонстрирует, как различные опции в Hydra позволяют настраивать процесс подбора паролей и включать определённые типы проверок, которые могут быть актуальны в определённых сценариях.

Резюме

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

Затем вы использовали Hydra с опцией -e nsr для попыток взлома паролей, которые включали проверку пустых паролей, имени пользователя в качестве пароля и имени пользователя в обратном порядке. Вы наблюдали вывод и определили успешный вход с использованием пустого пароля. Наконец, вы сравнили результаты с использованием опции -e ns, чтобы понять разницу в выполняемых проверках. Этот лабораторный практикум продемонстрировал, как дополнительные проверки паролей в Hydra могут быть использованы для быстрого выявления распространённых слабых учетных данных.