僵尸网络分类

僵尸网络按照命令与控制机制不同可以分成:IRC(Internet Reply Chat)协议僵尸网络、HTTP(Hypertext Transport Protocol)协议僵尸网络和P2P(Peer to Peer)协议僵尸网络。IRC协议僵尸网络和HTTP协议僵尸网络较为相似,同属C/S即Client/Server僵尸网络结构,均存在核心服务器,控制命令都要通过核心服务器进行发布,区别在于使用的协议不同。

P2P协议僵尸网络具有节点对等特性,所有僵尸网络主机既是客户端也是服务器,有效克服了IRC和HTTP僵尸网络容易被检测发现以及过度依赖核心服务器的缺陷。

P2P僵尸网络功能结构

主体功能模块包含**命令与控制模块、通讯模块和传播模块.**命令与控制模块负责解析邻居节点发送的控制指令并将 解析好的指令发送给相关模块执行;通讯模块负责与邻居节点的信息交互,包括接收邻居节点的控制指令并把该控制指令发送给其他邻居节点、与邻居节点交换邻居节点列表以及根据需要将执行结果返回给邻居节点.传播模块负责传播僵尸程序,不断扩大僵尸网络规模.

辅助功能模块包含**僵尸主机控制模块、下载与更新模块和躲避检测与对抗模块.**僵尸主机控制模块负责完成实施命令与控制模块解析的控制者指令,如窃取信息、实施攻击等;下载与更新模块负责下载并更新僵尸程序,从而使得僵尸程序功能不断完善;躲避检测与对抗模块负责识别侦测环境并躲避侦测工具的检测与分析,从而提高僵尸网络的生存能力.

P2P僵尸网络结构

可分为集中式P2P僵尸网络非结构化P2P僵尸网络结构化P2P僵尸网络

集中式P2P僵尸网络由一个中央服务器以星状的形式与各僵尸主机连接,但这种连接不是物理上的星状拓扑,而是一个抽象虚拟的星状结构.在集中式P2P僵尸网络中,中央服务器负责存储、管理和组织僵尸主机信息,各个新感染的僵尸主机加入僵尸网络时要首先连接中央服务器并获得僵尸主机列表信息,新感染的僵尸主机通过与列表中的僵尸主机建立连接加入网络.

集中式P2P僵尸网络结构的优点是维护简单,管理高效,控制者可以随时掌握僵尸网络所有僵尸主机信息,并能够高效地组织在线活动的僵尸主机进行各种攻击行为,控制指令从发出到执行的延迟较短.缺点是中央服务器的瘫痪将对整个僵尸网络影响较大,且易于被检测发现.典型的集中式P2P僵尸网络实例有Phatbot、SpamThru等.

非结构化P2P僵尸网络无中央节点,僵尸主机之间均为对等连接.它没有固定、严格的拓扑结构,是一个随机生成、松散组织的普通图,不严格遵循某种形状,只是符合小世界模型或幂律模型,从本质上看也是僵尸主机自发形成的,

非结构化P2P僵尸网络结构的优点是可以达到非常高的安全性、匿名性和稳定性,部分僵尸主机被发现或切断并不影响整个僵尸网络的运行,但其缺点是控制者不能完全掌握僵尸网络所有僵尸主机的信息,且路由效率不高,容易形成互相分离的僵尸子网,从而使得控制者指令不能到达所有在线活动僵尸主机,且从指令发出到僵尸主机执行存在较大延迟.典型的非结构化P2P僵尸网络实例有Sinit、Nugache等.

结构化P2P僵尸网络与非结构化P2P僵尸网络一样,也不存在中央节点,所有僵尸主机既是服务器又是客户端,但结构化P2P僵尸网络有一个严格的覆盖网拓扑结构,如带弦环、多维空间、超立方体、蝴蝶形等.结构化P2P僵尸网络采用分布式散列表技术来组织网络中的僵尸主机,分布式散列表使用安全的一致性散列函数将各个僵尸主机映射到覆盖网中,其中最著名的就是SHA系列函数,它能产生均匀、随机、与输入无关的散列值,且冲突概率极小.

结构化P2P僵尸网络结构的优点是不仅具有非常高的安全性、匿名性,而且路由效率较高,控制者虽然不能掌握所有僵尸主机的信息,但其指令可以通过若干跳到达所有在线活动的僵尸主机,且延迟时间较短.缺点是节点的频繁加入和退出容易造成网络波动,从而形成多个互相分离的僵尸子网,稳定性较差.典型的结构化P2P僵尸网络实例有PeacommMl等.

P2P僵尸网络工作机制

可分为四个阶段:传播阶段、感染阶段、通讯阶段和攻击阶段。

传播阶段

传播阶段是指P2P僵尸网络不断传播僵尸程序到新的主机,从而不断扩大僵尸网络规模的过程.P2P僵尸网络的传播方式主要分为主动传播和被动传播两种类型.主动传播主要通过攻击系统漏洞、扫描后门程序等方式进行.该方式一般借助于传统的蠕虫病毒自动进行传播,对于重要的网络节点,控制者也可以通过密码破译、缓冲区溢出等攻击方式进行手动攻击.被动传播主要通过发送病毒邮件、钓鱼网站脚本、即时通信软件及文件资源共享等方式进行.该方式主要利用网络用户的心理弱点和不良上网习惯,引诱用户进入预先设计好的圈套中,从而实现将僵尸程序植入用户主机的目的.

感染阶段

感染阶段是指僵尸程序植入新感染节点后,新感染节点加入僵尸网络的过程.其基本过程如下: (1)新感染节点A发出加入网络请求指令;(2)收到请求指令的僵尸主机B将回复一个询问指令,以获取新感染节点的IP地址等相关信息;(3)新感染节点回复报文,报告自己的相关信息;(4)僵尸主机B将新感染节点A的相关信息进行记录,并将自己的僵尸网络邻居节点列表发送给新感染节点A;(5)新感染节点A或僵尸主机B向自己的邻居节点发出公告,以告知新感染节点A的加入.对于集中式P2P僵尸网络,过程(2)、(4)、(5)由中央服务器完成.对于结构化P2P僵尸网络,僵尸主机B在过程(4)中还要先协调僵尸网络中的僵尸主机为新感染节点A生成一个唯一D标识.

通讯阶段

通讯阶段是指僵尸网络中的僵尸主机自发进行信息交互的过程.P2P僵尸主机为了保持与邻居节点的连接状态并获得僵尸网络最新消息,必须定期或不定期地与邻居节点进行信息交互,通过信息交互,P2P僵尸主机可以获得最新的邻居节点列表、最新的控制指令序列及最新的僵尸程序更新等.通讯机制的好坏决定了P2P僵尸网络的稳定性和适应性.当前P2P僵尸网络主要的通讯机制有:直接路由、路由指令、广播指令、路径返回和信息同步.

(1)直接路由:当一个僵尸主机想要发送信息给目的主机时,该僵尸主机直接把报文目的地址填成目的主机的IP(Internet Protoc01)地址,并通过网络协议和路由设备将报文转发给目的主机.该方式是邻居节点之间信息交互的常用方式,也是其他通讯机制的基础.

(2)路由指令:当一个僵尸主机想要通过僵尸网络发送一个指令到目的主机时,该僵尸主机不是直接发送该指令给目的主机,而是将指令封装在一个路由指令里,然后把路由指令随机发送给自己的邻居节点.路由指令的头部信息包括目的主机的P地址和最大跳数.当一个僵尸主机收到该路由指令时,首先检查目的主机碑地址是否与自己相同,如果相同则打开路由指令并解析其中包含的指令,如果不相同,则检查最大跳数是否为0,为0则丢弃该报文,否则将最大跳数减1,并随机发送给自己的邻居节点.该方法为控制者提供了有效的匿名性和安全性,因为目的主机收到路由指令报文不能确定发送主机的m地址,而且每次的路由路径是随机不定的,任何单一的僵尸网络检测终端都无法获得全部的报文信息.

(3)广播指令:当一个新感染节点加入僵尸网络时,僵尸主机一般会采用广播的方式来告知新节点的加入,这种方式使得僵尸主机的邻居节点列表保持同步.僵尸主机一般会通过把路由指令中的m地址设为0来表示该指令为广播指令,每个广播命令都有固定的编号,当一个僵尸主机收到未见过的广播指令时,它将会解析指令并执行,并将该指令广播给自己的其他邻居节点.

(4)路径返回:当一个僵尸主机执行完一个路由指令或者广播指令后,如果需要返回相关执行结果给指令发送者,就需要采用路径返回通讯机制,因为指令执行者不知道指令发送者的P地址.该机制的基本原理就是按照指令的传送路径将回馈信息返回给指令发送者.

(5)信息同步:每个僵尸主机都会维护一张邻居节点列表,每过一段时间,僵尸主机都会与全部或部分邻居节点进行联系,以实现与邻居节点的信息同步.其中主要包括交换邻居节点信息、更新僵尸程序等.

攻击阶段

攻击阶段是指僵尸主机收到控制者指令并按照指令实施攻击的过程.僵尸主机接收指令的方式分为pull方式和push方式.pull方式是指僵尸主机定期从指定地方获取指令,该方式多见于集中式P2P僵尸网络;push方式是指僵尸主机从邻居节点那里接收指令并将指令转发给自己其他邻居节点的方式,该方式在P2P僵尸网络中应用较为广泛.

P2P僵尸网络的检测方法
基于僵尸网络流量和行为特征的检测方法

基于僵尸网络流量特征的检测方法以文献[8-10]为代表,其基本思想是通过分析P2P僵尸网络在各个生命周期产生的特殊网络数据,找出P2P僵尸网络的流量和行为特征并生成特征向量,然后用决策树等机器学习的方法对P2P僵尸网络进行检测.特征有ICMP(Intemet Control Message Protoc01)报文异常突然增加ARP(Address Reso-lution Protoc01)报文突然增多SMTP(Simple Mail TransferProtoc01)报文突然增加特定时间段内数据包相似内网主机与外网主机连接相似等.文献[9]分析的特征有使用开放的连接端口且端口可能明确为某个区间使用一个稳定的邻居节点列表等.文献[10]以Peacomm僵尸网络为例,通过分析协议流量、DNS(Domain Name System)查询邮件的交换记录及SMTP连接等信息,提出了能够检测非集中式P2P僵尸网络的相关特性.虽然这些方法能够针对检测P2P僵尸网络有一定效果,但是这些方法并不具有通用性,且许多正常的P2P应用也具备这些方法所提出的区分特征,容易产生误报.

基于行为和聚类的检测方法

僵尸网络的本质特性是僵尸程序与控制者通过命令与控制信道进行通信并执行控制者指令实施恶意行为,由于僵尸程序的指令行为是程序预先设置好的,所以僵尸程序所实施的恶意行为是相似或相关的.

文献[12]所提出的检测框架正是利用这一特性,对相似的通信和恶意行为产生的网络流量进行聚类,并使用交叉关联的方法识别出具有相似通信和恶意行为模式的僵尸主机,它不需要解析僵尸网络命令与控制协议、不需要捕获僵尸程序代码和僵尸网络特征码.

参考:《P2P僵尸网络研究》Journal of Chinese Computer Systems 2012年10月 第10期