作者:Maka8ka
本文为作者投稿,Seebug Paper 期待你的分享,凡经采用即有礼品相送! 投稿邮箱:paper@seebug.org

0x00 敬告

本文所阐述内容仅供技术探讨及研究,所有环境均为实验环境,不存在任何违反破坏计算机行为。文中所有工具仅供研究使用,产生一切后果由使用者自负。

该远控程序是方便运维人员使用的运维工具,请大家合理使用,产生一切非法行为及后果由使用者自负。

项目地址:https://github.com/Maka8ka/NGLite

0x01 前言

随着网络技术革新,防火墙杀软的层层迭代,远控发展了良久,从最早的基于TCP开端口正向链接的远控,到后来有基于TCP的C/S端的反向链接远控,再到各类变种的HTTP/HTTPS/DNS远控。

目前用的最多的cobaltstrike/msf,免杀多要对shellcode进行免杀,各类加载器,进程注入等绕过杀软。但绕过杀软最好的办法就是自己写一个远控程序。

写远控之前我们就要思考一下目前的cobaltstrike和msf在回连的时候主要特征是什么,行为特征?回连特征?包含回连IP/域名/CDN?行为特征可通过自己写远控客户端进行规避,IP/域名/服务器是不是都得使用实名信息/付款方式进行购买,匿名性大大降低。总有暴露的风险。

那么如何实现在无IP/域名/服务器的情况下实现无需任何实名信息的远控才是本文主要探讨的问题。所以需要思考一下,如何无IP/域名实现穿透?P2P?和区块链又有啥关系

0x02 基于NKN区块链网络的P2P网络

https://images.seebug.org/content/images/2021/07/15/1626331767000-Untitled.png-w331s

上图来自:https://nkn.org/wp-content/uploads/2020/12/NKN概览.pdf

所有客户端/服务端均直接链接NKN的官方节点/由用户加入NKN网络的挖矿节点,所有节点均只知道相邻的邻居节点。此时客户端和服务端在网络中几乎对等。服务端在无公网IP端口的情况下,仅需能链接外网,有外网访问的权限,即可作为被连接的对象。

上图来自https://github.com/nknorg/nkn-sdk-go

利用NKN的sdk即可快速实现具有消息传送功能的客户端,由于在P2P网络中无明显的客户端/服务端区别,在之后的文章中姑且称C2控制端,和受控端。

0x03 一般远控执行流程

0x04 NGLite执行流程

 透过NKN 的网络,可以实现一个匿名的P2P群组,类似于聊天频道,每个发送端可直接对目的端发送消息,消息经过nkn网络中的不同节点进行传送。

0x05 工具介绍及原理

这里只给大家提供一个最简单的思路去实现自己的c2程序。

该程序受控端在最初启动的时候之后链接nkn,并向控制端发送自己的id

在收到控制端的执行指令之前不会执行任何命令及相关操作。

目前功能单一,仅提供命令执行功能,传输中使用了AES加密和新客户端上线数据包采用RSA加密,以防中间节点的不安全,一切做好最坏的打算嘛。

新发布了个开箱即用的版本,增加了自定义频道/群组功能,同学们可以自己生成自己的随机频道,在自己的专属频道中进行通信,也可以团队协作,只需要将频道地址告诉你的小伙伴,在小伙伴的机器上同时运行controller指定-g即可。

目前支持参数

控制端
-n new 生成新的频道/群组
-g 9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922 指定9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922频道
$mac$ip shell 对执行主机发送shell命令

被控端
-g 9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922 指定9e8124591f55d27b48ba907f2ad39e790ec589b3942dec2a19e7c2a96b751922频道

运行示例

免杀测试

0x06 工具优势&劣势

理论上完全的匿名性,当然要是有人监测并分析了所有中间节点除外,目前节点约8W个

无需任何公网资源,只需要通信主机能上网即可

无需实名购买IP/域名/服务器/CDN等等资源

目前免杀性能优

连接稍多,体积较大,大家可通过upx等进行压缩

0x07 后续开发

介于P2P的特性以及分布的7w多个网络节点,这个网络天生具有大文件传输的优势及网络传输速度的优势。

后续考虑增加文件传输、内网穿透代理等功能。

代码写的比较乱,稍后整理一下,将功能分离后会更新源代码。

0x08 Last

上文中所讲到的群组/频道实际为nkn的seed,类似于私钥或者助词之类的。

以上内容如有错误,请多多包含,有任何开发相关的建议或创意,欢迎留言话在github提交issues。

项目地址:https://github.com/Maka8ka/NGLite

原创文章,转载请注明原作者及原文链接。

@TenguG@Maka8ka


Paper 本文由 Seebug Paper 发布,如需转载请注明来源。本文地址:https://paper.seebug.org/1638/