---
# System prepended metadata

title: Цель практической работы

---

![](https://i.imgur.com/qzWPivl.png)
# Цель практической работы
- Ознакомиться с процессом атаки, чтобы понимать процесс и на каких стадиях защищаться.

**Задача:**

- Установить SSH MITM;
- Научиться использовать tcpdump;
- Научиться пользоваться arpspoof;
- Разобраться как работает iptables;
- Что такое файл known_host;
- Выполнить атака человек-посередине на SSH;
- Научиться анализировать auth.log.

# 1 Установка SSH MITM
В качестве машины атакующего я буду использовать OC Kali Linux. Там уже имеется список програм: tshark, ettercap, arpspoof, nmap и iptables. Далее устанавливаем оставшиеся зависимости и SSH MITM. Установим необходимые пакеты и склонируем репозиторий с SSH MITM. Затем выполним переход в необходимую директорию, далее выполним команду “export LANG=en_US.utf-8”. Эта команда нужна поскольку будет скачен исходный код SSH и будет проверена его подлинность с помощью GPG. Но дело в том, что GPG выводит сообщения на языке системы, а проверка в установочном скрипте install.sh выполняется только для английского языка. В общем, если не выполнить эту команду, то установка не завершиться из-за того, что установочный скрипт будет всё время спотыкаться о проверку подписи. Выполним запуск скрипта install.sh и ответим "no".

Установка необходимых пакетов 
![](https://i.imgur.com/LtHVV9n.png)
![](https://i.imgur.com/spU48JB.png)
Клонируем репозиторий с github, в котором находится SSH MITM
![](https://i.imgur.com/zygQNCK.png)
Переходим в необходимую директорию, выполняем команду “export LANG=en_US.utf-8” и запускаем скрипт 
![](https://i.imgur.com/IFiU7Iz.png)
Далее представлен результат работы скрипта install.sh
![](https://i.imgur.com/BECxFFS.png)

# 2 Поиск SSH подключений в локальной сети
В комплекте с программой имеется скрипт JoesAwesomeSSHMITMVictimFinder.py, он делает поиск целей в локальной сети очень простым. Он выполняет атаку ARP спуфинг блоков IP на короткое время и сниффит трафик в поисках SSH подключений. IP адреса атакуются не одновременно, а небольшими блоками — все блоки обрабатываются последовательно, когда скрипт доходит до последнего, то всё начинается сначала. Он сообщит о всех исходящих SSH подключениях от устройств в локальной сети.
Данный скрипт будет искать SSH подключения, выполненные только к стандартному, то есть 22-му порту. SSH подключения на нестандартный порт он не увидит.
Тем не менее есть способ обнаружить SSH соединение во время его подключения, поскольку в момент подключения происходит обмен довольно характерными данными (которые могут выдать SSH) в незашифрованном виде.
# 2.1 Обнаружение SSH соединения на нестандартном порте
Трафик SSH является зашифрованным. Тем не менее подключения к SSH можно обнаружить, поскольку зачастую SSH использует стандартны порт 22. И даже в случае если хитрый системный администратор настроил работу на нестандартном порту, мы всё равно можем найти эти подключения!
Необходимо выполнить запуск машины на которой работает SSH-сервер (порт 2222). Затем на машине с OC Kali Linux выполнить запуск скрипта и выбрать агрессивный режим. Далее выполнить подключение на ОС Windows к SSH-серверу(2222 порт) и прописать несколько каких нибудь команд, таким образом, создав видимость работы.

Выполним запуск скрипта с активацией агрессивного режима (a)
![](https://i.imgur.com/Cu5wZzH.png)
Далее выполним подключение с ОС Windows к SSH-серверу, который работает на 2222 порту
![](https://i.imgur.com/43etiqA.png)
Следующим шагом попробуем обнаружить SSH сессию с помощью утилиты tcpdump. Выполним запуск захвата трафика и снова подключимся с ОС Windows к SSH-серверу и создадим видимость работы. Далее остановим захват трафика, и просмотрим список последних логов, которые связаны с 2222 портом. Сделаем вывод информации в виде открытого текста, которая передаётся при инициализации передачи ключа.
![](https://i.imgur.com/bFPP4aR.png)

Следом, выполним вывод информации в виде открытого текста, которая передаётся при инициализации передачи ключа.
![](https://i.imgur.com/tgfRbfz.png)

# 2.2 Обнаружение SSH соединения на стандартном порте
Вернём SSH-серверу его стандартный 22 порт и запустим скрипт JoesAwesomeSSHMITMVictimFinder.py снова. 
Выполним подключение с ОС Windows к SSH-серверу и создадим видимость работы.
![](https://i.imgur.com/PPvfFrl.png)
Увидим, что SSH соединение было обнаружено.(Порт 22)
![](https://i.imgur.com/T0L1RIJ.png)

# 3 Запуск атаки
Установим утилиту arpspoof, которая будет перехватывать пакеты в локальной сети с коммутацией. Данная утилита (Arpspoof) перенаправляет пакеты от целевого хоста локальной сети, предназначенные для другого хоста в локальной сети, путём подмены ARP ответов.
![](https://i.imgur.com/cFtZp3k.png)
Далее необходимо включить IP форвардинг на Kali Linux, чтобы трафик уходил с Kali Linux на атакуемые машины.(В моём случае IP форвардинг включен по умолчанию)
![](https://i.imgur.com/NDrtMXs.png)
Следующим шагом выполним настройку прав доступа директории.
![](https://i.imgur.com/eZ48GUL.png)
Теперь внесём изменения в iptables с помощью скрипта start.sh для перехвата SSH пакетов.
![](https://i.imgur.com/8sXkQR6.png)
Также необходимо установить системную утилита rsyslog, которая обеспечит поддержку протоколирования сообщений . Именно благодаря этой утилите будет создан файл auth.log.
Выполним установку системной утилиты rsyslog.
![](https://i.imgur.com/564aOVg.png)
Далее запустим ARP спуфинг целей. Флаг “-r” позволяет отравлять (в переводе - poison) оба хоста, т.е. захват трафика происходит в обе стороны. Флаг “-t” определяет конкретный хост для ARP poison (если не задан, то все хосты в локальной сети).
![](https://i.imgur.com/XtIb0la.png)
Теперь возвращаемся на компьютер жертвы и пытаемся вновь зайти на сервер по SSH. Протокол SSH имеет встроенную защиту от реализуемого сценария атаки — он сохраняет некий отпечаток сервера и в случае, если отпечаток меняется, выдаёт следующее предупреждение == (В этом страшном предупреждении говориться, что возможно в отношении нас выполняется атака человек-посередине; а возможно, что ключ хоста просто поменялся — неизвестно, в общем. Факт в том, что автоматически подключение не будет произведено. Нужно открыть файл ~/.ssh/known_host и либо вписать новый отпечаток, либо удалить запись для этого сервера и затем добавить новый отпечаток при инициализации подключения)==:

![](https://i.imgur.com/XEK8Uol.png)
Возможно, что ключ хоста просто поменялся — неизвестно, в общем. Факт в том, что автоматически подключение не будет произведено. Нужно открыть файл ~/.ssh/known_host и либо вписать новый отпечаток, либо удалить запись для этого сервера и затем добавить новый отпечаток при инициализации подключения:
Находим файл known_host и удаляем строки.
![](https://i.imgur.com/yD674An.png)
После удаления отпечатка подключимся с Windows к SSH-серверу
![](https://i.imgur.com/1ctJs5a.png)
Запускаем просмотр всех логов из файла auth.log, которые связаны с sshd_mitm.
Далее на скриншоте видны логи и пароль для входа в систему. Перехват будет осуществляться каждый раз при входе в сессию по SSH.
![](https://i.imgur.com/BiSRKgn.png)
После успешной атаки, завершаем атаку и выполняем возврат исходных правил iptables.
![](https://i.imgur.com/kwZ2eOv.png)

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