标题 | 一种基于比特信的新型僵尸网络 |
范文 | 陈良 王玉龙 摘要:无论是传统的IRC僵尸网络,还是后来出现的p2p僵尸网络,都因为命令与控制(C&C)服务器或启动(bootstrap)节点无法隐藏,而具有天然的弱点。受比特币的启发,一种新型的可用来向另一人或者多个其他订阅者发送加密消息的P2P网络协议——比特新(Bitmessage)的出现改变了这一现状。基于比特信作为僵尸网络的命令控制信道几乎无法被追踪,大大提高了僵尸网络的隐蔽性。本文提出了一种基于比特信的新型僵尸网络,通过分析其技术原理,探讨针对这种类型的僵尸网络的应对策略,以帮助读者认识这一新型安全威胁。 关键词:网络安全;僵尸网络;比特信;P2P网络 中图分类号:TP311 文献标识码:A 0 引言 随着互联网的发展,传统的蠕虫、木马等技术手段逐渐发展成一种新兴的攻击平台——僵尸网络(Botnet)。僵尸网络是指在所有者无意识或非合作的情况下,由黑客远程控制的大量计算机(Bots)组成的计算机网络,这些计算机可以接收并执行黑客的指令、受到黑客的统一控制(Command and Control,C&C)。这种技术平台具有隐蔽、高效、灵活的特点,利用这一平台进行的大规模分布式拒绝服务攻击(DDoS)、垃圾邮件群发、钓鱼网站、密码破解等恶意行为已经成为当今互联网安全的一大威胁。 早期的僵尸网络在基于IRC协议的公共聊天室基础上发展起来,传统的IRC僵尸网络暴露出易于检测和破坏的弱点。黑客随即开发出基于P2P协议和HTTP协议的僵尸网络。这些僵尸网络更加隐蔽、健壮,促使国际社会对于僵尸网络的防范投入了空前的力量。由于基于P2P协议的僵尸网络依赖启动节点(bootstrap节点或seed节点)、基于HTTP协议的僵尸网络容易被阻断等特点,使得它们的命令控制信道十分脆弱。因此,建立一个健壮的、加密的、隐蔽的通信信道,成为僵尸网络的一大难题。 比特信(Bitmessage)是一种可用来向另一人或者多个其他订阅者发送加密消息的网络协议,一个P2P的去中心化和无需第三方提供信用担保的协议。它不需要根证书颁发机构,采用了强大的认证方式,其目的是为了隐匿与消息有关的信息,例如消息的发送者和接收者,以免窃听者窃取传递的消息。在提供这些便利的同时,由于比特信提供了安全的通信信道,存在被黑客利用的风险。目前,国内外意识到比特信存在安全威胁的研究者还不多,本文将提出一种基于比特信的僵尸网络,分析该僵尸网络的特点和技术原理,为研究这种安全威性打下基础。 1 僵尸网络概述 僵尸网络是从计算机病毒、蠕虫、木马等传统网络技术手段的基础上发展而来的,是一种由大量互联网上的主机通过特定的程序连接、沟通,受到黑客命令和控制的计算机网络。这一新兴的技术平台已经成为当今互联网上一种主要的安全威胁,可以被犯罪分子用于DDoS攻击、发送垃圾邮件、暴力破解密码、信息窃取等不法行为。 最早的僵尸程序(Bot)可以追溯到1993年出现的“Eggdrop Bot”,Eggdrop可以帮助IRC网络管理员高效地管理网络。然而很快黑客受到这些良性工具的启发,开发出一系列恶意僵尸程序,并通过这些程序控制受害者的计算机进行非法活动。这些恶意的僵尸网络对网络安全构成了严重的威胁,不仅危害了无辜用户的经济利益、个人隐私,甚至危害到国家安全。 早期的僵尸网络大都基于IRC协议,IRC协议(Internet Relay Chat)是一种基于文本的应用层协议,在互联网早期被广泛应用于实时网络聊天。IRC协议采用C-S架构(客户端-服务器架构),用户使用IRC客户端连接到服务器上,将消息通过频道(Channel)发送给特定群组或用户。许多著名的开源项目都提供相应的IRC频道。 除了IRC协议,HTTP协议也是这类僵尸网络常用的通信协议。与IRC协议相比,互联网中基于HTTP协议的网络流量很大,这使得基于HTTP协议的僵尸网络流量更加隐蔽,其恶意行为也更难检测。同时,基于HTTP协议的流量更容易穿越防火墙的过滤和检测,这在一定程度上保证了控制信道的健壮。 采用一对多C-S模式的僵尸网络的拥有者通过一个命令与控制(Command and Control,C&C)服务器,统一控制着全部僵尸节点,如图1所示。这种结构的僵尸网络拓扑简单,可以简单高效地管理全部节点,被许多僵尸程序采用。基于C&C服务器的命令控制结构的缺点是容易被破坏,由于采用集中控制模式,一旦命令与控制服务器与僵尸节点之间的命令信道被切断,就无从恢复。另外,安全人员可以轻易的通过僵尸节点追溯到命令与控制服务器,一旦该服务器失陷,不但整个僵尸网络就此失效,还有很大的可能性暴露黑客的实际位置。因此,随着技术的发展,这一结构的僵尸网络将被逐渐淘汰。 为了使僵尸网络具有更强的隐蔽性和鲁棒性,黑客们对僵尸网络的组织结构进行了革新,开发出基于P2P协议的僵尸网络。最早被发现的P2P僵尸网络是2002年出现的Slapper,这种僵尸网络中每个受感染的节点均维护一个已知的节点列表。这种早期的P2P僵尸网络没有使用加密认证机制,使其很容易被劫持。后来的僵尸网络如Sinit通过公钥加密对更新过程进行了验证,并且采用随机扫描的方法寻找节点。P2P僵尸网络的一个主要弱点在于其启动过程(bootstrap),使用硬编码的主机地址如Nugache容易被关闭和追踪,而Sinit那样随机扫描的方式又会产生大量的可疑流量降低隐蔽性。因此,新一代的僵尸网络发展出Fast-flux、Domain-flux等技术隐藏boot节点,进一步提高了系统的隐蔽性和健壮性。 除了通信机制和网络结构,僵尸网络的另一个要素是传播机制。僵尸网络自早期的计算机病毒、蠕虫发展而来,自然而然地继承了蠕虫的传播特性。同时又不同于蠕虫的是,僵尸网络的传播通常是受控的,一般采用子网优先的策略,因此僵尸网络具有区域性。现代僵尸网络的主要传播途径包括:漏洞利用、邮件病毒、网站挂马、手机软件等,正是由于传播途径多样化,使得阻止僵尸网络的传播具有很大的困难。 目前应对僵尸网络的方法主要包括检测、追踪、破坏、接管等。僵尸网络的检测方法包括对诸如IRC协议这类明文进行分析、基于可疑流量特征的分析等,这些方法对于基于IRC协议的主流僵尸网络具有较好的效果。对于未采取加密验证机制的僵尸网络,可以通过特定的程序伪造控制报文接管目标网络,进而关闭或破坏僵尸网络。目前,对于基于P2P协议的僵尸网络的检测和防御还缺乏通用化的解决方案,这也是未来安全界值得研究的一大课题。 2 比特信技术 随着互联网的发展,电子邮件的使用越来越普及。电子邮件本身并不提供加密功能,常见的传输协议也使用明文传输,这使得邮件容易遭到怀有不良目的的人窃取。为了保护用户隐私,有保密需求的用户开始使用PGP/GPG等工具对邮件进行加密。但是这类工具具有两个问题,一是配置较为复杂,一般用户很难掌握;其二用户必须找到一个可信的渠道交换电子邮件的密钥。另一方面,即使对邮件进行了加密,邮件的发送者和接收者却无法匿名。 因此,人们理想中的通信协议和通信软件应该具有以下特点: (1)可以对消息进行非对称加密,加密的强度应该足够保证普通用户的使用。 (2)可以隐藏消息的发送者和接收者,对于任何接收了这一消息的用户,如果他不是消息指定的接收者,那么他无法得知消息由谁发送和发往何处。 (3)对于一个消息,其发送者的身份可以进行可靠的验证,保证消息确实来自其声称的发送者,杜绝发送地址的伪造。 (4)没有信任的依赖,用户不需要默认相信一个超然的机构或个人。 (5)用户不需要管理密钥的细节,从而使没有技术背景的普通用户也可以方便的使用。 为了实现这些功能,Jonathan Warren在2012年提出了比特信(Bitmessage)的概念。比特信是受到了P2P加密电子货币比特币的启发提出的,其本质上是一种P2P的通信协议。这种协议是分布不可信的,这意味着用户不需要信任任何一个类似证书颁发机构这样的角色。它不仅可以加密消息的内容,还可以使用强大的认证机制保证消息的发送者和接收者无法欺骗伪造。下面将对比特信的技术细节进行介绍。 比特信吸引人的核心特性是它的认证机制。同比特币钱包一样,比特信使用一个公钥的哈希值作为通信的地址。在创建地址时首先使用SHA-512算法(不同于比特币使用SHA-256),再使用RIPEMD-160算法将哈希值缩短,经过base58编码并加上“BM”前缀后,就可以得到一个比特信的通信地址,例如:BM-2nTX1KchxgnmHvy9ntCN9r7sgKTraxczzyE。 与比特币类似,比特信同样使用一个块链(block chain)作为消息存储的核心。比特信的用户使用客户端互相连接,组成一个P2P网络,并且接收并转发在网络中接收到的所有消息。每个消息在转发前需要经过哈希算法的验证(proof of work),与比特币一样,每个块(block)具有一个随机数(nonce),通过不断变换这一随机数进行哈希碰撞测试,最终验证收到的消息。这个验证的过程类似于比特币中挖矿的过程,其计算量与消息的大小成正比,目前用普通计算机验证一个消息平均需要四分钟左右的时间。尽管这给用户计算机的CPU带来了一定的负担,但这有效的避免了垃圾消息的大量产生。对于每一个用户接收到的消息,用户还会使用自己的私钥尝试解密消息,以此判断消息是否是发送给自己的。 既然每个用户都需要接收网络中所有的消息,那么人们自然需要关心比特信对硬盘的占用情况。为了解决这一问题,比特信设定了一个阈值,当通过比特信网络发送的消息超过这一阈值时,节点会自我隔离形成一个集群或流(stream)。每一个流的编号会编码在每个比特信地址中,这些流构成一个完全二叉树,如图2所示。 当消息的数量超过阈值后,比特信客户端会在当前流的子流中创建新的地址,并把这些地址均视为自己的地址。如果一个节点在其父流中没有地址,那么它只需要维持与自身所在的子流中节点的链接。当节点发送消息时,首先会从比特信地址中解码出目标流的编号。如果自身没有存储数据目标流节点,那么它会向父流询问,经过一个递归的过程,最终找到目标流的节点并发送消息。可见比特信网络中寻址的复杂度是O(log(n)),这一复杂度与常见的结构化P2P协议chord、kademlia一致,可见比特信具有较好的寻址性能。 3 基于比特信的僵尸网络 3.1整体架构 基于比特信的僵尸网络是一个P2P网络,但工作模式类似于集中式的C&C僵尸网络。它的总体架构如图3所示,每个僵尸客户节点(client)硬编码若干个僵尸网络服务节点(servent)的比特信地址。当一个新的僵尸节点被创建时,它会向servent节点发送注册信息,将自己加入到僵尸网络中。为了防止servent失效的问题,僵尸网络的所有者(botmaster)具有添加新的servent节点的权限和能力。 由于整个僵尸网络的通信完全借助于比特信网络,甚至有可能每个僵尸节点之间都没有直接的网络连接,这使得这种新型僵尸网络具有很强的健壮性,很难被根除。 3.2网络初始化 如同一般的P2P网络,基于比特信的僵尸网络同样需要有启动(bootstrap)过程。这个过程类似于Nugache僵尸网络,同样采用硬编码的boot地址。然而与Nugache不同的是,比特信地址具有匿名性,不会因为地址的公开而暴露服务器的实际位置。 僵尸网络的所有者首先建立好若干servent节点,每个僵尸程序中会包含一个servent节点列表。当一个新的僵尸节点准备加入网络时,它首先随机向这些servent节点发送注册消息。而servent节点则维护一个网络中所有节点的比特信地址列表,当收到一个注册消息时,它会更新这一列表。每隔一定的时间间隔,client节点应该向servent节点汇报自己的存活状态,如果一个client节点长期静默,servent节点就会将它从列表中移除,表示该节点已经失效。 3.3通信机制 一旦节点加入到僵尸网络中,僵尸网络的所有者就可以通过比特信地址查询节点状态、发送控制指令。不同于一般的P2P僵尸网络,基于比特信的僵尸网络通信机制更类似于传统的C&C模式。servent在网络中扮演服务器的角色,所有servent节点都订阅僵尸网络所有者的唯一比特信地址。而client节点作为客户端被动的接收来自servent节点的指令。 对于client节点来说,每隔一定时间就会向所属的servent节点确认其存活状态。如果client节点没有收到servent的回应,那么它就认为servent节点因安全人员或用户的防护措施失效,他会尝试向其他servent节点注册,以恢复自己在僵尸网络中的位置。 3.4防护机制 基于比特信的僵尸网络最大的优势就在于其隐蔽性。通常来说,针对僵尸网络的防护措施有三种类型:检测、追踪和反制。由于比特信使用RSA算法加密消息,这使得加密的报文几乎无法被破解。因此,比特信僵尸网络的通信流量与一般的比特信客户端没有区别。由于无法区分普通比特信和僵尸网络的流量,对于这种僵尸网络的检测也就无从下手。 另一方面,由于比特信采用严格的认证机制,尽管网络中的比特信客户端均可以接收到僵尸网络的报文,这使得网络溯源系统无法对报文进行追溯。而由于一般节点无法对这些报文进行解密,这保证了逻辑上只有通信的接收者能够得到消息。早期的IRC僵尸网络和早期的P2P僵尸网络如Slapper,由于缺乏认证机制,使得僵尸网络可以被他人劫持,从而破坏僵尸网络。基于比特信的僵尸网络中,botmaster的比特信地址是硬编码在僵尸程序中的,因此,只要僵尸网络所有者的比特信私钥没有泄露,就不存在被劫持的风险。 4 实验测试 正如上文介绍,基于比特信的僵尸网络最大的优势是其隐蔽性和鲁棒性。本章将对该网络进行模拟测试,以验证其性能优势。我们使用NS2仿真一个具有5000个节点的僵尸网络,其中有1000个servent节点。通过随机移除servent节点,将破坏网络的联通性,利用僵尸网络中仍可有效联络的节点数目衡量网络的抗毁能力。 如图4所示,对于实验网络随机的移除其中的servent节点,破坏僵尸网络的完整性。当移除的servent节点在800以下时,网络中活跃的节点始终保持在90%以上。这说明基于比特信的僵尸网络具有很强的健壮性,即使大部分servent节点被摧毁仍然能够保持网络的运行。 如前文所说,当client节点无法与它所属的servent节点取得联络时,它会从servent节点列表中随机地选择新的节点进行注册。这使得基于比特信的僵尸网络具有自恢复特性,能够从一定的破坏中恢复过来。由于比特信网络中消息的验证需要一定的时间,因此这个恢复的时间可以用来衡量僵尸网络的恢复性。 如图5所示,当移除的servent节点数较少时,僵尸网络可以很快的从破坏中恢复。但是,随着移除的节点数增加,僵尸网络恢复的时间成指数增长。这使因为当僵尸节点被破坏的较多时,比特信网络中僵尸网络所属的子流需要验证的消息大幅的增加了。从中我们可以看出,尽管基于比特信的僵尸网络具有破坏恢复的能力,但是当网络的损坏程度较大时,所需的恢复时间会大幅增加。从这个角度上说,尽可能的破坏僵尸网络中的节点仍然可以在一定程度上抑制其危害性。 5 防范策略 针对本文提出的基于比特信的僵尸网络,传统的防护手段是难以奏效的。从僵尸网络的检测上说,网络管理者应该密切监控网络的流量。对于网络中的P2P流量应该引起足够的重视。如果是安全性要求较高的网络应该配置防火墙过滤比特信的报文。从主机的角度看,比特信的一个缺点是消息验证时占用较大的CPU资源,用户应该时刻注意本机的异常状态。与传统P2P网络的路由算法相比,基于比特信的僵尸网络通信效率较低,这也是这种僵尸网络的弱点之一。 由于比特信具有消息验证工作量大的特点,通过向僵尸网络所属流发送垃圾消息,可以在一定程度上减缓网络的响应时延,从而降低网络的性能。另一方面,通过破坏比特信僵尸网络的servent节点,仍然可以在很大意义上抑制僵尸网络继续发挥作用。 6 结论 本文提出了一种基于比特信技术的新型僵尸网络。由于比特信是近两年出现的新兴技术,目前国内外对于它的应用仍处在初步阶段,对于其在网络安全领域的关注则更少。但是通过本文的分析可以看出,这种技术的匿名特性正如Tor、Gnutella等技术一样,具有应用于网络犯罪的潜力。因此,尽早对这类僵尸网络进行前瞻性的研究,对于网络安全具有重要的意义。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。