В этом лабораторном практикуме вы узнаете, как использовать дополнительные проверки паролей в 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 на использование опции -i, которая отключает аутентификацию.
Если строка не содержит 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 и выполните следующую команду:
-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 для разрешения входа без пароля, в выводе должна появиться строка, подобная этой:
Эта строка подтверждает, что Hydra успешно вошёл в службу Telnet на localhost с именем пользователя testuser и пустым паролем (указанным пустым пространством после password:).
Вы также можете увидеть другие успешные входы, если какой-либо из паролей в файле ~/project/unix_passwords.txt совпадает с фактическим паролем пользователя testuser (хотя в этой лабораторной настройке ожидается успешная проверка с пустым паролем).
Опция -vV предоставляет подробный вывод для каждой попытки, что полезно для понимания того, как Hydra продвигается и какие пароли он пытается. Строка успешного входа чётко показывает учетные данные, которые сработали.
Этот шаг демонстрирует, как опция -e nsr помогает быстро определить распространённые сценарии слабых паролей, такие как пустые пароли, которые часто упускаются из виду в стандартных списках паролей.
Сравнение с проверками -e ns
На этом шаге мы снова запустим Hydra, но на этот раз будем использовать опцию -e ns вместо -e nsr. Это укажет Hydra на попытки с пустым паролем и именем пользователя в качестве пароля, но не будет пытаться использовать имя пользователя в обратном порядке. Сравнивая вывод этой команды с предыдущей, вы сможете увидеть разницу в выполняемых проверках.
Откройте терминал в каталоге ~/project и выполните следующую команду:
Эта команда почти идентична предыдущей, единственное отличие — опция -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 могут быть использованы для быстрого выявления распространённых слабых учетных данных.