![](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.