CN104618132B - 一种应用程序识别规则生成方法和装置 - Google Patents
一种应用程序识别规则生成方法和装置 Download PDFInfo
- Publication number
- CN104618132B CN104618132B CN201410782566.4A CN201410782566A CN104618132B CN 104618132 B CN104618132 B CN 104618132B CN 201410782566 A CN201410782566 A CN 201410782566A CN 104618132 B CN104618132 B CN 104618132B
- Authority
- CN
- China
- Prior art keywords
- classification tree
- classification
- http packets
- tree
- application program
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种应用程序识别规则生成方法和装置,涉及网络安全领域,用以提高应用程序识别规则生成效率和准确度。在本发明实施例中,获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;对于属于同一应用程序的HTTP数据包,根据HTTP数据包的不同字段上的取值,将HTTP数据包进行逐级分类,得到分类树;获取分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;根据规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则;从而解决上述问题。
Description
技术领域
本发明涉及网络安全领域,尤其涉及一种应用程序识别规则生成方法和装置。
背景技术
随着网络基础设施建设发展和网络应用的普及,网络安全事件也越来越受到社会各方的关注和重视,网络管理和网络威胁检测进入了面向应用识别的新篇章。目前,各大厂商主要使用深度数据包检测方法(DPI技术)进行应用识别。
深度数据包检测方法是对网络流量中的各个数据包的报文数据面向应用建立规则库,根据数据报文的实际内容判别该数据包所属的应用的方法,具有精确度高、控制能力强、识别范围大等优点,已经成为各大网络设备和安全厂商在应用识别领域普遍采用的方法。由于该方法需要构建面向网络应用的庞大的规则库,因此规则描述得越多越精确,能够识别出的应用越多。
现有技术中,规则库的构建、更新和维护主要是依靠工程师人为地抓取网络数据包,再由分析人员对应用的网络协议和数据包进行分析和特征提取,生成规则,存入规则库。这样的方式具有效率低、开销大、成本高、对分析员经验依赖性强和维护困难等缺点。
发明内容
本发明实施例提供了一种应用程序识别规则生成方法和装置,用以提高应用程序识别规则生成效率和准确度。
本发明实施例提供一种应用程序识别规则生成方法,该方法包括:
获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;
对于属于同一应用程序的HTTP数据包,根据所述HTTP数据包的不同字段上的取值,将所述HTTP数据包进行逐级分类,得到分类树;所述分类树中的节点用于表征所述HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为所述HTTP数据包的特征串;获取所述分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;
根据所述规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
本发明实施例还提供一种应用程序识别规则生成装置,该装置包括:
应用提纯模块,用于获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;
分类器模块,用于对于属于同一应用程序的HTTP数据包,根据所述HTTP数据包的不同字段上的取值,将所述HTTP数据包进行逐级分类,得到分类树;所述分类树中的节点用于表征所述HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为所述HTTP数据包的特征串;获取所述分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;
规则处理模块,用于根据所述规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
从上述技术方案可以看出,本发明实施例提供的方法能够实现自动抓包、自动提取HTTP请求数据包、自动获取共同特征信息并生成识别规则的过程;在上述过程中,无需人为参与;在针对多个应用程序执行本发明实施例提供的方法之后,能够批量的生成针对各个应用程序的识别规则,从而能够在截获多个终端通过不同平台发出的大量数据包中,自动的识别这些数据包是由哪个应用程序发出的,可见,本发明实施例无需人为操作,提供了一种新型的自动化批量生成应用程序识别规则的方法,提高了规则生成效率和准确率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的应用程序识别规则生成方法的主要流程示意图;
图2为本发明实施例提供的一种应用程序识别规则生成装置的结构示意图;
图3为本发明实施例的一种系统架构示意图;
图4为本发明实施例提供的应用提纯方法的流程示意图;
图5为本发明实施例中的共有域名提取子模块执行的主要流程的示意图;
图6为发明实施例中的背景应用过滤子模的主要流程的示意图;
图7为本发明实施例中的分类器模块的主要流程的示意图;
图8为本发明实施例中的分类步骤最优化决策子模块的主要流程的示意图;
图9为本发明实施例中的单次分类和特征提取子模块的主要流程的示意图;
图10为本发明实施例中的特征评估子模块的主要流程的示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例可以应用于深度包检测方法中的规则库构建的应用场景,本发明实施例尤其可以适用于面向DPI(Deep Packet Inspection,深度包检测技术)的HTTP(Hypertext transfer protocol,超文本传送协议)应用识别规则自动化生成的应用场景。
图1示出了本发明实施例提供的应用程序识别规则生成方法的主要流程示意图;如图1所示,该流程主要包括:
步骤101:获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包。
步骤102:对于属于同一应用程序的HTTP数据包,根据HTTP数据包的不同字段上的取值,将HTTP数据包进行逐级分类,得到分类树;分类树中的节点用于表征HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为HTTP数据包的特征串;获取分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形。
步骤103:根据规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
可选的,在上述步骤102中,按照第一预设规则,将HTTP数据包进行第一级分类,得到第一分类树;其中,第一预设规则具体为:任意两个HTTP数据包在HOST字段上的取值的最长公共子序列大于或等于第一预设阈值。
可选的,在上述步骤中,在得到第一分类树之后,获取第一分类树的全部叶子节点对应的权重,判断第一分类树的全部叶子节点对应的权重的总和是否大于预设阈值,若否,则按照预设第二预设规则,对第一分类树的各叶子节点进行第二级分类,得到第二分类树;否则,停止下一级分类,并将第一分类树作为对HTTP数据包进行逐级分类后得到的分类树;第二预设规则具体为:任意两个HTTP数据包在User-agent字段上的取值的编辑距离小于第二预设阈值。
可选的,在上述步骤中,在得到第二分类树之后,获取第二分类树中除根节点以外的全部节点对应的权重,判断第二分类树中除根节点以外的全部节点对应的权重的总和是否大于预设阈值,若否,则按照预设第三预设规则,对第二分类树的各叶子节点进行第三级分类,得到第三分类树;否则,停止下一级分类,并将第二分类树作为对HTTP数据包进行逐级分类后得到的分类树;第三预设规则具体为:任意两个HTTP数据包在Reference字段上的取值除以该取值的前7位字符,将得到的结果的最长公共子序列大于或等于第三预设阈值。
可选的,在上述步骤中,在得到第三分类树之后,获取第三分类树中除根节点以外的全部节点对应的权重,判断第三分类树中除根节点以外的全部节点对应的权重的总和是否大于预设阈值,若否,则按照预设第四预设规则,对第三分类树的各叶子节点进行第四级分类,得到第四分类树;否则,停止下一级分类,并将第三分类树作为对HTTP数据包进行逐级分类后得到的分类树;第四预设规则具体为:任意两个HTTP数据包在Uri字段的取值串以从第1位字符开始求相同位移的相同子串,子串长度大于或等于第四预设阈值。
可选的,在上述步骤中,在得到第四分类树之后,获取第四分类树中除根节点以外的全部节点对应的权重,判断第四分类树中除根节点以外的全部节点对应的权重的总和是否大于预设阈值,若否,则按照预设第五预设规则,对第四分类树的各叶子节点进行第五级分类,得到第五分类树;否则,停止下一级分类,并将第四分类树作为对HTTP数据包进行逐级分类后得到的分类树;第五预设规则具体为:任意两个HTTP数据包在Parameters字段的取值的参数名个数相等。
可选的,在上述步骤中,在得到第五分类树之后,获取第五分类树中除根节点以外的全部节点对应的权重,判断第五分类树中除根节点以外的全部节点对应的权重的总和是否大于预设阈值,若否,输出告警消息;否则,将第五分类树作为对HTTP数据包进行逐级分类后得到的分类树。
可选的,在上述步骤101中,利用网络爬虫获取各待处理的应用程序在若干个运行时间段内产生的PCAP文件;解析PCAP文件,提取出网络数据报文;遍历提取出的全部的网络数据报文,将各网络数据报文中的域名或IP地址,与预先生成的特征字典中的域名后缀集合进行比对,提取出属于同一应用程序的网络数据报文。
可选的,在上述步骤103中,将规则雏形与预先生成的特征字典进行比对,判断规则雏形是否被包含于特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则;或者,判断规则雏形是否与特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则。
基于相同的技术构思,本发明实施例还提供一种应用程序识别规则生成装置,图2示出了本发明实施例提供的应用程序识别规则生成装置的结构示意图,如图2所示,该装置包括:
应用提纯模块201,用于获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;
分类器模块202,用于对于属于同一应用程序的HTTP数据包,根据所述HTTP数据包的不同字段上的取值,将所述HTTP数据包进行逐级分类,得到分类树;所述分类树中的节点用于表征所述HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为所述HTTP数据包的特征串;获取所述分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;
规则处理模块203,用于根据所述规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
可选的,所述分类器模块202具体用于:按照第一预设规则,将所述HTTP数据包进行第一级分类,得到第一分类树;其中,所述第一预设规则具体为:任意两个HTTP数据包在HOST字段上的取值的最长公共子序列大于或等于第一预设阈值。
可选的,所述分类器模块202具体用于:在得到所述第一分类树之后,获取所述第一分类树的全部叶子节点对应的权重,判断所述第一分类树的全部叶子节点对应的权重的总和是否大于预设阈值,若否,则按照预设第二预设规则,对所述第一分类树的各叶子节点进行第二级分类,得到第二分类树;否则,停止下一级分类,并将所述第一分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第二预设规则具体为:任意两个HTTP数据包在User-agent字段上的取值的编辑距离小于第二预设阈值。
可选的,所述分类器模块202具体用于:在得到所述第二分类树之后,获取所述第二分类树中除根节点以外的全部节点对应的权重,判断所述第二分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第三预设规则,对所述第二分类树的各叶子节点进行第三级分类,得到第三分类树;否则,停止下一级分类,并将所述第二分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第三预设规则具体为:任意两个HTTP数据包在Reference字段上的取值除以该取值的前7位字符,将得到的结果的最长公共子序列大于或等于第三预设阈值。
可选的,所述分类器模块202具体用于:在得到所述第三分类树之后,获取所述第三分类树中除根节点以外的全部节点对应的权重,判断所述第三分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第四预设规则,对所述第三分类树的各叶子节点进行第四级分类,得到第四分类树;否则,停止下一级分类,并将所述第三分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第四预设规则具体为:任意两个HTTP数据包在Uri字段的取值串以从第1位字符开始求相同位移的相同子串,子串长度大于或等于第四预设阈值。
可选的,所述分类器模块202具体用于:在得到所述第四分类树之后,获取所述第四分类树中除根节点以外的全部节点对应的权重,判断所述第四分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第五预设规则,对所述第四分类树的各叶子节点进行第五级分类,得到第五分类树;否则,停止下一级分类,并将所述第四分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第五预设规则具体为:任意两个HTTP数据包在Parameters字段的取值的参数名个数相等。
可选的,所述分类器模块202具体用于:在得到所述第五分类树之后,获取所述第五分类树中除根节点以外的全部节点对应的权重,判断所述第五分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,输出告警消息;否则,将所述第五分类树作为对所述HTTP数据包进行逐级分类后得到的分类树。
可选的,所述应用提纯模块201具体用于:利用网络爬虫获取各待处理的应用程序在若干个运行时间段内产生的PCAP文件;解析所述PCAP文件,提取出网络数据报文;遍历提取出的全部的网络数据报文,将各网络数据报文中的域名或IP地址,与预先生成的特征字典中的域名后缀集合进行比对,提取出属于同一应用程序的网络数据报文。
可选的,所述规则处理模块203具体用于:将所述规则雏形与预先生成的特征字典进行比对,判断所述规则雏形是否被包含于所述特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则;或者,判断所述规则雏形是否与所述特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则。
从上述技术方案可以看出,本发明实施例提供的方法能够实现自动抓包、自动提取HTTP请求数据包、自动获取共同特征信息并生成识别规则的过程;在上述过程中,无需人为参与;在针对多个应用程序执行本发明实施例提供的方法之后,能够批量的生成针对各个应用程序的识别规则,从而能够在截获多个终端通过不同平台发出的大量数据包中,自动的识别这些数据包是由哪个应用程序发出的,可见,本发明实施例无需人为操作,提供了一种新型的自动化批量生成应用程序识别规则的方法,提高了规则生成效率和准确率。
下面对本发明实施例进行具体描述。
在网络安全领域中,深度数据包检测方法主要是对网络流量中的各个数据包的报文数据面向应用建立规则库,根据数据报文的实际内容判别该数据包所属的应用的方法,具有精确度高、控制能力强、识别范围大等优点。值得注意的是,该方法需要构建面向网络应用的庞大的规则库。规则描述得越多越精确,能够识别的应用越多。
本发明实施例可以应用于深度包检测方法中的规则库构建的应用场景,本发明实施例尤其可以适用于面向DPI(Deep Packet Inspection,深度包检测技术)的HTTP(Hypertext transfer protocol,超文本传送协议)应用识别规则自动化生成的应用场景。
图3示出了本发明实施例的一种系统架构示意图,本发明实施例仅以图3所示出的系统架构为例,对本发明实施例进行描述,但需要说明的是,本发明实施例不限于图3所示的系统架构。其中,作为一种具体实施方式:本发明实施例可以按照代码模块和主要数据分为了用户层、外部数据层、核心层和内部数据层,其中,层次和模块之间的箭头代表了数据的流向。
继续如图3所示,用户层由爬虫模块、抓包模块和应用计时模块构成了系统的用户数据输入,由告警模块和规则升级模块为系统面向用户的数据输出。
本发明实施例中将面向用户的数据称为外部数据,外部数至少包括爬虫获取的应用描述信息、抓包获取的PCAP抓包文件、应用计时模块产生的应用运行时间表(如表1所示出的应用运行时间表)、面向用户输出的告警日志和面向DPI检测引擎的规则库更新升级的规则数据。
核心层包含应用提纯、分类器和规则处理三个核心模块,图3还示出了各个核心模块的子模块。应用提纯模块包括:PCAP文件解析和HTTP协议过滤报文解析子模块、共有域名提取子模块、背景应用过滤子模块和已有规则过滤子模块;分类器模块包括:分类步骤最优化决策子模块、单词分类和特征提取子模块、特征评估子模块和局部字典生成子模块;规则处理模块包括:规则规约子模块、误报告警子模块和规则格式化子模块。其中,应用提纯模块的输出为面向单个应用程序的网络数据报文,流向分类器模块;而分类器产生规则雏形传入规则处理模块进行进一步的加工,最后形成正式的面向DPI检测引擎的规则。
内部数据用于为核心层提供支持的数据,不面向用户,表现为数据字典形式,包含:域名后缀字典、全局背景特征串字典、全局规则特征串字典、局部平台特征串字典和局部应用特征串字典。
表1
参照图3所示出的系统架构,在本发明实施例中,应用提纯模块数据输入包括应用描述、抓包文件、应用运行时间表、域名后缀字典、全局背景特征串字典和全局规则特征串字典。处理为,对抓包文件进行格式解析和协议过滤,按应用运行时间表对将抓包文件中对应时间段的数据包与应用描述相关联,根据域名后缀字典提取出HTTP数据包中HOST字段的三级域名,再根据全局背景特征串字典和全局规则特征串字典过滤背景会话,输出为面向单个应用程序的网络数据报文,流向分类器模块。
分类器模块针对于单个应用的HTTP网络报文进行分类,有HOST分类、User-agent分类、Uri分类、Reference分类和Parameters分类5种,由分类步骤最优化决策子模块对以上分类进行步骤排序,特征评估子模块是对每次分类提取的特征串评估和赋权值,由分类深度决策子模块完成分类器在完成一次分类后,对子类的特征串进行评估后,决定是否对子类进行下一级分类(即排序中的下一个分类步骤)。
其中,两个HTTP数据包是否属于同类的依据:
HOST分类以两个串的最长公共子序列(LCS)大于等于阈值四为同类依据;
User-agen分类t以两个串编辑距离(Levenshtein Distance)小于阈值五为依据;
Reference分类先去除两个串的前7位字符,再以最长公共子序列(LCS)大于等于阈值六为依据;
Uri分类以从第1位字符开始求相同位移的相同子串,子串长度大于等于阈值六依据;
Parameters分类以参数名个数相等为依据。
规则处理模块是在分类器模块完成HTTP数据包分类和特征提取形成相应的规则及规则权值之后对规则进行的进一步再处理,主要包括规则归约、误报告警和规则格式化三个部分。规则归约是对分类器生成的所有规则进行对比,去掉意义上重复和具有包含关系的规则;误报告警是在全局规则特征串字典中查询是否存在与当前生成规则相同的规则,如果有,则将规则、其对应的数据包和字典中规则的ID号存入告警日志,通知用户;规则格式化是一方面向对应的DPI引擎生成其规则库相应格式的规则描述和升级包类型,另外一方面将新生成的规则写入全局规则字典中。
下面对应用提纯模块执行的主要流程进行描述。
具体来说,应用提纯模块的主要原理可以包括:
1、在每个应用每次运行时,必然出现相同的三级域名(HOST字段为IP地址数据报文的除外),例如:在“www.sina.com.cn”的三级域名为“sina”,而“www.google.com”的三级域名为“google”。
2、一般情况下,两个独立时间运行的毫无相关性的应用的数据报文中不会出现相同的三级域名。
3、抓包环境的复杂性决定了在少数情况下,一些后台程序的数据报文会出现在一个应用的每次运行时间中,所以使用全局背景特征串字典描述了这些后台数据的HOST字段的三级域名。
4、还有一种情况就是在不同平台上运行的同一个应用,如“爱奇艺视频-windows7”、“爱奇艺视频-windows phone”、“爱奇艺视频-ios”、“爱奇艺视频-Android”这四个应用,它们产生的数据包的HOST字段可能都会包含“iqiyi”的三级域名,为了区分这四个应用,就需要其他的数据报文特征,所以当全局规则特征串字典中查询出已经存在某个三级域名时,系统将HSOT字段的权值设为0,代表着需要在分类器模块中提取其他特征作为规则,查询不成功时,置为1,代表该三级域名可以作为强特征串。
5、对于HOST字段为IP地址的数据包,若一个应用每次运行都有HOST字段为IP地址情况下,将其数据包留下,自成一类,修改HOST字段的权值,否则,则过滤掉相关的报文。
图4示出了本发明实施例提供的应用提纯方法的流程示意图,如图4所示,该流程可以具体包括:
步骤401:PCAP文件解析,获取网络数据报文。
步骤402:协议过滤,过滤非HTTP协议的数据包。
步骤403:HTTP报文解析,识别HTTP报文中的各个域和域值,URI以及HTTP请求参数。
步骤404:查询域名后缀字典,提取HOST字段中的三级域名。
步骤405:针对单个应用,留取每次运行时间内均出现的三级域名的数据包和每次运行均出现的HOST字段为IP地址的数据包。
步骤406:查询全局背景特征串字典,从步骤405中的结果中过滤能够查询成功的数据包。
步骤407:比较各个应用中的三级域名,在存在相同的三级域名时,记录告警日志,并通知用户进行判断。
步骤408:接收由用户选择的判断结果,若该三级域名属于某个待处理应用,则执行步骤409,若该三级域名属于背景应用,则执行步骤410。
步骤409:在非用户选择的应用中过滤掉该三级域名的数据包。
步骤410:将三级域名加入全局背景特征串字典,在所有应用中均过滤掉该三级域名的数据包。
在执行上述步骤409或步骤410之后,继续执行步骤411。
步骤411:以三级域名在全局规则特征串字典中查询,若查询成功,则将该三级域名的权值设为0,否则,将该三级域名的权值设为1。
在执行步骤411之后,应用提纯模块所执行的主要流程结束。
下面对PCAP文件解析和HTTP协议过滤报文解析子模块执行的主要流程进行描述。
PCAP文件解析和HTTP协议过滤报文解析子模块以PCAP文件为输入,根据PCAP文件格式提取数据包,以HTTP请求字段“GET”和“POST”留取HTTP请求数据包,过滤掉非HTTP请求的数据报文,对HTTP净荷报文格式进行解析,以“\r\n”和“:”为分隔符提取各个域名和域值,以"&"和“=”为分隔符提取各个参数名和参数值。
下面对共有域名提取子模块执行的主要流程进行描述。
共有域名提取子模块是应用提纯模块中的关键子模块,它以应用运行时间表和解析后的HTTP数据包为输入,从每个HTTP数据包的HOST字段中提取出三级域名,若一个应用的每次运行时间段内都会出现相同的三级域名或者都会出现HOST为IP地址的数据包,则将数据包和三级域名归入该应用。实质上,该子模块是将抓包文件中的HTTP数据包先按运行时间段和三级域名或则数字IP标签进行归类,然后求取应用多个运行时间段内都存在的共同域名和数字IP的网络数据包,分配给各个应用,去除HTTP杂包的过程。
图5示出了本发明实施例中的共有域名提取子模块执行的主要流程的示意图,如图5所示,该流程主要包括:
步骤501:将HTTP数据包按应用运行时间表分为多组。
步骤502:取步骤501中的任意一组HTTP数据包,遍历改组HTTP数据包,获取每个HTTP数据包的HOST字段。
步骤503:对于一HTTP数据包的HOST字段,以“.”分隔HOST字段,若“.”符号个数==3,验证是否每个子串都为数字,若是,则将该数据包加入标签为数字IP的组中,并对该组中的每个HTTP数据包执行步骤503的操作。
步骤504:以“.”分隔HOST字段,从尾子串开始向首子串方向,在域名后缀字典中查询,若查询成功,则查询前一个子串,若查询不成功,该子串则为三级域名。
步骤505:将该组的数据包链表按相同三级域名分隔为多个三级域名组,并标记该三级域名的标签。
对所有组执行步骤502~步骤505的操作。
步骤506:根据应用运行时间表获取一个应用多次运行时间段所对应的三级域名组、三级域名标签和对应的IP数字组(若存在IP数字组则获取,若不存在IP数字组则不需要获取)。
步骤507:若该应用每次运行时间段中都存在IP数字组,则留取IP数字组,并将留取的IP数字组合并为一个IP数字组的集合,否则,删除IP数字组。
步骤508:统计出每次运行运行时间段内都会出现的三级域名的集合,删除三级域名标签不在集合内的数据包组,将数据包按相同的三级域名合并(在该步骤508中不包括IP数字组)。
对应用运行时间表中的每个应用执行步骤501~步骤507的操作后,结束该流程。
下面对背景应用过滤子模块执行的主要流程进行描述。
背景应用过滤子模块是对公有域名提取子模块的结果进行再次过滤和提纯的补充过程。在一次抓包过程中,有可能某个用户所不知的后台程序不断地在发送HTTP请求,从而对应用提纯的目的产生背景噪音,影响应用提纯的准确性。一方面,全局背景特征串字典正是记录了这些噪音包的三级域名。该子模块对每个应用的三级域名标签在全局背景特征串字典进行查询,若查询成功,则删除该三级域名标签和对应的HTTP数据包,若查询不到则保留,进入下一个处理子模块。另外一方面,以两个应用不存在相同的三级域名为依据,比较各个应用的三级域名,若发现存在两个或者以上的不同的应用具有相同的三级域名,则记录告警日志,窗口通知用户选择,若用户选择其中一个应用,则在其他应用中删除三级域名标签和对应的HTTP数据包,若用户选择其为背景应用,则将该三级域名加入全局背景特征串字典,在所有应用中删除该三级域名和相应的HTTP数据包。
图6示出了本发明实施例中的背景应用过滤子模的主要流程的示意图,如图6所示,该流程主要包括:
步骤601:获取一个应用的三级域名标签集合。
步骤602:遍历该三级域名集合,在全局背景特征串字典中查询,若查询成功,则执行步骤603;否则,执行步骤604。
步骤603:删除该三级域名标签和对应的HTTP数据包组。
步骤604:判断是否处理完所有应用,若是,则执行步骤605,若否,则执行步骤601。
在执行上述步骤603或步骤604后,继续执行步骤605。
步骤605:判断两个或两个以上应用的三级域名标签集合中是否存在相同的三级域名,若是,则执行步骤606,否则,结束本流程。
步骤606:输出告警,并提示用于选择该三级域名属于的待处理应用,或提示用户该三级域名属于背景应用。
步骤607:根据用户选择,确定当用户选择该三级域名属于的待处理应用时,执行步骤608,确定当用户选择该三级域名属于背景应用时,执行步骤609。
步骤608:非用户选择的应用中对应的三级域名标签以及相应的HTTP数据包组。
步骤609:所有应用中对应的三级域名标签以及相应的HTTP数据包组,将该三级域名写入全局背景特征串字典中。
下面对背景应用过滤子模块执行的主要流程进行描述。
已有规则过滤和告警子模块作为对应用提纯的进一步补充和避免DPI检测引擎因规则库原因而误报的问题,已有规则过滤和告警子模块是对上个模块处理以后的三级域名在全局规则特征串字典里查询过程,若查询成功,将HSOT字段的权值设为0,代表着需要在分类器模块中提取其他特征作为规则,查询不成功时,置为1,代表该三级域名可以作为强特征串。全局规则特征串字典实际上是DPI检测引擎中的规则库面向本系统的另一个版本。
下面对分类器模块执行的主要流程进行描述。
分类器模块是在应用提纯模块处理之后,针对于单个应用的HTTP网络报文进行分类和特征选取,形成各个规则的过程。它以各个应用描述、三级域名标签即对应的HTTP数据包组、IP数字标签即对应的HTTP数据包组(如果存在IP数字组)、全局规则特征串字典、局部平台特征串字典和局部应用特征串字典为输入,输出局部平台特征串字典、局部应用特征串字典和最为重要的规则雏形。分类器模块包含了分类步骤最优化决策子模块、特征提取子模块、特征评估子模块、分类深度决策子模块和局部字典生成子模块等五个子模块。
分类器模块的主流程是对应用提纯产生的三级域名标签对应的所有HTTP数据包组进行逐级分类,提取共有子串为特征串,以特征串在局部平台特征串字典和局部应用特征串字典查询子串,获取权重加分,从子类向父类回溯直到三级域名标签或者IP数字标签,一个子类特征串加上路径中各个父类的特征串之集合即为一条规则的特征串,一个子类特征串的权值加上路径中各个父类的特征串权值之和即为该规则的权值,若规则的权值大于阈值一,则不再继续分类,否则继续分类和求特征串。分类依据分别为HTTP数据包的HOST字段、User-agent字段、Reference字段、Uri字段、Parameters字段,所以分类深度最大为5,即阈值二,若完成5次分类,规则的权值仍然小于阈值一,则记录报警日志,值得注意的是,只有极少数的应用才会出现告警情况。
图7示出了本发明实施例中的分类器模块的主要流程的示意图,如图7所示,该流程主要包括:
步骤701:由局部字典生成子模块生成局部平台特征串和局部应用特征串。
步骤702:获取应用的一个三级域名标签的HTTP数据包组或IP数字组。
步骤703:由分类步骤最优化决策子模块选取最优分类域。
步骤704:以最优分类域子串对HTTP数据包链表分类。
步骤705:提取出各个子类中的数据包的最优分类域共同子串作为类标签,置权值为1。
步骤706:类标签是否包含局部平台特征串或局部应用特征串,若包含一个字典中的串,则权值加1,若同时包含两个字典中的串,则权值加2。
步骤707:由子类向父类回溯,路径上各个类标签的集合行程一条规则,类标签权值之和为当前规则的权值。
步骤708:判断规则权值是否大于等于阈值一,或分类深度等于阈值二,若否,则执行步骤709;否则,执行步骤710。
步骤709:获取一个子类标签的HTTP数据包组,并跳回执行步骤703。
步骤710:判断该分类深度的全部链表对应的规则权值均大于或等于阈值一,或分类深度等于阈值二,若否,则执行步骤711;否则,执行步骤712。
步骤711:获取一个权值小于阈值一的兄弟类标签的HTTP数据包组,并跳回执行步骤703。
步骤712:若某条规则权值小于阈值一,分类深度等于阈值二,将该规则和对应的数据包记录告警日志中。
步骤713:判断是否处理完所有的三级域名标签的HTTP数据包组合IP数字组,若是,则结束本流程,否则,执行步骤702。
下面对局部字典生成子模块执行的主要流程进行描述。
局部字典生成子模块主要是以爬虫爬取的应用名和运行平台标志为输入,生成具有指向性意义的应用特征串和平台特征串的过程。应用特征串对于中文名的应用包括:应用的全拼、应用名拼音首字母组成的串、应用名中文分词后对应的有意义的英文串;对于英文应用则包括英文名和英文名的首字母缩写。平台特征串是针对于各个运行平台有强烈指示性的串,由人为地添加和维护一个平台特征串字典,而局部字典生成模块则是根据平台标志选取对应的平台子集的特征串而已。举例说明,应用名“搜狐视频-winphone”对应的应用特征串包括:“souhushipin”、“shsp”、“souhu”、“video”、“media”等字串;对应的平台特征串包括:“Windows Phone”、“Windows mobile”、“NativeHost”等字段。应用名“facebook-windows PC”的应用特征串包括:“facebook”、“fb”等字串;对应的平台特征串包括:“Windows NT”、“Windows XP”、“Windows7”等字串。所以局部字典生成模块是在中文分词和英文分词基础上查询英汉字典和平台特征串字典的过程。
下面对分类步骤最优化决策子模块执行的主要流程进行描述。
分类步骤最优化决策子模块是针对于当前的HTTP数据包组,以局部最少分类为原则在HOST分类、User-agent分类、Uri分类、Reference分类和Parameters分类中选取当前分类步骤的子模块。该子模块以计算代价较小的分类算法分别按HOST分类、User-agent分类、Uri分类、Reference分类和Parameters分类的顺序进行预分类,计算种类数,若其中一个种类数小于阈值三,则选取该分类步骤,若全部种类数都大于等于阈值三,则选取种类数最小的分类步骤。每选取一个分类步骤后,在下一级分类的分类步骤最优化决策时将其除去。
图8示出了本发明实施例中的分类步骤最优化决策子模块的主要流程的示意图,如图8所示,该流程主要包括:
步骤801:获取上级分类后的决策选择表。
步骤802:按顺序取得一个选择表项,将待分类HTTP数据包组拷贝。
步骤803:判断数据包组中是否存在未分类的HTTP数据包,若是,则执行步骤804,否则,执行步骤810。
步骤804:获取数据包组中未分类的第一个HTTP数据包对应表项的字符串,将该包标识设置为已分类。
步骤805:判断下一个未分类数据包是否为非空,若否,则执行步骤806,否则,执行步骤807。
步骤806:该表项种类数加1,并跳回执行步骤803。
步骤807:获取下一个未分类HTTP数据包对应表项的字符串,作为第二个比较数据包。
步骤808:判断两个数据包是否属于同一类,若是,则执行步骤809;若否,则跳回执行步骤805。
步骤809:将第二个数据包标识为已分类。
并在执行步骤809之后执行步骤805。
步骤810:判断种类是否小于阈值三,若是,则执行步骤811;否则,执行步骤812。
步骤811:返回该表项,将该表项从决策表删除,作为传给下一级分类的决策表;并结束该流程。
步骤812:判断是否处理完所有表项,若是,则执行步骤813;否则,跳回执行步骤802。
步骤813:返回种类数最小的表项,将该表项从决策表删除,作为传给下一级分类的决策表;并结束该流程。
值得说明的是,在图7中的两个包是否属于一类的判断中,根据表项不同,判断依据不同,HOST分类以两个串的长度相差小于2为依据,User-agent以两个串长度相等为依据,Reference以第12位和第13位相等为依据,Uri以第1位和第2位相等为依据,Parameters以参数名个数相等为依据。
下面对单次分类和特征提取子模块执行的主要流程进行描述。
单次分类和特征提取子模块是在分类步骤最优化决策子模块返回当前分类表项的情况下对HTTP数据包组进行的准确性分类和特征串提取过程。以分类表项、HTTP数据包组为输入,输出一个以上的子类HTTP数据组和每个数据包组的类标签,即特征串。
图9示出了本发明实施例中的单次分类和特征提取子模块的主要流程的示意图,如图9所示,该流程主要包括:
步骤901:获取决策选择表项。
步骤902:获取待分类HTTP数据包组。
步骤903:判断数据包组中是否存在未分类的HTTP数据包,若是,则执行步骤904,否则,执行步骤909。
步骤904:获取数据包组中未分类的第一个HTTP数据包对应表项的字符串,将该包标志为已分类,拷贝该数据包到新的子类组中。
步骤905:判断下一个未分类数据包是否为非空,若是,则执行步骤906;否则,执行步骤903。
步骤906:获取下一个未分类HTTP数据包对应表项的字符串,作为第二个比较数据包。
步骤907:判断两个包是否属于同一类,若是,则执行步骤908;否则,跳回执行步骤905。
步骤908:将第二个数据包标志为已分类,拷贝第二个数据包到第一个数据包对应的子类组中;并在执行步骤908之后,跳回执行步骤905,直至数据包组中不存在未分类HTTP数据包。
步骤909:遍历每个子类组,对于一个子类组的所有数据包,求取对应消息昂的类标签;并结束该流程。
值得说明的是,在图中的两个包是否属于一类的判断和求取类标签步骤中,根据表项不同,判断依据不同和求取方法不同。HOST分类以两个串的最长公共子序列(LCS)大于等于阈值四为同类依据,User-agent以两个串编辑距离(Levenshtein Distance)小于阈值五为依据,Reference先去除两个串的前7位字符,再以最长公共子序列(LCS)大于等于阈值六为依据,Uri以从第1位字符开始求相同位移的相同子串,子串长度大于等于阈值六依据,Parameters以参数名个数相等为依据。HOST分类的特征串求取以子类数据包组中前两个包的HOST域求最长共有序列,再将这个最长共有序列逐个与组中的其他包的HOST域求最长共有序列,直到遍历整个组数据包结束后剩下的最长共有序列为类标签;User-agent分类的特征串求取以子类数据包组中前两个包的User-agent域去除版本数字等信息后,求取共有子串的一个集合,同理,遍历完数据包组后的结果为类标签;Reference分类的特征串求取方法是在去除前7位字符后,与HOST分类相同的方法求取;Uri从第1位字符开始求相同位移的相同子串为类标签;Parameters分类取相同参数名和能在局部平台字典和局部应用字典中查询成功的参数值为类标签。
下面对特征评估子模块执行的主要流程进行描述。
特征评估子模块是对每次分类提取的特征串赋予权值1,然后根据特征串是否能以局部平台特征串字典和局部应用特征串字典里的某一个字串为子串,对权值加1的过程。输入为类标签,输出为类标签的权值。
图10示出了本发明实施例中的特征评估子模块的主要流程的示意图,如图10所示,该流程主要包括:
步骤1001:获取类标签一个特征串。
步骤1002:将该特征串的权值赋为1。
步骤1003:判断是否已经平台加权,若是,则执行步骤1008,否则,执行步骤1004。
步骤1004:获取平台特征串字典中一个串。
步骤1005:判断特征串字典中的串是否为特征串子串,若是,则执行步骤1007;否则,执行步骤1006。
步骤1006:判断是否遍历完字典中的所有串,若否,则跳回执行步骤1004;否则,执行步骤1008。
步骤1007:权值加1,平台加权=ture。
步骤1008:判断是否已经应用加权,若是,则执行步骤1013,否则,执行步骤1009。
步骤1009:获取应用特征串字典中的一个串。
步骤1010:判断特征串字典中的串是否为特征串子串,若是,则执行步骤1012;否则,执行步骤1011。
步骤1011:判断是否遍历完字典中的所有串,若否,则跳回执行步骤1009;否则,执行步骤1013。
步骤1012:权值加1,应用加权=ture。
步骤1013:判断类标签中是否还有未处理的子串,若是,则跳回执行步骤1001;否则,结束本流程。
下面对分类深度决策子模块执行的主要流程进行描述。
分类深度决策子模块完成分类器在完成一次分类后,对子类的特征串进行评估后,决定是否对子类进行下一级分类的功能。每次分类完成后,从子类向父类回溯直到三级域名标签或者IP数字标签,一个子类特征串加上路径中各个父类的特征串之集合即为一条规则的特征串,一个子类特征串的权值加上路径中各个父类的特征串权值之和即为该规则的权值,当规则的权值大于等于阈值一的时候,一方面为提高规则自动化生成系统效率,另一方面防止过度分类(规则特征串过多时会导致DPI检测效率降低),不再对子类进行分类和提取特征串,输出当前的规则和规则对应的数据包组(等价于该子类的数据包组)。若需要对子类进行进一步分类,则将子类数据包组和当前的分类步骤决策表项传入分类步骤最优化决策子模块,开始新的一轮分类和特征提取,规则评估。
下面对规则处理模执行的主要流程进行描述。
规则处理模块是在分类器模块完成HTTP数据包分类和特征提取形成相应的规则及规则权值之后对规则进行的进一步再处理,主要包括规则归约、误报告警和规则格式化三个部分。规则归约是对分类器生成的所有规则进行对比,去掉意义上重复和具有包含关系的规则;误报告警是在全局规则特征串字典中查询是否存在与当前生成规则相同的规则,如果有,则将规则、其对应的数据包和字典中规则的ID号存入告警日志,通知用户;规则格式化是一方面向对应的DPI引擎生成其规则库相应格式的规则描述和升级包类型,另外一方面将新生成的规则写入全局规则字典中。
下面对本发明实施例提供的规程生成方法的主要流程进行举例描述。
一、应用提纯
1、解析抓包文件,(注:抓包文件对每个数据包都有时间描述,而抓包文件的起始时间为2014-4-2014:18,结束时间为2014-4-2015:07),过滤出HTTP数据包。
2、对照运行时间表(如表1所示),提取出对应的HTTP数据包时间段组,一共6组。1组对应2014-4-2014:20到2014-4-2014:27时间段百度文库-winphone,一共500个HTTP数据包;同理,2组对应微博-winphone的第一次运行,一共200个数据包;3组一共300个数据包;4组一共400个数据包;5组一共206个数据包;6组一共410个数据包。
3、对每组的数据包做以下处理(以1组、2组和4组为例):解析每个数据包,得到HOST字段的值,再获取HOST字段的三级域名(HOST字段一般为“Host:www.youku.com”“Host:news.163.com”的格式,三级域名在这里指“youku”和“163”),统计得到如下数据:
1组的500个数据包三级域名分布情况为:“baidu”200个包,“sina”100个包,“youku”100个包,“163”100个包;
2组的500个数据包三级域名分布情况为:“weibo”200个包,“sina”100个包,“qq”100个包,“163”100个包;
4组的400个数据包三级域名分布情况为:“baidu”200个包,“sina”100个包,“sohu”50个包,“163”50个包。
4、1组和4组属于同一个应用,共有域名提取子模块处理以后,将其按三级域名取交集包合并,等到a组的分布情况为:“baidu”400个包,“sina”200个包,“163”150个包;(去除了“youku”和“sohu”的数据包)。
5、对a组继续处理,进入背景应用过滤子模块。查询全局背景特征字典,查询到了“sina”,没有查询到“baidu”和“163”,处理以后a组的分布情况为:“baidu”400个包,“163”150个包。
6、2组和5组,3组和6组也完成了以上步骤后,2组和5组的结果b组的的分布情况为:“weibo”900个包,“163”100个包;
7、将a组和b组进行比较,发现共有“163”,由用户选择“163”属于“百度文库”或者“微博”或者“背景”。这里选择为背景,那么a组的分布为:“baidu”400个包,b组为“weibo”900个包。
二、分类器
1、分类器的一次实例对应于一个应用,所以在这里,应为有3个应用,所以分类器有3个实例,实例A对应了a组的所有数据包,以下以a组为说明。
2、对于a组的200个数据包,分类步骤最优化决策子模块得出的分类步骤依次为HOST分类、User-agent分类、Uri分类、Reference分类和Parameters分类。
3、HOST分类将a组200个包分为了m组180个,类标签为“wen.baidu.com”,n组20个数据包,类标签为“imag.baidu.com”。
4、User-agent分类将m组分为了,x组150个,标签为“WinPhone”,y组30个,标签为“windows mobile”;
User-agent分类将n组分为了,n2组20个数据包,标签为“WinPhone”;
5、Uri分类将将x组分为了,x2组150个,标签为“\message”;
Uri分类将y组分为了y2组30个,标签为“\pic\res”;
Uri分类将n2组分为了n3组20个,标签为“\message”;
6、Reference分类和Parameters分类同理;
7、特征评估子模块在每次分类步骤完成后评估类标签,并赋权值;如m组的“wen.baidu.com”
8、分类深度决策子模块在每次分类步骤完成后收集特征总权值,评估是否需要下一步分类,如x2组为“wen.baidu.com”+“WinPhone”+“\obj\wen”+“\message”,若评估大于等于阈值一,那么x2组将不再进行Reference分类和Parameters分类;
9、最终分类器模块的结果为:
x2组150个,特征串“wen.baidu.com”+“WinPhone”+“\message”+“imag.baidu.com”;
y4组30个,特征串“wen.baidu.com”+“windows mobile”+“\pic\res”+“”+“&plat=wp”;
n5组10个,特征串“imag.baidu.com”+“WinPhone”+“\message”+“wen.baidu.com”+”aspwenku”;
n6组10个,特征串“imag.baidu.com”+“WinPhone”+“\message”+“wen.baidu.com”+””;
三、规则处理模块
1、规则归约模块,对以上3个分类进行处理,首先n6对n5具有包含关系,所以将其归约为
n56组20个数据包,特征串“imag.baidu.com”+“WinPhone”+“\message”+“wen.baidu.com”,
此时n56与x2语义重合,将n56与x2再合并:
X2n56组170个包,特征串“imag.baidu.com”+“WinPhone”+“\message”+“wen.baidu.com”,
2、误报告警,此时结果为
X2n56组170个包,特征串“imag.baidu.com”+“WinPhone”+“\message”+“wen.baidu.com”,
y4组30个,特征串“wen.baidu.com”+“windows mobile”+“\pic\res”+“&plat=wp”;
误报告警是在已有规则里搜索是否有规则与以上两条有包含或重复的规则,有的化会引起误报,就启动告警。
3、规则格式化,规则格式化是一方面向对应的DPI引擎生成其规则库相应格式的规则描述和升级包类型,另外一方面将新生成的规则写入全局规则字典中。
最终生成了关于“百度文库-winphone”的两条规则。同理也生成“微博-winphone”和“快播-winphone”的相关规则。
值得说明的是:为了更好地说明每个模块的功能,以上并不是真实数据,而其实是一个比较极端的例子,一般情况下应用提纯模块在共有域名提取以后就能达到纯净、分类器模块在3个分类步骤后就会达到阈值一,而不需要再分类、规则归约和误报告警模块极少出现。
还值得说明的是:两个HTTP数据包是否属于同类的依据如下:
HOST分类以两个串的最长公共子序列(LCS)大于等于阈值四为同类依据;
User-agent以两个串编辑距离(Levenshtein Distance)小于阈值五为依据;
Reference先去除两个串的前7位字符,再以最长公共子序列(LCS)大于等于阈值六为依据;
Uri以从第1位字符开始求相同位移的相同子串,子串长度大于等于阈值六依据;
Parameters以参数名个数相等为依据。
再值得说明的是,同类的特征串提取方法如下:
HOST分类的特征串求取以子类数据包组中前两个包的HOST域求最长共有序列,再将这个最长共有序列逐个与组中的其他包的HOST域求最长共有序列,直到遍历整个组数据包结束后剩下的最长共有序列为类标签;
User-agent分类的特征串求取以子类数据包组中前两个包的User-agent域去除版本数字等信息后,求取共有子串的一个集合,再将这个集合逐个与组中的其他包的User-agent域求共有子串,直到遍历完数据包组后的结果为类标签;
Reference分类的特征串求取方法是前两个包在去除前7位字符后求最长共有序列,再将这个最长共有序列逐个与组中的其他包的Reference域求最长共有序列,直到遍历整个组数据包结束后剩下的最长共有序列为类标签;
Uri分类的特征串求取以子类数据包组中前两个包从第1位字符开始求最长共有序列,再将该子串逐个与组中的其他包的Uri域从第1位字符开始求最长共有序列,直到遍历完数据包组后的结果为类标签;
Parameters分类的特征串求取以子类数据包组中前两个取相同参数名和能在局部平台字典和局部应用字典中查询成功的参数值的集合,再将该集合逐个与组中的其他包的Parameters域求取共有子串,直到遍历完数据包组后的结果为类标签。
从上述技术方案可以看出,本发明实施例提供的方法能够实现自动抓包、自动提取HTTP请求数据包、自动获取共同特征信息并生成识别规则的过程;在上述过程中,无需人为参与;在针对多个应用程序执行本发明实施例提供的方法之后,能够批量的生成针对各个应用程序的识别规则,从而能够在截获多个终端通过不同平台发出的大量数据包中,自动的识别这些数据包是由哪个应用程序发出的,可见,本发明实施例无需人为操作,提供了一种新型的自动化批量生成应用程序识别规则的方法,提高了规则生成效率和准确率。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器,使得通过该计算机或其他可编程数据处理设备的处理器执行的指令可实现流程图中的一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (18)
1.一种应用程序识别规则生成方法,其特征在于,该方法包括:
获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;
对于属于同一应用程序的HTTP数据包,根据所述HTTP数据包的不同字段上的取值,将所述HTTP数据包进行逐级分类,得到分类树;所述分类树中的节点用于表征所述HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为所述HTTP数据包的特征串;获取所述分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;
根据所述规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
2.如权利要求1所述的方法,其特征在于,所述将所述HTTP数据包进行逐级分类,得到分类树,具体包括:
按照第一预设规则,将所述HTTP数据包进行第一级分类,得到第一分类树;
其中,所述第一预设规则具体为:任意两个HTTP数据包在HOST字段上的取值的最长公共子序列大于或等于第一预设阈值。
3.如权利要求2所述的方法,其特征在于,在得到所述第一分类树之后,进一步包括:
获取所述第一分类树的全部叶子节点对应的权重,判断所述第一分类树的全部叶子节点对应的权重的总和是否大于预设阈值,若否,则按照预设第二预设规则,对所述第一分类树的各叶子节点进行第二级分类,得到第二分类树;否则,停止下一级分类,并将所述第一分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;
所述第二预设规则具体为:任意两个HTTP数据包在User-agent字段上的取值的编辑距离小于第二预设阈值。
4.如权利要求3所述的方法,其特征在于,在得到所述第二分类树之后,进一步包括:
获取所述第二分类树中除根节点以外的全部节点对应的权重,判断所述第二分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第三预设规则,对所述第二分类树的各叶子节点进行第三级分类,得到第三分类树;否则,停止下一级分类,并将所述第二分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;
所述第三预设规则具体为:任意两个HTTP数据包在Reference字段上的取值除以该取值的前7位字符,将得到的结果的最长公共子序列大于或等于第三预设阈值。
5.如权利要求4所述的方法,其特征在于,在得到所述第三分类树之后,进一步包括:
获取所述第三分类树中除根节点以外的全部节点对应的权重,判断所述第三分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第四预设规则,对所述第三分类树的各叶子节点进行第四级分类,得到第四分类树;否则,停止下一级分类,并将所述第三分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;
所述第四预设规则具体为:任意两个HTTP数据包在Uri字段的取值串以从第1位字符开始求相同位移的相同子串,子串长度大于或等于第四预设阈值。
6.如权利要求5所述的方法,其特征在于,在得到所述第四分类树之后,进一步包括:
获取所述第四分类树中除根节点以外的全部节点对应的权重,判断所述第四分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第五预设规则,对所述第四分类树的各叶子节点进行第五级分类,得到第五分类树;否则,停止下一级分类,并将所述第四分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;
所述第五预设规则具体为:任意两个HTTP数据包在Parameters字段的取值的参数名个数相等。
7.如权利要求6所述的方法,其特征在于,在得到所述第五分类树之后,进一步包括:
获取所述第五分类树中除根节点以外的全部节点对应的权重,判断所述第五分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,输出告警消息;否则,将所述第五分类树作为对所述HTTP数据包进行逐级分类后得到的分类树。
8.如权利要求1所述的方法,其特征在于,所述提取出属于同一应用程序的HTTP数据包,具体包括:
利用网络爬虫获取各待处理的应用程序在若干个运行时间段内产生的PCAP文件;
解析所述PCAP文件,提取出网络数据报文;
遍历提取出的全部的网络数据报文,将各网络数据报文中的域名或IP地址,与预先生成的特征字典中的域名后缀集合进行比对,提取出属于同一应用程序的网络数据报文。
9.如权利要求1所述的方法,其特征在于,所述生成该应用程序的一条识别规则,具体包括:
将所述规则雏形与预先生成的特征字典进行比对,判断所述规则雏形是否被包含于所述特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则;或者,判断所述规则雏形是否与所述特征集合的一条记录相同,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则。
10.一种应用程序识别规则生成装置,其特征在于,该装置包括:
应用提纯模块,用于获取各待处理的应用程序在若干个运行时间段内产生的数据,将获取到的数据和预先生成的特征字典进行比对,提取出属于同一应用程序的HTTP数据包;
分类器模块,用于对于属于同一应用程序的HTTP数据包,根据所述HTTP数据包的不同字段上的取值,将所述HTTP数据包进行逐级分类,得到分类树;所述分类树中的节点用于表征所述HTTP数据包的在不同字段上的共同特征信息;将从叶子节点到根节点之间的路径上的各节点所表征的特征信息的集合作为所述HTTP数据包的特征串;获取所述分类树中的每一条路径所对应的特征串,将各特征串作为该应用程序的一条规则雏形;
规则处理模块,用于根据所述规则雏形与预先生成的特征字典进行比较,根据比较结果,生成该应用程序的一条识别规则。
11.如权利要求10所述的装置,其特征在于,所述分类器模块具体用于:
按照第一预设规则,将所述HTTP数据包进行第一级分类,得到第一分类树;其中,所述第一预设规则具体为:任意两个HTTP数据包在HOST字段上的取值的最长公共子序列大于或等于第一预设阈值。
12.如权利要求11所述的装置,其特征在于,所述分类器模块具体用于:
在得到所述第一分类树之后,获取所述第一分类树的全部叶子节点对应的权重,判断所述第一分类树的全部叶子节点对应的权重的总和是否大于预设阈值,若否,则按照预设第二预设规则,对所述第一分类树的各叶子节点进行第二级分类,得到第二分类树;否则,停止下一级分类,并将所述第一分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第二预设规则具体为:任意两个HTTP数据包在User-agent字段上的取值的编辑距离小于第二预设阈值。
13.如权利要求12所述的装置,其特征在于,所述分类器模块具体用于:
在得到所述第二分类树之后,获取所述第二分类树中除根节点以外的全部节点对应的权重,判断所述第二分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第三预设规则,对所述第二分类树的各叶子节点进行第三级分类,得到第三分类树;否则,停止下一级分类,并将所述第二分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第三预设规则具体为:任意两个HTTP数据包在Reference字段上的取值除以该取值的前7位字符,将得到的结果的最长公共子序列大于或等于第三预设阈值。
14.如权利要求13所述的装置,其特征在于,所述分类器模块具体用于:
在得到所述第三分类树之后,获取所述第三分类树中除根节点以外的全部节点对应的权重,判断所述第三分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第四预设规则,对所述第三分类树的各叶子节点进行第四级分类,得到第四分类树;否则,停止下一级分类,并将所述第三分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第四预设规则具体为:任意两个HTTP数据包在Uri字段的取值串以从第1位字符开始求相同位移的相同子串,子串长度大于或等于第四预设阈值。
15.如权利要求14所述的装置,其特征在于,所述分类器模块具体用于:
在得到所述第四分类树之后,获取所述第四分类树中除根节点以外的全部节点对应的权重,判断所述第四分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,则按照预设第五预设规则,对所述第四分类树的各叶子节点进行第五级分类,得到第五分类树;否则,停止下一级分类,并将所述第四分类树作为对所述HTTP数据包进行逐级分类后得到的分类树;所述第五预设规则具体为:任意两个HTTP数据包在Parameters字段的取值的参数名个数相等。
16.如权利要求15所述的装置,其特征在于,所述分类器模块具体用于:
在得到所述第五分类树之后,获取所述第五分类树中除根节点以外的全部节点对应的权重,判断所述第五分类树中除根节点以外的全部节点对应的权重的总和是否大于所述预设阈值,若否,输出告警消息;否则,将所述第五分类树作为对所述HTTP数据包进行逐级分类后得到的分类树。
17.如权利要求10所述的装置,其特征在于,所述应用提纯模块具体用于:
利用网络爬虫获取各待处理的应用程序在若干个运行时间段内产生的PCAP文件;解析所述PCAP文件,提取出网络数据报文;遍历提取出的全部的网络数据报文,将各网络数据报文中的域名或IP地址,与预先生成的特征字典中的域名后缀集合进行比对,提取出属于同一应用程序的网络数据报文。
18.如权利要求10所述的装置,其特征在于,所述规则处理模块具体用于:
将所述规则雏形与预先生成的特征字典进行比对,判断所述规则雏形是否被包含于所述特征集合的一条记录中,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则;或者,判断所述规则雏形是否与所述特征集合的一条记录相同,若是,则输出告警消息;否则,生成属于该应用程序的一条识别规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410782566.4A CN104618132B (zh) | 2014-12-16 | 2014-12-16 | 一种应用程序识别规则生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410782566.4A CN104618132B (zh) | 2014-12-16 | 2014-12-16 | 一种应用程序识别规则生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104618132A CN104618132A (zh) | 2015-05-13 |
CN104618132B true CN104618132B (zh) | 2018-02-16 |
Family
ID=53152423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410782566.4A Active CN104618132B (zh) | 2014-12-16 | 2014-12-16 | 一种应用程序识别规则生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104618132B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106411845A (zh) * | 2016-08-27 | 2017-02-15 | 浙江远望信息股份有限公司 | 一种网络应用的智能识别方法 |
CN106953792A (zh) * | 2017-02-15 | 2017-07-14 | 北京浩瀚深度信息技术股份有限公司 | 基于弱特征累计的即时通讯业务识别方法及服务器 |
CN107426148B (zh) * | 2017-03-30 | 2020-07-31 | 成都优易数据有限公司 | 一种基于运行环境特征识别的反爬虫方法及系统 |
CN109144831B (zh) * | 2017-06-15 | 2021-10-29 | 中国移动通信集团浙江有限公司 | 一种app识别规则的获取方法及装置 |
CN107315671B (zh) * | 2017-06-16 | 2020-09-04 | 东软集团股份有限公司 | 应用状态监控方法、装置及其设备 |
CN108206769B (zh) * | 2017-12-26 | 2020-07-17 | 中国移动通信集团江苏有限公司 | 过滤网络质量告警的方法、装置、设备和介质 |
CN110083707B (zh) * | 2019-04-26 | 2021-04-30 | 苏州热工研究院有限公司 | 一种构建核电消防规范规则库的方法 |
CN111740923A (zh) * | 2020-06-22 | 2020-10-02 | 北京神州泰岳智能数据技术有限公司 | 应用识别规则的生成方法、装置、电子设备和存储介质 |
CN112579646A (zh) * | 2020-12-15 | 2021-03-30 | 中国建设银行股份有限公司 | 筛选清单的方法和装置 |
CN115022216A (zh) * | 2022-05-27 | 2022-09-06 | 中国电信股份有限公司 | 已安装app检测方法和装置、网络侧设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741908A (zh) * | 2009-12-25 | 2010-06-16 | 青岛朗讯科技通讯设备有限公司 | 一种应用层协议特征的识别方法 |
CN102045363A (zh) * | 2010-12-31 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 网络流量特征识别规则的建立方法、识别控制方法及装置 |
CN102185762A (zh) * | 2011-04-19 | 2011-09-14 | 北京网康科技有限公司 | 用户数据发送行为的识别与提取及其处理设备 |
-
2014
- 2014-12-16 CN CN201410782566.4A patent/CN104618132B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741908A (zh) * | 2009-12-25 | 2010-06-16 | 青岛朗讯科技通讯设备有限公司 | 一种应用层协议特征的识别方法 |
CN102045363A (zh) * | 2010-12-31 | 2011-05-04 | 成都市华为赛门铁克科技有限公司 | 网络流量特征识别规则的建立方法、识别控制方法及装置 |
CN102185762A (zh) * | 2011-04-19 | 2011-09-14 | 北京网康科技有限公司 | 用户数据发送行为的识别与提取及其处理设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104618132A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104618132B (zh) | 一种应用程序识别规则生成方法和装置 | |
CN110717049B (zh) | 一种面向文本数据的威胁情报知识图谱构建方法 | |
CN101453424B (zh) | 一种网络信息资源访问控制方法和系统 | |
CN112491917B (zh) | 一种物联网设备未知漏洞识别方法及装置 | |
CN112333706B (zh) | 物联网设备异常检测方法、装置、计算设备及存储介质 | |
CN110413864A (zh) | 一种网络安全情报采集方法、装置、设备及存储介质 | |
CN107547671A (zh) | 一种url匹配方法及装置 | |
CN112989831B (zh) | 一种应用在网络安全领域的实体抽取方法 | |
CN105471670A (zh) | 流量数据分类方法及装置 | |
CN108234452B (zh) | 一种网络数据包多层协议识别的系统和方法 | |
CN107315799A (zh) | 一种互联网重复信息筛选方法及系统 | |
CN107086925B (zh) | 一种基于深度学习的互联网流量大数据分析方法 | |
CN101470752A (zh) | 基于关键词解析调度的搜索引擎方法 | |
CN116684877A (zh) | 一种基于gyac-lstm的5g网络流量异常检测方法及系统 | |
CN117914599A (zh) | 基于图神经网络的移动网络恶意流量识别方法 | |
CN101562603B (zh) | 一种通过回显解析telnet协议的方法及系统 | |
CN111447169B (zh) | 一种在网关上的实时恶意网页识别方法及系统 | |
CN115567306B (zh) | 基于双向长短时记忆网络的apt攻击溯源分析方法 | |
CN110941836A (zh) | 一种分布式垂直爬虫方法及终端设备 | |
CN106385407A (zh) | 一种应用识别待分析数据包去噪声的方法和装置 | |
Erokhin et al. | The Dataset Features Selection for Detecting and Classifying Network Attacks | |
CN114254704A (zh) | 一种http隧道检测方法、装置、电子设备及存储介质 | |
CN113779473A (zh) | 一种基于人工智能的互联网大数据处理方法及系统 | |
EP3523942B1 (en) | Restrict transmission of manipulated content in a networked environment | |
CN116170829B (zh) | 一种独立专网业务的运维场景识别方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee after: NSFOCUS Technologies Group Co.,Ltd. Patentee after: NSFOCUS TECHNOLOGIES Inc. Address before: 100089 Beijing city Haidian District Road No. 4 North wa Yitai three storey building Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd. Patentee before: NSFOCUS TECHNOLOGIES Inc. |
|
CP01 | Change in the name or title of a patent holder |