|如何创建自己的Tracker


|如何创建自己的Tracker
本文插图

0x00 前言
某一天 , 我正在浏览abuse.ch 。 这个网站会收集用户提交的恶意/可疑URL , 我偶然发现了一些非常有趣的东西 。 我看到某推特用户Gandylyan1每日上传大量名为Mozi的恶意软件样本(可参阅此文) 。 此僵尸网络是一IoT P2P僵尸网络 , 似乎正在疯狂地传播着 。 当我撰写本文时 , Gandy依然在上传样本 , 目前有24,709个IP上传到abuse.ch 。
该恶意软件非常有趣 , 并且不是很复杂 , 同时不是很难理解 。 它会使用已知exp及暴力破解方式在IoT设备中传播 , 若它已连接到某IoT设备 , 则会在该设备上启动http服务 , 之后将自身上传到随机端口 , 并将其托管在该IoT设备的IP地址上 。 接下来该设备开始扫描并攻击网络 , 当它成功接管另一台设备时 , 新感染的设备将从先前感染的设备接收Mozi 。 于是我决定为此僵尸网络构建一个Tracker 。
可惜我的Linux相关知识仅限于我知道ls -la命令功能 。 但是为僵尸网络构建一个Tracker的想法使我夜不能寐 。 经过短暂的搜索 , 我发现了Intezer创建的工具 。 此工具是一个小型的Python项目 , 可以让研究人员通过模拟OS环境来伪造出受恶意软件感染的客户端 。 研究人员所要关注的就是恶意软件通信协议 。 不需要蜜罐 , 不需要虚拟机 , 什么也不需要 。 之后我在GitHub上搜索了所有开源的恶意软件 , 发现了Quasar , 一款开源RAT 。 研究该RAT是了解恶意软件 , 逆向开源恶意软件以及了解其网络相关工作原理的好方法 。 我们的小实验的绝佳候选人!

  • 必备知识:
  1. Wireshark相关的基础知识
  2. 编程相关知识
  3. Python
  4. C#
  • 所需工具:
  1. VMWare
  2. Visual Studio Community
  3. Python 3.8
  4. Sublime Text Editor 3
  5. Dnspy
  6. De4dot
  • 目标:
  1. 我们想知道Quasar客户端是如何连接到服务器的
  2. 我们想知道Quasar是如何构造发送给服务器的消息的
  3. 我们想知道是否存在用于处理消息的加密/解密过程
  4. 我们想知道服务器如何处理客户端消息的(因为我们有Quasar的源码 , 所以这是可能的)
0x01 如何阅读Quasar源码
我们将下载的Quasar源代码加载到Visual Studio 2019 Community(下载地址)中:
|如何创建自己的Tracker
本文插图

我们对客户端代码 , 以及如何与其他对象协作都很感兴趣——Common包含各个公用程序 , Server包含Server端代码 。 据我所知 , 所有C#程序都以Program.cs开始 , 所以我们将从此开始 , 让我们打开Quasar.Client并找到Program.CS文件:
如果我们右击QuasarClient , 然后单击”转到实现” , 我们将在此处看到一些有趣的东西:
|如何创建自己的Tracker
本文插图

首先解释从Client类继承的QuasarClient类 。 其工作是管理客户端中发生的所有事件 。 它具有专门的函数来处理bot的注册(OnClientState) , 并读取事件(OnClientRead)以及处理失败事件(OnClientFail) 。
|如何创建自己的Tracker
本文插图

OnClientState函数尝试发送数据包到服务器 。 若想了解如何创建该消息 , 我们可以查看ClientIdentification类的构造函数:
|如何创建自己的Tracker
本文插图

让我们回到Program.cs, 并查看ConnectClient.Connect:


推荐阅读