Введение
В этом лабораторном практикуме вы узнаете, как использовать дополнительные проверки паролей в 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

Теперь соответствующий раздел вашего файла /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 могут быть использованы для быстрого выявления распространённых слабых учетных данных.


