Files
2025-09-25 03:54:33 +08:00

47 lines
2.0 KiB
Markdown

### 正向 Shell 和反向 Shell 的区别
**正向 Shell (Bind Shell)**
**工作原理**
1. 攻击者在目标主机上执行恶意代码,该代码会开启一个端口并监听,等待连接
2. 攻击者随后从自己的机器上,向目标主机的这个监听端口发起连接
3. 一旦连接建立,攻击者就可以通过这个连接发送命令,并在自己的终端上接收目标主机的输出
```
A[攻击者] --主动发起连接--> B[目标主机: 监听端口]
B --命令输出--> A
```
**优点**
- **简单**:一旦端口在目标主机上打开,攻击者就可以直接连接。
**缺点**
- **防火墙限制**:这是正向 Shell 最大的问题。许多企业和家庭网络都部署了防火墙,会阻止来自外部的入站连接。目标主机的端口通常是关闭的,或者被严格限制
- **IP 地址不确定**:如果目标主机的 IP 是动态的,攻击者很难持续连接
**反向 Shell (Reverse Shell)**
**工作原理**
1. 攻击者首先在自己的机器上,开启一个端口并监听,等待连接
2. 攻击者在目标主机上执行恶意代码,该代码会主动连接攻击者的监听端口
3. 一旦连接建立,攻击者就可以通过这个连接向目标主机发送命令,并接收命令输出
```
A[攻击者: 监听端口] --等待连接--> B[目标主机]
B --主动发起连接--> A
A --命令--> B
B --命令输出--> A
```
**优点**
- **绕过防火墙**:这是反向 Shell 最大的优势。防火墙通常只阻止入站连接,但允许内部主机向外部发起出站连接。这使得反向 Shell 能够轻松穿透大多数防火墙
- **IP 地址不确定**:即使目标主机的 IP 是动态的,只要它能主动连接到攻击者的固定 IP 地址,连接就可以成功建立
**缺点**
- **复杂性**:攻击者需要有一个公网 IP 或能够通过端口转发,才能在自己的机器上成功监听