发明内容
基于此,有必要提供一种能够提高安全性的数据包特征提取方法。
一种数据包特征提取方法,包括:
接收数据包,将所述数据包分割成多个固定长度的数据段,获取分割得到的数据段的偏移值;
对所述数据段的进行归类,生成与所述数据段及其偏移值对应的数据段类型值,且所述生成的数据段类型值与所述接收的数据包对应;
根据接收到的数据包生成样本集,获取所述数据段类型值在样本集内的数据包中对应的偏移值的数量,提取其数量大于或等于偏移值命中阈值的偏移值;
获取所述提取的偏移值对应的数据段类型值,将所述提取的偏移值及数据段类型值作为与所述样本集对应的特征码。
此外,还有必要提供一种能够提高安全性的数据包特征提取装置。
一种数据包特征提取装置,包括:
数据包分割模块,用于接收数据包,将所述数据包分割成多个固定长度的数据段,获取分割得到的数据段的偏移值;
数据段分类模块,用于对所述数据段的进行归类,生成与所述数据段及其偏移值对应的数据段类型值,且所述生成的数据段类型值与所述接收的数据包对应;
数据段统计模块,用于根据接收到的数据包生成样本集,获取所述数据段类型值在样本集内的数据包中对应的偏移值的数量,提取其数量大于或等于偏移值命中阈值的偏移值;
特征码生成模块,用于获取所述提取的偏移值对应的数据段类型值,将所述提取的偏移值及数据段类型值作为与所述样本集对应的特征码。
上述数据包特征提取方法及装置中,并不直接提取数据包中具体的协议字段作为特征码,而是提取在某些偏移值位置规律出现的数据段对应的数据段类型值作为特征码,使得提取特征码的过程中,并不需要预先对数据包的协议类型进行分析和配置,并且对于使用了私有应用协议的数据包和加密数据包也可以根据数据包中数据段出现的规律性提取出相应的数据段类型值作为特征码,使得上述数据包特征提取方法可以适配所有的数据包种类,而不限于传统技术中的特定协议类型下的数据包,对于通常使用私有应用协议定义的DDOS攻击包来说,特征码提取的更加准确,从而提高了安全性。
同时,由于在特征提取之前不需要像传统技术一样对数据包进行协议解析,也不需要根据已知协议类型预先进行过多的配置,因此不会对web服务器或应用服务器产生过多的额外计算压力,从而提高了服务器的执行效率。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在一个实施例中,为了能够提高数据包检测过程的安全性,特提出了一种数据包特征提取方法,该方法的实现可依赖计算机程序,可运行于基于冯诺依曼体系的计算机系统上。该计算机系统可以是互联网应用的应用服务器或web服务器,该方法可以应用在web攻击防护或网络数据检测等典型的应用场景。
具体的,如图1所示,该方法包括:
步骤S102:接收数据包,将数据包分割成多个固定长度的数据段,获取分割得到的数据段的偏移值。
接收到的数据包为样本数据包。在网络安全检测中,需要先分析存在网络攻击风险(如DDOS,Distributed Denial of Service,分布式拒绝服务攻击)的样本数据包的特征码,然后根据该特征码比对其他数据包,判断其他数据包是否具有网络攻击风险。
在本实施例中,固定长度可设置为16个字节(在其他实施例中,可根据实施环境与检测结果调整该固定长度),则长度为4k的数据包被分割成256个数据段,每个分割的数据段均具有相应的偏移值(offside),偏移值即表示该数据段在该数据包中的起始。分割后得到的数据段与偏移值的对应关系即可如表1所示:
表1:
序号 |
偏移值 |
数据段 |
1 |
0 |
010b474e2c a8a2b3 |
2 |
16 |
010b5c4e2c78a2b3 |
3 |
32 |
010b c3342c a8a2b3 |
4 |
48 |
010b474e2c a8a2b3 |
在其他实施例中,也可以直接使用序号作为偏移值,序号乘以预设的固定长度值即可得到数据段的位置。
步骤S104:对数据段的进行归类,生成与数据段及其偏移值对应的数据段类型值,且生成的数据段类型值与接收的数据包对应。
在本实施例中,可将内容相同的数据段归为一类,该数据段的内容即为相应的数据段类型值,如表1中,序号为1和4的数据段内容相同,则内容为010b474e2c a8a2b3的数据段类型值至少对应有偏移值0和偏移值48。
在一个实施例中,生成与数据段及其偏移值对应的数据段类型值的步骤包括:通过预设的哈希函数计算数据段的哈希值,将哈希值作为与数据段及其偏移值对应的数据段类型值。
例如,哈希函数可以是CRC、SHA等通用哈希函数,该函数可将内容相似的多个数据段映射到同一个哈希值上。将该哈希值作为数据段类型值,该数据段类型值则与该多个相似的数据段的偏移值对应。
如图2所示,图2展示了将数据包package1分割成多个数据段之后,通过哈希函数归类到数据段类型值A、B、C、D的过程示意图。
在一个实施例中,若接收到的数据包package1被分割成256个数据段,经过前述分类,生成的数据段类型值包含A、B、C、D和E,且数据段类型值与对应数据段的数量的对应关系可如表2所示:
表2
数据段类型值 |
数据段的数量 |
A |
20 |
B |
20 |
C |
10 |
D |
96 |
E |
110 |
也就是说,该数据包对应A、B、C、D和E5种数据段类型值。若接收到的另一个数据包package2还包含有与数据段类型值F对应的数据段,则package2对应A、B、C、D、E和F6种数据段类型值。
进一步的,生成与数据段及其偏移值对应的数据段类型值的步骤还包括:过滤其对应的数据段的数量小于数据段统计阈值的数据段类型值。
数据段统计阈值为预先设置的用于过滤掉对应较少数据段的数据段类型值的阈值。如表2所示,若数据包package1包含的数据段类型值A、B、C、D和E分别对应的数据段的数量为20、20、10、96和110。若预设的数据段统计阈值为80,则数据段类型值A、B和C被过滤掉,过滤掉之后,数据包package1仅对应D和E这两种数据段类型值。
由于数据包的特征码为数据包中经常出现的数据段的统计特征,因此通过数据段统计阈值对数据段类型值进行过滤,可将在数据包中出现概率较小的数据段类型值移除,从而在不影响准确性的前提下减少了后续的计算复杂程度,提高了执行效率。
步骤S106:根据接收到的数据包生成样本集,获取数据段类型值在样本集内的数据包中对应的偏移值的数量,提取其数量大于或等于偏移值命中阈值的偏移值。
步骤S108:获取提取的偏移值对应的数据段类型值,将提取的偏移值及数据段类型值作为与样本集对应的特征码。
样本集可包含多个数据包。例如,可在某个连接上持续抓取数据包,将持续抓取到的数据包作为样本集。且对于样本集中的每个数据包,均可得到前述的数据包与其包含的数据段类型值的对应关系(如前例中的数据包package1对应数据段类型值A、B、C、D、E,数据包package2对应数据段类型值A、B、C、D、E、F),从而可根据该对应关系获取某个数据段类型值在样本集中对应的数据包。同时,可根据表1展示的数据包中偏移值与数据段类型值的对应关系,得到数据段类型值在每个数据包中对应的偏移值,从而通过统计位置相同的偏移值即可得到数据段类型值在样本集内的数据包中对应的偏移值的数量。
偏移值命中阈值即为用于过滤对应某个数据段类型值的在样本集中的数据包中的特定偏移值位置出现次数较少的数据段。
例如,若样本集中有10000个数据包,其中,对应数据段类型值A的数据包在样本集中有3000个,且在该3000个数据包中,数据段类型值A对应的偏移值为16(即第2个数据段位置)的个数为3000个(即每个数据包在其偏移值为16的位置处的数据段均对应数据段类型值A),数据段类型值A对应的偏移值为128(即第9个数据段位置)的个数为2000个(即样本集中有2000个数据包在其偏移值为128的位置处的数据段均对应数据段类型值A),数据段类型值A对应的偏移值为256(即第17个数据段位置)的个数为100个(即样本集中有100个数据包在其偏移值为256的位置处的数据段均对应数据段类型值A),而若预设的偏移值命中阈值为2500,则偏移值16保留而偏移值128以及256被过滤掉。而数据段类型值A由于存在偏移值16的数量大于偏移值命中阈值,因此可将数据段类型值A和偏移值16作为特征码。
而对于数据段类型值B,若在样本集中不存在其数量大于偏移值命中阈值的对应的偏移值,则数据段类型值B不能作为特征码。
优选的,可先根据数据段类型值对应数据包的数量进行排序,然后按顺序提取数据段类型值,获取该数据段类型值在样本集内的数据包中对应的偏移值的数量。
例如,若样本集中有10000个数据包,其中,对应数据段类型值A的数据包在样本集中有1000个,对应数据段类型值B的数据包在样本集中有3000个,对应数据段类型值C的数据包在样本集中有5000个,则可按照C、B、A的顺序执行前述的步骤S106和S108,即数据段类型值C是否可作为特征码,再判断数据段类型值B是否可作为特征码,最后再判断A。
在本实施例中,特征码的个数可预先设置。例如,若预先设置的特征码为一个,则判断得到数据段类型值C位特征码之后则可结束流程,若判断得到数据段类型值C不为特征码,则继续判断数据段类型值B是否可作为特征码。
进一步的,在本实施例中,获取数据段类型值在样本集内的数据包中对应的偏移值的数量的步骤之前还可过滤掉其对应的数据包的数量小于或等于数据包统计阈值的数据段类型值。
数据包统计阈值用于过滤掉对应的数据包较少的数据段类型值。例如,若样本集中有10000个数据包,其中,对应数据段类型值A的数据包在样本集中有1000个,对应数据段类型值B的数据包在样本集中有3000个,对应数据段类型值C的数据包在样本集中有5000个,而若预设的数据包统计阈值为2000个,则数据段类型值A被过滤,剩余数据段类型值B和C。
在一个实施例中,还可根据数据段类型值在样本集中对应的数据段的数量进行过滤。
可将同一数据段类型值在各个数据包中对应的数据段的数量相加(例如,可参考表2展示的每个数据包中每个数据段类型值对应的数据段的数量),即可得到该数据段类型值在样本集中对应的数据段的数量,从而可将在样本集中对应的数据段的数量小于预设的阈值的数据段类型值过滤。
例如,例如,若样本集中有10000个数据包,其中,数据段类型值A在该样本集中所有数据包中对应的数据段的个数为30000个,数据段类型值B在该样本集中所有数据包中对应的数据段的个数为10000个,数据段类型值C在该样本集中所有数据包中对应的数据段的个数为50000个,而预设的阈值为20000个,则数据段类型值B被过滤掉。
通过数据包统计阈值过滤掉对应的数据包较少的数据段类型值,可在不影响准确性的前提下,减少统计的计算量,从而提高执行效率。
需要说明的是,在其他实施例中,前述的偏移值命中阈值、数据段统计阈值和数据包统计阈值也可设置为比例数值或百分比数值。
并且,提取特征码存在提取失败的情况。例如,若通过数据段统计阈值和数据包统计阈值过滤后,不再存在数据段类型值,或者在步骤S106中,无法提取出其数量大于或等于偏移值命中阈值的偏移值,则样本集的特征码提取失败,意味着样本集中的数据包不存在特定的规律,可判定为不具备网络攻击性,或者可重新设置分割数据段的固定长度值以及重新采集作为样本的数据包进行提取。
在本实施例中,根据样本集得到特征码之后,即可根据特征码对需要检测的数据包进行检测,其过程为:
接收待测数据包,根据作为特征码的偏移值在待测数据包中提取数据段;通过判断提取的数据段是否与作为特征码的数据段类型值匹配判定待测数据包是否为特征数据包。
例如,若提取的特征码为数据段类型值A和与该数据段类型值匹配的偏移值16、128,则可在待测数据包的第16个字节位置以及第128个字节位置起始处各提取16个字节长度的数据段,然后通过哈希函数计算提取的数据段的哈希值,若哈希值均为A(在其他实施例中,也可以计算得到的对应多个偏移值的哈希值存在A),则判定该待测数据包为与特征码匹配的特征数据包。
再例如,若提取的特征码为数据段类型值A和与该数据段类型值匹配的偏移值16,以及数据段类型值B和与该数据段类型值匹配的偏移值32。则可在待测数据包的第16个字节位置以及第32个字节位置起始处各提取16个字节长度的数据段,然后通过哈希函数计算提取的数据段的哈希值,若从偏移值16处提取的数据段的哈希值为A或(在其他实施例中,也可以是“且”)从偏移值32处提取的数据段的哈希值为B,则判定该待测数据包为与特征码匹配的特征数据包。
判定得到待测数据包为特征数据包之后,即可根据样本集的属性对待测数据包对应的连接进行处理。在本实施例中,还可使用特征码对待测数据包进行批量匹配,若待测数据包为特征数据包的比率大于阈值,则可判定待测数据包对应的连接存在于特征码相关的安全风险。
例如,若样本集中的数据包对应了DDOS攻击的数据包,其中包含有攻击数据包自定义的协议字段。则通过前述步骤S102至步骤S108的执行,即可提取出与该协议字段对应的数据段类型值(不一定相同,但由于协议字段在数据包中所处的位置存在一定规律性,则可通过提取数据段相应得到规律性分布的数据段)作为特征码。
Web服务器或应用服务器在接收到数据包时,通过该特征码进行对数据包进行校验,例如,可通过该特征码持续对某个连接上的10000个待测数据包进行校验,若存在9000个待测数据包为特征数据包,而阈值为8000,则可判定该连接存在DDOS攻击,待测数据包均为攻击DDOS攻击数据包。
在一个实施例中,一种数据包特征提取装置,如图3所示,包括:数据包分割模块102、数据段分类模块104、数据段统计模块106以及特征码生成模块108,其中:
数据包分割模块102,用于接收数据包,将数据包分割成多个固定长度的数据段,获取分割得到的数据段的偏移值。
数据段分类模块104,用于对数据段的进行归类,生成与数据段及其偏移值对应的数据段类型值,且生成的数据段类型值与接收的数据包对应。
数据段统计模块106,用于根据接收到的数据包生成样本集,获取数据段类型值在样本集内的数据包中对应的偏移值的数量,提取其数量大于或等于偏移值命中阈值的偏移值。
特征码生成模块108,用于获取提取的偏移值对应的数据段类型值,将提取的偏移值及数据段类型值作为与样本集对应的特征码。
在本实施例中,数据段分类模块104还用于通过预设的哈希函数计算数据段的哈希值,将哈希值作为与数据段及其偏移值对应的数据段类型值。
在本实施例中,数据段分类模块104还用于过滤对应的数据段的数量小于或等于数据段统计阈值的数据段类型值。
在本实施例中,数据段统计模块106还用于过滤掉其对应的数据包的数量小于或等于数据包统计阈值的数据段类型值。
在本实施例中,如图3所示,数据包特征提取装置还包括数据包检测模块110,用于接收待测数据包,根据作为特征码的偏移值在待测数据包中提取数据段;通过判断提取的数据段是否与作为特征码的数据段类型值匹配判定待测数据包是否为特征数据包。
上述数据包特征提取方法及装置中,并不直接提取数据包中具体的协议字段作为特征码,而是提取在某些偏移值位置规律出现的数据段对应的数据段类型值作为特征码,使得提取特征码的过程中,并不需要预先对数据包的协议类型进行分析和配置,并且对于使用了私有应用协议的数据包和加密数据包也可以根据数据包中数据段出现的规律性提取出相应的数据段类型值作为特征码,使得上述数据包特征提取方法可以适配所有的数据包种类,而不限于传统技术中的特定协议类型下的数据包,对于通常使用私有应用协议定义的DDOS攻击包来说,特征码提取的更加准确,从而提高了安全性。
同时,由于在特征提取之前不需要像传统技术一样对数据包进行协议解析,也不需要根据已知协议类型预先进行过多的配置,因此不会对web服务器或应用服务器产生过多的额外计算压力,从而提高了服务器的执行效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。