D-BitBot:比特币网络双向通信的P2P僵尸网络模型
2020-02-24周安民
周安民,钟 毅,左 政,张 磊
(1.四川大学 网络空间安全学院,成都 610065; 2.四川大学 电子信息学院,成都 610065)
僵尸网络是被远程攻击者(Botmaster)所操控的,由一定数量的被攻陷主机(如个人电脑、移动电话或智能设备等)组成的网络,常被用于发起各种网络攻击,如信息窃取、发送钓鱼邮件、DDoS攻击、敲诈勒索和数字加密货币挖矿[1]等.相对于其他恶意软件,僵尸程序的特点是具有命令—控制通信机制(Command and Control, C&C).隐秘可靠的C&C通信机制可提高僵尸网络的健壮性.安全研究人员常通过逆向工程和网络流量[2-3]对僵尸网络进行分析,利用蜜罐技术[4]监控僵尸网络,并制定相应的策略对僵尸网络进行打击[5-6].
传统的C&C通信机制如基于IRC协议和基于HTTP服务器的通信均具有单点故障的缺陷.为提高僵尸网络通信的隐蔽性,某些僵尸网络选择社交网络或网络服务作为通信信道,如基于Yahoo邮件服务的Trojan.IcoScript[7]、基于Skype的僵尸网络[8]、基于Twitter的僵尸网络[9]和基于Google Docs的Backdoor.Markadocs[10]等.然而,使用这些信道的僵尸网络控制端仍具有单点故障的缺陷.
为避免单点故障的缺陷,P2P协议被应用于某些僵尸网络.P2P僵尸网络按是否基于分布式哈希表(Distributed Hash Table, DHT)可分为结构化(如Storm Worm[11]、Overbot[12]、Ratbot[13]、Hajime[14]等)与非结构化(如Slapper[15]、Conficker[16]、eBot[17]、参考文献[18]等).然而,基于P2P协议的僵尸网络对路由表投毒和节点爬取的防御比较薄弱.此外,采用P2P结构的僵尸网络,其上线加入网络过程可能具有单点故障的缺陷.
使用区块链网络作为僵尸网络的C&C通信信道,可有效避免上述缺陷,因为某些公有区块链网络(如数字加密货币,以比特币[19]、以太坊[20]为代表)具有匿名、难以被关闭的特点.比特币是一个基于区块链的,全球性的,公开的分布式账本;以太坊是一个开放的区块链平台,允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用.二者均通过各自的P2P网络进行数据同步.Ali等[21-22]提出使用比特币主网[23]作为僵尸网络的命令分发信道,使用web服务器进行数据回收,回传地址通过命令分发信道进行声明.Pirozzi[24]和Malaika[25]分别提出使用比特币主网和以太坊主网[26]作为恶意程序的通信信道.然而,受限于比特币和以太坊高昂的价格,Ali等[21-22]的研究中,其僵尸网络模型没有使用比特币网络进行上行通信,而是采用声明回传地址的方式回收数据,造成回传信道的抗溯源性相对薄弱;而Pirozzi[24]和Malaika[25]研究中的通信模型上下行信道均为区块链主网络,使其难以被溯源.然而,由于通信成本与网络规模成正比,因此其网络扩展性受限.
在Ali等[21-22]的研究中,其僵尸网络通信模型的回传信道存在易被溯源的问题,在Pirozzi[24]和Malaika[25]的研究中,其通信模型的网络扩展性受限于数字加密货币价格,此外,传统P2P僵尸网络存在节点列表被注入和被爬取的风险.针对上述问题,本文提出D-BitBot,一种基于比特币网络双向通信的P2P僵尸网络模型.本文具体工作如下:
1)针对基于比特币网络的僵尸网络通信成本过高和网络扩展性受限的问题,提出一种使用比特币测试网络作为回传信道的技术,能极大地降低由于数据回收所产生的经济开销,使网络扩展性不再受限于比特币价格.
2)为解决传统僵尸网络上线方式的单点故障缺陷,提出一种基于比特币区块链的上线机制,上线节点信息被周期性地记录在比特币区块链上.比特币交易难以被追溯且无法被屏蔽,有效避免僵尸节点因上线节点失效而无法加入网络.
3)针对传统P2P僵尸网络中节点列表存在被注入和被爬取的问题,提出一种基于IP地址加盐哈希排序的节点列表交换算法.通过在节点请求算法中加入随机盐值,保证节点被添加至自身节点时的随机性,使攻击者难以有效地对D-BitBot进行节点注入;在节点回复算法中,通过随机盐值生成针对特定IP地址的特征值,降低基于特征值欺骗的爬取算法效果.
4)在仿真环境中,对本文提出的P2P僵尸网络模型进行构建,并通过节点摘除实验对其鲁棒性进行评估.实验结果表明,D-BitBot的上线率达到100%,移除95%的通信节点后,僵尸网络的上线率仍达到90%.
5)通过重复节点请求实验和网络爬取实验评估本文提出的算法对路由表节点注入攻击和节点爬取的抵御效果.实验结果显示,该算法使所有待添加节点在被添加至节点列表过程中达到随机选取的效果;P2P网络节点爬取算法ZeusMilker[27]对本文所构建的仿真网络进行爬取的平均节点发现率不足60%.
6)最后,本文基于被感染端、比特币网络和网络服务提供商3个不同层面提出可能的抵御方式,并对本文采用信道的经济成本和抗溯源性对进行对应的分析和论述.
1 D-BitBot系统架构
为提高网络管理和数据回传的效率,D-BitBot分为控制端(Botmaster)、普通节点(Normal Bot)和感知节点(Sensor Bot)三部分.Botmaster为僵尸网络的控制端,用于发布命令和接收回传数据.Normal Bot和Sensor Bot是僵尸网络的被控端.
每个Sensor Bot拥有两个被Botmaster认可的比特币公私钥对和对应的比特币测试网络地址,用于发送和接收测试网络比特币.Sensor Bot的比特币测试网络地址上具有未花费的交易(Unspent Transaction Output,UTXO),因此Sensor Bot具有通过测试网络比特币交易将数据回传至Botmaster的能力.Normal Bot不具有被Botmaster认可的比特币公私钥对,或者自身拥有的比特币测试网络地址上没有UTXO,不具有将数据通过比特币测试网络回传至Botmaster的能力.
D-BitBot加入僵尸网络后连接至比特币主网,监听所有被广播的交易,从中标识出由Botmaster发出的交易并解析对应的命令.Botmaster可通过命令发布信道将Normal Bot升级为Sensor Bot,加强对僵尸网络的控制.D-BitBot的通信细节将在C&C通信机制中进行介绍.D-BitBot的架构如图1所示.
图1 D-BitBot的架构
2 D-BitBot的C&C通信机制
2.1 通信数据载体
利用OP_RETURN输出脚本函数[23],任何数据均可被嵌入到比特币交易中.这是Bitcoin Core 0.9.0版本发布的新函数.比特币用户可在单次交易中嵌入最多83字节的字节数据.这个数据段长度足以让Botmaster对僵尸网络进行命令发布.
2.2 D-BitBot的通信信道
2.2.1 命令发布信道
Botmaster通过合法的比特币交易进行命令发布.Botmaster拥有一个公私钥对.私钥可用于发送比特币交易,公钥被硬编码在D-BitBot中,用于校验数字签名,标识来自Botmaster的交易.Botmaster将命令数据嵌入比特币交易中,用私钥签名后发送到比特币主网中.D-BitBot连接至比特币网络后,标识来自Botmaster的交易以接收命令.命令发布和接收的过程如图2所示.
2.2.2 上行通信信道
每个Sensor Bot拥有两个由Botmaster分配的比特币测试网络公私钥对以及对应的两个比特币测试网络地址,Sensor Bot创建比特币交易时,将这两个地址分别作为交易的输入和输出地址,然后将回传数据使用OP_RETURN脚本函数嵌入该交易中,再通过比特币测试网络将交易发出.Botmaster通过数字签名校验标识来自Sensor Bot的交易并接收回传数据.上行通信过程如图3所示.
图2 命令发布过程
图3 上行通信过程
2.2.3 D-BitBot之间的通信信道
真实的比特币节点之间通过比特币消息[23]进行通信,如version,verack,ping,tx等.每次进行通信之前,节点之间要先进行版本握手.
类似地,D-BitBot在相互通信之前也要进行伪装的版本握手.这样做可对通信双方的合法性进行校验,并实现流量混淆,使通信流量与真实比特币节点网络流量相似.D-BitBot之间的通信数据被嵌在不可用的比特币交易中,实现流量伪装.D-BitBot之间的通信过程如图4所示.
2.3 基于比特币区块链的上线方式
上线地址通过周期性发布的比特币交易被记录在比特币主网区块链上.未加入网络的D-BitBot通过对比特币主网区块链进行检索即可获取最新的上线地址并加入到僵尸网络中.即使安全研究人员分析出Botmaster使用的比特币地址,也难以通过屏蔽比特币地址的方式阻止上线地址的发布.因为安全研究人员无法使众多比特币矿工达成共识以屏蔽Botmaster所拥有的地址发出的比特币交易.
图4 D-BitBot之间的通信过程
2.4 基于IP地址加盐哈希排序的节点列表交换算法
对于节点列表请求算法,其设计目的是降低攻击者路由表节点注入的效率.当所有在节点列表请求中收集到的节点信息被添加到请求节点的节点列表中的可能性相同,无论使用何种攻击方式,都不能高效地对该节点的路由表进行节点注入.现有方法分析如下:
Sality:在Sality僵尸网络中,一个节点在收到节点请求时会随机选择节点列表中的一个节点进行回复.针对Sality,可通过多次请求以爬取其节点信息.
ZeroAccess:在ZeroAccess僵尸网络中,一个节点在收到节点请求时将选择一定数量的最近收到回复的节点进行回复.该方式的一个严重的缺点是会泄露最近与该节点进行过通信的节点.
P2P Zeus:在P2P Zeus僵尸网络中,一个节点在收到节点请求时,该节点将对发出请求的节点到其节点列表中所有节点的异或距离进行排序,选出一定数量异或距离最短的节点进行回复.针对该回复方式,可使用节点信息欺骗的方式改变当前节点到其他节点的异或距离,即可高效地爬取到单一节点列表中的所有节点.
为解决上述现有方法中存在的问题,抵抗路由表节点注入攻击和P2P僵尸网络节点爬取,本文提出一种基于IP地址加盐哈希排序的节点列表交换算法.
盐[28]在密码学中,是指在计算哈希值前将散列内容(例如:密码)的任意固定位置插入特定的字符串.这个在散列中加入字符串的方式称为“加盐”.其作用是让加盐后的散列结果和没有加盐的结果不相同,在不同的应用情景中,该处理可增加额外的安全性.
当一个节点BotReq需要节点填充自身的节点列表LReq时,BotReq首先计算所需节点数Nneed,M为节点的容量.若节点列表为空,BotReq从比特币区块链上获取种子节点Lseed,否则向剩余节点发出节点请求.收集所有回复到一个列表Ltemp后,BotReq将Ltemp中的所有IP地址分别与32字节的随机字符串Salt结合,并计算其SHA-256哈希值,然后将结果存入Lhash中.最后,BotReq将对Lhash排序后对应的IP地址存入最终结果列表LRet中.
对于节点列表回复算法,一般来说,成功的节点爬取策略可获取足够的信息以绘制僵尸网络的网络地图,这是打击僵尸网络的重要一环.由于D-BitBot在收到请求时返回的是节点列表的一个子集,因此攻击者需要对同一节点发出多次请求,才能获取更多节点.Karuppayah等[27]提出基于特征值欺骗的节点爬取算法ZeusMilker,以提高对同一节点的爬取效率.为破坏相似的爬取策略,当一个节点BotRep收到节点请求,BotRep首先生成一个32字节的随机字符串作为盐值Salt,然后将请求节点的IP地址IPReq和Salt结合并对其进行SHA-256哈希运算得到s1.随后BotRep对IPReq进行SHA-256哈希运算得到s2,最后对s1和s2进行异或运算得到对IPReq的特征值KReq.由于随机盐值不受攻击者操控,返回的节点列表将偏向于新的特征值KReq,针对D-BitBot的特征值欺骗将变得低效.最后BotRep基于节点列表中节点到KReq的异或距离选择Sreturn个节点进行回复.
算法1通过加入随机盐值保证节点添加的随机性,攻击者难以有效地对D-BitBot的节点列表进行节点注入攻击.算法2通过加入随机盐值的方式生成针对特定IP地址的特征值,对于来自同一IP地址的多次请求,D-BitBot将返回相同的结果.对于使用IP地址进行特征值欺骗的节点爬取策略,加入随机盐值所生成新的特征值将使特征值欺骗变得低效.算法1和算法2的实际效果将在节点列表交换算法分析实验中进行评估.
算法1D-BitBot的节点列表请求算法
输入:LReq
输出:LRet
1)Nneed←M-|LReq|
2)ifNneed== 0 then
3) return∅
4)LRet←∅
5)if| LReq| == 0 then
6)Lseed←GetSeed()
7) fori= 0;i< |Lseed|;i+ + do
8) request(Lseed[i])
9)else
10) fori= 0;i< |LReq|;i+ + do
11) request(LReq[i])
12)Ltemp←GetResponse()
13)Salt←GenerateRandomSalt()
14)ifLtemp≠ ∅ then
15) fori= 0;i< |Ltemp|;i+ + do
16)Hi←SHA-256Hash(Ltemp[i]+Salt)
17)Lhash←Lhash∪{(Ltemp[i],Hi)}
18) Sort(Lhash)
19) while |LRet|
20)LRet←LRet∪GetIP(Lhash[0])
21)Lhash←Lhash-Lhash[0]
22)returnLRet
23)end
算法2D-BitBot的节点列表回复算法
输入:LRep,IPReq
输出:LRes
1)LRes←∅
2)Salt←GenerateRandomSalt()
3)s1←SHA-256Hash(IPReq+Salt)
4)s2←SHA-256Hash(IPReq)
5)KReq←XOR(s1,s2)
6)fori= 0;i 7)LRes[i] ←LRep[i] 8)fori=Sreturn;i< |LRep|;i+ + do 9) forj= 0;j 10)stemp1←SHA-256Hash(LRep[i]) 11)stemp2←SHA-256Hash(LRes[j]) 12) if XOR(stemp1,KReq) 13)LRes[j] ←LRep[i] 14) break 15)returnLRes 16)end 为对D-BitBot进行进一步分析,本文使用PeerSim[29]对D-BitBot进行P2P网络仿真分析. 根据相关研究,在文献[30-31]对僵尸网络的仿真中,僵尸网络的构建通过类似蠕虫传播的方式实现,因为在文献[30-31]提出的僵尸网络中,新节点不使用上线节点加入网络.在本文的仿真中,僵尸网络中有一定数量的初始节点,上线地址从网络的所有节点中随机选出并周期性被更新.新加入网络的D-BitBot向上线节点请求更多节点以填充自身的节点列表.为方便分析,本实验随机生成的IP地址均为IPv4地址. 为更好地对僵尸网络进行分析,本文对僵尸网络的参数的定义在表1中列出. 表1 D-BitBot相关参数的定义 对于本文使用的僵尸网络初始化方式,每个D-BitBot的节点列表近似于由整个僵尸网络中的节点随机填充.因此,Ns的期望值为M×pinit.根据相关研究[30-31],本文假设N的初始值为1 000,M的值为20,pinit的值为0.25,僵尸网络规模不断增长直至N的值达到20 000,在这个过程中Normal Bot不断地被升级为Sensor Bot,使p的值维持在0.25左右.僵尸网络初始化完成后μs为 (1) 式中Nsi为D-BitBot i节点列表中的Sensor Bot个数.μs的实验值为4.998,接近于Ns的期望值M×pinit=5.Ns的分布情况如图5所示. 由图5可知,近80%的D-BitBot节点列表中有3~7个Sensor Bot.该分布近似于平均值为5的正态分布.为研究Ns的离散度,本文对Ns的标准差进行计算.假设Ns的标准差为σ,则σ为 (2) σ的实验值为1.948,故Ns具有一定的离散度,并可能会对D-BitBot的上线率产生影响.本文将在鲁棒性评估实验中对上线率进行研究. 图5 单一节点列表中包含的Sensor Bot个数分布 Fig.5 Distribution of the current number of sensor bots in a single peer list 僵尸网络鲁棒性受多种因素影响,如回传信道失效、DDoS攻击、女巫攻击、路由表投毒和僵尸节点离线等.这些因素均会影响D-BitBot的上线率.因此本文以D-BitBot的上线率评估D-BitBot的鲁棒性.在本实验中,D-BitBot的上线率为一个D-BitBot发出的消息能到达可用的Sensor Bot的概率.“可用”代表一个Sensor Bot没有被移除,能将数据通过回传信道发送到Botmaster.假设R(pr)为移除比重为pr的Sensor Bot后D-BitBot的上线率,则R(pr)的实验值为 (3) 式中Nreachable为发出的消息能到达可用Sensor Bot的D-BitBot个数,Nremaining为僵尸网络中剩余的D-BitBot个数.本文假设所有Sensor Bot在被移除前均为可用状态. 为计算D-BitBot发出的消息经过广播之后能够到达一个可用Sensor Bot的概率,需要先计算两个参数:μp和p.μp为 (4) p随着Sensor Bot的移除而降低.p为 (5) 接下来计算一条消息由D-BitBot发出之后到达一个可用的Sensor Bot的概率,即R(pr)的计算值.事实上,只需计算出一条消息不能到达一个可用的Sensor Bot的概率,然后用1减去该概率即可得到R(pr)的计算值.首先,一个D-BitBot不是可用的Sensor Bot的概率为(1-p),该D-BitBot节点列表中所有节点均不为可用的Sensor Bot的概率为(1-p)μp,因此当Tup为1时R(pr)的计算值为1-(1-p)·(1-p)μp.以此类推可得R(pr)的计算值为 (6) 由式(6)可知,随着Tup值的增大,由于指数函数的特性,Tup对R(pr)的值有决定性的影响.当M为20,pinit为0.25时,随着Tup的增长,R(pr)接近于1.本章设计实验选出Tup的最优值,避免网络负载过高且便于管理. 为通过网络仿真研究Tup取不同的值时摘除Sensor Bot的比重pr对D-BitBot的上线率R(pr)的影响,针对自构建的仿真僵尸网络,本章使用不同摘除比重pr对网络中的Sensor Bot进行摘除,并对摘除后的网络连接率R(pr)进行监测,得到实验结果.pinit的取值为0.25,pr的取值范围为[0,1],取值间隔为0.05,Tup的取值范围为[1,4],取值间隔为1. 图6为在仿真环境中R(pr)计算值和实验值的比较.随着Tup的增长,R(pr)的计算值趋近于1.当Tup≥2,在Sensor Bot的移除比重pr≤0.85时,R(pr)的实验值趋近于1.当Tup≥3,在Sensor Bot的移除比重pr=0.95时,R(pr)≈0.9.这表明在Tup=3时,僵尸网络具有良好的鲁棒性,因此当节点列表的最大值M取值为20,Sensor Bot的初始比重pinit取值为0.25时,Tup的最优取值为3.R(pr)的计算值与实验值基本相符,实验值略低于计算值.这是因为在 图6 Tup取不同的值时R(pr)的计算值和实验值的比较 Fig.6 Comparison of the calculated values and simulation results ofR(pr) with differentTup R(pr)的计算式中使用的是μp.实际上,由自构建的仿真僵尸网络属性可得,单一D-BitBot节点列表中包含的Sensor Bot个数Ns具有一定的离散程度,因此R(pr)的实验值和计算值存在误差.虽然式(6)并不能计算出准确的R(pr),但是,当安全研究人员没有获取实际数据时,式(6)仍可用于估算相似僵尸网络的上线率. 为抵抗路由表节点注入攻击,降低节点注入的效率,算法1通过对IP地址加盐哈希后排序的方式实现对待添加节点的随机选取.本章从自构建的仿真僵尸网络中随机选取一个节点列表中节点数为M的节点,其中5/M个节点被标记为恶意.然后使其对节点列表中所有节点发起多次节点请求,然后计算每次经过算法1筛选后被添加的节点来自恶意节点的概率.请求重复的次数为30 000. 根据实验所得数据,经算法1筛选后被添加至节点列表中的节点来自恶意节点的平均概率为19.97%,标准差为7.8%.证明经算法1筛选后所有候选节点能达到被随机选取添加至节点列表的效果. 为降低攻击者对单一节点进行爬取的效率,本文提出基于异或距离的节点筛选算法,计算异或距离使用的特征值为请求节点的IP地址加盐后的SHA-256哈希值. 为评估该算法的效果,本文分别使用ZeusMilker节点爬取算法和随机生成特征值的爬取算法Random对本文方法、Sality、P2P Zeus和ZeroAccess进行对比.本文以节点发现率评估节点爬取的效果,即已发现的节点占该节点列表的节点总数的比重.本章从自构建的仿真僵尸网络中随机选取50个节点,分别对不同的节点回复策略进行爬取,然后计算平均节点发现率,本文假设节点列表在被爬取的过程中不会发生变化,M的值为20,Sreturn的值为4.图7和图8显示在不同的节点回复策略下Random算法和ZeusMilker算法对单一D-BitBot进行节点爬取的效率.对于ZeroAccess,不同的爬取方法其爬取结果相同,因为ZeroAccess固定返回节点列表中的前5/M个节点. 由图7可知,除ZeroAccess外,随机爬取算法Random在经过大量的请求后均可获取到单一节点列表中的绝大部分节点.本文提出的方法和P2P Zeus效果略优于Sality. 图7 Random节点爬取算法对不同抵御方法的效果分析(M=20,Sreturn=4) Fig.7 Performance of Random on different anti-crawling strategies (M=20,Sreturn=4) 由图8可知,本文所提出的方法对ZeusMilker算法的抵御效果最佳,ZeusMilker算法对其目标节点的平均发现率不足60%.对于P2P Zeus,ZeusMilker算法在一定数量的请求后的节点发现率可达100%,而对于Sality,ZeusMilker算法最高节点发现率则略高于90%. 图8 ZeusMilker节点爬取算法对不同抵御方法的效果分析(M=20,Sreturn=4) Fig.8 Performance of ZeusMilker on different anti-crawling strategies (M=20,Sreturn=4) 实验结果证明本文提出的算法可有效抵御基于特征值欺骗的ZeusMilker节点爬取算法.随机爬取算法Random无法通过少量请求获取单一D-BitBot的所有节点信息,存在效率低下的缺陷.因此,本文提出提出的节点列表回复法可有效抵御僵尸网络节点爬取攻击. 6.1.1 被感染端层面抵御措施 根据本文提出的僵尸网络模型设计方案及比特币协议,该模型需监听受感染主机的8 333和18 333端口(比特币主网和比特币测试网络的默认通信端口).通过关闭受感染主机的对应端口可有效阻止其数据传输.然而,关闭端口会对依赖该端口的其他网络服务产生影响,并会对真实比特币客户端的网络行为产生影响.因此该操作仅作为应急措施而不能永久解除威胁. 6.1.2 比特币网络层面抵御措施 比特币网络并非由Botmaster所控制的节点组成的P2P网络,若属于Botmaster的比特币地址被网络中的节点所屏蔽或被列入黑名单,不仅会使本文提出的僵尸网络通信信道失效,还会使该僵尸网络控制端有被溯源的风险.由于96%的比特币节点使用的客户端为Bitcoin Core[32],因此一种可能的抵御方式为安全研究人员与Bitcoin Core开发团队协商在程序中加入黑名单机制,屏蔽特定地址的交易或对发出交易的源IP地址进行追溯.然而,黑名单机制违反比特币设计的理念和初衷[33],会因比特币社区用户及开发人员的反对而无法实行. 6.1.3 网络服务提供商层面抵御措施 由Botmaster发出的交易数据须先经过被网络服务提供商(Internet Service Provider, ISP)发送到比特币网络,因此交易数据在被发出时可被部署于ISP层的基于软件定义网络(Software Defined Network,SDN)的针对特定协议的监测点[34]所捕获.安全研究人员可根据捕获到的数据和信息进行进一步的溯源.然而,比特币网络是一个节点分布在全球各地的P2P网络,安全研究人员难以与全球众多ISP协同部署对应的监测点. 6.2.1 经济成本分析 本文提出的实现方案通过比特币主网发送命令,每发送一条命令的成本约为0.4美元(0.1 mBTC),回传信道使用比特币测试网络进行数据回收,通信所需比特币可通过公开访问的网站免费获取,因此回传通信成本与比特币价格和僵尸网络的规模均无关.Sensor Bot被捕获或被移除不会造成Botmaster的经济损失.此外,节点间通信消息在自组建的P2P网络中广播,节点间无通信成本. 6.2.2 D-BitBot信道分析 基于本文及相关研究所论述,对于比特币和以太坊等公开的区块链网络,暂无相关研究提出方法防止对其的恶意利用以及对恶意利用的有效溯源.比特币主网和测试网络具有相同的功能和特性,两者均为拥有大量遍布全球的节点的P2P网络[35],其区别仅在于交易数据的网络标识及协议使用的端口号不同,而且比特币网络没有独立的第三方组织对其进行监管,因此通过传统方法对比特币网络进行溯源并不可行. 本文提出的解决方案被控端和控制端在从比特币网络中接收消息时其网络行为与真实的比特币节点无异,被控端和控制端接收所有被广播的交易并在本地过滤出包含通信数据的交易.使用比特币测试网络对通信数据进行回收,可利用比特币网络的可靠性和抗跟踪溯源性,同时降低回传信道的通信成本. 此外,该模型经少量修改即可部署至其他相似的公有区块链网络,将来可能会对网络空间安全造成威胁,应当引起安全研究人员的重视,并研究对应的防御技术. 僵尸网络已经成为当前网络空间面临的最大安全威胁之一.针对基于公有区块链网络(如比特币、以太坊等)的僵尸网络通信模型研究中网络扩展代价高和回传通道容易被溯源的问题,本文提出D-BitBot,一种基于比特币网络双向通信的P2P僵尸网络模型.与其他对僵尸网络的相关研究相比,D-BitBot的C&C信道更加难以被破坏和屏蔽,通信成本更低,且网络扩展性不受限于数字加密货币价格.此外,本文提出基于比特币区块链的上线机制及基于IP地址加盐哈希排序的节点列表交换算法,使D-BitBot可避免单点故障的缺陷,并可有效抵御路由表节点注入攻击和僵尸网络节点爬取.3 僵尸网络仿真分析
3.1 僵尸网络的构建
3.2 僵尸网络相关参数的定义
3.3 僵尸网络的初始化
4 D-BitBot鲁棒性评估
5 节点列表交换算法分析
5.1 节点注入抵御效果分析
5.2 节点爬取抵御效果分析
6 相关讨论分析
6.1 抵御措施分析
6.2 相关讨论
7 结 论