![](https://i.imgur.com/Q3ZPZ14.png) # **Цель практической работы** Целью практической работы является подбор логина и пароля для развёрнутого ssh-сервера с помощью инструмента под названием SSHprank (словари с предполагаемыми логинами и паролями составляются с помощью pwdlogy и crunch). Помимо этого, в работе изучается как утилита masscan работает совместно с утилитой nmap. По окончании данной работы будут получены навыки составления словарей с помощью двух утилит (pwdlogy и crunch), навыки подбора пароля для развёрнутого SSH-сервера с помощью инструмента SSHprank, а также навыки работы с утилитой masscan, которая работает совместно с утилитой nmap. # **1 Развёртывание SSH-сервера** Запустим машину №1, на которой должен располагаться SSH-сервер (сделаем скриншот полного экрана, чтобы доказать, что работа была выполнена в действующий период обучения). Попытаемся скачать метапакет SSH и обнаружим, что всё уже установлено (SSH входит в базовую комплектацию дистрибутива). Далее проверим статус SSH-сервера, увидим, что он функционирует исправно. Переименуем машину №1 так, чтобы было видно, что на ней работает SSH-сервер и перезапустим её. Описанные действия в данном абзаце проиллюстрированы на рис. 1-3. ![](https://i.imgur.com/9elvwXM.png) Рисунок 1 – Скачиваем метапакет SSH (был уже закачен) ![](https://i.imgur.com/bQT4Q4m.png) Рисунок 2 – Проверяем статус SSH-сервера (запущен) ![](https://i.imgur.com/7RsYpPd.png) Рисунок 3 – Меняем имя хоста, чтобы различать виртуальные машины Узнаем ip-адрес машины №1 (на ней установлен SSH-сервер), отобразим полученный вывод консоли на рис. 4. ![](https://i.imgur.com/LuRJRp0.png) Рисунок 4 – Узнаём ip-адрес SSH-сервера Следом произведём подключение к SSH-серверу с машины №2 (см. рис. 5). Для входа воспользуемся следующим паролем: 123. Дальнейшие операции по подбору пароля также будут осуществляться с машины №2. ![](https://i.imgur.com/KbTSivM.png) Рисунок 5 – Подключение к SSH-серверу с другой машины # **2 Установка SSHprank** Сперва узнаем ip-адрес машины №2 (см. рис. 6). Далее, для удобства, подключимся к ней с помощью Putty (см. рис. 7). ![](https://i.imgur.com/1ns0qYL.png) Рисунок 6 - Узнаём ip-адрес машины №2 ![](https://i.imgur.com/fKPz0kA.png) Рисунок 7 – Подключение к машине №2 через Putty Следом установим пакетный менеджер для третьей версии python (см. рис. 8). Далее переместимся в директорию с временными файлами, склонируем репозитория с SSHprank (он находится на github), перейдём в скаченную директорию и просмотрим её содержимое (см. рис. 9). ![](https://i.imgur.com/6Ql6dpg.png) Рисунок 8 – Установка пакетного менеджера python ![](https://i.imgur.com/NEAxdNV.png) Рисунок 9 – Перемещение в директорию с временными файлами, клонирование репозитория с github, перемещение в скаченную директорию и просмотр его содержимого После чего, с помощью пакетного менеджера python установим необходимые пакеты (см. рис. 10), а также выполним скрипт, который покажет справочную информацию по SSHprank (см. рис. 11). ![](https://i.imgur.com/zMS7CnS.png) Рисунок 10 – Установка пакетов с помощью пакетного менеджера python ![](https://i.imgur.com/IulYWjd.png) Рисунок 11 – Вывод справочной информации по SSHprank # **3 Сканирование сети с помощью SSHprank** Программа SSHprank напрямую не поддерживает диапазоны, хотя далее будет показано, как всё-таки можно указывать подсети для сканирования с помощью SSHprank. Поэтому для SSHprank нужно создать список хостов (см. рис. 12). ![](https://i.imgur.com/YbIE6LP.png) Рисунок 12 – Создание файла со списком хостов сети Произведём сканирование сети по 22 порту и узнаем на каких хостах работает SSH-сервер (см. рис. 13). ![](https://i.imgur.com/WrulaIc.png) Рисунок 13 – Сканирование сети на наличие работающего SSH (22 порт) # **4 Составление словарей** ## **4.1 Работа с crunch** Для составления словарей со списком паролей (pass.txt) и списком логинов (user.txt) воспользуемся утилитой под названием crunch. Предположим, мы выяснили, что пароль состоит только из цифр и имеет длину 3. Составим предполагаемый список с паролями (см. рис. 14). ![](https://i.imgur.com/Ru99Kd1.png) Рисунок 14 - Составление предполагаемого списка паролей Теперь необходимо составить предполагаемый список с логинами. Предположим, что мы выяснили, как зовут человека (фамилию и инициалы), длину логина, но не знаем какие разделительные символы он использует (нижнее подчёркивание, дефис или точка). На основании этой информации составим предполагаемый список с логинами (см. рис. 15). ![](https://i.imgur.com/UUgYuNh.png) Рисунок 15 - Составление предполагаемого списка логинов ## **4.2 Работа с pwdlogy** Проделаем подобные операции как в предыдущем пункте, но с утилитой pwdlogy. Для того, чтобы pwdlogy составил словарь, необходимо внести информацию в 3 файла (“birthday.txt” (в нём содержатся даты), “commonPhrases.txt” (в нём содержатся ключевые фразы) и “keywords.txt” (в нём содержаться ключевые слова)). Сперва составим словарь со списком предполагаемых паролей. Для этого добавим в файл “keywords.txt” информацию, представленную на рис. 16, а два оставшихся файла оставим пустыми. Запустим скрипт питона и дадим команду на генерацию словаря (см. рис. 17-18). После того, как словарь будет составлен, переименуем файл gen.txt (имя словаря по умолчанию) на pass.txt и выведем конец этого файла (см. рис. 19). ![](https://i.imgur.com/LB386xV.png) Рисунок 16 – Содержимое файла “keywords.txt” при составлении словаря с паролями ![](https://i.imgur.com/qmWxeeO.png) Рисунок 17 – Запуск скрипта ![](https://i.imgur.com/pBl83CD.png) Рисунок 18 – Конец консольного вывода, после подачи команды на генерацию словаря ![](https://i.imgur.com/PUttgNc.png) Рисунок 19 – Конец словаря с предполагаемыми паролями Теперь составим словарь предполагаемых логинов. Для этого добавим в файл “keywords.txt” информацию, представленную на рис. 20, а два оставшихся файла оставим пустыми. Запустим скрипт питона и дадим команду на генерацию словаря. После того, как словарь будет составлен, переименуем файл gen.txt (имя словаря по умолчанию) на user.txt и выведем начало этого файла (см. рис. 21). ![](https://i.imgur.com/2qyMXDd.png) Рисунок 20 - Содержимое файла “keywords.txt” при составлении словаря с логинами ![](https://i.imgur.com/Tn4Tjse.png) Рисунок 21 – Начало словаря с предполагаемыми логинами # **5 Подбор логина и пароля к SSH** ## **5.1 Подбор с помощью словарей crunch** Запустим SSHprank в отношении одного найденного хоста (192.168.1.8:22) для подбора логина и пароля (см. рис. 22). Для брутфорса будут использоваться созданные словари (user.txt и pass.txt) с помощью утилиты crunch. Для ускорения добавим флаг “-e”, чтобы скрипт закончил свою работу после первой успешной авторизации. ![](https://i.imgur.com/Dz1mTGA.png) Рисунок 22 – Подбор логина и пароля с помощью словарей crunch Таким образом, для подключения к SSH-серверу необходимо ввести следующий логин и пароль (kuzkin_p_a:123). ## **5.2 Подбор с помощью словарей pwdlogy** Удалим файл owned.txt и запустим скрипт уже для словарей pwdlogy (см. рис. 23). ![](https://i.imgur.com/HaHT08F.png) Рисунок 23 - Подбор логина и пароля с помощью словарей pwdlogy Таким образом, для подключения к SSH-серверу, также как и в предыдущем варианте, необходимо ввести следующий логин и пароль (kuzkin_p_a:123). # **6 Сканирование сети с помощью masscan** Для того, чтобы просканировать сеть по портам 22, 80, 2222, 8080, установим утилиту masscan и необходимые пакеты для её исправной работы (см. рис. 24-25). Следом произведём сканирование о обнаружим, что на SSH-сервере (192.168.1.8) открыт 22 порт, а на домашнем роутере (192.168.1.1) открыт 80 порт (см. рис. 26). ![](https://i.imgur.com/ttlyVcc.png) Рисунок 24 – Установка утилиты masscan (уже была установлена) ![](https://i.imgur.com/uaTOACS.png) Рисунок 25 – Установка необходимых пакетов для исправной работы masscan ![](https://i.imgur.com/bEDltie.png) Рисунок 26 – Результат сканирования сети по портам 22, 80, 2222, 8080 # **7 Совместная работы masscan и nmap** Для того, чтобы разобраться как masscan работает совместно с nmap, выведем все поддерживаемые опции (см. рис. 27) и произведём сканирование 10 аргументами (см. рис. 28-37). ![](https://i.imgur.com/6ohoGAx.png) Рисунок 27 – Перечень совместимых опций с nmap, которые поддерживает утилита masscan ![](https://i.imgur.com/1g4UHiK.png) Рисунок 28 – Используем флаг “-iL”, чтобы просканировать все хосты, которые находятся в файле hosts.txt ![](https://i.imgur.com/a1cD8Ic.png) Рисунок 29 – Используем флаг “-g”, чтобы получатель увидел, что мы сканируем его с порта 11111 ![](https://i.imgur.com/WvGCu4k.png) Рисунок 30 – Используем флаг “--ttl”, чтобы установить определённое время жизни пакета ![](https://i.imgur.com/Pte6Vbb.png) Рисунок 31 – Используем флаг “--max-rate”, чтобы отправлять пакеты не быстрее чем указанное число в секунду ![](https://i.imgur.com/UDg6pSo.png) Рисунок 32 - Используем флаг “--connection-timeout”, чтобы указать время (в секундах) истечения TCP подключения при ожидании данных баннера с порта ![](https://i.imgur.com/nt9IXKS.png) Рисунок 33 - Используем флаг “--packet-trace”, чтобы показать все отправленные и полученные пакеты ![](https://i.imgur.com/iKDvQ7p.png) Рисунок 34 - Используем флаг “-e”, чтобы указать какой сетевой интерфейс необходимо использовать ![](https://i.imgur.com/C7YOHqJ.png) Рисунок 35 - Используем флаг “-vvv”, чтобы увеличить уровень вербальности ![](https://i.imgur.com/gFU6dba.png) Рисунок 36 - Используем флаг “--source-ip”, чтобы подменить ip-адрес отправителя ![](https://i.imgur.com/iCzZQIc.png) Рисунок 37 - Используем флаг “-oJ” и пишем название файла, в который будут записаны результаты сканирования в формате json # **Ответы на вопросы** **Что такое SSHPrank?** Это инструмент для тестирования на проникновение в систему с использованием протокола SSH. **Какие основные функции SSHPrank?** SSHPrank может выполнять различные атаки и тестировать уязвимости в SSH-серверах. Это инструмент, который может использоваться разработчиками и администраторами для обнаружения и устранения уязвимостей в SSH-серверах. **Как установить SSHPrank на Linux?** Для установки SSHPrank на Linux необходимо установить пакетный менеджер puthon (sudo apt install python3-pip), склонировать репозиторий с github (git clone https://github.com/noptrix/sshprank), перейти в скаченную дирректорию (cd sshprank) и выполнить команду "pip3 install -r docs/requirements.txt". **Как создать файл конфигурации для SSHPrank?** Для SSHPrank конфигурационным файлом является скрипт sshprank.py. **Как запустить SSHPrank в интерактивном режиме?** Интерактивный режим взаимодействия - это диалоговый режим взаимодействия пользователя с компьютерной программой. Позволяет пользователю вводить команды и данные во время выполнения программы, управляя её работой с учётом выводимых программой результатов обработки данных. Для запуска SSHPrank необходимо указать путь к скрипту и параметры (обязательные и не обязательные). Один из примеров представлен на рис. 11 (в нём выводится справочная информация). **Как использовать ключ -s для атаки на сервер SSH?** Пример запуска команды: "./sshprank -s 'SSH;1;50'". Эта команда найдёт 50 SSH-серверов и взламывает логины и пароли (по умолчанию root:root). **Как использовать ключ -r для атаки на список IP-адресов?** Нужно прописать параметр -r и указать количество адресов IPv4, которые будут сгенерированны для попыток взлома (используется только с опцией -m). Пример команды: "./sshprank -m '-p22 --rate=1000' -r 1000". Данная команда позволяет сгенерировать тысячу случайных IPv4 адресов, затем просканировать 22 порты со скоростью 1k p/s и на найденные SSH-сервера применяется взлом (по умолчанию с логином root и паролем root). **Как использовать ключ -I для чтения списка IP-адресов из файла?** В последней версии SSHPrank вместо этого параметра используется параметр -b. Нужно прописать параметр -b и указать файл, в котором содержится список хостов для взлома. Пример на рис. 13. **Какие параметры можно использовать в файле конфигурации SSHPrank?** Все параметры, которые можно менять/использовать в конфигурационном файле приведены на рис. 38. ![](https://i.imgur.com/nugWXCl.png) Рисунок 38 - Параметры скрипта sshprank.py **Какие риски существуют при использовании SSHPrank для атаки на сервер SSH?** В логах SSH-сервера отобразится попытка входа, ip-адрес и порт, с которых был запущен SSHPrank. # **Заключение** Таким образом, в результате выполнения практической работы был развёрнут SSH-сервер, составлены словари с предполагаемыми логинами и паролями с помощью двух утилит (pwdlogy и crunch), произведён подбор пароля с помощью инструмента под названием SSHprank, а также изучена механика работы утилита masscan, которая работала совместно с утилитой nmap. По окончании данной работы были получены навыки составления словарей с помощью двух утилит (pwdlogy и crunch), навыки подбора пароля для развёрнутого SSH-сервера с помощью инструмента SSHprank, а также навыки работы с утилитой masscan, которая работает совместно с утилитой nmap. Полученные знания и навыки в дальнейшем могут применяться только для благих намерений, например, для устройства на работу в команду по тестированию на проникновение.