---
# System prepended metadata

title: '**Практическая работа №5**'

---

![](https://i.imgur.com/gN7LgSK.png)
# **Цель практической работы**
Целью практической работы является проведение атаки MITM на SSH-сервер. Для достижения поставленной цели необходимо решить следующие задачи:
- установить SSH MITM;
- научиться использовать tcpdump;
- научиться работать со скриптами в папке ssh-mitm;
- научиться пользоваться arpspoof;
- разобраться как работает iptables;
- выяснить, что хранится в файле known_host;
- научиться анализировать содержимое файла auth.log.

По окончании практической работы будут приобретены навыки проведения атаки SSH MITM, а также получено осознание процесса атаки и на каких стадиях необходимо защищаться.
# **1 Установка SSH MITM**
В качестве машины атакующего будем использовать Kali Linux. Там уже имеются программы tshark, ettercap, arpspoof, nmap и iptables. Поэтому устанавливаем оставшиеся зависимости и SSH MITM следующим образом.		Установим необходимые пакеты (python3-netaddr и python3-netifaces), склонируем репозиторий с SSH MITM, перейдём в необходимую директорию, на всякий случай выполним команду “export LANG=en_US.utf-8”. 
Последняя команда нужна поскольку будет скачен исходный код SSH и будет проверена его подлинность с помощью GPG. Но дело в том, что GPG выводит сообщения на языке системы, а проверка в установочном скрипте install.sh выполняется только для английского языка. В общем, если не выполнить эту команду, то установка не завершиться из-за того, что установочный скрипт будет всё время спотыкаться о проверку подписи.
Запустим скрипт install.sh, по окончании его работы, ответим отрицательно на вопрос: “Kali Linux обнаружен без установленного AppArmor. Для дополнительной безопасности настоятельно рекомендуется (хотя и не обязательно) запускать sshdmitm в ограниченной среде. Хотите ли вы автоматически включить AppArmor?”.
Графическое сопровождение действий, описанных выше, представлено на рис. 1-4.
![](https://i.imgur.com/cM75yn2.png)
Рисунок 1 – Установка необходимых пакетов (python3-netaddr и python3 netifaces)

![](https://i.imgur.com/jCqBkFM.png)
Рисунок 2 – Клонируем репозиторий с github, в котором находится SSH MITM

![](https://i.imgur.com/GCnGAc0.png)
Рисунок 3 – Переходим в необходимую директорию, выполняем команду “export LANG=en_US.utf-8” и запускаем скрипт

![](https://i.imgur.com/OpWH0H0.png)
Рисунок 4 – Результат работы скрипта install.sh
# **2 Поиск SSH подключений в локальной сети**
В комплекте с программой имеется скрипт JoesAwesomeSSHMITMVictimFinder.py, он делает поиск целей в локальной сети очень простым. Он выполняет атаку ARP спуфинг блоков IP на короткое время и сниффит трафик в поисках SSH подключений. IP адреса атакуются не одновременно, а небольшими блоками — все блоки обрабатываются последовательно, когда скрипт доходит до последнего, то всё начинается сначала. Он сообщит о всех исходящих SSH подключениях от устройств в локальной сети.
Данный скрипт будет искать SSH подключения, выполненные только к стандартному, то есть 22-му порту. SSH подключения на нестандартный порт он не увидит.
Тем не менее есть способ обнаружить SSH соединение во время его подключения, поскольку в момент подключения происходит обмен довольно характерными данными в незашифрованном виде.
## **2.1 Обнаружение SSH соединения на нестандартном порте**
Трафик SSH является зашифрованным. Тем не менее подключения к SSH можно обнаружить, поскольку зачастую SSH использует стандартны порт 22. И даже в случае, если хитрый системный администратор настроил работу на нестандартном порту, мы всё равно можем найти эти подключения.
Продемонстрируем эту возможность. Для этого запустим машину, на которой работает SSH-сервер на порту 2222 (её ip-адрес: 192.168.1.14). Далее на Kali Linux (ip-адрес: 192.168.1.9) запустим скрипт JoesAwesomeSSHMITMVictimFinder.py и включим агрессивный режим (см. рис. 5). Выполним подключение с ОС Windows 11 (ip-адрес: 192.168.1.3) к SSH-серверу, который работает на 2222 порту, и создадим видимость работы (см. рис. 6). Убедимся, что запущенный ранее скрипт не смог обнаружить SSH сессию.
![](https://i.imgur.com/kyYz04A.png)
Рисунок 5 – Запуск скрипта и активация агрессивного режима 

![](https://i.imgur.com/jANjSTE.png)
Рисунок 6 – Подключение с ОС Windows 11 к SSH-серверу, который работает на 2222 порту

Теперь попробуем обнаружить SSH сессию с помощью утилиты tcpdump, запустим захват трафика и снова подключимся с ОС Windows 11 к SSH-серверу и создадим видимость работы. Остановим захват трафика, посмотрим 10 последних логов, связанных с 2222 портом, и выведем информацию в виде открытого текста, которая передаётся при инициализации передачи ключа. Описанные действия представлена на рис. 7-8.
![](https://i.imgur.com/EHd6fgd.png)
Рисунок 7 – Захват трафика, остановка захвата, просмотр 10 последних логов, связанных с портом 2222

![](https://i.imgur.com/iUGFzwk.png)
Рисунок 8 - Вывод информации в виде открытого текста, которая передаётся при инициализации передачи ключа
## **2.2 Обнаружение SSH соединения на стандартном порте**
Вернём SSH-серверу его стандартный 22 порт и запустим скрипт JoesAwesomeSSHMITMVictimFinder.py снова. Подключимся с ОС Windows 11 к SSH-серверу и создадим видимость работы (см. рис. 9). Обнаружим, что SSH соединение было обнаружено (см. рис. 10).
![](https://i.imgur.com/AgHihpy.png)
Рисунок 9 – Подключение к SSH-серверу, который работает на 22 порту

![](https://i.imgur.com/kIyoDex.png)
Рисунок 10 – Обнаружение SSH соединения с помощью скрипта
# **3 Проведение и завершение атаки**
Произведём установку утилиты arpspoof, которая будет перехватывать пакеты в локальной сети с коммутацией (см. рис. 11). Arpspoof перенаправляет пакеты от целевого хоста (или всех хостов) локальной сети, предназначенные для другого хоста в локальной сети, путём подмены ARP ответов. Это очень эффективный способ сниффинга трафика на коммутаторе.
Кроме того, необходимо включить IP форвардинг на Kali Linux, чтобы трафик уходил с Kali Linux на атакуемые машины (см. рис. 12).
![](https://i.imgur.com/fyAJrf2.png)
Рисунок 11 – Установка утилиты arpspoof

![](https://i.imgur.com/N3Tqkt0.png)
Рисунок 12 – Включение IP форвардинга

Следом установим максимальные права доступа на директорию ssh-mitm (см. рис. 13). Далее внесём изменения в iptables с помощью скрипта start.sh для перехвата SSH пакетов (см. рис. 13). 
![](https://i.imgur.com/NxSUGLV.png)
Рисунок 13 – Настройка прав доступа директории

![](https://i.imgur.com/Pt0pqee.png)
Рисунок 14 – Добавление правил в iptables с помощью скрипта

Также необходимо установить системную утилита rsyslog, которая обеспечит поддержку протоколирования сообщений (см. рис. 15). Именно благодаря этой утилите будет создан файл auth.log, информация о котором будет представлена ниже.
![](https://i.imgur.com/GuuOaD6.png)
Рисунок 15 – Установка rsyslog

Далее запустим ARP спуфинг целей (см. рис. 16). Флаг “-r” позволяет отравлять (в переводе - poison) оба хоста, т.е. захват трафика происходит в обе стороны. Флаг “-t” определяет конкретный хост для ARP poison (если не задан, то все хосты в локальной сети).
![](https://i.imgur.com/EbDMUUq.png)
Рисунок 16 – Запуск ARP спуфинга целей

Теперь возвращаемся на компьютер жертвы (Windows 11) и видим, что у нас оборвалась сессия. Подключимся снова и увидим предупреждение (см. рис. 17). Это предупреждение появляется, т.к. протокол SSH имеет встроенную защиту от реализуемого сценария атаки — он сохраняет некий отпечаток сервера и в случае, если отпечаток меняется, выдаёт предупреждение. В этом предупреждении говориться, что возможно в отношении нас выполняется атака человек-посередине, а возможно, что ключ хоста просто поменялся — неизвестно, в общем. Факт в том, что автоматически подключение не будет произведено. Нужно открыть файл ~/.ssh/known_host и либо вписать новый отпечаток, либо удалить запись для этого сервера и затем добавить новый отпечаток при инициализации подключения. Поэтому откроем файл known_host (см. рис. 18) и удалим отпечаток.
![](https://i.imgur.com/DNp0Me7.png)
Рисунок 17 – Скриншот консоли с предупреждением 

![](https://i.imgur.com/rxFjgol.png)
Рисунок 18 – Содержимое файла known_host
	
После удаления отпечатка подключимся с Windows 11 к SSH-серверу (см. рис. 19).
![](https://i.imgur.com/ZokV8tq.png)
Рисунок 19 – Подключение к SSH-серверу после удаления слепка

Далее на дополнительном терминале запускаем просмотр всех логов из файла auth.log, связанные с sshd_mitm (см. рис. 20). Обнаруживаем логи и пароль (root:1234) для входа в систему, завершаем arpspoofing комбинацией клавиш Ctrl+c и возвращаем правила iptables в исходный вид (см. рис. 21).
Необходимо также отметить, что если каждый раз выходить из сессии и заходить по SSH, то каждый раз будет осуществляться перехват, мы будем видеть ip-адрес, логин и пароль.
![](https://i.imgur.com/7VEqggX.png)
Рисунок 20 – Перехват логина и пароля

![](https://i.imgur.com/ApzXJHX.png)
Рисунок 21 – Возврат исходных правил iptables

# **Заключение**
Таким образом, в результате выполнения практической работы была проведена атака MITM на SSH-сервер, результатом которой являются перехваченный логи и пароль.
Приобретены практические навыки работы с tcpdump, arpspoof, iptables и другими скриптами в папке ssh-mitm. Кроме того, было изучено, что таиться в файлах known_host и auth.log.
Полученные знания и навыки в дальнейшем могут применяться только для благих намерений, например, для устройства на работу в команду по тестированию на проникновение.