专利名称:恶意代码检测方法及网络设备的制作方法
技术领域:
本发明实施例涉及网络通信领域,尤其涉及一种恶意代码检测方法及网络设备。
背景技术:
随着网络技术的发展,各种基于网络的应用层出不穷。面对日益突出的网络安全问题,仅靠传统被动的防御已经不能满足要求,于是能够主动检测并防御的入侵检测系统应运而生。在互联网领域,各种入侵检测技术,例如网络漏洞扫描、网页木马扫描、网页分类及数据挖掘技术等均是使用特征库匹配的方法来进行入侵检测和防御的。特征匹配是当前安全厂商检测恶意代码的一种通用方法。当已知一种恶意代码时,从该恶意代码中提取出一条到N条特征串,由这些特征串组成一条规则,用这条规则代表该类型的恶意代码。其中,多模特征匹配算法是一种在对被检测数据块的一次遍历过程中进行多种特征匹配的算法,该算法具有较高的匹配速度,因此得到较为广泛的使用,尤其是AC自动机匹配算法。AC自动机匹配算法包括构造一棵Trie树、构造失败指针和模式匹配三个步骤。在AC自动机匹配算法中,构建Trie树的过程较慢,且所需内存较大,因此,随着网络资源越来越丰富,检测恶意代码用的特征库越来越庞大,即使是使用AC自动机匹配算法的特征匹配的速度也会越来越低,因此,现有特征匹配算法越来越无法满足恶意代码检测过程对特征匹配速度的需求。
发明内容
本发明实施例提供一种恶意代码检测方法及网络设备,用以提高恶意代码检测过程中的特征匹配速度,提高恶意代码检测的速度。本发明实施例提供一种恶意代码检测方法,包括获取被检测数据块;按照预设划分策略将所述被检测数据块划分为数据片段,获取每个所述数据片段的索引,将所述数据片段的索引和规则库中规则的特征串的基数进行匹配,其中,所述规则库是预先生成的;当所述数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;当所有字符匹配均成功时,判定所述被检测数据块为恶意代码。本发明实施例提供一种网络设备,包括数据块获取模块,用于获取被检测数据块;索引获取模块,用于按照预设划分策略将所述被检测数据块划分为数据片段,并获取每个所述数据片段的索引;索引匹配模块,用于将所述数据片段的索引和规则库中规则的特征串的基数进行匹配,其中,所述规则库是预先生成的;字符匹配模块,用于在所述数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;第一判定模块,用于在所有字符匹配均成功时,判定所述被检测数据块为恶意代码。本发明实施例的恶意代码检测方法及网络设备,在获取被检测数据块后,根据预设划分策略将被检测数据块划分为数据片段,获取每个数据片段的索引,首先将数据片段的索引和预先生成的规则库中所有规则的特征串的基数相匹配,只有在数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,再将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配,当所有字符匹配均成功时,判定被检测数据块为恶意代码。其中,数据片段的索引和特征串的基数的数据量要远小于数据片段或特征串,因此,本发明实施例可以显著提高特征匹配的速度,进而提高恶意代码检测的速度。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明一实施例提供的恶意代码检测方法的流程图;图2A为本发明又一实施例提供的恶意代码检测方法的流程图;图2B为本发明又一实施例提供的步骤201的实施方式的流程图;图2C为本发明又一实施例提供的生成规则库中所有规则的特征串的基数的实施方式的流程图;图2D为本发明又一实施例提供的步骤203的实施方式的流程图;图3为本发明一实施例提供的网络设备的结构示意图;图4为本发明又一实施例提供的网络设备的结构示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明一实施例提供的恶意代码检测方法的流程图。如图1所示,本实施的方法包括步骤101、获取被检测数据块。在本实施例中,网络设备下载互联网上的数据块并对下载的数据块进行检测,则该数据块即为被检测数据块。被检测数据块可以包括Web页面和二进制代码等。本实施例中的网络设备可以是服务器、个人计算机等任何可以从互联网上下载数据的设备。步骤102、按照预设划分策略将被检测数据块划分为数据片段,获取每个数据片段的索引,将数据片段的索引和规则库中规则的特征串的基数进行匹配,并判断匹配结果是
5否为数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中,如果判断结果为是,执行步骤103 ;如果判断结果为否,执行步骤105。其中,规则通常是根据已知的恶意代码预先生成并存放在规则库中的,即规则库中存放着根据已知的恶意代码生成的若干条规则。每条规则包括多个从恶意代码中提取出的特征串,每条规则代表一种恶意代码。在特征匹配过程中,如果一条规则中的全部特征串均被被检测数据块匹配中,也就是说规则中全部的特征串均能在被检测数据块中被发现, 则称该条规则被被检测数据块匹配中,也就意味着该被检测数据块属于该条规则代表的恶意代码。其中,可以根据所获取的特征串的部分字符生成特征串的基数;特征串的基数是特征串的特征描述,即特征串的基数在一定程度上可以表征特征串。获取特征串的基数可以通过对特征串中的部分字符计算获得,计算方式有多种, 只要该计算方式计算特征串基数的运算成本小于通过对整个特征串的字符计算基数的运算成本就可以,以提高运算效率;其中,计算方式可以是取特征串的前η个字节计算md5摘要值,将md5摘要值求和得到特征串的技术,获取特征串基数的方式还可以通过获取特征串前η个字节基数shal 摘要值,将shal摘要值求和的方式获得;本发明实施例通过对特征串中的部分字符进行哈希(HASH)运算生成的;其中部分字符是根据预设获取策略获取的,预设获取策略规定了如何从特征串中获取部分字符,例如可以规定获取特征串的前m个字符作为部分字符,也可以规定从特征串第2个字符开始获取m个字符作为部分字符等等,m是大于等于1的整数。 例如对于长度为L个字节的特征串,可以取其前K个字节并进行HASH计算,HASH运算的结果即为该特征串的基数,其中K < L。对于一条规则,按照相同的预设获取策略,获取该规则中每个特征串的部分字符; 然后对每个特征串的部分字符进行HASH运算,就生成了该规则中所有特征串的基数。在本实施例中,每条规则中所有特征串的基数都是预先生成并存储起来的。其中,存储特征串的基数的方式不做限定,优选的可以采用HASH桶来存储。由上述生成基数的过程可见,特征串的基数的长度要远远小于特征串的长度,故通过表征特征串的基数进行特征匹配时的数据量将明显小于直接以特征串进行特征匹配时的数据量。通常,被检测数据块的数量很大,直接以被检测数据块进行特征匹配时的数据量也很大,为了提高匹配速度,本实施例的网络设备在获取到被检测数据块之后,根据预设划分策略将被检测数据块划分为多个数据片段,并获取每个数据片段的索引,根据数据片段的索引和预先生成的规则库中所有规则的特征串的基数进行匹配,可以降低特征匹配时的数据量,提高匹配速度。其中,对被检测数据块进行分块可根据实际情况来设定划分策略, 例如,设定数据片段长度可以是特征库中最大长度特征串的长度,或者,数据片段长度也可以是从当前数据偏移到整个数据块结尾的长度,数据块的长度等于或大于规则库中特征串的长度就可以。本实施例中,采用的划分策略为数据片段与特征串具有相同长度,即特征串包括多少字符,数据片段也包括多少个字符。而数据片段的索引是数据片段的特征描述,在一定程度上可以表征数据片段。为了与特征串的基数相适应,数据片段的索引可以是对数据片段中的部分字符串进行HASH运算生成的,其中数据片段中的部分字符也是根据预设获取策略获取的,且该预设获取策略与获取特征串中的部分字符的预设获取策略相同;获取数据片段索引的方式还可以是通过数据片段的基数和数据HASH桶的大小取模,例如,令D = 数据HASH桶的大小(size of (数据HSAH桶)),B (η)表示偏移为η的数据片段的基数值, 那么定位该数据片段在数据HASH桶中的索引I (n) =B(n)%D0其中,对于不同规则而言,将数据片段的索引和该规则的特征串的基数进行匹配的过程相同,故在本实施例中以一条规则为例进行说明。网络设备将一条规则中每个特征串的基数与所有数据片段的索引逐一进行匹配;当一个特征串的基数与至少一个数据片段的索引相同时,确定特征串的基数匹配中数据片段的索引;当一个特征串的基数与所有数据片段的索引均不相同时,确定特征串的基数未匹配中数据片段的索引。其中,如果一条规则中所有特征串的基数都匹配中数据片段的索引,在一定程度上意味着该条规则的所有特征串可能会被由被检测数据块划分出的数据片段匹配中,也就是说该规则中所有特征串均可能与某个数据片段相同,故需要做进一步的特征匹配,即执行步骤103。如果一条规则的特征串的基数中存在未匹配中数据片段的索引的基数时,表明该未匹配中数据片段的索引的基数对应的特征串不会被任何数据片段匹配中,也就是说该特征串不会存在于被检测数据块中,故可以直接判定该被检测数据块不会匹配中该条规则,也就可以判定该被检测数据块为非恶意代码。与现有技术中直接以被检测数据块和特征串进行匹配的方案相比,本实施例可以极大的提高匹配速度。步骤103、当数据片段的索引与规则库中一条规则的特征串的基数均匹配中时, 将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配,并判断匹配结果是否为所有字符匹配均成功,如果判断结果为是,执行步骤104 ;如果判断结果为否,执行步骤105。当一条规则中所有特征串的基数均匹配中数据片段的索引时,说明该条规则可能会被被检测数据块匹配中,故需要将匹配中每个特征串的基数的数据片段的索引(即被匹配中的索引)对应的数据片段与被匹配中的基数对应的特征串进行字符比较,也就是判断被匹配中的索引对应的数据片段是否与被匹配中的基数对应的特征串所有字符均相同。如果两者所有字符均相同,确定被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的字符匹配成功;如果两者所有字符不是全部相同,确定被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的字符匹配不成功。如果每个被匹配中的索引对应的数据片段与相应被匹配中的基数对应的特征串的字符匹配均成功,表明该被检测数据块中包括有该条规则中的所有特征串,故该被检测数据块匹配中该条规则;如果所有字符匹配中存在匹配不成功的字符匹配时,判定该被检测数据块未匹配中该条规则。步骤104、判定被检测数据块为恶意代码,并结束操作。即当所有字符匹配均成功时,判定被检测数据块为恶意代码。步骤105、判定被检测数据块为非恶意代码,并结束操作。即当数据片段的索引与规则库中任一条规则的特征串的基数均未匹配中时,或者当所有字符匹配中存在匹配不成功的字符匹配时,直接判定被检测数据块为非恶意代码。本实施例的恶意代码检测方法,通过预先生成规则库中所有规则的特征串的基数,在获取到被检测数据块后对被检测数据块进行分块,获取每个数据片段的索引,首先将数据片段的索引与特征串的基数进行匹配,其中索引与基数远小于数据片段或特征串,极大的降低了特征匹配时的数据量,只有在数据片段的索引与规则库中一条规则中所有特征串的基数均匹配中后才进行数据片段与特征串的字符匹配,极大的提高了特征匹配的速度,进而提高了整个恶意代码检测过程的速度,满足恶意代码检测对检测速度的要求。图2A为本发明另一实施例提供的恶意代码检测方法的流程图。如图2A所示,本实施例的方法包括步骤200、获取被检测数据块。步骤201、根据预设划分策略将被检测数据块划分为数据片段,并获取每个数据片段的索引。其中,预设划分策略可根据实际情况而定。在本实施例中,具体通过对被检测数据块逐位进行偏移,将每次偏移的位置作为数据片段起点,获取与特征串具有相同长度的数据片段,进而获取数据片段的索引。如图2B所示,该实施方式包括以下步骤步骤2011、将被检测数据块从开始位置偏移设定的偏移量。由于在实际匹配过程中,特征串往往出现在被检测数据块的某段数据中,故在本实施例中通过对被检测数据块进行逐位偏移,以保证获取被检测数据块中所有可能匹配中特征串的数据片段。其中,偏移量的初始值为0,每偏移一次偏移量自动加1。当偏移量为 0时,网络设备不对被检测数据块进行偏移,即网络设备从被检测数据块的首位开始获取数据片段。又例如当偏移量为2时,网络设备将被检测数据块从开始位置偏移2个字符,此时被检测数据块的偏移位置为第3个字符,网络设备从第3个字符开始获取数据片段。步骤2012、从被检测数据块的当前偏移位置开始获取数据片段。其中,为了便于与特征串进行匹配,数据片段与特征串的长度相同。如果特征串的长度为L,则从被检测数据块的当前偏移位置开始获取L个字符作为数据片段。步骤2013、根据预设获取策略,获取数据片段的部分字符,对获取的部分字符进行 HASH运算,生成索引。其中,预设获取策略优选为获取数据片段的前K个字符,对前K个字符进行HASH 运算,HASH运算的结果为数据片段的索引。其中,计算数据片段的索引时所用的获取策略与计算特征串的基数时所用的获取策略相同,即在计算特征串的基数时,也要获取特征串的前K个字符,对对前K个字符进行HASH运算,HASH运算的结果为特征串的基数。步骤2014、将获取的索引和与索引对应的偏移量加入HASH桶中。网络设备将索引和索引对应的偏移量同时存储到HASH桶中,一方面便于将数据片段的索引和特征串的基数进行匹配,另一方面当数据片段的索引匹配中特征串的基数时,通过偏移量可以方便的获取与该索引对应的数据片段,且偏移量的数据量较小,占用的存储空间较少,与存储数据片段相比具有节约存储空间的优势。其中,HSAH桶仅是一种较为优选的存储方式,但并不限于此。步骤2015、判断偏移量是否小于被检测数据块的长度与数据片段的长度的差值; 如果判断结果为是,执行步骤2016 ;如果判断结果为否,执行步骤2017。网络设备判断偏移量是否小于被检测数据块的长度与数据片段的长度的差值来判断是否获取到被检测数据块中最后一个长度与特征串相同的数据片段,如果小于表明当前获取的数据片段不是最后一个数据片段,则继续执行步骤2016及其后续步骤,以获取下一个数据片段;如果不小于(这里的不小于实际是指等于),表明当前获取的数据片段是最后一个数据片段,则执行步骤2017,即结束操作。步骤2016、将偏移量加1,并返回执行步骤2011。网络设备将偏移量加1,以继续将被检测数据块的当前偏移位置向下错一位,以从该位置开始继续获取下一个数据片段。步骤2017、结束生成数据片段的索引的操作。下面将以被检测数据块为“AB⑶EFGHIJK”,被检测数据块的长度为11,记数据片段的长度为4,且假设取数据片段的前4个字符(或者也可以取1、2、3个字符)进行索引计算,记偏移量为I,且从0开始为例,对上生成数据片段的索引的过程做进一步说明。其中,被检测数据块的长度与数据片段的长度的差值为7。在后续描述中将省略判断I是否小于7的操作的描述。首先,I = 0,获取的数据片段为ABCD,对数据片段ABCD进行HASH运算,该HASH运算的结果即为与I = 0时对应的索引,记为HI。I = 1时,获取的数据片段为B⑶E,对数据片段B⑶E进行HASH运算,该HASH运算的结果即为与I = 1时对应的索引,记为H2。I = 2时,获取的数据片段为⑶EF,对数据片段⑶EF进行HASH运算,该 HASH运算的结果即为与I = 2时对应的索引,记为H3。I = 3时,获取的数据片段为DETO, 对数据片段DER;进行HASH运算,该HASH运算的结果即为与I = 3时对应的索引,记为H4。 I = 4时,获取的数据片段为EFGH,对数据片段EFGH进行HASH运算,该HASH运算的结果即为与I = 4时对应的索引,记为H5。I = 5时,获取的数据片段为FGHI,对数据片段FGHI进行HASH运算,该HASH运算的结果即为与I = 5时对应的索引,记为H6。I = 6时,获取的数据片段为GHIJ,对数据片段GHIJ进行HASH运算,该HASH运算的结果即为与I = 6时对应的索引,记为H7。I = 7时,获取的数据片段为HIJK,对数据片段HIJK进行HASH运算,该 HASH运算的结果即为与I = 7时对应的索引,记为H8。此时,I等于7,则结束操作。在上述过程中,网络设备会将生成的Hl与I = 0、H2与I = 1、H3与I = 2、H4 与I = 3、H5与I = 4、H6与I = 5、H7与I = 6、H8与I = 7加入到HASH桶中。可见,该 HASH桶中的数据量明显小于被检测数据,且被检测数据块的数据量越大该数据量的差距越明显。网络设备在进行恶意代码检测时,首先将HASH桶中的索引与特征串的基数进行匹配,一方面降低了特征匹配的次数,另一方面每个匹配操作的数据量也降低了,使得整个特征匹配操作的数据量减少了,提高了匹配速度。进一步,在图2B所示实施例的基础上,网络设备在生成数据片段的索引之后将数据片段的索引加入到HASH桶中之前,还包括将数据片段的索引与预先生成的规则库中所有规则的特征串的基数进行匹配的操作。当数据片段的索引匹配中某个特征串的基数时, 说明该数据片段的索引在后续基于索引的匹配过程中会被某个特征串的基数匹配中,故将该数据片段的索引存储到HASH桶中,以便于进行后续的匹配操作;当数据片段的索引未能匹配中任何一个特征串的基数时,说明该数据片段的索引在后续基于索引的匹配过程中不会被任何一个特征串的基数匹配中,将直接丢弃而不存储到HASH桶中。本实施例通过预先对数据片段的索引进行筛选处理,减少了后续基于索引进行匹配时的匹配数据量,进一步提高特征匹配的速度,提高恶意代码检测的效率。步骤202、从存储特征串的基数的HASH桶中获取一条规则中所有特征串的基数。
在本实施例中,预先生成规则库中所有规则中所有特征串的基数,并将生成的特征串的基数存储到一 HASH桶中。如图2C所示,一种生成规则库中所有规则的特征串的基数的实施方式包括以下步骤步骤2021、获取规则库中的规则。可以是,网络设备根据规则标识,从规则库中获取一条未进行过匹配操作的规则。步骤2022、获取获取到的规则中的特征串。可以是,网络设备根据特征串标识,从获取的规则中获取一个未进行过匹配操作的特征串。步骤2023、计算获取到的特征串的基数。网络设备根据预设获取策略从特征串中获取部分字符,对获取的部分字符进行 HASH运算,HASH运算的结果即为特征串的基数。例如假设特征串共包括L个字符,获取特征串的前K个字符(即从特征串的首位开始获取K个字符),对这K个字符进行HASH运算,HASH运算的结果为该特征串的基数。其中,K<L。步骤2024、将计算出的基数存储到HASH桶中。步骤2025、判断获取的规则中是否还存在未被获取过的特征串;如果判断结果为是,返回执行步骤2022 ;如果判断结果为否,执行步骤2026。网络设备根据特征串标识判断是否还有未被获取过的特征串。该步骤用于判断一条规则中是否全部特征串的基数都被加入到了 HASH桶中。步骤2026、判断规则库中是否还存在未被获取过的规则;如果判断结果为是,返回执行步骤2021如果判断结果为否,执行步骤2027。网络设备根据规则标识判断是否还有未被获取过的规则。该步骤用于判断是否对规则库中的全部规则都进行了处理,以保证所有规则中的所有特征串的基数都被加入到了 HASH桶中。步骤2027、结束生成特征串的基数的操作。至此步骤2027,表明已经生成了规则库中所有规则中的所有特征串的基数,并将所有基数加入到HASH桶中。该生成特征串的基数的方法,实现简单、效率较高,且通过HASH桶存储特征串的基数为后续基于特征串的基数进行特征匹配打下了基础。步骤203、将数据片段的索引和获取的规则中的特征串的基数进行匹配,并判断匹配结果是否为规则中所有特征串的基数均匹配中数据片段的索引,如果判断结果为否,执行步骤204 ;如果判断结果为是,执行步骤205。如图2D所示,步骤203的一种实施方式包括以下步骤步骤2031、从获取的规则中的特征串的基数中,获取一个基数。网络设备具体从该条规则的所有基数中,获取一个未经过匹配操作的基数。由于基数是与特征串对应的,故网络设备可以根据特征串标识识别基数是否被获取过并经过匹配操作。步骤2032、将获取的基数在存储数据片段的索引的HASH中进行匹配,判断是否存在与所述获取的基数相同的索引;如果判断结果为是,执行步骤2033 ;如果判断结果为否,执行步骤2034。步骤2033、判断获取的规则中是否还存在未被获取过的基数;如果判断结果为是,返回执行步骤2031,如果判断结果为否,执行步骤2035。步骤2034、判定该条规则中所有特征串的基数中存在未匹配中任何数据片段的索引的基数,结束对此条规则的处理,并转去执行步骤204。步骤2035、判定该条规则中所有特征串的基数均匹配中数据片段的索引,结束对此条规则的处理,并转去执行步骤205。步骤204、判断存储特征串的基数的HASH桶中是否还有未被获取过的规则;如果判断结果为是,返回执行步骤202,如果判断结果为否,执行步骤206。步骤205、将匹配中特征串的基数的索引(即被匹配中的索引)对应的数据片段与被匹配中的基数对应的特征串进行字符匹配,并判断匹配结果是否为所有字符匹配均成功,如果判断结果为是,执行步骤207 ;如果判断结果为否,执行步骤206。在具体实施过程中,网络设备从存储数据片段的索引的HASH桶中获取一个被匹配中的索引,并根据被匹配中的索引对应的偏移量确定该被匹配中的索引对应的数据片断在被检测数据块中的起点,从该起点开始获取被匹配中的索引对应的数据片段;然后将获取的数据片段与被匹配的索引对应的特征串进行字符匹配;如果匹配结果为数据片段与特征串的所有字符均相同,确定字符匹配成功;如果匹配结果为数据片段与特征串的所有字符不全部相同,确定字符匹配不成功。当对所有被匹配中的索引对应的数据片段都进行了字符匹配后判断是否所有字符匹配均成功。另外,在具体实施过程中,也可以逐一对被匹配中的索引对应的数据片段与相应被匹配中的基数对应的特征串进行字符匹配,直到出现字符匹配不成功的结果时为止,而并不一定要对全部被匹配中的索引对应的数据片段进行字符匹配,这样在出现字符匹配不成功的情况下可以及时退出字符匹配操作,节约匹配操作,提高匹配效率。进一步,在本实施例中步骤205是在步骤203判断出一条规则中所有特征串的基数均匹配中数据片段的索引之后才执行的,但并不限于此。例如在步骤203中可以在每对一个基数进行匹配操作后就进行是否被数据片段的索引匹配中的判断操作,并在发现未匹配中数据片断的索引的基数时执行步骤204的操作,而每当发现一个匹配中数据片段的索引的基数时就执行步骤205中的字符匹配操作,并在发现字符匹配不成功的情况时执行步骤206,这种方式可以更为及时的判定出被检测数据块为非恶意代码,并节后续操作,节约资源。步骤206、判定被检测数据块为非恶意代码,并结束操作。当规则库中所有的规则都未被匹配中时,判定该被检测数据块为非恶意代码。步骤207、判定被检测数据块为恶意代码,并结束操作。只要规则库中存在一条规则被匹配中,就判定该被检测数据块为恶意代码。本实施例的恶意代码检测方法,通过预先生成规则库中所有规则的特征串的基数并存放在HASH桶中,在获取到被检测数据块后对被检测数据块进行分块,获取每个数据片段的索引并存储在另一个HASH桶中,首先将索引与基数进行匹配,其中索引与基数远小于数据片段或特征串,极大的降低了特征匹配时的数据量,只有在数据片断的索引与一条规则中所有特征串的基数均匹配中后才进行数据片段与特征串的字符匹配,与现有技术相比,本实施例进行特征匹配的数据量较小,提高了特征匹配的速度,进而提高了整个恶意代码检测过程的速度,满足恶意代码检测对检测速度的要求。在此说明,上述实施例中生成的存储特征串的基数的HASH桶可以保存在网络设备上,当网络设备再次进行恶意代码检测时,可以直接使用该HASH桶,节约每次恶意代码检测时重新生成特征串的基数所消耗的各种资源。另外,上述实施例所生成的存储特征串的基数的HASH桶还可以根据规则库的更新进行更新,对于每次更新可以仅根据预先获取策略对新增的规则中的每个特征串的部分字符进行HASH运算,生成新增规则中每个特征串的基数,并加入到上述存储特征串的基数的HASH桶中,以使存储特征串的基数的HASH桶与特征库保持一致,以保证恶意代码检测的准确度。图3为本发明一实施例提供的网络设备的结构示意图。本实施例的网络设备可以是服务器、个人计算机等任何可以从互联网上下载数据的设备。如图3所示,本实施例的网络设备包括数据获取模块31、索引获取模块32、索引匹配模块33、字符匹配模块34和第一判定模块35。其中,数据获取模块31,用于获取被检测数据块;具体的,数据获取模块31可以下载互联网上的数据块,所下载的数据块即为被检测数据块。该被检测数据块可以包括Web 页面和二进制代码等。索引获取模块32,与数据获取模块31连接,用于按照预设划分策略将被检测数据块划分为数据片段,并获取每个数据片段的索引。索引匹配模块33,与索引获取模块32连接,用于将数据片段的索引和规则库中规则的特征串的基数进行匹配。其中, 规则库是预先生成的。字符匹配模块34,与索引匹配模块33连接,用于在数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配。第一判定模块35,与字符匹配模块34连接,用于在所有字符匹配均成功时,判定被检测数据块为恶意代码。本实施例网络设备的各功能模块可用于执行图1所示恶意代码检测方法的流程, 其工作原理不再赘述,详见方法实施例的描述。本实施例的网络设备,通过预先生成规则库中所有规则的特征串的基数,在获取到被检测数据块后对被检测数据块进行分块,获取每个数据片段的索引,首先将数据片段的索引与特征串的基数进行匹配,其中索引与基数远小于数据片段或特征串,极大的降低了特征匹配时的数据量,只有在数据片段的索引与规则库中一条规则中所有特征串的基数均匹配中后才进行数据片段与特征串的字符匹配,极大的提高了特征匹配的速度。图4为本发明又一实施例提供的网络设备的结构示意图。本实施例基于图3所示实施例,如图4所示,本实施例的网络设备还包括第二判定模块36。第二判定模块36,与索引匹配模块33和字符匹配模块34连接,用于在数据片段的索引与规则库中任一条规则中的特征串的基数未匹配中时,或者在所有字符匹配中存在匹配不成功的字符匹配时,判定被检测数据块为非恶意代码。第二判定模块可用于执行图1或图2A所示恶意代码检测方法中的相应流程,其具体工作原理不再赘述,详见方法实施例的描述。进一步,本实施例的网络设备还包括字符获取模块37和基数获取模块38。其中,字符获取模块37,用于根据预设获取策略,获取规则库中每条规则中每个特征串的部分字符。基数获取模块38,与字符获取模块37和索引匹配模块33连接,用于根据所获取的特征串的部分字符生成特征串的基数,以供索引匹配模块33进行匹配操作。上述字符获取模块和基数获取模块用于预先生成规则库中所有规则的基数,具体可用于执行图2C所示生成特征串的基数的方法流程,其具体工作原理不再赘述,详见方法实施例的描述。进一步,本实施例的索引获取模块32的一种实现结构包括第一片段获取单元 321、字符获取单元322和索引获取单元323。其中,第一片段获取单元321,与数据获取模块31连接,用于将被检测数据块逐位进行偏移,将每次偏移的位置作为数据片段起点,获取与特征串具有相同长度的数据片段。 字符获取单元322,与第一片段获取单元321连接,用于按照预设获取策略,获取数据片段的部分字符。索引获取单元323,与字符获取单元322连接,用于根据获取的数据片段的部分字符,获取数据片段的索引。上述各功能单元可用于执行图2B所示生成数据片段的索引的方法流程,其具体工作原理不再赘述,详见方法实施例的描述。本实施例的字符匹配模块34的一种实现结构包括第二片段获取单元341、字符匹配单元342和确定单元343。其中,第二片段获取单元341,与索引匹配模块33连接,用于根据被匹配中的索引对应的偏移量,确定被匹配中的索引对应的数据片段在被检测数据块中的起点,从起点开始获取被匹配中的索引对应的数据片段。字符匹配单元342,与第二片段获取单元341连接,用于将第二片段获取单元341获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配。确定单元343,与字符匹配单元342连接,用于在获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的所有字符相同时,确定字符匹配成功。另外,确定单元343还用于在获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的所有字符不完全相同时,确定字符匹配不成功。上述各功能单元可用于执行图2A所示恶意代码检测方法中步骤205的操作,其具体工作原理不再赘述,详见方法实施例的描述。本实施例的网络设备通过上述功能模块或功能单元,预先生成规则库中所有规则的特征串的基数并存放在HASH桶中,在获取到被检测数据块后对被检测数据块进行分块, 获取每个数据片段的索引并存储在另一个HASH桶中,首先将索引与基数进行匹配,其中索引与基数远小于数据片段或特征串,极大的降低了特征匹配时的数据量,只有在数据片断的索引与一条规则中所有特征串的基数均匹配中后才进行数据片段与特征串的字符匹配, 与现有技术相比,本实施例进行特征匹配的数据量较小,提高了特征匹配的速度,进而提高了整个恶意代码检测过程的速度,满足恶意代码检测对检测速度的要求。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1.一种恶意代码检测方法,其特征在于,包括 获取被检测数据块;按照预设划分策略将所述被检测数据块划分为数据片段,获取每个所述数据片段的索弓丨,将所述数据片段的索引和规则库中规则的特征串的基数进行匹配,其中,所述规则库是预先生成的;当所述数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配; 当所有字符匹配均成功时,判定所述被检测数据块为恶意代码。
2.根据权利要求1所述的恶意代码检测方法,其特征在于,所述特征串的基数通过以下步骤获得按照预设获取策略,获取规则库中每条规则中每个特征串的部分字符; 根据所述获取的特征串的部分字符生成所述特征串的基数。
3.根据权利要求1所述的恶意代码检测方法,其特征在于,所述按照预设划分策略将所述被检测数据块划分为数据片段,获取每个所述数据片段的索引包括将所述被检测数据块逐位进行偏移,将每次偏移的位置作为数据片段起点,获取与所述特征串具有相同长度的数据片段;按照所述预设获取策略,获取所述数据片段的部分字符; 根据所述获取的每个数据片段的部分字符,获取所述数据片段的索引。
4.根据权利要求3所述的恶意代码检测方法,其特征在于,所述将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配包括根据被匹配中的索引对应的偏移量,确定被匹配中的索引对应的数据片段在所述被检测数据块中的起点,从所述起点开始获取被匹配中的索引对应的数据片段;将所述获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;当所述获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的所有字符相同时,确定字符匹配成功。
5.根据权利要求1-4任一项所述的恶意代码检测方法,其特征在于,还包括当所述数据片段的索引与规则库中任一条规则中的特征串的基数未匹配中时,或者当所有字符匹配中存在匹配不成功的字符匹配时,判定所述被检测数据块为非恶意代码。
6.一种网络设备,其特征在于,包括 数据块获取模块,用于获取被检测数据块;索引获取模块,用于按照预设划分策略将所述被检测数据块划分为数据片段,并获取每个所述数据片段的索引;索引匹配模块,用于将所述数据片段的索引和规则库中规则的特征串的基数进行匹配,其中,所述规则库是预先生成的;字符匹配模块,用于在所述数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;第一判定模块,用于在所有字符匹配均成功时,判定所述被检测数据块为恶意代码。
7.根据权利要求6所述的网络设备,其特征在于,还包括字符获取模块,用于根据预设获取策略,获取规则库中每条规则中每个特征串的部分字符;基数获取模块,用于根据所述获取的特征串的部分字符生成所述特征串的基数。
8.根据权利要求6所述的网络设备,其特征在于,所述索引获取模块包括第一片段获取单元,用于将所述被检测数据块逐位进行偏移,将每次偏移的位置作为数据片段起点,获取与所述特征串具有相同长度的数据片段;字符获取单元,用于按照所述预设获取策略,获取所述数据片段的部分字符;索引获取单元,用于根据所述获取的数据片段的部分字符,获取所述数据片段的索引。
9.根据权利要求8所述的网络设备,其特征在于,所述字符匹配模块包括第二片段获取单元,用于根据被匹配中的索引对应的偏移量,确定被匹配中的索引对应的数据片段在所述被检测数据块中的起点,从所述起点开始获取被匹配中的索引对应的数据片段;字符匹配单元,用于将所述获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;确定单元,用于在所述获取的被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串的所有字符相同时,确定字符匹配成功。
10.根据权利要求6-9任一项所述的网络设备,其特征在于,还包括第二判定模块,用于在所述数据片段的索引与规则库中任一条规则中的特征串的基数未匹配中时,或者在所有字符匹配中存在匹配不成功的字符匹配时,判定所述被检测数据块为非恶意代码。
全文摘要
本发明提供一种恶意代码检测方法及网络设备。方法包括获取被检测数据块;按照预设划分策略将被检测数据块划分为数据片段,获取每个数据片段的索引,将数据片段的索引和规则库中规则的特征串的基数进行匹配;当数据片段的索引与规则库中一条规则的所有特征串的基数均匹配中时,将被匹配中的索引对应的数据片段与被匹配中的基数对应的特征串进行字符匹配;当所有字符匹配均成功时,判定被检测数据块为恶意代码。本发明技术方案根据特征串的基数和数据片段的索引进行特征匹配,由于基数和索引的数据量较小,提高了特征匹配的速度,进而提高了恶意代码检测的速度。
文档编号H04L29/06GK102307189SQ20111023763
公开日2012年1月4日 申请日期2011年8月18日 优先权日2011年8月18日
发明者王新颖 申请人:成都市华为赛门铁克科技有限公司