CN112671618B - 深度报文检测方法和装置 - Google Patents
深度报文检测方法和装置 Download PDFInfo
- Publication number
- CN112671618B CN112671618B CN202110273164.1A CN202110273164A CN112671618B CN 112671618 B CN112671618 B CN 112671618B CN 202110273164 A CN202110273164 A CN 202110273164A CN 112671618 B CN112671618 B CN 112671618B
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- suricata
- rule base
- hyperscan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本申请公开了一种深度报文检测方法和装置。该方法包括:Suricata启动后加载告警规则库,告警规则库中包括多个用正则表达式描述的告警规则;Suricata将告警规则库传入Hyperscan进行编译后存储在数据库中;Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;Hyperscan利用数据库中的告警规则库对处理后的数据进行规则匹配;若处理后的数据与告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对第一数据包进行控制处理的控制信息;Suricata按照控制信息对第一数据包进行控制处理,通过本申请,解决了相关技术中深度报文检测的准确度较低的问题。
Description
技术领域
本申请涉及网络安全技术领域,具体而言,涉及一种深度报文检测方法、装置、存储介质及处理器。
背景技术
随着网络技术的飞速发展,互联网、云计算、移动通信、物联网等已深入到生产和生活中的各个方面,成为像水电气一样必不可少的基础设施,全球互联网用户已经突破40亿,每月的互联网流量已经达到了121694PB。伴随网络技术迅速发展和普及的是层出不穷的安全事件。近几年爆发的Heartbleed、WannaCry、Memcache放大攻击等安全威胁已经给互联网服务商带来了数百亿的损失。网络安全问题已成为社会无法回避、并且需要高度重视的关键问题之一。
当前,越来越多的网络应用需要依赖深度报文检测技术对报文进行识别,如协议识别,入侵检测,基于应用的带宽管理等。深度报文检测用预定义的特征集对报文的负载进行匹配,以判断负载部分是否符合规则集中的某条特征。早期,深度检测通常使用字符串匹配算法。经典的字符串匹配算法有Knuth-Morris-Pratt(KMP),Boyer-Moore(BM),Aho-Corasick(AC)和Wu-Manber(WM)等。随着网络服务和应用的不断发展,待检测的特征变得越来越复杂,难以用精准字符串进行准确的描述。正则表达式使用单个字符串可以描述一系列满足某个语法规则的字符串集合,因此语意表达能力和灵活性远远高于精确字符串。正则表达式以其强大而灵活的表达能力而广泛应用于深度报文检测中的特征描述。正则表达式的匹配通常需要借助自动机来实现,而当前网络应用中特征集的规模不断增加,这给自动机的编译,配置及性能带来极大的挑战。另一方面,骨干链路网络速率的提升也对报文检测的性能提出了更高的要求。这些都将会影响深度报文检测的准确度,导致深度报文检测的准确度较低。
针对相关技术中深度报文检测的准确度较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种深度报文检测方法、装置、存储介质及处理器,以解决相关技术中深度报文检测的准确度较低的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种深度报文检测方法。该方法包括:
Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
Suricata按照所述控制信息对所述第一数据包进行控制处理。
进一步地,Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据包括:
对所述第一数据包进行解码后计算第一哈希值;
若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
进一步地,对所述第一数据包进行解码后计算第一哈希值包括:
对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
对所述五元组数据进行哈希计算,得到所述第一哈希值。
进一步地,在Suricata启动之前,所述方法还包括:确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;
若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;
若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理。
进一步地,在Suricata启动之前,所述方法还包括:将Intel SSE指令集转换为ARMNEON指令集,所述转换过程包括;
获取Intel SSE指令与ARM NEON指令之间的对应关系;
根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;
用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;
编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
为了实现上述目的,根据本申请的另一方面,提供了一种深度报文检测装置。该装置包括:
加载单元,用于Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
编译单元,用于Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
数据分析单元,用于Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
规则匹配单元,用于Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
返回单元,用于若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
处理单元,用于Suricata按照所述控制信息对所述第一数据包进行控制处理。
进一步地,所述数据分析单元包括:
计算模块,用于对所述第一数据包进行解码后计算第一哈希值;
第一处理模块,用于若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
第二处理模块,用于若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
进一步地,所述计算模块包括:
解码子模块,用于对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
计算子模块,用于对所述五元组数据进行哈希计算,得到所述第一哈希值。
通过本申请,采用以下步骤:Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;Suricata按照所述控制信息对所述第一数据包进行控制处理,解决了相关技术中深度报文检测的准确度较低的问题,进而达到了提高深度报文检测的准确度的效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的深度报文检测方法的流程图;以及
图2是根据本申请实施例提供的深度报文检测装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了便于描述,以下对本申请实施例涉及的部分名词或术语进行说明:
Suricata是一个免费、开源、成熟、快速、健壮的网络威胁检测引擎。Suricata引擎能够进行实时入侵检测(IDS)、内联入侵预防(IPS)、网络安全监控(NSM)和离线pcap处理。Suricata使用强大而广泛的规则和签名语言来检查网络流量,并提供强大的Lua脚本支持来检测复杂的威胁。使用标准的输入和输出格式(如YAML和JSON),使用现有的SIEMs、Splunk、Logstash/Elasticsearch、Kibana和其他数据库等工具进行集成将变得非常简单。
Hyperscan是一款来自于Intel的高性能的正则表达式匹配库。它是基于X86平台以PCRE为原型而开发的,并以BSD许可开源在https://01.org/Hyperscan。在支持PCRE的大部分语法的前提下,Hyperscan增加了特定的语法和工作模式来保证其在真实网络场景下的实用性。与此同时,大量高效算法及IntelSIMD*指令的使用实现了Hyperscan的高性能匹配。Hyperscan适用于部署在诸如DPI/IPS/IDS/FW等场景中,目前已经在全球多个客户网络安全方案中得到实际的应用。此外,Hyperscan还支持和开源IDS/IPS产品Snort(https://www.snort.org)和Suricata (https://Suricata-ids.org)集成,使其应用更加广泛。
Hyperscan以自动机理论为基础,其工作流程主要分成两个部分:编译期(compiletime)和运行期(run-time)。
编译期
Hyperscan自带C++编写的正则表达式编译器。它将正则表达式作为输入,针对不同的IA平台,用户定义的模式及特殊语法,经过复杂的图分析及优化过程,生成对应的数据库。另外,生成的数据库可以被序列化后保存在内存中,以供运行期提取使用。
运行期
Hyperscan的运行期是通过C语言来开发的。Hyperscan在运行期的主要流程包括:用户需要预先分配一段内存来存储临时匹配状态信息,之后利用编译生成的数据库调用Hyperscan内部的匹配引擎(NFA, DFA等)来对输入进行模式匹配。Hyperscan在引擎中使用Intel处理器所具有的SIMD指令进行加速。同时,用户可以通过回调函数来自定义匹配发生后采取的行为。由于生成的数据库是只读的,用户可以在多个CPU核或多线程场景下共享数据库来提升匹配扩展性。
在本发明实施例中,支持PCRE的大部分语法的前提下,Hyperscan增加了特定的语法和工作模式来保证其在真实网络场景下的实用性。与此同时,大量高效算法及IntelSIMD*指令、ARM指令集的使用实现了Hyperscan的高性能匹配。Hyperscan支持Intel处理器、ARM处理器多处理器多平台的交叉编译,且对操作系统无特殊限定,同时支持虚拟机和容器场景。
为了使得Hyperscan能够在ARM架构下编译运行,本发明实施例需要在本发明实施例的深度报文检测方法执行之前,将Intel SSE指令集转换为ARM NEON指令集,具体转换过程描述如下:
第一,获取Intel SSE指令与ARM NEON指令之间的对应关系。SSE指令命名规则非常简单,通常SSE指令函数如下所示:
_mm_<name>_<data_type>
1、<name>描述了指令函数所执行的操作;
2、<data_type>标识函数的主要参数的数据类型
最后一部分<data_type>有点复杂。它标识输入值的内容,可以设置为以下任意值:
ps - vectors contain floats (ps stands for packed single-precision)
pd - vectors cantain doubles (pd stands for packed double-precision)
epi8/epi16/epi32/epi64 - vectors contain 8-bit/16-bit/32-bit/64-bitsigned integers
epu8/epu16/epu32/epu64 - vectors contain 8-bit/16-bit/32-bit/64-bitunsigned integers
si128 - unspecified 128-bit vector or 256-bit vector
m128/m128i/m128d - identifies input vector types when they aredifferent than the type of the returned vector
一个完整的示例: Byte Shuffle - pshufb (_mm_shuffle_epi8)
// Set packed 16-bit integers. 128 bits, 8 short, per 16 bits
__m128i v_in = _mm_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8);
// Set packed 8-bit integers
// 128 bits, 16 chars, per 8 bits
__m128i v_perm = _mm_setr_epi8(1, 0, 2, 3, 8, 9, 10, 11, 4, 5, 12,13, 6, 7, 14, 15);
// Shuffle packed 8-bit integers
__m128i v_out = _mm_shuffle_epi8(v_in, v_perm); // pshufb
第二,根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件sse2neon.h文件中。
第三,用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件。使用时将sse2neon.h文件放到源码目录,找到源码中包含的以下SSE头文件:#include <xmmintrin.h>
#include <emmintrin.h>
使用#include “sse2neon.h”来代替{p,t,s,n,w}mmintrin.h。
第四,编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。代码编译时需要显式地为gcc/clang指定平台,在ARMv8-A架构编译时需要添加-march=armv8-a+fp+simd,在 ARMv7-A 架构编译时需要追加-mfpu=neon。
在本发明实施例中,系统移植过程中涉及到指令转换如下:
将Intel SIMD指令_mm_srli_si128转换成rshiftbyte、_mm_set_epi32转换成set32x4、_mm_set_epi64x转换成set64x2、_mm_setzero_si128转换成vdupq_n_s32、_mm_loadu_si128()转换成vld1q_s32、_mm_storeu_si128()转换成vst1q_s32等等有直接转换关系处理,还有许多Intel SIMD指令_mm_set1_epi32、_mm_cvtsi128_si32、_mm_cvtsi32_si128、_mm_movemask_ps、_mm_movemask_epi8、_mm_xor_si128、_mm_or_si128、_mm_and_si128、_mm_andnot_si128、_mm_castsi128_ps、_mm_cmpeq_epi32、_mm_slli_epi64、_mm_srli_si128、_mm_extract_epi32、_mm_extract_epi64、_mm_shuffle_epi8、_mm256_shuffle_epi8、_mm512_shuffle_epi8转换ARM指令集vaddlvq_s16、veorq_s16、veorq_s32、vmvnq_u32vmvnq_s32、vceqq_u32、vgetq_lane_u32 、vgetq_lane_u64、vshlq_n_s64、vshrq_n_u64、vceqq_s8、vsraq_n_u32、vshrq_n_u8、vdupq_n_s8、vorrq_s32、vbicq_s32、vminq_u8、vmaxq_u8、vqaddq_u8、vsubq_u8未有直接转换关系的处理。
基于上述能够将Intel SSE指令集转换为ARM NEON指令集,Hyperscan能够在ARM架构下编译运行,将其与Suricata结合,以实现在Intel和ARM架构下均能够执行本发明实施例的深度报文检测方法。本发明实施例的深度报文检测方法可以由网络安全设备执行。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的深度报文检测方法的流程图,如图1所示,该方法包括如下步骤:
步骤S201,Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
步骤S202,Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
步骤S203,Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
步骤S204,Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
步骤S205,若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
步骤S206,Suricata按照所述控制信息对所述第一数据包进行控制处理。
可选地,在本申请实施例提供的深度报文检测方法中,网络安全设备中部署有Suricata和Hyperscan。网络安全设备开机后自动启动Suricata,Suricata启动后遍历加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用符合PCRE规范的正则表达式描述,例如:^[a-zA-Z]{3}\s*\d{2}\s*\d{4}\s+\d{2}:\d{2}:\d{2})$。之后,Suricata将加载的所述告警规则库传入Hyperscan进行编译,编译完成后存储在数据库中。
Suricata开始监听网口捕获数据包。当Suricata接收到第一数据包时,首先对接收到的第一数据包进行数据分析处理,得到处理后的数据。
作为一种可选的实施例,Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据可以包括:
对所述第一数据包进行解码后计算第一哈希值;
若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
可选地,对所述第一数据包进行解码后计算第一哈希值可以包括:
对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
对所述五元组数据进行哈希计算,得到所述第一哈希值。
需要说明的是,Suricata接收到第一数据包之后,首先对第一数据包按照TCP/IP协议进行解码,具体包括解码数据链路层、解码网络层、解码传输层等,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议,然后计算该五元组数据的flow哈希值,即第一哈希值,并将该第一哈希值存储在flow哈希表中。
在对第一数据包按照TCP/IP协议进行解码时可以确定第一数据包是否目标数据文件的分片,若所述第一数据包是目标数据文件的分片,则需要查找哈希表,获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,该第一数据包与第一数据包的哈希值相同,说明属于同一会话,也即第一数据包和第二数据包为所述目标数据文件的不同分片,此处需要说明的是,第二数据包可以为一个也可以为多个。然后将所述第一数据包与所述第二数据包进行重组,得到第三数据包,此处需要说明的是,对属于同一个会话的多个数据包重组后可以得到所述目标数据文件的完整数据。然后对所述第三数据包进行应用层协议解析,获取所述处理后的数据,也即应用层数据。
若所述第一数据包不是目标数据文件的分片,则说明该第一数据包为一个完整数据文件的完整数据,那么可以直接对所述第一数据包进行应用层协议解析,获取所述处理后的数据,也即应用层数据。
在Suricata对接收到的第一数据包进行数据分析处理,得到处理后的数据之后,Suricata将所述处理后的数据发送给Hyperscan,由Hyperscan调用数据库中的告警规则库对所述处理后的数据进行规则匹配,也即判断处理后的数据是否与告警规则库中的告警规则匹配。若所述处理后的数据与所述告警规则库中的告警规则不匹配,则说明该第一数据包不存在安全风险,无需对其进行处理;若所述处理后的数据与所述告警规则库中的告警规则匹配成功,说明第一数据包存在安全风险,则Hyperscan按照所匹配都的告警规则向Suricata返回对所述第一数据包进行控制处理的控制信息,其中,所述控制信息可以包括但并不限于:告警处理、阻断处理等。之后Suricata按照所述控制信息对所述第一数据包进行相应的控制处理。
作为一种可选的实施例,在Suricata启动之前,所述方法还包括:确定网络安全设备的网络部署方式;若所述网络部署方式为旁路部署,即所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理,可以包括告警处理等;若所述网络部署方式为串联部署,即所述网络安全设备与网络串联,则所述控制信息中包括阻断处理,还可以包括告警处理等。
本申请实施例提供的深度报文检测方法,采用以下步骤:Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;Suricata按照所述控制信息对所述第一数据包进行控制处理,通过Suricata与Hyperscan相结合的方式解决了相关技术中深度报文检测的准确度较低的问题。进而达到了提高深度报文检测的准确度的效果。而且,本发明实施例中的Hyperscan支持Intel处理器、ARMv8处理器多处理器多平台的交叉编译,且对操作系统无特殊限定,同时支持虚拟机和容器场景,增加了深度报文检测的使用场景,提高了深度报文检测的准确度和应用广泛度。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例还提供了一种深度报文检测装置,需要说明的是,本申请实施例的深度报文检测装置可以用于执行本申请实施例所提供的用于深度报文检测方法。以下对本申请实施例提供的深度报文检测装置进行介绍。
图2是根据本申请实施例的深度报文检测装置的示意图。如图2所示,该装置包括:
加载单元21,用于Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
编译单元22,用于Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
数据分析单元23,用于Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
规则匹配单元24,用于Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
返回单元25,用于若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
处理单元26,用于Suricata按照所述控制信息对所述第一数据包进行控制处理。
作为一种可选的实施例,所述数据分析单元23包括:
计算模块,用于对所述第一数据包进行解码后计算第一哈希值;
第一处理模块,用于若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
第二处理模块,用于若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
进一步地,所述计算模块包括:
解码子模块,用于对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
计算子模块,用于对所述五元组数据进行哈希计算,得到所述第一哈希值。
作为一种可选的实施例,所述装置还包括:确定单元,应用在Suricata启动之前,确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理。
作为一种可选的实施例,所述装置还包括:转换单元,用于在Suricata启动之前,将Intel SSE指令集转换为ARM NEON指令集,所述转换过程包括;
获取Intel SSE指令与ARM NEON指令之间的对应关系;
根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;
用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;
编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
本申请实施例提供的深度报文检测装置,通过加载单元21,用于Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;编译单元22,用于Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;数据分析单元23,用于Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;规则匹配单元24,用于Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;返回单元25,用于若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;处理单元26,用于Suricata按照所述控制信息对所述第一数据包进行控制处理,解决了相关技术中深度报文检测的准确度较低的问题,进而达到了提高深度报文检测的准确度的效果。
所述深度报文检测装置包括处理器和存储器,上述加载单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现提高深度报文检测的准确度。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述深度报文检测方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述深度报文检测方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
Suricata按照所述控制信息对所述第一数据包进行控制处理。
进一步地,处理器执行程序时还实现以下步骤:
对所述第一数据包进行解码后计算第一哈希值;
若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
进一步地,处理器执行程序时还实现以下步骤:
对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
对所述五元组数据进行哈希计算,得到所述第一哈希值。
进一步地,处理器执行程序时还实现以下步骤:
在Suricata启动之前,确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;
若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;
若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理。
进一步地,处理器执行程序时还实现以下步骤:
在Suricata启动之前,将Intel SSE指令集转换为ARM NEON指令集,所述转换过程包括;
获取Intel SSE指令与ARM NEON指令之间的对应关系;
根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;
用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;
编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
Suricata按照所述控制信息对所述第一数据包进行控制处理。
进一步地,还适于执行初始化有如下方法步骤的程序:
对所述第一数据包进行解码后计算第一哈希值;
若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
进一步地,还适于执行初始化有如下方法步骤的程序:
对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
对所述五元组数据进行哈希计算,得到所述第一哈希值。
进一步地,还适于执行初始化有如下方法步骤的程序:
在Suricata启动之前,确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;
若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;
若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理。
进一步地,还适于执行初始化有如下方法步骤的程序:
在Suricata启动之前,将Intel SSE指令集转换为ARM NEON指令集,所述转换过程包括;
获取Intel SSE指令与ARM NEON指令之间的对应关系;
根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;
用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;
编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种深度报文检测方法,其特征在于,包括:
Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
Suricata按照所述控制信息对所述第一数据包进行控制处理;
在Suricata启动之前,所述方法还包括:确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理;
在Suricata启动之前,所述方法还包括:将Intel SSE指令集转换为ARM NEON指令集,所述转换过程包括:获取Intel SSE指令与ARM NEON指令之间的对应关系;根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
2.根据权利要求1所述的方法,其特征在于,Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据包括:
对所述第一数据包进行解码后计算第一哈希值;
若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
3.根据权利要求2所述的方法,其特征在于,对所述第一数据包进行解码后计算第一哈希值包括:
对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
对所述五元组数据进行哈希计算,得到所述第一哈希值。
4.一种深度报文检测装置,其特征在于,包括:
加载单元,用于Suricata启动后加载告警规则库,其中,所述告警规则库中包括多个告警规则,所述告警规则用正则表达式描述;
编译单元,用于Suricata将所述告警规则库传入Hyperscan进行编译后存储在数据库中;
数据分析单元,用于Suricata将接收到的第一数据包进行数据分析处理,得到处理后的数据;
规则匹配单元,用于Hyperscan利用所述数据库中的所述告警规则库对所述处理后的数据进行规则匹配;
返回单元,用于若所述处理后的数据与所述告警规则库中的告警规则匹配成功,则Hyperscan向Suricata返回对所述第一数据包进行控制处理的控制信息;
处理单元,用于Suricata按照所述控制信息对所述第一数据包进行控制处理;
所述装置还包括:确定单元,用于在Suricata启动之前,确定网络安全设备的网络部署方式,其中,所述网络安全设备中部署有Suricata和Hyperscan;若所述网络部署方式为所述网络安全设备与网络并联,则所述控制信息中不包括阻断处理;若所述网络部署方式为所述网络安全设备与网络串联,则所述控制信息中包括阻断处理;
所述装置还包括:转换单元,用于在Suricata启动之前,将Intel SSE指令集转换为ARMNEON指令集,所述转换过程包括:
获取Intel SSE指令与ARM NEON指令之间的对应关系;
根据所述对应关系在不改变SSE指令函数的名称的情况下,使用ARM NEON指令重写所述SSE指令函数的实现方式,并保存在目标文件中;
用所述目标文件替换源码文件中包含的SSE头文件,得到目标代码文件;
编译所述目标代码文件,其中,在ARMv8-A架构编译所述目标代码文件时添加用于指示ARMv8-A架构的第一参数,在ARMv7-A架构编译所述目标代码文件时添加用于指示ARMv7-A架构的第二参数。
5.根据权利要求4所述的装置,其特征在于,所述数据分析单元包括:
计算模块,用于对所述第一数据包进行解码后计算第一哈希值;
第一处理模块,用于若所述第一数据包是目标数据文件的分片,则从哈希表中获取与所述第一哈希值相同的第二哈希值所对应的第二数据包,并将所述第一数据包与所述第二数据包进行重组,得到第三数据包;对所述第三数据包进行应用层协议解析,获取所述处理后的数据;
第二处理模块,用于若所述第一数据包不是目标数据文件的分片,则对所述第一数据包进行应用层协议解析,获取所述处理后的数据。
6.根据权利要求5所述的装置,其特征在于,所述计算模块包括:
解码子模块,用于对所述第一数据包按照TCP/IP协议进行解码,得到五元组数据,其中,所述五元组数据包括:源IP、目的IP、源端口、目的端口、传输协议;
计算子模块,用于对所述五元组数据进行哈希计算,得到所述第一哈希值。
7.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1至3中任意一项所述的深度报文检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110273164.1A CN112671618B (zh) | 2021-03-15 | 2021-03-15 | 深度报文检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110273164.1A CN112671618B (zh) | 2021-03-15 | 2021-03-15 | 深度报文检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671618A CN112671618A (zh) | 2021-04-16 |
CN112671618B true CN112671618B (zh) | 2021-06-15 |
Family
ID=75399407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110273164.1A Active CN112671618B (zh) | 2021-03-15 | 2021-03-15 | 深度报文检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671618B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116055123B (zh) * | 2022-12-21 | 2023-08-22 | 长扬科技(北京)股份有限公司 | 一种mqtt主题匹配方法、装置、计算设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108764037A (zh) * | 2018-04-24 | 2018-11-06 | 石狮市森科智能科技有限公司 | 一种基于ARM Cotex-A系列平台的人脸检测实现方法 |
CN110572380A (zh) * | 2019-08-30 | 2019-12-13 | 北京亚鸿世纪科技发展有限公司 | 一种tcp回注封堵的方法及装置 |
CN110753064A (zh) * | 2019-10-28 | 2020-02-04 | 中国科学技术大学 | 机器学习和规则匹配融合的安全检测系统 |
CN111786959A (zh) * | 2020-06-10 | 2020-10-16 | 中移(杭州)信息技术有限公司 | 安全防护方法、waf系统、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8607346B1 (en) * | 2010-09-27 | 2013-12-10 | Juniper Networks, Inc. | Dynamic resilience for intrusion detection and prevention systems |
CN104348677A (zh) * | 2013-08-05 | 2015-02-11 | 华为技术有限公司 | 一种深度报文检测方法、设备及协处理器 |
CN112468370B (zh) * | 2020-11-30 | 2024-02-20 | 北京锐驰信安技术有限公司 | 一种支持自定义规则的高速网络报文监测分析方法及系统 |
-
2021
- 2021-03-15 CN CN202110273164.1A patent/CN112671618B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108764037A (zh) * | 2018-04-24 | 2018-11-06 | 石狮市森科智能科技有限公司 | 一种基于ARM Cotex-A系列平台的人脸检测实现方法 |
CN110572380A (zh) * | 2019-08-30 | 2019-12-13 | 北京亚鸿世纪科技发展有限公司 | 一种tcp回注封堵的方法及装置 |
CN110753064A (zh) * | 2019-10-28 | 2020-02-04 | 中国科学技术大学 | 机器学习和规则匹配融合的安全检测系统 |
CN111786959A (zh) * | 2020-06-10 | 2020-10-16 | 中移(杭州)信息技术有限公司 | 安全防护方法、waf系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112671618A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737696A (zh) | 一种恶意文件检测的方法、系统、设备及可读存储介质 | |
WO2012177736A1 (en) | Compiler for regular expressions | |
CN106062740B (zh) | 生成多个索引数据字段的方法和装置 | |
Lefoane et al. | Machine learning for botnet detection: An optimized feature selection approach | |
Patil et al. | S-DDoS: Apache spark based real-time DDoS detection system | |
CN112671618B (zh) | 深度报文检测方法和装置 | |
Ageyev et al. | Traffic monitoring and abnormality detection methods analysis | |
Szynkiewicz et al. | Design and evaluation of a system for network threat signatures generation | |
Le et al. | A proactive method of the webshell detection and prevention based on deep traffic analysis | |
Oh et al. | AppSniffer: Towards robust mobile app fingerprinting against VPN | |
Çelebi et al. | A comprehensive survey on deep packet inspection for advanced network traffic analysis: issues and challenges | |
Mei et al. | CTScopy: hunting cyber threats within enterprise via provenance graph-based analysis | |
CN115333848A (zh) | 容器云平台网络安全防护方法、装置及电子设备 | |
CN114090965A (zh) | java代码混淆方法、系统、计算机设备及存储介质 | |
CN115600195A (zh) | 一种web攻击检测方法、装置、设备及可读存储介质 | |
Zuppelli et al. | Code Layering for the Detection of Network Covert Channels in Agentless Systems | |
Alam et al. | Detecting IoT Attacks using Multi-Layer Data Through Machine Learning | |
Ye et al. | Two-step p2p traffic classification with connection heuristics | |
Fernando et al. | New algorithms for the detection of malicious traffic in 5g-mec | |
Patel et al. | An approach to detect and prevent distributed denial of service attacks using blockchain technology in cloud environment | |
Dias et al. | MONDEO: Multistage Botnet Detection | |
Shivakumaraswamy et al. | Data security and privacy in IOT using butterfly optimization algorithm | |
CN117749453A (zh) | Web应用防火墙白流量识别方法、装置及存储介质 | |
Kecskeméti et al. | In-Network Security Applications with P4RROT | |
Lee et al. | Malicious Traffic Compression and Classification Technique for Secure Internet of Things |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |