来源:http://www.arkteam.net/?p=2752
一、概述
女巫攻击(Sybil Attack)是2002年由John R. Douceur在《the Sybil Attack》[1]文中提出的,它是作用于对等(Peer-to-Peer,简称P2P)网络中的一种攻击形式:攻击者利用单个节点来伪造多个身份存在于P2P网络中,从而达到削弱网络的冗余性,降低网络健壮性,监视或干扰网络正常活动等目的。
在P2P网络中,为了解决来自恶意节点或者节点失效带来的安全威胁,通常会引入冗余备份机制,将运算或存储任务备份到多个节点上,或者将一个完整的任务分割存储在多个节点上。正常情况下,一个设备实体代表一个节点,一个节点由一个ID来标识身份。然而,在缺少可信赖的节点身份认证机构的P2P网络中,难以保证所备份的多个节点是不同的实体。攻击者可以通过只部署一个实体,向网络中广播多个身份ID,来充当多个不同的节点,这些伪造的身份一般被称为Sybil节点[2,3]。Sybil节点为攻击者争取了更多的网络控制权,一旦用户查询资源的路径经过这些Sybil节点,攻击者可以干扰查询、返回错误结果,甚至拒绝回复。
二、应用案例
Sybil Attack的思想被广泛用于对抗P2P僵尸网络。以知名P2P僵尸网络Strom[2]为例,其采用了基于Kademlia的Overnet协议,正常节点的行为:
1、每个加入网络中的节点会生成一个ID号用以标识自身;
2、节点通过预设的算法每天生成32个不同key来查询控制命令;
3、控制者会提前在网络中发布这32个key对应的命令<key,command>以供节点查询;
4、根据Overnet协议,<key,command>会存放在K个与该key相邻ID的节点中,并通过递归的方式进行查询。
Sybil节点行为:
1、根据待攻击的key空间生成相应的ID(接近key的哈希值),使得查询请求能有较高概率被路由到Sybil节点;
2、主动向网络中的其他节点广播自己的ID,使其出现在其他节点的路由表中;
3、当查询key的路径经过Sybil节点时,Sybil节点返回错误信息,或者重路由到其他Sybil节点,使得正常节点无法进行C&C通信获取控制命令。
图1 Sybil attack in P2P botnet
如图1所示,在僵尸网络中部署一个恶意实体A,同时伪造出多个Sybil节点B、C、D,查询路径经过他们中任意一个,其实都是由恶意实体节点A所控制。Sybil节点应该根据P2P协议的特点进行针对性的部署,以实现最大概率的出现在查询路径中。防御者通过部署Sybil节点不仅可以对P2P僵尸网络的活动进行干扰或阻断,还能实施索引污染、规模测量、活动监视等多种打击策略。