在2021年上半年,虚拟加密货币(Cryptocurrency,下文简称虚拟货币)价格屡创新高的新闻一次又一次的吸引着人们的目光,其中比特币是大众最为熟知的虚拟货币。特斯拉公司也在2月份高调宣布购入价值15亿美元的比特币并计划开始接受比特币作为其公司电动车产品的付款方式[1]。而特斯拉公司的CEO埃隆·马斯克也在国外社交平台公开表示大力支持狗狗币[2],使其价格最高冲到0.73美元/枚,较年初暴涨近百倍(截止2021年6月29日,狗狗币已回落至0.26美元/枚)。
虚拟货币的疯狂除了引来了大量的资本涌入,还吸引了不少黑产的关注。腾讯安全平台部宙斯盾流量安全分析系统监测到在2021年上半年,与加密货币挖矿相关的恶意样本数量明显增加,并且随着虚拟货币的种类不断增加和技术的不断发展,一类新型的挖矿方法逐渐出现在我们的视野当中。
相信绝大部分安全从业者除了对比特币比较了解以外,还对一种名为门罗币的比较熟悉。门罗币(Monero,代号XMR)是一个创建于2014年4月的开源加密货币,采用了与比特币不同的CryptoNote协议[3],使其更加适合使用CPU进行挖矿。门罗币的这种特性导致了其被黑产大量使用,目前宙斯盾流量安全分析系统捕获的大部分挖矿脚本都是在进行门罗币的挖矿活动,一旦服务器恶意攻击者被植入门罗币挖矿脚本,最突出的表现就是CPU使用率大幅升高。
图 1 门罗币矿池页面
在2021年6月份,宙斯盾流量安全分析系统开始监测到一类挖矿脚本,服务器在被植入该脚本后,CPU并没有表现出极高的使用率,反而是硬盘被占用了极大的空间。深入了解后,发现是出现了一类以占用硬盘空间和网络带宽来进行挖矿的虚拟货币。这类虚拟货币的设计初衷是为了实现去中心化的存储与通信的目标,比较有代表性的币种是Filecoin、Chia、Swarm和Dfinity。我们在六月份监测到了Chia与Swarm相关的挖矿脚本,并且被感染量在几天内从数十台增加到了数百台,其中Swarm占据了大部分。
典型的Swarm挖矿脚本主要的流程如下所示:
图 2 Swarm挖矿脚本流程图
图 3 Swarm挖矿脚本-主函数
Swarm项目的火爆离不开以太坊,Swarm项目是以太坊的官方项目之一,由以太坊基金会领投,并且是V神(以太坊创始人)亲自站台的项目。不难看出,以太坊生态的繁荣造就了Swarm的项目的火爆,同时Swarm项目也可以为以太坊网络中的应用提供存储、带宽等资源。目前以太坊网络上的很多项目的数据都还是存储在传统中心化的云服务商的服务器中,一旦这些服务器出现问题,那么意味着用户的数据和资产也会受到损失。这时,Swarm这类项目的优势就体现了出来,能够通过去中心化的存储来解决这种问题。
图 4 Swarm官方网站
通过阅读Swarm项目的白皮书[5]可以发现,Swarm项目中的节点共同组成了一个巨大的P2P网络,在这个网络中,每个节点都能够提供数据的存储和内容分发的服务。简单来说,如果想要使用Swarm来存储数据,需要使用Swarm项目中的代币BZZ,这个BZZ代币也是Swarm挖矿的收益。如果一个节点能够提供越大的存储空间和带宽,那么他也将获得更多的BZZ代币,也就是挖矿收益。
类比现有的产品,Swarm的设计导致其更像实现了一个去中心化的CDN(内容分发网络)或者网盘,以往我们需要去各种CDN或者网盘提供商付费使用其CDN或者网盘服务,而现在我们只需要在Swarm上支付BZZ代币来获取类似CDN或者网盘一样的服务,而我们的数据并不是唯一的保存在某一个服务提供商的服务器上,而是分散的存储在多个地方,提高了数据的安全性,可以避免数据被监视的情况。
那么这就很好理解挖掘Swarm代币BZZ与挖掘门罗币的不同,挖掘门罗币需要消耗大量的CPU资源,从而会消耗大量的电力,而挖掘BZZ并不需要大量的计算资源,只需要占用存储空间和带宽,就能够获得收益,消耗的电力很小,是一种相对环保的挖矿方式。
图 5 Swarm节点之间的Kademlia网络连接
一个节点会至少与八个紧邻接点形成全连接,从而形成一个巨大且联系紧密的网状结构
虽然挖掘Swarm代币BZZ并不占用大量的CPU资源,这并不意味这我们不能检测其存在,在进行Swarm代币BZZ的挖矿过程中,最主要的特征是消耗带宽和硬盘空间,如果在日常使用电脑的过程中发现了硬盘空间突然被大量占用并且有一个程序占用了大量的网络带宽,则可以去查看下是否被植入了Swarm挖矿木马。同时,Swarm挖矿还会有以下一些比较具体的特征,供网络安全从业者来进行判断:
在进行门罗币挖矿时,挖矿程序需要与矿池连接,并且将计算结果与区块等信息与矿池同步,其中还包含了登录的过程,所以门罗币挖矿的流量特征很明显。挖掘BZZ与门罗币的原理完全不同,但是从官方的文档中可以得知,挖矿程序必须连接到区块链网络中,官方推荐是自己搭建XDAI区块链节点(下称交换端点)来连接入区块链网络,也可以使用公共的服务例如stake.getblock.io来连接到区块链网络中。Swarm挖矿程序与XDAI区块链节点进行的通信流量如下:
图 6 挖矿程序与交换断端点的通信流量
如上图可以看出,在挖矿程序与交换端点进行通讯时,同样采用了jsonrpc协议,这点与门罗币挖矿相同,并且数据包的强特征明显,可以针对数据包中的关键词或者数据包中的结构进行检测。
Swarm项目官方所使用的挖矿软件是Bee(https://github.com/ethersphere/bee),这款软件是使用go编写的,支持linux、windows系统,并且支持ARM、X86等多种架构。通过运行官方的程序来搭建Swarm项目的挖矿节点,可发现运行程序后会在配置文件指定的data-dir目录下创建以下三个目录:
Keys目录:该目录下会保存在节点初始化过程中产生的密钥,是整个节点中最为重要的数据。
Statestore目录:该目录下保存了当前节点的相关信息,例如区块列表,SWAP余额等。
Localstore目录:该目录下就是当前节点的区块数据。
Swarm项目在运行时默认使用1633,1634,1635这三个端口来进行数据交换。
1633端口:是默认的HTTP API 端口,可以通过HTTP协议访问该端口来查看节点运行情况,上传与下载文件等操作。
1634端口:是默认的P2P端口,与外部的节点进行P2P的连接则需要通过该端口。
1635端口:是默认调试端口,这个端口的开放必须要在配置文件中配置debug-api-enable为True才会打开。
通过检测上述端口的开放与连接情况也能了解主机是否运行了Swarm挖矿程序Bee。
在今年上半年,Swarm项目启动了不需要质押就能够挖矿的测试活动,吸引了大批的矿工参与,并且还出现了云服务器提供商贩卖Swarm节点的情况。在6月22日,Swarm项目迎来了1.0主网的上线[6],将项目的热度推向了高点。
Swarm项目凭借着大V展台和以太坊的生态加持,成为了目前分布式存储区块链项目中的佼佼者。由于Swarm的挖矿还存在着质押、最小磁盘空间和高速带宽要求,并且币价在主网刚上线之后也不稳定,可能在之后的流行程度要画一个问号,但是只要有利润存在,就有可能被黑产等非法攻击者所利用,无论是个人还是公司都需要在日后针对此种类型的挖矿行为多加预防,防患于未然。
宙斯盾流量安全分析团队隶属于腾讯安全平台部,依托部门十五年安全经验以及腾讯业务海量流量打造了公司级流量安全分析系统NIDS。团队聚焦基于流量的漏洞检测、入侵检测、恶意阻断以及威胁情报的建设和落地,不断挖掘流量中的安全风险并拓宽其应用场景,结合大数据、AI 等前沿技术,构建网络流量纵深防御体系。
引用
1、 https://www.163.com/dy/article/G2F6L24Q053469JX.html
2、 https://www.sohu.com/a/450907972_258858
3、 https://baike.baidu.com/item/CryptoNote%E5%8D%8F%E8%AE%AE/22448447
4、 https://docs.ethswarm.org/docs/
5、 https://www.ethswarm.org/swarm-whitepaper.pdf
6、 https://medium.com/ethereum-swarm/swarm-1-0-is-live-on-mainnet-4ecb79a6840e