|如何创建自己的Tracker( 七 )
本文插图
【|如何创建自己的Tracker】我已经将其设置为与我的Quasar实例一起运行 , 但是由于尚未设置插件 , 因此您可以使其保持原样 。 该工具会通过指定目标IP , 端口和插件来设置多个目标 。
让我们回到核心脚本:
本文插图
在第54行 , 对targets.yaml文件进行了解析 , 并提取其内容 。 然后调用函数connect_targets():
本文插图
对于targets.yaml文件中的每个目标执行connect()函数:
本文插图
connect()函数位于第22行 , 它使用_connect()回调函数启动线程 , 并将ip , port和plugin传递给该函数 。 _connect在第27行被调用 。 首先 , 它从plugin文件夹中导入一个插件 , 然后在第29行 , 使用插件构造函数连接到RAT , 接下来调用插件的connect , register和loop函数 。 创建的所有插件扩展了puppet_rat.py中类的所有属性 。 因此 , 让我们查看下:
本文插图
于第16行 , 我们可以看到该类的构造函数 , 就像之前在核心脚本中看到的那样 , 于第29行被触发 。 第16行的构造函数设置了客户端属性——ip , 端口 , 伪进程ID , 记录所有事件的记录器和用于表示套接字的conn变量 。 最重要的功能是:
- connect用来实现从客户端到服务器的连接
- register用来实现注册功能
- loop用来等待服务端发送命令
现在 , 我会逐行回顾我的插件代码:
本文插图
首先 , 让我们来看下构造函数——它扩展了PuppetRat类 , 从而继承了其所有属性 。 我添加了message成员 , 以便可以随时对其进行编辑 。 用户必须自己设置的是Tag , EncryptionKey和Signature , 它们在客户端之间传输 。 另外 , 我添加了一个名为message的protobuf消息成员 , 在第70行可以看到 。 它创建了未初始化的Quasar消息 。
同时我增加了4个自定义函数 , 这些函数使研究人员可以更改tag , id , key及signature , 并且可以生成和设置protobuf消息 。 函数__del__是一标准的Python函数 , 当对象被销毁时执行——它会关闭为Quasar创建的连接 。
本文插图
重新实现的connect函数——该函数与测试脚本中的非常相近 。 在我们阅读其源码 之前 , 请先从我的Github上下载utils.py文件 , 并将其放置在stage props文件夹中 。 在第112行 , 创建一个tcp套接字 , 然后将该套接字绑定到SSL套接字 。 create_ssl_sock是一个添加到utils脚本中的自定义函数 。 就像在我们的测试脚本 , 它所做的只是创建一个SSL套接字并将其绑定 , 以便我们可以验证Quasar证书 。 然后 , 连接到Quasar服务器并尝试进行握手 。 如果一切顺利 , logger会显示一正确的消息 。
推荐阅读
- 模型|REVIT技巧!如何创建能量模型,实现能量优化
- 技术编程|如何利用数据库进行世界史研究
- 区块链|欧科云链任煜男做客西安广电电台节目,解读区块链如何赋能实体产业
- 苹果笔记本|如何让macbook合上时工作?解决苹果电脑合盖自动休眠问题-macw
- |如何分析“会员数据”,强化门店的竞争力?
- 拍照摄影|如何拍出赞爆朋友圈的自拍照?网红小姐姐公开拍照神器
- 目标检测|数据民工也能移动办公了:目标检测标注App上线,分分钟创建私人数据集
- IOS系统|苹果免签封装如何实现?苹果免签封装会不会掉签?
- 帧数|帧数提升70% NV黑科技DLSS如何开启
- 拍照摄影|即将进入大学的新生想入手一台相机,该如何选?
