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

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

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

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

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

Категории

Все категории
Loading categories
USSH — Воссозданный SSH поверх USTPS | Kitploit
Инструменты/GitHubGitHub/x1colegal/ussh
Инструменты шифрования/дешифрованияСетевая безопасностьКриптографияУтилиты и фреймворкиАутентификацияИнструмент Удаленного Доступа
GitHubx1colegal/ussh

USSH

Воссозданный SSH поверх USTPS

Репозиторий
31 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

USSH

USSH — это протокол оболочки и пара «клиент/сервер», построенные поверх USTP-Secure.

Это не TCP-туннель, и он не оборачивает SSH внутри TCP.

Статус: Beta

Лицензия: MIT

Имена AEAD-шифров

  • chacha20 = CHACHA20_POLY1305
  • aes-256-gcm = AES_256_GCM
  • aes-128-gcm = AES_128_GCM
  • AEAD-шифр по умолчанию: chacha20

Порт по умолчанию

  • 5322

Сервер

root@kitploit:~
python3 ussh_server.py \
  --peer-ip <CLIENT_IP_OR_DOMAIN> \
  --peer-port 0 \
  --bind-ip 0.0.0.0 \
  --bind-port 5322 \
  --cipher chacha20 \
  --congestion-control auto

Если --password опущен, сервер запрашивает пароль для входа в USSH при запуске.

При интерактивном запуске сервер спрашивает, следует ли установить его как службу systemd. Ответьте n, чтобы запустить его обычным образом. Используйте --no-systemd-prompt, чтобы пропустить этот вопрос.

Клиент

root@kitploit:~
python3 ussh_client.py \
  --peer-ip <SERVER_IP_OR_DOMAIN> \
  --peer-port 5322 \
  --bind-ip 0.0.0.0 \
  --bind-port 0 \
  --cipher chacha20 \
  --congestion-control off

Клиент запрашивает пароль в интерактивном режиме, как SSH.

Клиент сохраняет первый увиденный открытый ключ X25519 сервера в ~/.ussh_known_hosts.json. Если позже этот ключ изменится, клиент прерывает работу с ошибкой несовпадения TOFU, а не молча доверяет новому ключу. Если вы намеренно сменили ключ хоста сервера, запустите клиент с --regen-key, чтобы разрешить замену сохранённого ключа TOFU после интерактивного подтверждения.

Интернет-черновики

  • Интернет-черновик USSH: https://datatracker.ietf.org/doc/draft-x1co-ussh/

Примечания

  • Транспорт — USTP-Secure поверх UDP.
  • Под USSH протокол USTPS использует читаемые ASCII управляющие строки, такие как ACK: 10 MAC:<tag>, NACK: 42 MAC:<tag>, HELLO: ..., CLOSE:, а также бинарные DATA-кадры UPACK (UPAK).
  • ACK и NACK остаются открытым текстом для удобства отладки, но они аутентифицируются меткой HMAC для каждой сессии, чтобы предотвратить атаки с подделкой управляющих сообщений ACK/NACK.
  • USSH наследует от транспорта USTPS предел полезной нагрузки в 900 байт на DATA-полезную нагрузку UPACK.
  • USSH не определяет второй уровень фрагментации ниже USTPS.
  • Поведение MTU, PMTU, nonce, обработка дубликатов и обработка устаревших пакетов наследуются от USTPS.
  • Автоматическая миграция сети/пути удалена.
  • Если клиент меняет сеть и его исходный IP:port изменяется, текущая сессия USSH должна закрыться, и пользователь должен чисто переподключиться.
  • Реализация миграции была удалена, потому что она вызывала практические проблемы с надёжностью и безопасностью:

Транспортное рукопожатие

  • USSH наследует то же рукопожатие с retry-токеном USTPS, что и USTP-Secure.
  • Сервер сначала отправляет клиенту вызов с retry-токеном и метаданными сессии.
  • Клиент должен вернуть этот токен до того, как зашифрованная сессия USSH будет принята.
  • Это же рукопожатие также согласовывает конечный AEAD-шифр и то, включён ли USTPS Congestion (on или off).
  • Retry-токен — это только доказательство достижимости перед созданием сессии.
  • Это не ключ сессии, не пакетный nonce и не замена позже выводимому сессионному ключу AEAD.
Скачать инструмент
  • повторяющиеся штормы миграции при быстрой смене путей NAT или мобильных сетей
  • сессии, которые выглядели восстановленными, но переставали доставлять данные терминала
  • длительные периоды тишины, прежде чем клиент замечал, что путь мёртв
  • неоднозначность между реальным роуминг-клиентом и поддельными пакетами, заявляющими о существующей сессии
  • состояние восстановления, которое могло оставить терминал зависшим вместо чистого переподключения
  • Текущее поведение намеренно проще: проверять клиента на текущем IP:port, привязывать сессию к этой конечной точке и переподключаться, если конечная точка меняется.
  • USSH наследует опциональный USTPS Congestion от транспорта.
  • Сторона сервера: --congestion-control auto|on|off
  • Сторона клиента: --congestion-control on|off
  • При серверном auto USSH следует запросу клиента. При серверном on или off сервер принудительно задаёт конечный режим.
  • Сам USTP-Secure остаётся неупорядоченным.
  • USSH не превращает транспорт в упорядоченный TCP-подобный канал.
  • USSH только собирает логический байтовый поток stdout перед записью в терминал.
  • USSH также может сохранять порядок на уровне приложения для фрагментов ввода/вывода оболочки там, где PTY ожидает связного поведения байтового потока.
  • Такая сборка существует потому, что вывод интерактивной оболочки — это непрерывный байтовый поток, и отрисовка байтов терминала в порядке их необработанного поступления может повредить большие выводы, такие как ls, find или журналы компилятора.
  • Это означает, что USTP-Secure по-прежнему избегает блокировки головы очереди (Head-of-Line) на транспортном уровне, а USSH восстанавливает только порядок уровня приложения, необходимый для отрисовки терминала.
  • Полезные нагрузки шифруются пофайлово с помощью AEAD.
  • Статический PSK не используется.
  • Каждый клиент получает отдельный эфемерный сессионный ключ AEAD через X25519.
  • Пароль используется для аутентификации USSH после установления защищённой сессии.
  • Сервер запускает настоящую оболочку на базе PTY на машине, где выполняется ussh_server.py.
  • Клиент отправляет байты stdin и отображает байты stdout.
  • Сервер поддерживает несколько клиентов: по одной оболочке/сессии на клиента.
  • Если --cipher задан на сервере, сервер использует именно этот шифр.
  • Если --cipher опущен или установлен в auto, сервер использует шифр, запрошенный клиентом.
  • Клиенты отклоняют неожиданное согласование шифра.
  • TOFU (Trust On First Use — доверие при первом использовании) включено на клиенте для обнаружения неожиданных изменений ключа сервера после первого подключения.
  • По умолчанию сервер хранит постоянный ключ хоста X25519 в ~/.ussh_host_key, чтобы TOFU оставался стабильным при переподключениях и перезапусках.
  • Обычный перезапуск сервера не меняет ключ хоста.
  • Используйте --regen-key на сервере только тогда, когда вы намеренно хотите сменить этот ключ хоста.
  • Записи TOFU хранятся отдельно для каждого <peer-ip-or-domain>:<peer-port>, поэтому другой сервер на другом адресе/порту рассматривается как другая идентичность хоста.