Python3 实现可控制肉鸡的反向Shell

本文介绍了如何使用Python3构建一个可控制肉鸡的反向Shell。通过C/S结构和TCP协议,详细讲解了控制端和被控端的实现,包括代码实现和程序测试,帮助读者理解反向Shell的工作原理和Python的socket及subprocess模块的应用。
摘要由CSDN通过智能技术生成

Python3 实现可控制肉鸡的反向Shell

一、初识

1.1 用 Python 实现一个可以管理多个肉鸡的反向 Shell,为什么叫反向 Shell 呢?反向就是肉鸡作为 Client 主动连接到我们的 Server 端,以实现对多个远程主机的管理!

学习技能:

  1. 了解TCP协议
  2. 了解C/S结构程序设计
  3. Python socket模块的使用
  4. Python subprocess模块的使用

1.2效果图

 

二、理论基础

以下内容整理自百度百科,参考链接:

2.1 C/S结构程序设计

C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。

本次实验就是基于C/S结构的一个应用。很多有名的远程控制工具都是基于C/S结构开发的,比如:灰鸽子、冰河、teamViewer等等。但是我们应该将肉鸡端作为Server还是Client呢?通常情况下是将Client作为控制端,Server作为被控端。这里我们将采用反向连接的方式,将Server作为控制端,Client作为被控端。当然,这两种方式都可以实现我们本次实验的功能。这里我采用反向连接的方式主要是考虑到肉鸡在内网中,我们是无法直接连接到被控端的。如果用反向连接的方式,尽管被控端在内网中,只要我们不在内网中,或者我们做了内网端口映射、动态域名等处理之后,被控端都是可以连接到主控端的。虽然我们在内网中也要进行相应的设置,不过主动权在我们这里总比被控端需要设置这些更方便。

2.2 TCP(传输控制协议)

TCP提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行彼此通信,而且广播和多播不能用于TCP。由于这里需要传输的数据量比较小,对传输效率影响不大,而且Tcp相对来说比较稳定!所以本次实验课程将采用Tcp协议来实现多客户端的反向Shell。

2.3 可控制肉鸡反向Shell实现方案

本次实验将基于Tcp实现一个C/S结构的应用,Client作为被控端主动连接控制端,Server作为控制端则等待肉鸡连接。具体实现方案如下:

Server(控制端)

Server作为控制端,我们首先要用Python的Socket模块监听本地端口,并等待被控端连接,由于我们要实现多个肉鸡的反向Shell,所以我们需要 维护连接的主机列表,并选择当前要发送命令的肉机,接下来我们就可以通过socket给指定的主机发送Shell命令了。

Client(被控端)

Client作为被控端,首先我们要通过Python的Socket模块连接到控制端,之后只要一直等待控制端发送Shell命令就可以了,当接收到控制端发送的命令之后,用Python的subprocess模块执行Shell命令,并将执行命令的结果用socket发送给控制端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值