freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

DRat去中心化远程控制工具
SpenserCai 2023-03-07 10:54:45 233262
所属地 上海

严正声明

本文所涉及的技术,仅供学习交流使用,不得用于非法用途!!!!

DRat简介

DRat全称:Decentralized Remote Administration Tool,译为去中心化远程管理工具。通过区块连技术和某报(当然也可以用别的端到端,支持机器人且够自由就行)实现的无中心化控制服务器、无中心化配置分发服务器的Rat。

DRat是作者提出(反正我是没有百度到,也没有google到类似的)的一种去中心化远程控制技术,其中所涉及的组件是可以等价替换的哟。

预备知识

Web3.0

大家都知道Web1.0通常意义上是只读的,个人网站、大英百科全书等就是在Web1.0时期出现的产物。Web2.0是中心化机构提供了平台,用户可以在平台上通过读写的方式进行各种沟通以及提供服务,但是使用者的账号本质上还是有平台管控。

而Web3.0则是通过区块链的技术,使得每个人都能掌控自己的账号,据个简单的例子:在Web2.0上的游戏装备由游戏公司管理,哪天游戏公司跑路了,你的装备也就没了。而在Web3.0上你的装备存储在区块链上,就算游戏公司跑路了,你的装备依然在,游戏依然可以运行(只是没人维护了而以),当另一接盘侠跳出来说,我愿意继续维护的时候,一切就能继续下去。

当然我这里说的有点通俗,具体的细节大家可以查阅相关资料。

ENS域名

了解了什么是Web3.0我们在来说一下ENS域名吧。

ENS全称Ethereum Name Service(以太坊名称服务)是一个基于以太坊区块链的分布式、开放、可扩展的命名系统。

我们都知道DNS是域名解析服务,通过DNS我们可以将123.55.78.90解析到abc.com这样就通过易于记忆的域名替代了复杂的ip。同样,ENS的功能是将如0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045的以太坊地址解析为vitalik.eth这样有意义的ENS域名。不同的是DNS服务器是中心化的,如果顶级服务商跑路,或者停用域名,那么使用者将会失去所有权,而ENS则是去中心化的,上面的信息是保存在全球的以太坊节点上,只有拥有者才能对其进行更改,并且由于区块连的特性域名的通常来说所有者是无法被溯源的。

DRat的实现原理

控制端去中心化

众所周知,某报是一个端到端的聊天工具,同时有着较好的机器人支持,所以使用某报群组作为主控是一个不错的去中心化的方案。

搭载C猫

由于大家都懂得原因,想使用某报,搭载C猫是必不可少的。

ENS获取配置信息

当我门注册玩ENS域名(注册的方法下文会给出)后,我们会发现有很多字段可以自由编辑,个人认为最合适的当属description字段,将DRat的配置加密后存储在此即可实现配置分发的去中心化,相对于常规的Rat,DRat所使用的方法将不再需要专门的服务器用来存储分发配置文件。

Merge DRat

通过上述的组件我们不难发现整个流程都是去中心化的而程序DRat本身也是相当灵活的,可以通过ENS域名的description字段对主控的群组、bot进行随时变动,同时也不会应为配置分发服务器被端导致失去对DRat的控制。

如何使用

项目地址:https://github.com/SpenserCai/DRat

上面说了这么多的背景故事,接下来就是实践了

获取项目

git clone https://github.com/SpenserCai/DRat.git

环境依赖

DRat使用golang开发,同时使用了python开发了编译脚本和配置文件编译脚本。

  • Golang>=1.19

  • Python3

  • Windows/Linux

  • Python库:Crypto

ENS域名注册

  1. 安装MetaMask插件并创建一个账户

  2. 切换到Goerli测试网络

  3. 获取Goerli的测试币(这个大家自行百度哈)

  4. 访问ENS官网,并连接MetaMask注册ENS域名

1678155133_64069d7dc9ae108376a04.png!small?1678155133967

1678155174_64069da6bd3e2a65b9cb6.png!small?1678155174748

1678155215_64069dcf1c82f85b4e661.png!small?1678155215651

编译配置文件

由于配置文件需要上传到ENS,我们对配置文件的内容进行加密

首先从项目的根目录复制build_config.json到任意目录修改该内容,如下(根据自己的实际情况填写):

1678153838_6406986e36ae5c953933f.png!small?1678153838351

执行编译命令:

python encode_coding.py build_config/YOU_CONFIG.json <ens域名的前缀(不包含.eth)>

1678155467_64069ecb43fdccbd0ab1b.png!small?1678155467181

提交到ENS域名

将加密完的字符串(不包含下面的json)复制粘贴到ENS域名中的description中(可以通过访问https://app.ens.domains/name/你的域名/details进入设置页面),修改该完成后拉到最下面Confirm。

1678155739_64069fdbe04bbba57b255.png!small?1678155740025

编译DRat

由于DRat中需要搭载ENS的域名所以需要手动编译,运行如下命令

python build.py build_config/ENS.json <cli|spy> <windows|linux>

其中ENS.json的内容如下

{
    "TELBOT_TOKEN":"",
    "TELBOT_CHAT_ID":0,
    "CLASH_CONN_STR":"",
    "LOCAL_PROXY_PORT":7890,
    "ENS_DOMAIN":"你的ENS域名"
}

cli为调试模式,spy为后台模式

运行测试

在windows上运行DRat.exe

1678156294_6406a2065714c59cd10b0.png!small?1678156294304

在Linux上运行DRat

1678156491_6406a2cb7312db9811275.png!small?1678156491412

如果你不幸在linux上运行了ping没有关系,可以通过/rce stop @机器人 来退出当前命令,然后重新通过/rce <command> @机器人来执行,如果你在ENS域名上修改了配置可以通过/reboot_drat来重启并重新加载配置。

后记

就像我再开头所说的DRat是一种技术你可以用其他模块来做等价替换,比如你可以把ENS域名换成别的区块链域名或者是IPFS等等。DRat的核心理念就是区中心化的远程控制,只要能够区中心化都能够被称为是DRat技术。

# 工具 # RAT # 开源安全工具 # Golang # 去中心化
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 SpenserCai 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
SpenserCai LV.3
这家伙太懒了,还未填写个人描述!
  • 7 文章数
  • 18 关注者
黑客教父:凯文米特尼克,去世
2023-07-21
微信取证之GoWxDump
2023-03-06
企业级国产免费蜜罐HFish内测版先览
2021-12-28
文章目录