一种针对P2P僵尸网络的渐进式节点主动追踪方法及装置与流程

文档序号:26548681发布日期:2021-09-07 23:58阅读:244来源:国知局
一种针对P2P僵尸网络的渐进式节点主动追踪方法及装置与流程
一种针对p2p僵尸网络的渐进式节点主动追踪方法及装置
技术领域
1.本发明涉及信息安全技术领域,尤其涉及一种针对p2p僵尸网络的渐进式节点主动追踪方法及装置。


背景技术:

2.近年来,ddos僵尸网络家族活动依然以 mirai 和 gafgyt 为代表的传统 iot 木马家族为主导。这些传统 iot 木马以增加漏洞及通信控制方式为手段,发展变种。在这种迭代的过程中,产生了mozi 和 bigviktor 等 iot 僵尸网络,进一步加剧了僵尸网络的内斗态势。
3.更为严重的是,mozi僵尸网络攻击目标聚焦存在安全漏洞的物联网设备。随着5g与iot的快速发展,如何监测与防御此类僵尸网络成为掌握物联网安全态势、保障物联网安全的重要工作。
4.此外,有别于传统的僵尸网络通信方法,mozi僵尸网络采用了p2p进行通信与控制,节点进行身份校验,通信流程和通信内容加密,这些措施提高了僵尸网络的隐匿度和顽固程度。
5.僵尸网络节点隐匿于正常p2p网络的高隐匿性僵尸网络模型极大增加了僵尸网络追踪和清理的难度,迫切需要一种的针对p2p型僵尸网络的追踪方法。


技术实现要素:

6.本发明的主要目的在于提出一种针对p2p僵尸网络的渐进式节点主动追踪方法及装置,旨在解决如何提高物联网的网络安全性,实现对物联网僵尸网络的快速准确追踪。
7.为实现上述目的,本发明提供的一种针对p2p僵尸网络的渐进式节点主动追踪方法,应用于包括多个节点的p2p网络中,该方法包括以下步骤:步骤1,构建包括正常p2p节点的初始节点集合;步骤2,选择节点作为中继路由节点,向其发送目标为特定子树下随机节点的find_node请求,接收节点返回的路由表中离特定子树随机节点的最近节点集合。
8.步骤3,遍历所述最近节点集合中的节点,判断所述最近节点集合中的节点是否存在于特定子树中,对存在于特定子树中的节点信息保存至僵尸网络节点列表;遍历结束后,如果所述最近节点集合中的所有节点均不在特定子树中,则随机选择所述最近节点集合中的一个节点为中继路由节点,返回执行步骤1;步骤4,显示获取到的僵尸网络节点列表。
9.其中,所述特定子树为kademlia网络中,根据节点id构建的节点二叉树中mozi节点聚集的子树;其中,所述节点信息包括ip 地址、端口号、节点id。
10.其中,该方法还进一步包括:步骤5,对僵尸网络节点列表中的节点进行验证,发送1:v4:flag(4 bytes)格式的数据,判断所述节点是否发送相同格式的数据,如果是则确定
其为mozi节点。
11.本发明提供的一种针对p2p僵尸网络的渐进式节点主动追踪装置,应用于包括多个节点的p2p网络中,该装置包括:初始节点构建模块,用于构建包括正常p2p节点的初始节点集合;最近节点获取模块,用于选择节点作为中继路由节点,向其发送目标为特定子树下随机节点的find_node请求,接收节点返回的路由表中离特定子树随机节点的最近节点集合。
12.特定子树识别模块,用于遍历所述最近节点集合中的节点,判断所述最近节点集合中的节点是否存在于特定子树中,对存在于特定子树中的节点信息保存至僵尸网络节点列表;遍历结束后,如果所述最近节点集合中的所有节点均不在特定子树中,则随机选择所述最近节点集合中的一个节点为中继路由节点,返回最近节点获取模块;显示模块,用于显示获取到的僵尸网络节点列表。
13.其中,所述特定子树为kademlia网络中,根据节点id构建的节点二叉树中mozi节点聚集的子树;其中,所述节点信息包括ip 地址、端口号、节点id。
14.其中,还装置还进一步包括:验证模块,对僵尸网络节点列表中的节点进行验证,发送1:v4:flag(4 bytes)格式的数据,判断所述节点是否发送相同格式的数据,如果是则确定其为mozi节点。
15.本发明的有益效果包括:(1)以正常p2p节点作为中继路由节点,解决了僵尸网络节点追踪的冷启动问题;(2)通过追踪特定子树尽可能多的获取到这些子树下的节点,然后进行mozi节点的确认,这与漫无目的进行随机节点的mozi确认相比,极大的提升了追踪效率。
附图说明
16.图1为本发明的方法流程图。
具体实施方式
17.kademlia协议(以下简称kad)是美国纽约大学的petarp. maymounkov和david mazieres.在2002年发布的一项研究结果《kademlia: a peerto
ꢀ‑
peer information system based on the xor metric》。简单的说,kad是一种分布式哈希表(dht)技术,通过独特的以异或算法(xor)为距离度量基础,建立了一种全新的dht拓扑结构,大大提高了路由查询速度。
18.在2005 年5 月著名的bittorrent 在4.1.0 版实现基于kademlia协议的dht 技术后,很快国内的bitcomet 和bitspirit 也实现了和bittorrent 兼容的dht 技术,实现trackerless下载方式。
19.kad 现已成为dht的主流实现方式,mozi僵尸网络寄生的p2p网络也是基于kad实现的。kademlia算法是一种分布式哈希存储及路由的算法,基于kad协议实现的p2p网络的每个节点均存放部分资源。此时,需要考虑的问题如下:1. 如何分配存储内容到各个节点
2. 如何找到存储文件的节点/地址/路径如何快速高效的进行目标节点的路由,是kad所解决的一个重要问题。
20.在kademlia协议构建的p2p网络中,所有信息均以的哈希表条目的形式加以存储,这些条目被分散地存储在各个节点上,从而以全网方式构成一张巨大的分布式哈希表。
21.节点距离。kademlia网络中数据关键值(key)、节点id(nodeid)均用160个bit表示,nodeid是加入网络时随机分配的。kad协议规定每一个节点维护如下2个信息:1. 需要存储的资源,资源以<key, value>对的形式存储,可以理解为文件名的哈希值和文件内容。2. 一个路由表,称为“k

bucket”,按node id分层,记录有限个数的其他节点的id、ip地址、端口。
22.在kad网络中,两个节点之间距离dinstance并不是依靠物理距离、路由器跳数来衡量的,而是依靠节点id的异或距离。
23.对上面描述的另一种理解方式:如果将整个网络的节点梳理为一个按节点id排列的二叉树,树最末端的每个叶子便是一个节点。每一个节点的位置都由其 id 值的最短前缀唯一的确定。由节点组成kad网络节点树的过程如下:
‑ꢀ
step1:先把key(如节点id)以二进制形式表示,然后从高位到低位依次按step2~step3处理。
‑ꢀ
step2:二进制的第n位对应二叉树的第n层。
‑ꢀ
step3:如果当前位是1,进入右子树,如果是0则进入左子树(认为设定,可以反过来)。
‑ꢀ
step4:按照高位到地位处理完后,这个key值就对应于二叉树上的某个叶子节点。
24.假设每个节点id是n bits。每个节点按照自己视角拆分完子树后,一共可以得到n个子树。如果分别知道n个子树里的1个节点,那么当前节点就可以利用这n个节点进行递归路由,达到整个二叉树的任何一个子树和节点。并且,维护这n个节点的代价取决于树高。kademlia默认160的树高相对来说维护代价并不高。在实际使用过程中,考虑到健壮性(每个节点可能退出或者宕机)问题,只知道一个节点是不够的,需要多几个节点才比较保险。
25.每个节点按照自己视角拆分完子树后,可以得到n个子树,那么就需要维护n个路由表(对应n个k

桶)。kad算法中就使用了k

桶的概念来存储其他邻近节点的状态信息,这些信息由 (ip address,udp port,node id) 数据列表构成(kad 网络是靠 udp 协议交换信息的)。每一个这样的列表都称之为一个 k 桶,并且每个 k 桶内部信息存放位置是根据上次看到的时间顺序排列,最近( least

recently)看到的放在头部,最后(most

recently)看到的放在尾部。每个桶都有不超过 k个的数据项。
26.kademlia 协议包括四种远程 rpc 操作:ping、store、find_node、find_value。1. ping 操作的作用是探测一个节点,用以判断其是否仍然在线;2. store 操作的作用是通知一个节点存储一个 <key,value> 对,以便以后查询需要;3. find_node 操作使用一个 160 bit 的 id 作为参数。本操作的接受者返回它所知道的更接近目标 id 的 k 个节点的 (ip address, udp port, node id) 信息。这些节点的信息可以是从一个单独的 k 桶获得,也可以从多个 k 桶获得(如果最接近目标 id 的 k 桶未满)。不管是哪种情况,接受者都将返回 k 个节点的信息给操作发起者。但如果接受者所有 k 桶的节点信息加起来也没有 k 个,则它会返回全部节点的信息给发起者。4. find_value 操作和 find_node 操作类似,不同的是它只需要返回一个节点的 (ip address, udp port, node id) 信息。如果本操作的接受者收到同一个 key 的 store 操作,则会直接返回存储的 value 值。为了
防止伪造地址,在所有 rpc 操作中,接受者都需要响应一个随机的 160 bit 的 id 值。另外,为了确信发送者的网络地址,ping 操作还可以附带在接受者的 rpc 回复信息中。递归路由。kad 技术的最大特点之一就是能够提供快速的节点查找机制,并且还可以通过参数进行查找速度的调节。假如节点 x 要查找节点 y,kad 按照如下递归操作步骤进行递归路由查找:1. 计算x 到 y的距离。2. 从 x 的第log2d个 k 桶中取出 α 个节点的信息,同时进行 find_node 操作。如果这个 k 桶中的信息少于 α 个,则从附近多个桶中选择距离最接近d的总共 α 个节点。3. 对接受到查询操作的每个节点,如果发现自己就是 y,则回答自己是最接近y 的;否则测量自己和 y的距离,并从自己对应的 k 桶中选择 α 个节点的信息给 x。4. x对新接收到的每个节点都再次执行 find_node 操作,此过程不断重复执行,直到每一个分支都有节点响应自己是最接近y的。5. 通过上述查找操作,x 得到了 k个最接近y的节点信息。
27.在我们研究mozi样本的时候,发现mozi节点id的前缀有2种:1. 样本文件硬编码的888888(0x383838383838)2. config配置文件中的hp指令所指定的前缀,最常见的88888888(0x3838383838383838)mozi节点id的硬编码前缀的特性,可等价认定mozi节点在p2p网络某些特定子树下出现了聚集现象。mozi节点在通过正常的p2p通信加入网络后,为了快速区分流量,使用1:v4:flag(4 bytes)这样的标识来识别流量是否由其同类节点发出,达到同伙握手识别的目的。
28.flag字节含义如下:0
‑‑‑‑‑
random1
‑‑‑‑‑
hard

code(0x42) or from [ver]2
‑‑‑‑‑
calc by algorithm3
‑‑‑‑‑
calc by algorithmmozi节点在特定子树下的聚集,体现了追踪这些特定子树的必要性。
[0029]
追踪特定子树的目标就是尽可能多的获取到这些子树下的节点,然后进行mozi节点的确认。这与漫无目的进行随机节点的mozi确认相比,极大的提升了追踪效率。
[0030]
现在需要解决的第一个问题就是如何尽可能多的获取特定子树下的节点。此时,就用到了我们在2.2.6节提到的kad协议的特点:节点在响应find_node请求时会返回自己路由表中离目标节点最近的α个节点。
[0031]
如果我们以正常p2p节点作为中继路由节点,向其发送目标为特定子树下随机节点的find_node请求,正常p2p节点会将自己路由表中离特定子树随机节点最近的α个节点返回。这α个节点可能直接存在于特定子树中,即使不在特定子树,其离特定子树也相对更近。如果返回的节点不在特定子树中,我们将以此节点为中继路由节点,继续进行路由表数据的获取,如此循环往复。
[0032]
常见的可用公开的正常p2p节点例如:
‑ꢀ
dht.transmissionbt.com:6881
‑ꢀ
router.bittorrent.com:6881
‑ꢀ
router.utorrent.com:6881
‑ꢀ
bttracker.debian.org:6881通过探测正常p2p节点的特定路由表数据,我们可收集到在特定子树下的大量节点数据。
[0033]
本发明提供的一种针对p2p僵尸网络的渐进式节点主动追踪方法,应用于包括多个节点的p2p网络中,该方法包括以下步骤:步骤1,构建包括正常p2p节点的初始节点集合;步骤2,选择节点作为中继路由节点,向其发送目标为特定子树下随机节点的find_node请求,接收节点返回的路由表中离特定子树随机节点的最近节点集合。
[0034]
步骤3,遍历所述最近节点集合中的节点,判断所述最近节点集合中的节点是否存在于特定子树中,对存在于特定子树中的节点信息保存至僵尸网络节点列表;遍历结束后,如果所述最近节点集合中的所有节点均不在特定子树中,则随机选择所述最近节点集合中的一个节点为中继路由节点,返回执行步骤1;步骤4,显示获取到的僵尸网络节点列表。
[0035]
其中,所述特定子树为kademlia网络中,根据节点id构建的节点二叉树中mozi节点聚集的子树;其中,所述节点信息包括ip 地址、端口号、节点id。
[0036]
其中,该方法还进一步包括:步骤5,对僵尸网络节点列表中的节点进行验证,发送1:v4:flag(4 bytes)格式的数据,判断所述节点是否发送相同格式的数据,如果是则确定其为mozi节点。
[0037]
本发明提供的一种针对p2p僵尸网络的渐进式节点主动追踪装置,应用于包括多个节点的p2p网络中,该装置包括:初始节点构建模块,用于构建包括正常p2p节点的初始节点集合;最近节点获取模块,用于选择节点作为中继路由节点,向其发送目标为特定子树下随机节点的find_node请求,接收节点返回的路由表中离特定子树随机节点的最近节点集合。
[0038]
特定子树识别模块,用于遍历所述最近节点集合中的节点,判断所述最近节点集合中的节点是否存在于特定子树中,对存在于特定子树中的节点信息保存至僵尸网络节点列表;遍历结束后,如果所述最近节点集合中的所有节点均不在特定子树中,则随机选择所述最近节点集合中的一个节点为中继路由节点,返回最近节点获取模块;显示模块,用于显示获取到的僵尸网络节点列表。
[0039]
其中,所述特定子树为kademlia网络中,根据节点id构建的节点二叉树中mozi节点聚集的子树;其中,所述节点信息包括ip 地址、端口号、节点id。
[0040]
其中,还装置还进一步包括:验证模块,对僵尸网络节点列表中的节点进行验证,发送1:v4:flag(4 bytes)格式的数据,判断所述节点是否发送相同格式的数据,如果是则确定其为mozi节点。
[0041]
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多
形式,这些均属于本发明的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1