一种p2p网络中基于块的病毒检测方法

文档序号:7958840阅读:271来源:国知局
专利名称:一种p2p网络中基于块的病毒检测方法
技术领域
本发明网络病毒检测技术领域,特别是涉及P2P网络环境下的病毒检测方法。
背景技术
P2P网络相对传统网络中的C/S结构而言是一种全新的变革,发展到今日,随着使用人数的快速增长,P2P在网络电视,分布式计算,网络数据库,资源共享重要等领域的逐渐普及应用。P2P中的网络安全问题有着与普通网络安全中的一些共性,同时也有自己的一些特点,只有有针对性地进行P2P网络结构网络安全研究,才能够有效的抵御针对P2P网络结构的攻击。然而,知名杀毒软件Norton、Kaspersky等能够成功检测到网络中传播的病毒与蠕虫,却不能检测到P2P中传播的病毒,原因在于P2P软件有分块传输机制以及数据包结构,病毒特征码就有机会被分配到不同的数据块中通过P2P软件传播而不被检测到。与传统网络中的安全问题相比,P2P网络给研究人员带来了新的挑战。P2P网络中的病毒和蠕虫攻击较传统网络中有了更大的灵活性,出现了专门针对P2P系统的网络病毒,能够利用系统漏洞达到迅速破坏、瓦解、控制系统的目的。例如,P2P中蠕虫可以不需要全网扫描IP来进行攻击,因为有大量的peer链接到当前主机,主机在共享网络资源时也会大量链接其他主机,此时病毒和蠕虫就可以通过这些链接进行感染,提高了效率,范围更广,破坏性更大。可以说若不能有效检测P2P网络中的病毒,那么P2P的使用者越多,用户被病毒感染的可能也就越大。P2P网络病毒早在2002年就有出现,同时也出现了针对P2P网络病毒检测与防御的研究。P2P网络设计有方便的共享和快速的选路机制,这为蠕虫病毒以及分布式拒绝服务攻击(DDoQ提供了更好的入侵P2P网络机会。由于P2P网络中的逻辑相邻的节点地理位置可能相隔很远,而参与P2P网络的节点数量又非常大,因此通过P2P系统传播的病毒波及范围大,覆盖面广,从而造成的损失会很大。另外,现有的P2P应用都有很强的防火墙穿越能力,将有可能被恶意代码利用,进一步加强他们的传播能力。在P2P网络中每个节点防御病毒的能力是不同的,只要有一个节点感染病毒,就可以通过内部共享和通信机制将病毒扩散到附近的邻居节点,在短时间内可以造成网络拥塞甚至瘫痪,共享信息丢失,机密信息失窃,甚至通过网络病毒可以完全控制整个网络。P2P的独特网络结构和路由算法也为拒绝服务攻击(DDoQ等提供了温床。在实际应用中主要有以下几种行之有效的病毒检测方法1、基于特征码的病毒检测方法该技术的核心是模式匹配。方法是监视网络中数据,查找具有病毒特征的字符串并加入特征库,但需要在很短的时间内完成对大量数据的处理及对比。可以使用存储特征码的哈希值,增长哈希值长度来减少计算量,例如Rabinfingerprint就是一个非常有效地增长哈希码的方法。此外关于样本的抽取也是在字符串哈希的基础上抽取,既可以加快速度又能保证样本属于同一个子串。基于特征码的病毒检测技术具有高效、准确的特点,但缺点是只要蠕虫的个体稍有变异,这种方法往往就失去效力,需要定期的更新特征库。2、基于流量的病毒检测方法该方法充分利用没有病毒攻击与存在病毒攻击时流量的差异性来实现蠕虫的检测将网络中的几个特征组成向量,病毒不同的攻击方式时所针对的不同量的变化来诊断是否受到了病毒攻击。基于流量的检测方法的难点在于各种参数的阈值的确定,这影响着检测结果的准确性,阈值设置得太低容易造成太多的误报,而如果设置得太高,则又容易造成漏报而起不到应有的检测作用。基于流量的病毒检测技术与其他的病毒检测技术相比较,它不仅对已知的病毒有效,而且能及时地检测未知的病毒,改变了病毒防范的被动局3、基于蜜罐的病毒检测方法早期的蜜罐HoneyPot主要用于防范网络黑客攻击。例如=ReVirt系统,能够检测网络攻击或网络异常行为。其主要实现是在边界网关或易受到网络蠕虫攻击的地方置放多个的虚拟蜜罐,蜜罐之间可以相互共享捕获的数据信息。采用NIDS(网络入侵检测系统)的规则生成器产生网络病毒的匹配规则,当网络蠕虫根据一定的扫描策略扫描存在漏洞主机的地址空间时,蜜罐可以捕获网络蠕虫扫描攻击的数据,然后采用特征匹配来判断是否有网络蠕虫攻击。该方法具有以下优点①蜜罐可以转移网络蠕虫的攻击目标,降低网络蠕虫的攻击效果;②蜜罐为网络安全人员研究网络蠕虫的工作机制、追踪网络蠕虫攻击源和预测网络蠕虫的攻击目标等提供了大量有效的数据;③由于网络蠕虫缺乏判断目标系统用途的能力,所以蜜罐具有良好的隐蔽性。但是此方法还存在以下一些不足①蜜罐能否诱骗网络蠕虫依赖于大量的因素,包括蜜罐命名、蜜罐置放在网络中的位置和蜜罐本身的可靠性等;②蜜罐可以发现大量扫描行为(随机性扫描、顺序扫描等)的网络蠕虫,但针对路由扫描和DNS扫描的网络蠕虫,效果欠佳;③蜜罐很少能在网络蠕虫传播的初期发挥作用。以上各种病毒检测技术各有各自的优点和适用场合,部分检测方法经过实践检验已经在在EarlyBird,Autograph, snort等网络检测系统中得到了应用,并获得了很好的效果。每种方法总有其适用的场合,而在另外一种场景中却未必可用。后面两种病毒检测方法在检测P2P网络中的病毒时就得不到很好的应用,而且很容易出现误检的情况,造成困扰。其中,基于流量的检测方法利用了统计学的规律,检测网络中出现的异常网络流量,以此来判断有可能有病毒或蠕虫,在P2P网络中流量激增或骤减的情况经常发生,若当作病毒爆发将严重影响P2P软件的工作。蜜罐技术本身不提供真实的服务,因此这种技术只对盲目扫描的蠕虫能产生较好的检测效果,而P2P中的病毒能够通过利用P2P软件分布式散列表或者朋友列表来达到有目的的扫描,避免了盲目扫描,蜜罐技术在这种情况下就会失效。无论在什么情况下通过检测数据流中是否包含病毒特征码的方法都能够检测到病毒的传播或感染,因此通过检测P2P软件中的数据流中是否包含病毒特征码能够有效遏制病毒在P2P网络中进行传播。

发明内容
基于上述技术问题,本发明提出了一种P2P网络中基于块的病毒检测方法,在P2P网络中基于病毒特征码的分块重组检测,通过分析病毒逃过检测的原因以及P2P网络中病毒的传播规律,解决了 P2P网络中的病毒漏检问题。
本发明提出一种P2P网络中基于块的病毒检测方法,该方法包括以下步骤步骤1 在本地通过网卡进行网络p2p数据抓包,依据协议Winpcap (windowspacket capture)进行初步过滤;步骤2 对步骤1中从网卡抓取得到的P2P网络数据包信息进行预处理,该步骤具体包括以下步骤去除数据帧头部,对IP网络层数据包碎片重组,IP碎片重组过程具体包括读入数据包分片,根据分片标志位检查是否允许分片,若允许分片,检查分片偏移是否为0,若为0读入下一个数据分片,否则根据数据报分片的源地址查找原数据报的链表,将分片插入链表中,循环判断所有的数据报链表,若已到齐,组装为完整数据报送由TCP流重组模块;解析过程TCP传输层协议包解析IP碎片重组后的数据包,具体包括取得TCP起始地址,对TCP数据进行校验,如果不通过则舍弃,通过则对TCP流进行重组,重组后的得到应用层需要的数据包;重组过程应用层p2p数据包解析TCP层重组后的数据包,具体包括将接受的数据包根据源地址和目的地址组织成链表,当数据流到来时检查源地址和目的地址,若存在插入链表中缓存,否则新建一个链表表示新的链接,将组装后的数据送入应用层头部剔除,得到应用层数据;分离过程根据应用层协议字段进一步分离P2P数据流,减少不必要的数据处理,具体包括以基于应用层特征字符匹配的方法检验数据中的应用层协议字段,进一步过滤P2P流量,分离的对象应用层数据和结果分离后的P2P数据,不必要的数据处理是应用层数据中的非P2P数据,它是通过分离P2P数据流来实现的;通过上述预处理,使数据包信息能够被用于病毒检测;步骤3 检测经过处理后的数据信息是否含有病毒,对经过步骤( 处理后得到的应用层p2p数据包信息,根据病毒库中的病毒特征码检测到该数据信息中是否含有病毒。所述步骤1的依据协议Winpcap (windows packet capture)进行初步过滤的步骤中,具体是根据Winpcapp提供的p2p数据信息的源地址、目的地址、源端口、目的端口选项进行初步的过滤。所述步骤3的检测经过处理后的数据信息是否含有病毒的步骤中,若当前的数据信息中只能检测到部分信息与病毒库中的某个特征码的一部分吻合,先将这部分数据信息进行缓存,与之后得到的数据信息进行组合,重新进入检测部分进行检测是否存在病毒。与现有技术相比,本发明P2P网络中的病毒检测是保证P2P网络安全的一个重要方面,本文中提出的P2P网络中的分块重组病毒检测方法是专门针对P2P网络的一些特点和不同于传统网络的机制提出的,经过实验,在不同的分块情况下,分块重组病毒检测方法在检测P2P网络中传输的病毒时较传统检测方法检测率平均提高了 72%,可见此方法是一种高效的检测P2P网络病毒的方法。此外,现已将本文提出的P2P分块重组病毒检测功能加入到开放源代码的eMule客户端中,正在测试过程中。本专利基于以上情况,提出了一种P2P网络基于病毒特征码的分块重组检测方法,避免了现有检测软件因为忽视P2P特点和P2P传输文件机制而造成的漏检情况。如图1所示,为现有技术中P2P网络中文件的分块机制示意图。


图1为P2P网络中的文件的分块机制示意图;图2为系统整体流程图; 图3为病毒检测模块处理流程;图4为实验网络拓扑结构图。
具体实施例方式如图1所示,本发明的P2P网络中基于块的病毒检测包括三个主要模块网卡抓包模块、数据包预处理模块和P2P病毒检测模块。网卡抓包模块的主要功能就是通过本地网卡进行网络数据抓包,所要抓取的网络数据包为具备p2p网络数据包特征码的P2P网络数据包,并且依据协议Winpcap提供的源地址、目的地址、源端口、目的端口等选项进行初步的过滤。数据包预处理模块的主要功能是对从网卡抓取得到的未加处理的P2P网络数据包信息进行预处理,从而使数据包信息能够被用于病毒检测。这是一个比较繁琐但也比较重要的环节,能否得到应用层数据是进行下一步检测的关键。这里的预处理包括1)去除数据帧头部,对IP网络层数据包碎片重组,IP碎片重组过程具体包括读入数据包分片,根据分片标志位检查是否允许分片,若允许分片,检查分片偏移是否为0,若为0读入下一个数据分片,否则根据数据报分片的源地址查找原数据报的链表,将分片插入链表中,循环判断所有的数据报链表,若已到齐,组装为完整数据报送由TCP流重组模块;2)TCP传输层协议包解析IP碎片重组后的数据包,该解析过程具体包括取得TCP起始地址,对TCP数据进行校验,如果不通过则舍弃,通过则对TCP流进行重组,重组后的得到应用层需要的数据包;3)应用层p2p数据包解析TCP层重组后的数据包,该重组过程具体包括将接受的数据包根据源地址和目的地址组织成链表,当数据流到来时检查源地址和目的地址,若存在插入链表中缓存,否则新建一个链表表示新的链接,将组装后的数据送入应用层头部剔除,得到应用层数据;4)并根据应用层协议字段进一步分离P2P数据流,减少不必要的数据处理,该分离过程具体包括以基于应用层特征字符匹配的方法检验数据中的应用层协议字段,进一步过滤P2P流量,分离的对象应用层数据和结果分离后的P2P数据,不必要的数据处理是应用层数据中的非P2P数据,它是通过分离P2P数据流来实现的(即上一步3)的分离操作)。P2P病毒检测模块的主要功能是检测经过处理后的数据信息是否含有病毒。经过上述处理得到了应用层数据信息,现在就能够根据病毒库中的病毒特征码检测到该数据流中是否含有病毒,但是这却并没有结束。虽然在前面处理中也对应用层P2P数据包的解析,但是由于P2P软件的文件分块机制和分包机制,若当前的数据信息中只能检测到部分信息与病毒库中的某个特征码的一部分吻合,系统就认为它有可能就是被分割的病毒特征码的一部分,这样要先将这部分数据进行缓存,与后来的数据信息进行组合,重新进入检测部分进行检测,病毒检测部分的处理流程如图3所示。如图3所示,为本发明的P2P网络中病毒检测方法整体流程图,与传统网络中检测方法有一些相似之处,该方法具有专门针对P2P软件的文件分块机制进行处理以及P2P应用层数据包的处理。具体包括以下步骤
对网络中的数据包通过处理后得到应用层数据,根据P2P网络软件应用层头部信息识别网络中P2P分块的第一个数据包(eDonkeyID字段为0XE3或者0XC5),根据对eMule协议的分析同一个大的数据块(9. 28MB)会从同一个Peer中请求下载,在获得第一个数据包后得到请求块的大小以及此数据包的源IP地址和源端口号,对下面到来的同样的IP和端口号的数据包进行检测,若有部分与特征库中的其中一个特征码匹配,就将此数据块缓存,等待与后到达的数据分块进行组合进行第二次部分匹配检测,直到确定此数据块中不含有病毒特征码或者含有某一个特征码为止。
权利要求
1.一种P2P网络中基于块的病毒检测方法,其特征在于,该方法包括以下步骤步骤(1)在本地通过网卡进行网络p2p数据抓包,依据协议Winpcap进行初步过滤;步骤O)对步骤(1)中从网卡抓取得到的P2P网络数据包信息进行预处理,该步骤具体包括以下步骤去除数据帧头部,对IP网络层数据包碎片重组,IP碎片重组过程具体包括读入数据包分片,根据分片标志位检查是否允许分片,若允许分片,检查分片偏移是否为0,若为0读入下一个数据分片,否则根据数据报分片的源地址查找原数据报的链表,将分片插入链表中,循环判断所有的数据报链表,若已到齐,组装为完整数据报送由TCP流重组模块;解析过程TCP传输层协议包解析IP碎片重组后的数据包,具体包括取得TCP起始地址,对TCP数据进行校验,如果不通过则舍弃,通过则对TCP流进行重组,重组后的得到应用层需要的数据包;重组过程应用层p2p数据包解析TCP层重组后的数据包,具体包括将接受的数据包根据源地址和目的地址组织成链表,当数据流到来时检查源地址和目的地址,若存在插入链表中缓存,否则新建一个链表表示新的链接,将组装后的数据送入应用层头部剔除,得到应用层数据;分离过程根据应用层协议字段进一步分离P2P数据流,减少不必要的数据处理,具体包括以基于应用层特征字符匹配的方法检验数据中的应用层协议字段,进一步过滤P2P流量,分离的对象应用层数据和结果分离后的P2P数据,不必要的数据处理是应用层数据中的非P2P数据,它是通过分离P2P数据流来实现的;通过上述预处理,使数据包信息能够被用于病毒检测;步骤(3)检测经过处理后的数据信息是否含有病毒,对经过步骤( 处理后得到的应用层p2p数据包信息,根据病毒库中的病毒特征码检测到该数据信息中是否含有病毒。
2.如权利要求1所述的P2P网络中基于块的病毒检测方法,其特征在于,所述步骤(1)的依据协议Winpcap (windows packet capture)进行初步过滤的步骤中,具体是根据Winpcapp提供的p2p数据信息的源地址、目的地址、源端口、目的端口选项进行初步的过滤ο
3.如权利要求1所述的P2P网络中基于块的病毒检测方法,其特征在于,所述步骤(3)的检测经过处理后的数据信息是否含有病毒的步骤中,若当前的数据信息中只能检测到部分信息与病毒库中的某个特征码的一部分吻合,先将这部分数据信息进行缓存,与之后得到的数据信息进行组合,重新进入检测部分进行检测是否存在病毒。
全文摘要
本发明涉及网络病毒检测技术领域,公开了一种P2P网络中基于块的病毒检测方法,该方法包括以下步骤步骤(1),在本地通过网卡进行网络p2p数据抓包,依据协议Winpcap(windows packet capture)进行初步过滤;步骤(2)对步骤(1)中从网卡抓取得到的P2P网络数据包信息进行预处理,使数据包信息能够被用于病毒检测;步骤3检测经过处理后的数据信息是否含有病毒,对经过步骤(2)处理后得到的应用层p2p数据包信息,根据病毒库中的病毒特征码检测到该数据信息中是否含有病毒。与现有技术相比,本发明避免了现有检测软件因为忽视P2P特点和P2P传输文件机制而造成的漏检情况。
文档编号H04L29/06GK102387151SQ20111034036
公开日2012年3月21日 申请日期2011年11月1日 优先权日2011年11月1日
发明者张冰怡, 齐彦君 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1