
# Цель практической работы
- Ознакомиться с процессом атаки, чтобы понимать процесс и на каких стадиях защищаться.
**Задача:**
- Установить 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".
Установка необходимых пакетов


Клонируем репозиторий с github, в котором находится SSH MITM

Переходим в необходимую директорию, выполняем команду “export LANG=en_US.utf-8” и запускаем скрипт

Далее представлен результат работы скрипта install.sh

# 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)

Далее выполним подключение с ОС Windows к SSH-серверу, который работает на 2222 порту

Следующим шагом попробуем обнаружить SSH сессию с помощью утилиты tcpdump. Выполним запуск захвата трафика и снова подключимся с ОС Windows к SSH-серверу и создадим видимость работы. Далее остановим захват трафика, и просмотрим список последних логов, которые связаны с 2222 портом. Сделаем вывод информации в виде открытого текста, которая передаётся при инициализации передачи ключа.

Следом, выполним вывод информации в виде открытого текста, которая передаётся при инициализации передачи ключа.

# 2.2 Обнаружение SSH соединения на стандартном порте
Вернём SSH-серверу его стандартный 22 порт и запустим скрипт JoesAwesomeSSHMITMVictimFinder.py снова.
Выполним подключение с ОС Windows к SSH-серверу и создадим видимость работы.

Увидим, что SSH соединение было обнаружено.(Порт 22)

# 3 Запуск атаки
Установим утилиту arpspoof, которая будет перехватывать пакеты в локальной сети с коммутацией. Данная утилита (Arpspoof) перенаправляет пакеты от целевого хоста локальной сети, предназначенные для другого хоста в локальной сети, путём подмены ARP ответов.

Далее необходимо включить IP форвардинг на Kali Linux, чтобы трафик уходил с Kali Linux на атакуемые машины.(В моём случае IP форвардинг включен по умолчанию)

Следующим шагом выполним настройку прав доступа директории.

Теперь внесём изменения в iptables с помощью скрипта start.sh для перехвата SSH пакетов.

Также необходимо установить системную утилита rsyslog, которая обеспечит поддержку протоколирования сообщений . Именно благодаря этой утилите будет создан файл auth.log.
Выполним установку системной утилиты rsyslog.

Далее запустим ARP спуфинг целей. Флаг “-r” позволяет отравлять (в переводе - poison) оба хоста, т.е. захват трафика происходит в обе стороны. Флаг “-t” определяет конкретный хост для ARP poison (если не задан, то все хосты в локальной сети).

Теперь возвращаемся на компьютер жертвы и пытаемся вновь зайти на сервер по SSH. Протокол SSH имеет встроенную защиту от реализуемого сценария атаки — он сохраняет некий отпечаток сервера и в случае, если отпечаток меняется, выдаёт следующее предупреждение == (В этом страшном предупреждении говориться, что возможно в отношении нас выполняется атака человек-посередине; а возможно, что ключ хоста просто поменялся — неизвестно, в общем. Факт в том, что автоматически подключение не будет произведено. Нужно открыть файл ~/.ssh/known_host и либо вписать новый отпечаток, либо удалить запись для этого сервера и затем добавить новый отпечаток при инициализации подключения)==:

Возможно, что ключ хоста просто поменялся — неизвестно, в общем. Факт в том, что автоматически подключение не будет произведено. Нужно открыть файл ~/.ssh/known_host и либо вписать новый отпечаток, либо удалить запись для этого сервера и затем добавить новый отпечаток при инициализации подключения:
Находим файл known_host и удаляем строки.

После удаления отпечатка подключимся с Windows к SSH-серверу

Запускаем просмотр всех логов из файла auth.log, которые связаны с sshd_mitm.
Далее на скриншоте видны логи и пароль для входа в систему. Перехват будет осуществляться каждый раз при входе в сессию по SSH.

После успешной атаки, завершаем атаку и выполняем возврат исходных правил iptables.

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