Атака на сервисы Telnet с помощью Hydra

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

Введение

В этой лабораторной работе вы узнаете, как проводить атаки методом перебора (brute-force attacks) против сервисов Telnet с использованием Hydra, универсального инструмента для взлома паролей. Вы настроите уязвимую среду Telnet и используете Hydra, чтобы продемонстрировать, как слабые учетные данные могут быть использованы.

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

Установка локального Telnet-сервера

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

  1. Сначала обновите список пакетов, чтобы убедиться, что вы получаете последние версии. Это хорошая практика перед установкой любого нового программного обеспечения:
sudo apt update
  1. Установите пакет Telnet-сервера (xinetd). Xinetd – это супер-сервер, который управляет Telnet-соединениями. Флаг -y автоматически подтверждает любые запросы во время установки:
sudo apt install -y xinetd telnetd
  1. Создайте файл конфигурации Telnet по адресу /etc/xinetd.d/telnet. Мы будем использовать nano, простой текстовый редактор, который поставляется с большинством систем Linux:
sudo nano /etc/xinetd.d/telnet
  1. Добавьте следующую конфигурацию (нажмите Ctrl+O, чтобы сохранить, затем Ctrl+X, чтобы выйти). Эта конфигурация включает службу Telnet и устанавливает основные параметры. Строка disable = no особенно важна, так как она активирует службу:
service telnet
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}
  1. Перезапустите службу xinetd, чтобы применить изменения. Службы часто необходимо перезапускать после изменения конфигурации:
sudo service xinetd restart
  1. Убедитесь, что служба Telnet запущена. Порт 23 – это порт по умолчанию для Telnet. Команда netstat показывает активные сетевые соединения и прослушиваемые порты:
sudo netstat -tulnp
setup telnet server

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

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      22/sshd: /usr/sbin/
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.11:38203        0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      22/sshd: /usr/sbin/
tcp6       0      0 :::23                   :::*                    LISTEN      1620/xinetd
udp        0      0 0.0.0.0:3001            0.0.0.0:*                           -
udp        0      0 127.0.0.11:54421        0.0.0.0:*                           -

Настройка Telnet с тестовыми учетными записями

В этом шаге вы создадите тестовые учетные записи, которые будут использоваться для демонстрации атаки методом перебора (brute-force attack) с помощью Hydra. Эти учетные записи представляют собой распространенные слабые учетные данные, встречающиеся в реальных системах, что позволяет нам безопасно продемонстрировать, как злоумышленники используют плохие практики использования паролей.

  1. Сначала создайте три тестовые учетные записи пользователей с помощью команды useradd. Флаг -m гарантирует, что для каждого пользователя будут созданы домашние каталоги:
sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
  1. Теперь установите простые пароли для этих учетных записей. Мы используем распространенные слабые пароли ('password', '123456', 'qwerty'), чтобы имитировать реальные уязвимости. Команда chpasswd безопасно изменяет пароли без интерактивных запросов:
echo "user1:password" | sudo chpasswd
echo "user2:123456" | sudo chpasswd
echo "user3:qwerty" | sudo chpasswd
  1. Убедитесь, что учетные записи были успешно созданы, проверив файл паролей системы. Команда grep фильтрует наших тестовых пользователей в /etc/passwd, который хранит всю информацию об учетных записях пользователей:
grep -E 'user1|user2|user3' /etc/passwd

Вы должны увидеть вывод, подобный:

user1:x:5001:5001::/home/user1:/bin/sh
user2:x:5002:5003::/home/user2:/bin/sh
user3:x:5003:5004::/home/user3:/bin/sh
  1. Создайте файлы учетных данных для атаки Hydra в вашем каталоге проекта. Эти текстовые файлы будут служить входными данными для Hydra для комбинаций имен пользователей и паролей во время попытки перебора:
cd ~/project
echo -e "user1\nuser2\nuser3" > usernames.txt
echo -e "password\n123456\nqwerty" > passwords.txt
  1. Убедитесь, что файлы учетных данных содержат правильную информацию. Команда cat отображает содержимое файла – мы проверяем оба файла, чтобы убедиться в правильном форматировании для требований Hydra:
cat usernames.txt && cat passwords.txt

Вы должны увидеть:

user1
user2
user3
password
123456
qwerty

Загрузка файлов имен пользователей и паролей

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

  1. Сначала убедитесь, что файлы учетных данных существуют в вашем каталоге проекта. Это важно, потому что Hydra нуждается в этих файлах для выполнения атаки:
cd ~/project
ls -l usernames.txt passwords.txt

Вы должны увидеть вывод, подобный:

-rw-r--r-- 1 labex labex 12 May  1 10:00 passwords.txt
-rw-r--r-- 1 labex labex 12 May  1 10:00 usernames.txt
  1. Просмотрите содержимое обоих файлов, чтобы убедиться, что они правильно отформатированы. Каждое имя пользователя и пароль должны быть на отдельной строке, поскольку Hydra считывает их построчно:
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt

Ожидаемый вывод:

Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
  1. Создайте объединенный файл учетных данных для целей тестирования. Этот объединенный файл показывает пары имя пользователя-пароль рядом, что помогает проверить, правильно ли они сопоставлены:
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt

Это покажет:

user1   password
user2   123456
user3   qwerty
  1. Установите Hydra, если она еще не установлена (хотя она должна быть предустановлена в LabEx VM). Hydra – это инструмент, который мы будем использовать для выполнения атаки методом перебора против службы Telnet:
sudo apt install -y hydra hydra-gtk
  1. Убедитесь, что Hydra установлена, и проверьте ее версию. Понимание версии помогает при устранении неполадок или поиске конкретных функций:
hydra -h | head -n 5

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

Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

Запуск атаки Hydra на службу Telnet

В этом шаге вы будете использовать Hydra для выполнения атаки методом перебора на ваш локальный Telnet-сервер,

Проверка результатов атаки Telnet

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

  1. Сначала перейдите в каталог вашего проекта, где Hydra сохранила свои результаты, и просмотрите полный выходной файл:
cd ~/project
cat hydra_results.txt

Пример вывода показывает формат успешных входов в систему. Каждая строка содержит протокол (telnet), целевой IP-адрес и взломанные учетные данные:

[23][telnet] host: 127.0.0.1   login: user1   password: password
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
  1. Чтобы отфильтровать только успешные попытки входа из потенциально больших выходных файлов, используйте grep для поиска строк, содержащих "login:":
grep "login:" hydra_results.txt
  1. Проверьте скомпрометированные учетные записи, попытавшись вручную войти в Telnet с обнаруженными учетными данными. Это подтверждает результаты Hydra и демонстрирует, как злоумышленник будет использовать украденные учетные данные:
telnet 127.0.0.1

В командной строке входа введите:

user1
password

Успешный вход в систему покажет приветственное сообщение сервера и командную строку:

Welcome to LabEx Telnet Server
user1@localhost:~$

Введите exit, чтобы выйти из сеанса Telnet после завершения тестирования.

  1. Создайте профессиональный сводный отчет о скомпрометированных учетных записях для документации. Это создает новый файл с отформатированными результатами и подсчетом:
echo "Compromised Accounts:" > attack_summary.txt
grep "login:" hydra_results.txt >> attack_summary.txt
echo -e "\nTotal compromised: $(grep -c "login:" hydra_results.txt)" >> attack_summary.txt
cat attack_summary.txt

Резюме

В этой лабораторной работе вы узнали, как настроить уязвимую среду Telnet-сервера с использованием xinetd и слабых учетных данных для целей тестирования безопасности. Процесс включал в себя настройку службы Telnet на порту 23 и создание тестовых учетных записей с намеренно слабыми паролями для демонстрации уязвимостей аутентификации.

Упражнение подчеркнуло риски безопасности, связанные с использованием незашифрованных протоколов, таких как Telnet, и критическую важность реализации строгих политик паролей. Благодаря практической демонстрации с помощью Hydra вы увидели, как легко атаки методом перебора (brute-force attacks) могут скомпрометировать системы со слабыми механизмами аутентификации.