ssh-mitm

Network Analysis v5.0.0 · 29.06.2024 не обновлялся >2 лет

SSH MITM-прокси для аудита безопасности SSH-инфраструктуры. Перехватывает SSH-сессии, поддерживает аутентификацию по публичному ключу через agent-forwarding, записывает терминальные сессии и передаваемые файлы (SCP/SFTP). Позволяет выполнять инъекции команд в активную сессию, собирать учётные данные и анализировать SSH-трафик без разрыва соединения. Имеет плагин-архитектуру на Python.

v5.0.0
29.06.2024 current
Добавлен 16.07.2026 · Обновлён 16.07.2026 · Network Analysis
Установка
# pip
pip install ssh-mitm

# pipx
pipx install ssh-mitm

# Из исходников (GitHub — основной репо)
git clone https://github.com/ssh-mitm/ssh-mitm
cd ssh-mitm
pip install -e .

# Запуск (перехват подключений к целевому серверу)
ssh-mitm server --remote-host target.host --listen-port 10022

# Прозрачный режим (требует CAP_NET_ADMIN)
sudo ssh-mitm server --transparent --listen-port 10022
переведено ИИ

SSH-MITM - простой аудит SSH

SSH-MITM перехватывает вход по паролю

Интерактивный инструмент для перехвата SSH, предназначенный для авторизованного аудита безопасности.
Перехват сессий, мониторинг сетевого трафика в реальном времени, инъекция команд и управление передачей файлов — всё в реальном времени.

Скачать как AppImage     Скачать в Flathub     Получить из Snap Store

OpenSSF Best Practices Code style: black CodeFactor Documentation Status PRs Welcome GitHub

Юридическое уведомление: SSH-MITM предназначен исключительно для авторизованного аудита безопасности, тестирования на проникновение и исследований. Не используйте его против систем, которыми вы не владеете или для тестирования которых у вас нет явного письменного разрешения. Несанкционированный перехват SSH-трафика может быть незаконным в вашей юрисдикции.


🎓 Новичок в SSH-MITM? Начните с интерактивного обучения

ssh-mitm tutorial

Открывает пошаговое руководство на основе браузера — целевой сервер не требуется. Пять глав следуют авторизованной оценке Logfile Inc., охватывая перехват паролей, аутентификацию по открытому ключу, передачи SFTP, выполнение команд и зеркальное отображение активных сессий.

Интерактивное обучение SSH-MITM


Быстрый старт

Размещённый между клиентом и его SSH-сервером, SSH-MITM перехватывает соединение — независимо завершает обе стороны и пересылает весь трафик, давая аудитору полную видимость и контроль:

Настройка SSH-MITM

1. Установка

SSH-MITM не требует установки. Скачайте AppImage, и вы готовы к работе:

wget https://github.com/ssh-mitm/ssh-mitm/releases/latest/download/ssh-mitm-x86_64.AppImage
chmod +x ssh-mitm-x86_64.AppImage

Для других вариантов установки (pip, Flatpak, Snap) смотрите руководство по установке.

⚡ Получите последнюю версию

Релиз в PyPI может отставать. Установите напрямую из GitHub, чтобы получить интерактивное обучение и все последние улучшения:

bash pip install git+https://github.com/ssh-mitm/ssh-mitm.git

2. Запуск SSH-MITM

Укажите SSH-MITM ваш целевой хост — используйте систему, тестирование которой вам разрешено:

./ssh-mitm-x86_64.AppImage server --remote-host <target-host>

3. Маршрутизация клиентского соединения

Настройте SSH-клиент на подключение через SSH-MITM на порту 10022:

ssh -p 10022 user@mitm-host

SSH-MITM перехватывает сессию и немедленно записывает учётные данные:

INFO     Remote authentication succeeded
    Remote Address: <target-host>:22
    Username: alice
    Password: secret
    Agent: no agent

SSH-MITM перехватывает учётные данные

4. Подключение к активной сессии

Для каждого перехваченного соединения SSH-MITM открывает зеркальную оболочку на локальном порту:

INFO     ℹ created mirrorshell on port 34463. connect with: ssh -p 34463 127.0.0.1

Подключитесь к ней из отдельного терминала:

ssh -p 34463 127.0.0.1

Зеркальная оболочка отражает сессию в реальном времени. Аудитор может наблюдать за активностью пользователя и инжектировать команды независимо, не влияя на исходное соединение.

Возможности SSH-MITM

Функция Описание
Интерактивный мониторинг сессий Подключение к любой перехваченной сессии через зеркальную оболочку — наблюдение и инъекция команд в реальном времени
Управление передачей файлов Перехват передач SCP/SFTP, сохранение копий или замена файлов на лету
Перехват перенаправления портов Перехват TCP-туннелей и динамического перенаправления SOCKS 4/5
Фишинг токенов FIDO2 Перехват аутентификации аппаратных токенов через атаку тривиальной аутентификации (информация OpenSSH)
Перехват аутентификации Захват паролей; приём того же открытого ключа, что и целевой сервер, с автоматическим откатом к аутентификации паролем
Мониторинг сессий MOSH Перехват и дешифровка UDP-сессий MOSH (Mobile Shell); просмотр активного терминала через встроенный эмулятор VT100/ANSI
Удалённый PowerShell (PSRP) Перехват удалённых сессий PowerShell через SSH; логирование команд, вывода, ошибок и переходов состояний; запись стенограмм для каждой сессии
Аудит клиентов Идентификация известных уязвимостей в подключающихся SSH-клиентах только на основе поведения согласования ключей
Поддержка плагинов Расширение и настройка всего поведения перехвата с помощью плагинов

Области применения

  • Тестирование на проникновение — активный аудит SSH-клиентов и серверов в авторизованных engagements; перехват, манипуляция и воспроизведение сессий
  • Исследования безопасности — интерактивный анализ поведения SSH-клиентов, процессов аутентификации и уязвимостей на уровне протокола
  • Обучающие среды — демонстрация методов MITM и перехвата сессий в контролируемых лабораторных условиях
  • Анализ вредоносного ПО — мониторинг и взаимодействие с SSH-сессиями от подозрительных клиентов в изолированных средах

Исследования безопасности

SSH-MITM был изначально разработан для исследования фундаментальной уязвимости в том, как SSH-клиенты обрабатывают аутентификацию аппаратных токенов. Исследование выявило, что токены FIDO2 — часто используемые как второй фактор — могут быть подвергнуты фишингу с помощью техники, называемой тривиальной аутентификацией.

Атака эксплуатирует тот факт, что SSH-клиенты могут быть вынуждены использовать тривиальный метод аутентификации — например, клавиатурно-интерактивный без запросов — что фактически предоставляет доступ без реальной аутентификации. Это полностью обходит защиту аппаратных токенов, поскольку токен никогда не запрашивается. SSH-MITM может смоделировать это для любого клиента, который явно не отвергает этот метод:

ssh-mitm server --enable-trivial-auth

Работа из позиции «Человек посередине» (MitM) позволяет наблюдать поведение SSH-клиента, невидимое с любой из конечных точек. SSH-MITM был использован для обнаружения 7 ранее неизвестных уязвимостей в широко распространённом SSH-программном обеспечении:

CVE-2026-60000 CVE-2022-38337 CVE-2022-38336 CVE-2021-36370 CVE-2021-36369


CVE-2021-36368 CVE-2021-36367

Последняя: CVE-2026-60000 — Аутентификация GSSAPI в OpenSSH нарушала RFC 4462 такими способами, которые позволяли злоумышленнику полностью обходить MaxAuthTries, вызывая отказ в обслуживании до аутентификации. Тот же корневой привёл также к оракулу действительности имени пользователя и аварийному завершению привилегированного процесса, все исправлено в OpenSSH 10.4.

Доклад на DeepSec 2021 — полное объяснение атаки:
Нажмите, чтобы посмотреть на vimeo.com
Нажмите, чтобы посмотреть видео на vimeo.com

Скачать презентацию

Не каждый результат этого исследования является уязвимостью — смотрите Вклад в upstream для исправлений по усилению безопасности, внесённых непосредственно в OpenSSH.

(наверх)

Участие

Приглашаем к участию! Пожалуйста, прочитайте CONTRIBUTING.md для получения подробной информации о настройке среды разработки, стиле кода и способах отправки pull request.

(наверх)

Контакты

(наверх)

Участники

Комментарии
Войдите, чтобы оставить комментарий