基于Kademlia协议的高生存性P2P僵尸网络

时间:2022-08-11 08:22:01

基于Kademlia协议的高生存性P2P僵尸网络

摘要:

为了提高僵尸网络的生存能力,通过对现有反僵尸网络技术的分析,从攻击者角度提出了一种基于kademlia协议的高生存性p2p僵尸网络,通过设计一套通信加密认证和节点身份认证机制提高了僵尸网络的生存能力,理论分析表明该机制可以较为有效地应对伪造命令攻击和女巫攻击,并通过实验证明了新型僵尸网络的高生存性。

关键词:

Kademlia网络;僵尸网络;生存能力;加密认证;女巫节点

0引言

近年来,网络安全威胁趋于规模化、有组织化,僵尸网络就是这类新型威胁的代表,僵尸网络(Botnet)常用于分布式拒绝服务(Distributed Denial of Service,DDoS)攻击、蠕虫传播、网络钓鱼等多种非法活动[1-2]。作为一种用于恶意目的的大规模受控网络,僵尸网络与传统网络威胁的最显著的区别是其命令控制机制(Command and Control, C&C)[1,3]。

依照网络结构的不同,僵尸网络的C&C机制主要分为集中式和分布式(PeertoPeer, P2P)。集中式C&C机制命令传递效率高,但存在单点失效问题,可靠性差;P2P僵尸网络生存力较高,同时其复杂的拓扑结构使得防御方很难对其进行全面的研究[1-2,4]。在目前僵尸网络防御技术日臻完善的背景下,P2P僵尸网络逐渐成为僵尸网络技术研究的主流。根据对现有僵尸网络攻防技术的研究,本文提出一种以Kademlia协议为基础、以高生存性为特征的新型P2P僵尸网络(下文中将这种高生存性僵尸网络称为新型僵尸网络),供僵尸网络防御者研究以应对可能出现的下一代僵尸网络。

1相关研究

本章将主要介绍现有的僵尸网络C&C机制和僵尸网络防御技术,以明确现有僵尸网络的不足和现有防御技术的特点,为进一步设计新型僵尸网络提供依据。

1.1僵尸网络C&C机制

现有僵尸网络C&C机制按拓扑结构可以分为4类:中心式、全分布式非结构化、全分布式结构化和半分布式[2]。

中心式僵尸网络拥有一个或若干个命令服务器,所有节点周期性向命令服务器请求命令(PULL策略);这种结构的典型是IRC僵尸网络和HTTP僵尸网络,如EggDrop、Clickbot等[5]。中心式僵尸网络路由效率最高,但生存力较差,一旦服务器被关闭则将导致整个网络瘫痪。

全分布式非结构化僵尸网络中所有节点地位对等,总控者可以向任意一个节点注入命令,节点收到命令后即向整个网络进行洪泛推送(PUSH策略);Sinit[6]即是此类僵尸网络的代表。这种结构的优点是鲁棒性很高,在大部分节点被摘除的情况下仍能保证网络的连通性;缺点是没有考虑到防火墙问题,如果某一节点向位于防火墙之后的节点推送命令,可能会导致防火墙报警,增加僵尸网络暴露概率。

全分布式结构化僵尸网络采用分布式散列表(Distributed Hash Table,DHT)技术来组织网络中的节点,散列表中使用〈Key,Value〉对来表示路径信息(Key是命令的Hash值,Value表示IP和端口等信息),如图1所示;Kademlia[7],Peacomm和OverBot[8]等僵尸网络均采用该协议。由于大部分P2P下载软件均基于Kademlia实现,基于Kademlia的僵尸网络的通信便于伪装为合法流量;但由于全分布式结构化通信机制的固有缺陷,采用该结构的僵尸网络易受到索引毒化攻击(Index Poison)和Sybil攻击(女巫攻击),导致网络的崩溃[9]。

半分布式僵尸网络是中心式和全分布式僵尸网络的某种组合形式,其代表是P. Wang等[4]提出的Hybrid Botnet(本文称之为P. Wang僵尸网络),如图2所示。这种僵尸网络使用具有固定IP地址、无防火墙阻碍且性能较高的节点作为Servent Bot(本文将Servent Bot组成的网络称为基干网),而各Client Bot(由于NAT或防火墙过滤等原因无法从因特网访问的节点)从Servent Bot处获取命令。P. Wang僵尸网络结合全分布式非结构化僵尸网络和中心式僵尸网络的优点,有效解决了穿透防火墙的问题[10]。但P. Wang僵尸网络也存在着一些问题,为了增加防御者跟踪僵尸网络的难度,P. Wang僵尸网络采用了随机端口机制,但这会产生大量目的端口异常的数据包,可能被网络入侵检测系统所察觉。

1.2僵尸网络防御技术

根据Zhu等[11]的研究,防御方针对僵尸网络的对抗手段可以分为三类:跟踪(Tracking)、检测(Detection)和反制(Countermeasure)。本文将仅讨论其中与C&C机制相关的防御技术。

1)跟踪。

跟踪即监视僵尸网络节点的网络通信行为,分析其网络通信特征并发现与被监视节点联系的其他节点。跟踪一般可以采取两种方式:首先是利用蜜罐(Honeypot)捕获僵尸网络程序之后,在受监控环境中运行该程序,并监视其网络行为[12];其次是利用Sybil节点入侵僵尸网络,Sybil节点与其他僵尸网络节点通信以获取僵尸网络的规模、分布、通信特点等信息[13]。

2)检测。

检测的目的是发现僵尸网络的存在,主要是利用入侵检测系统(Intrusion Detection System, IDS)记录并根据检测规则分析辖域内网络通信,以发现僵尸网络[12]。

3)反制。

反制的目的在于对僵尸网络进行打击,以使之无法完成僵尸网络控制者赋予的任务,从C&C机制的角度而言,即破坏僵尸网络C&C信道,使僵尸网络节点无法正确地收到来自控制者的命令。防御方主要通过以下几种方式对僵尸网络实施反制:首先是路由干扰,通过向僵尸网络虚假路由信息或注入具有路由干扰功能的Sybil节点导致僵尸网络C&C信道中出现路由错误[4,13];其次是节点摘除,使用杀毒软件或其他计算机安全软件清除僵尸网络程序,即相当于将节点从僵尸网络中剔除;接管,虚假的控制命令,冒充控制者对僵尸网络实施控制,获取僵尸网络的控制权[14]。

2新型僵尸网络的设计

从提高僵尸网络生存能力出发,僵尸网络应当能够应对上述的几类防御手段,本章将首先针对上述防御手段给出新型僵尸网络的设计目标和准则;其次设计新型僵尸网络架构,并给出其工作模型;最后给出新型僵尸网络的自我保护机制,并论证其能够较好地应对各种僵尸网络防御技术。

2.1新型僵尸网络设计目标与准则

1)反跟踪。

首先,僵尸网络程序对蜜罐的识别与C&C机制无关,本文不作讨论;而对于Sybil节点,僵尸网络应对其进行识别,拒绝其加入;防御方对僵尸网络通信进行分析无法获得其通信内容。

2)反检测。

僵尸网络通信行为伪装为正常网络应用,且通信内容不存在特征码。

3)反反制。

僵尸网络能够识别防御方的假命令,识别重放的控制命令;在较多节点被清除的情况下,剩余的大部分节点仍能够收到命令。

2.2新型僵尸网络设计方案

现有的几种僵尸网络类型中,Kademlia僵尸网络便于伪装为合法的下载软件通信,而P. Wang僵尸网络具有较好的防火墙穿透性能。因此,新型僵尸网络同样采用半分布式结构,但使用Kademlia网络作为基干网,使之兼具Kademlia僵尸网络的隐蔽性和P. Wang僵尸网络的防火墙穿透能力。

2.2.1新型僵尸网络结构

新型僵尸网络的总体结构如图3所示,可见新型僵尸网络的基干网为Kademlia网络,Servent Bot和Client Bot相互之间为一对多连接,Client Bot从Servent Bot处获取命令。

图片

根据文献[4]的研究,根据与合法下载软件的关系,Kademlia僵尸网络可以分为三类:Parasite(寄生型,僵尸节点全部都是下载软件网络的节点)、Leeching(水蛭型,部分僵尸节点是下载软件网络的节点)和Botonly(僵尸网络和下载软件网络没有交集)[4]。本文的新型僵尸网络属于Leeching型,每个节点维护两个K桶[7],K1桶(用于同僵尸节点的通信)和K2桶(用于同合法下载软件节点的通信)。

2.2.2两类节点的选取和网络的初始化

与P. Wang僵尸网络不同,新型僵尸网络的基干网是PULL型网络,因此其Servent Bot不必要求具有静态IP,只需要公网可达即可,即:

1)非NAT主机。

NAT主机即使用NAT的IP,其他处于NAT之外的节点无法主动访问NAT主机,而Servent Bot要求能够被其他节点主动访问,故不得使用NAT。僵尸网络程序查询新节点的IP配置情况可以通过运行ipconfig /all命令来实现。

2)无防火墙或防火墙不禁止Kademlia连入。

由于其他节点(包括Servent Bot和Client Bot)需要主动连接Servent Bot,因此其他节点连向Servent Bot的通信不应被防火墙拦截。鉴别方法为:主机感染僵尸网络程序后向父节点报到,父节点尝试主动连接新节点,如可以进行通信,则判断该节点无防火墙保护,可作为Servent Bot。

节点确定身份之后,即进行初始化,两种节点初始化过程分别如下:

Servent Bot

首先确定本节点ID,可以使用哈希函数对本机使用的IP进行运算,得到的散列值作为本节点ID。Servent Bot建立K1桶和K2桶用于与僵尸网络节点和合法下载软件网络节点进行通信,使用FIND_NODE请求[7]向父节点和下载软件网络初始化服务器进行初始化,填充两个K桶。在完成初始化之后,Servent Bot继续尝试感染其他主机,以扩充僵尸网络。

Client Bot

为增加冗余度,每个Client Bot的ServentList中须存储多个Servent Bot的信息,本文中规定ServentList大小为8,即存储8个Servent Bot的信息,这8个节点由其父节点随机选取而来。

2.2.3新型僵尸网络工作模式

Servent Bot既扮演服务器角色,又扮演客户机角色。扮演服务器角色时,等待来自于其他节点(既可以是僵尸网络节点,也可以是合法下载软件节点)的请求,分别使用不同的K桶进行应答(关于两种不同请求的识别将在3.4节中进行论述);扮演客户机角色时,以一定周期同时向僵尸网络节点和合法下载软件节点发起请求,根据僵尸网络节点返回的信息寻找命令节点。

而Client Bot仅扮演客户机角色,以一定周期向ServentList中的Servent Bot发起请求以获取命令。

2.3新型僵尸网络工作流程中的防护重点

本节主要对新型僵尸网络的工作流程进行研究,分析其中可能受到防御方威胁的敏感步骤,为新型僵尸网络自我保护机制的设计提供依据。

2.3.1节点加入僵尸网络

新型僵尸网络中,节点是否能够作为Servent Bot、以及Servent Bot的ID均是由节点自身决定的,如果防御者能够构造一个ID与Key足够接近的Sybil节点作为Servent Bot加入僵尸网络,则将有效扰乱其他僵尸节点寻找路由,并掌握大量僵尸节点的信息。因此,在有新节点尝试加入僵尸网络时,必须有效判断其身份,阻止Sybil节点加入。

2.3.2节点寻找命令

新型僵尸网络的基干网是PULL类型网络,Servent Bot需要主动寻找命令节点,能否找到命令节点取决于FIND_VALUE返回结果的正确性,如果FIND_VALUE过程中遇到了索引毒化攻击或Sybil攻击所造成的错误〈Key,Value〉,则将无法找到命令节点。

此外,由于所有的节点均根据同一的Key查找命令,必须采取加密传输措施,否则数据包中的Key将成为僵尸网络通信特征码。

2.3.3获取命令并解析

节点获取命令之后,必须判断该命令是否确实来自控制者,否则可能会执行来自防御者的伪造命令。

2.4新型僵尸网络自我保护机制

针对上文中指出的新型僵尸网络工作流程中可能受到威胁的敏感步骤,本文提出如下几种自我保护机制。

2.4.1节点身份认证。

新型僵尸网络的每个节点持有一个对称密钥K,而合法下载软件网络节点及Sybil节点没有该密钥,节点在试图与一个“新”节点(之前未与本节点进行过通信的节点)进行通信之前,使用K将本节点IP、ID所组成的字段进行加密并发送给“新”节点(通过FIND_VALUE或FIND_NODE)。例如节点A在收到一个“新”节点发来的请求时,使用K对其负载进行解密,如解密所得结果与该“新”节点IP、ID相符,则对方是僵尸网络节点,使用K1桶进行通信;若不相符,即认为对方是合法下载软件网络节点或Sybil节点,则使用K2桶进行通信。

该方案的正常运作需要两个条件:首先是整个僵尸网络拥有共同的对称密钥K,因此对密码的坚固性要求很高,应当使用足够长的K和坚固的密码算法,如256位

高级加密标准(Advanced Encryption Standard,AES)在密码学中又称Rijndael加密法;其次是僵尸网络程序必须具备很强的抗逆向分析能力,否则防御方将获取K使得身份认证机制失效,僵尸网络程序的编写者需要采用有效的代码迷惑机制以增强程序的抗逆向能力。

2.4.2信息加密

新型僵尸网络的信息加密机制使用对称密码对所有僵尸网络通信数据进行加密,而如果整个僵尸网络都使用同一个对称密钥,可能会存在很大的风险,一旦防御者通过某种手段获取了密钥,则整个僵尸网络通信将暴露在防御者视野中,因此有必要在新型僵尸网络中使用多个对称密钥,增大防御者的破译难度。

新型僵尸网络每一条通信链路使用一个独立的对称密钥,每个节点需要维护一份IP与Key的对应表{〈Key1, IP1〉,〈Key2, IP2〉, …,〈Keyn, IPn〉},对称密码可以使用128位AES算法。

节点A在于与一个“新”节点B(之前未与本节点进行过通信的节点)通信之前需要首先进行密钥交换,这里采用ECDiffieHellman密钥交换协议:

1)使用随机数k1对椭圆曲线的基点P进行单标量乘法,并将所得的点Q发送给节点B;

2)节点B使用随机数k2对椭圆曲线的基点P进行单标量乘法,并将所得的点R发送给节点A;

3)节点A和节点B分别使用k1对R、k2对Q进行单标量乘法均得点S,双方选择S的x坐标作为对称密钥Key。

ECDiffieHellman密钥交换协议的安全性取决于且仅取决于椭圆曲线密码算法的坚固性,如上所述椭圆曲线密码体制的固有安全性完全可以保证该协议的安全可靠。该协议不仅可以保证通信双方隐蔽地交换密钥,而且每次生成的密钥均为随机数,进一步增大了防御方的破解难度。

2.4.3命令认证机制。

与集中式僵尸网络不同,新型僵尸网络的命令节点位置是不确定的,因此每个节点在收到命令之后应该对命令进行核实,确保其确系来自命令节点,以抵御索引毒化攻击和非授权接管;此外,还应避免消息重放攻击。

命令时使用以如下方式使用公钥签名机制对命令进行签名和认证:

1)控制者生成一个公私钥对〈Key+,Key-〉,将公钥K+硬编码进僵尸网络程序;

2)控制者在命令时将命令C、随机填充R(R的作用是消除通信特征,使相同内容的数据包看似是不一致的)和命令序号N(N随机选择一起始点并每次递增)一起散列,使用K-对散列值进行签名,C、R、N和签名段一起加密后作为命令报文载荷;

3)将K-注入命令节点,命令节点在使用STORE操作向其他节点(ID与Key接近的节点)存储〈Key,Value〉时使用K-对存储命令进行签名(方法同上),完成STORE操作后即将K-销毁;

4)节点收到命令后先对命令报文负载解密,尔后使用K+对签名进行解析,只有当签名无误且命令序号N较前次增加时才认为该命令确系来自命令节点,否则即认为该命令系伪造或重放。

新型僵尸网络的签名算法应当使用椭圆曲线密码(Elliptic Curve Cryptography,ECC)[15],其原因是椭圆曲线密码是目前唯一的指数级公钥密码体制,其相对于RSA和DSA,ECC具有更高的强度(破解256位ECC的运算量远高于2048位RSA和DSA),且运算量相对较小。

3新型P2P僵尸网络生存力分析

3.1反跟踪能力

如防御者试图使用Sybil节点对新型僵尸网络实施跟踪,在没有对僵尸网络程序进行逆向的情况下,无法获得公钥K+,那么Sybil节点在试图加入僵尸网络时将无法通过认证,此后僵尸网络节点使用K2桶与Sybil节点进行通信,Sybil节点无法获得僵尸网络信息。防御者如果要使Sybil节点渗透进僵尸网络,就必须对僵尸网络程序进行逆向以获得K+,而当前各种软件保护技术使得软件逆向存在相当大的困难,这大大增加了防御者跟踪新型僵尸网络的难度。

如防御者使用蜜罐对新型僵尸网络实施跟踪,由于新型僵尸网络节点与大量合法下载软件网络节点进行通信,防御者将难以判断与被跟踪节点联系的是否是僵尸网络节点。

3.2反检测能力

新型僵尸网络在网络通信隐蔽性方面有如下优势:

1)使用的通信协议与合法下载软件完全一样;

上一篇:外墙外保温系统面层裂缝的原因及防控措施 下一篇:离子液体掺杂聚苯胺/纳米铜修饰电极制备及其在...