CN102938764B - 应用识别处理方法及装置 - Google Patents

应用识别处理方法及装置 Download PDF

Info

Publication number
CN102938764B
CN102938764B CN201210448057.9A CN201210448057A CN102938764B CN 102938764 B CN102938764 B CN 102938764B CN 201210448057 A CN201210448057 A CN 201210448057A CN 102938764 B CN102938764 B CN 102938764B
Authority
CN
China
Prior art keywords
session
feature
packet
application
hit rate
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
Application number
CN201210448057.9A
Other languages
English (en)
Other versions
CN102938764A (zh
Inventor
韩鹏
李伟超
杨硕飞
鲁迅
陈裕涛
卢蓉
刘海霞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nsfocus Technologies Inc
Nsfocus Technologies Group Co Ltd
Original Assignee
NSFOCUS Information Technology Co Ltd
Beijing NSFocus Information Security Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NSFOCUS Information Technology Co Ltd, Beijing NSFocus Information Security Technology Co Ltd filed Critical NSFOCUS Information Technology Co Ltd
Priority to CN201210448057.9A priority Critical patent/CN102938764B/zh
Publication of CN102938764A publication Critical patent/CN102938764A/zh
Application granted granted Critical
Publication of CN102938764B publication Critical patent/CN102938764B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种应用识别处理方法及装置,该方法包括:对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;对所述会话进行特征提取,获取应用特征信息;对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;采用命中率最高的应用特征信息,对所述应用进行识别处理。本发明通过获取应用的特征信息,实现了根据这些特征信息识别出相应的应用,并通过匹配校验保证了识别应用的准确性。

Description

应用识别处理方法及装置
技术领域
本发明涉及网络安全技术,尤其涉及一种应用识别处理方法及装置。
背景技术
随着网络应用层出不穷,更多更复杂的安全风险隐藏于各种网络应用之中,例如:利用web服务安全漏洞进行的攻击,又如一些消耗带宽的应用,流媒体、视频下载等,挤占正常的网络资源,严重影响了企业的正常工作,网络安全管理面临新的挑战和新的问题。
基于上述原因,将各种应用识别出来,对网络管理和网络安全至关重要,然而现有技术中缺少一种快速、精确度高的识别应用的方法。
发明内容
针对上述缺陷,本发明提供一种应用识别处理方法及装置。
本发明一方面提供一种应用识别处理方法,包括:
对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;
对所述会话进行特征提取,获取应用特征信息;
对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;
采用命中率最高的应用特征信息,对所述应用进行识别处理。
本发明另一方面提供一种应用识别处理装置,包括:
解析模块,用于对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;
提取模块,用于对所述会话进行特征提取,获取应用特征信息;
校验模块,对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;
识别模块,采用命中率最高的应用特征信息,对所述应用进行识别处理。
本发明通过自动获取应用的特征信息,并根据这些特征信息识别出相应的应用,且通过匹配校验保证了识别应用的准确性。
附图说明
图1为本发明应用数据包获取方法实施例一的流程示意图;
图2为本发明应用数据包获取方法实施例二的流程示意图;
图3为本发明应用数据包获取方法实施例三的流程示意图;
图4为本发明应用数据包获取方法实施例四的流程示意图;
图5为本发明应用数据包获取方法实施例五的流程示意图;
图6为本发明应用数据包获取方法实施例六的流程示意图;
图7为本发明应用数据包获取方法实施例七的流程示意图;
图8为本发明应用数据包获取方法实施例八的流程示意图;
图9为本发明应用数据包获取方法实施例九的流程示意图;
图10为本发明应用数据包获取方法实施例十的流程示意图;
图11为本发明应用数据包获取装置实施例一的结构示意图;
图12为本发明应用数据包获取装置实施例二的结构示意图;
图13为本发明应用数据包获取装置实施例三的结构示意图。
具体实施方式
图1为本发明应用数据包获取方法实施例一的流程示意图,如图1所示,该方法包括:
步骤10、对于应用对应的抓包文件进行解析,获取各抓包文件中的会话;
具体实现时,首先,在指定位置遍历所有的抓包(pcap)文件,并对这些pcap文件的名字进行解析,进而将所有pcap文件按照应用分类,获取到与应用对应的pcap文件列表;其中,这些pcap文件是人工从大量应用中获取后存放在上述指定位置的,每种应用都会获取多个pcap文件,一般来说每个应用获取5~10个pcap文件;
然后,在上述与应用对应的pcap文件列表中,每次选取一种应用的一个pcap文件进行解析,获取该pcap文件的会话,其中,每个会话包含至少一个数据包;
步骤20、对上述会话进行特征提取,获取应用特征信息;其中,特征是指各应用所特有的,即以后可以根据该应用的特征信息识别出该应用;
步骤30、对上述应用特征信息进行匹配校验,获取各应用特征信息对应的特征命中率;由于从同种应用的不同pcap文件中获取到的特征并不唯一,需要通过校验来判断哪种特征或哪种特征组合的命中率最高,使后续识别该应用更加精确;这里特征命中率具体指会话命中率和数据包命中率;
步骤40、采用命中率最高的应用特征信息,对上述应用进行识别处理;上述过程中获取的应用特征信息和校验结果都写入数据库,并将校验后特征命中率最高的特征组合或特征以及这些特征组合或特征对应的应用名称,写入最终的特征文件;应用识别处理是指,当网络中的数据流量匹配到特征文件中的特征或特征组合,就可以在该特征文件中查找到匹配到的特征或特征组合对应的应用名称,也就可以识别出对应的应用。
需要说明的是,本发明整个过程都是自动化进行的,正常情况下,人工在获取pcap文件并放到指定位置后,就不需要再有人工干预了。
本实施例通过获取应用的特征信息,实现了根据这些特征信息就可以识别出相应应用,其中还通过匹配校验,保证了识别应用的准确性,且整个过程自动化进行,使整个特征提取和应用识别过程快速、准确,不仅节省了工作时间也节省了人力成本。
具体实现时,上述对上述会话进行特征提取,获取应用特征信息之前,还包括:对上述会话进行过滤处理,并对过滤后的会话进行重组处理;这里指按照一定约束条件将会话中的一些可能影响到后续提取特征的数据包过滤掉,对过滤后的会话进行重组处理是指按照会话的具有的一些共性,对会话进行分类;另外,上述对上述会话进行特征提取,获取应用特征信息,包括:对重组处理后的会话进行特征提取,获取应用特征信息;即应用特征信息的提取是在对应用的会话重组后进行的。
图2为应用数据包获取方法实施例二的流程示意图,如图2所示,上述会话进行过滤处理,并对过滤后的会话进行重组处理,具体实现时,该过程包括:
步骤201、过滤掉非传输控制协议(Transmission Control Protocol,简称TCP)、用户数据报协议(User Datagram Protocol,简称UDP)、超文本传送协议(hypertext transport protocol,简称HTTP)的数据包;避免非TCP、UDP、HTTP的数据包使样本空间扩大,从而影响特征提取的最终结果;
步骤202、过滤掉UDP数据包中的空负载数据包和域名系统(DomainName System,简称DNS)数据包;因为UDP中空负载的数据包对后续特征提取没有作用,不需要考虑,而DNS的数据包中包含有一些应用共有的特征,会对后续特征提取的结果造成影响;
步骤203、过滤掉HTTP数据包中的广告数据包;因为广告与应用本身并没有什么关系,如果保留的话会对后续特征提取的结果造成影响;具体实现时是利用HTTP数据包头的网址信息,对比现有的广告列表进行过滤;
步骤204、判断该pcap文件对应的应用是否能够按照端口分类,其中,若通过一端口传输的会话数与所有端口传输会话总数的比例值大于第一阈值,则将完成过滤处理之后的会话按端口分类;需要说明的是,某些应用使用不同的端口通信,另外一些应用可能会经常使用同一端口来通信,上述第一阈值为根据经验设置的一个比例值,根据该第一阈值,判断会话是否能按端口分类;若会话能按端口分类,则先进行步骤205,再进行步骤206,若不能按端口分类,则直接进行步骤206;
步骤205、将可以按端口分类的会话及其数据包,其中包含采用同一端口通信的会话列表,保存到一个指定位置,可以认为使用同一端口通信的会话具有某些相同的特征,后续从按端口分类的会话列表中提取该应用的特征可能比在所有会话中提取特征可靠性高;
步骤206、判断该pcap文件对应的应用是否能够按流量分类,若完成过滤处理之后的会话的数据流量大于第二阈值,则将完成过滤处理之后的会话按流量分类;其中第二阈值为根据经验设置的一流量值;
以PPlive应用为例,当它获取频道列表时采用命令通道传输命令,而在播放视频时采用数据通道传输视频信息,所以数据通道的数据流量通常比命令通道大得多,所以若解析出的pcap文件中存在一些数据流量较大的会话,则可以认为是这些会话采用的是数据通道,这类会话一般会采取特殊的数据封装方式,可以从这些会话的数据负载中提取出一些共有的特征;
另外,若可以按流量分类,则进行步骤207,若不能按流量分类,则进行步骤208;
步骤207、将可以按流量分类的会话,即数据流量大于上述第二阈值的会话,保存到一个指定位置,后续从按流量分类的会话列表中提取该应用的特征可能比在所有会话中提取特征可靠性高;
步骤208、将不能按端口和流量分类的会话,保存到一个指定位置,记为未分类会话;
步骤209、对进行端口分类或者流量分类后的会话按TCP、UDP、HTTP协议分类;另外上述未分类会话直接按TCP、UDP、HTTP协议分类;
步骤210、将按照协议分类后的会话按传输方向分类;即将步骤209中按TCP、UDP、HTTP分类后的会话再按传输方向分类,分为服务(server)端和客户(client)端的会话,即该会话是由server端发出,还是由client端发出,因为从同一端发出的会话的数据包可能存在一些共性,容易提取出一些特征;
这一步具体实现时,通过确定会话中的数据包是否包含client端的HOST信息,该HOST信息为数据包里的一个字段,若有HOST信息则数据包为client端发出,否则为server端发出;
至此,会话重组处理结束。
上述对重组后会话进行特征提取,获取应用特征信息,包括:
提取下述特征中的至少一种特征:
1、用于描述上述会话中的数据包负载长度信息的第一特征;即描述应用的会话中的数据包负载长度总是在一些长度值上或是总在一个长度范围内,记为ptlen特征;
2、用于描述承载上述会话中的数据包负载长度信息的字节的第二特征;即应用的会话中的数据包普遍存在在一偏移位置的几个字节,可以是一个字节(char)、两个字节(short)、四个字节(int),用于承载数据包负载长度信息或是承载该字节之后数据包负载长度信息,记为offlen特征;
3、用于描述上述会话中的数据包负载的一偏移位置或一偏移范围总是出现的特定字符串的第三特征;即描述应用的会话中的数据包负载普遍存在的在一偏移位置或一偏移范围的一串一定长度的公共字符串,记为content特征。
具体实现过程中,在按TCP、UDP分类的数据包中提取ptlen特征、offlen特征、content特征,对于HTTP只提取ptlen特征、content特征,因为HTTP中不存在offlen特征。
图3为应用数据包获取方法实施例三的流程示意图,如图3所示,提取ptlen特征的流程包括:
步骤301、获取包含应用的会话列表中所有数据包负载长度信息的集合;该集合经过去重,即若有至少两个数据包负载长度相同,则该长度信息只记一次;
步骤302、根据第三阈值对上述集合进行分类,分类后的集合作为上述第一特征,即ptlen特征;其中,该第三阈值根据经验设定,可以为自然数n,表示元素个数;判断上述集合内元素个数是否大于该第三阈值n,若集合内元素个数小于等于n,进行步骤303,若集合内元素个数大于n,进行步骤304;
步骤303、设置该集合类型为len,即该类型的数据包负载长度总是为某些典型的值,于是将该集合作为类型len的ptlen特征列表,例如(3,5,8);
步骤304、设置该集合的类型为range,即该类型的数据包负载长度在某一范围内;
步骤305、判断该集合中元素长度范围是否超过数据包长度范围,一般情况下数据包的长度在1~1500字节,但不以此为限;若超过数据包长度范围,进行步骤306;若没有超过数据包长度范围,则进行步骤307;
步骤306、设置特征为空,即该应用没有ptlen特征,可记为{null};
步骤307、选取该集合中的最小值和最大值,构成ptlen特征列表(min,max),例如(10,500);
步骤308、将步骤303、307获取的特征进行记录,可以按照{特征类型,特征列表}的方式记录,例如:{len,(3,5,8)}或{range,(10,500)};
步骤309、返回特征,将步骤306、308记录的特征返回,以备后续过程中使用。
至此,ptlen特征提取特征结束。
图4为应用数据包获取方法实施例四的流程示意图,如图4所示,提取offlen特征的方法包括:遍历上述会话中的数据包,获取承载数据包负载长度信息的字节作为第二特征,即offlen特征;具体的流程为:
步骤401、遍历上述会话中的数据包;
步骤402、获取承载数据包负载长度信息的字节作为offlen特征加入特征列表;即遍历这些数据包后获取这些数据包中用于承载数据包负载长度信息的字节,作为offlen特征;该特征列表具体可表示为(偏移位置,类型,长度),其中类型指字符型、整型等。
步骤403、判断是否遍历完所有的上述会话中的数据包,若没有,则继续遍历,然后返回进行步骤401,若已经遍历完成,则进行步骤404;该步骤具体实现时,可在程序中设置计算数据包总数,每遍历一个记一次数,直到与总数相等,即遍历完成;
步骤404、对步骤402获取的特征列表进行去重,即若得到的特征列表中有至少两个内容相同的offlen特征,只记一次;
步骤405、获取去重后的最终offlen特征列表;
至此,offlen特征提取完成。
图5为应用数据包获取方法实施例五的流程示意图,如图5所示,提取content特征的流程包括:
步骤501、将上述会话中的HTTP数据包的公共字符串替换为空字符串;例如HTTP数据包所共有的固定头部串,替换为空字符串;
步骤502、遍历上述会话中的数据包,获取上述数据包的公共字符串及其出现次数,并构建计数字典,其中,上述数据包包括替换后的HTTP数据包;即将在至少两个数据包中一偏移位置或一偏移范围出现的相同字符串的内容和具体出现次数进行记录,出现次数指出现在多少个数据包中,例如子串“abc”在15个数据包的一偏移位置或一偏移范围出现,记为{“abc”:15};
步骤503、判断是否遍历完上述会话中的数据包;若没有,则返回进行步骤502,若遍历完则进行步骤504;该步骤具体实现时,可在程序中设置计算数据包总数,每遍历一个记一次数,直到与总数相等,即遍历完成;
步骤504、从上述计数字典中提取出出现次数大于第四阈值的公共字符串,构建偏移字典;该第四阈值为自然数n,表示次数,记录符合要求的公共字符串具体偏移位置或偏移位置范围;例如子串“abc”偏移2字节,记为{“abc”:2},若在5~50字节范围内偏移,记为{“abc”:(5,50)};
步骤505、从上述偏移字典中提取出同一偏移位置的公共字符串;其中,将出现在正向偏移位置的公共字符串构建为正向匹配串,记为Z类型content特征;将出现在反向偏移位置的公共字符串构建为反向匹配串,记为D类型content特征;
步骤506、从上述偏移字典中提取出偏移范围内的公共字符串,构成搜索串,记为S类型content特征,其中偏移范围一般指某一正向偏移范围;
步骤507、获取最终的content特征列表,包括:Z类型、D类型、S类型的content特征列表。
至此,content特征提取完成。
上述对上述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率,包括:统计上述应用的会话中存在至少一个数据包能够与上述第一特征、第二特征、第三特征中的至少一个特征匹配的会话数;
计算用于表示所述会话数与所述应用的会话总数比值的会话命中率;
统计所述应用的会话中所有数据包中能够与所述第一特征、第二特征、第三特征中的至少一个特征匹配的数据包数;
计算用于表示所述数据包数与所述应用的会话中所有数据包总数比值的数据包命中率;
所述会话命中率和所述数据包命中率作为所述特征命中率。
图6为应用数据包获取方法实施例六的流程示意图,如图6所示,具体实现时,该校验过程包括:
步骤601、从数据库中读取出前述实施例中获取到的三种特征;
步骤602、分别对上述获得的三种特征进行校验,以content特征为例,其校验方法如下:在上述应用的所有pcap解析出的所有会话中,统计出会话中存在至少一个数据包匹配到该content特征的会话数,算出该统计值与上述所有会话总数的比值,记为会话命中率;然后统计处上述应用的会话中所有数据包中,能够匹配到该content特征的数据包数,算出该统计值与上述所有数据包总数的比值,记为数据包命中率;ptlen特征、offlen特征的校验方法与content特征相同;
步骤603、将步骤602中的校验结果写入数据库;
步骤604、从数据库中读取出校验后的content特征,进行组合,组合后可以为(c1,c2,c3)等,但并不以此为限;需要说明的是,这里在对content特征进行组合时,每一组合选择的是不在同一偏移位置的content特征,以获取最严格的content特征组合,更准确的识别出应用;
步骤605、对步骤604中得到的所有content特征组合进行校验,以(c1,c2,c3)为例,其校验方法如下:在上述应用的所有pcap解析出的所有会话中,统计出会话中存在至少一个数据包匹配到该特征组合的会话数,算出该统计值与上述所有会话总数的比值,记为会话命中率;然后统计出上述应用的会话中所有数据包中,能够匹配到该特征组合的数据包数量,算出该统计值与上述所有数据包总数的比值,记为数据包命中率;其它所有content特征组合的校验方法与此相同;
步骤606、将步骤605中的校验结果写入数据库;
步骤607、从数据库中读出校验后的ptlen特征、offlen特征以及校验后的content特征组合,并将这些特征进行组合,例如取出的ptlen特征记为(p1,p2,p3,……),取出的offlen特征记为(o1,o2,o3,……),取出的content特征记为(c1,c2,c3,……),组合后可以为(p1,o1,c1)或者(p1,o1,c2)等;
步骤608、对步骤607中得到的所有特征组合进行校验,以(p1,o1,c1)为例,其校验方法如下:在上述应用的所有pcap解析出的所有会话中,统计出会话中存在至少一个数据包匹配该特征组合的会话数量,算出该统计值与上述所有会话总数的比值,记为会话命中率;然后统计出上述应用的会话中所有数据包中,能够匹配到该特征组合的数据包数量,算出该统计值与上述所有数据包总数的比值,记为数据包命中率;其它所有特征组合的校验方法与此相同;
步骤609、将步骤608中的校验结果写入数据库;
步骤610、根据上述会话命中率及数据包命中率,即特征命中率,计算用于过滤上述第一特征、第二特征、第三特征的第五阈值;该第五阈值为包含上述会话命中率中最大值与最小值的算术平均值以及上述数据包命中率中最大值与最小值的算术平均值;
步骤611、根据上述第五阈值,从数据库中读取出特征命中率较高的特征或特征组合,写入最终特征文件(命名为signature.int文件)。
图2、图3、图4、图5、图6对应的实施例不断重复执行,直到将同一应用的pcap文件解析完成,并将过程中获取的相关数据都存入数据库。
需要说明的是,在上述提取特征的过程中,可以调整经验参数,即调整上述提取过程中设置的一些用于过滤的阈值,其目的是防止由于设置的阈值不准确,而导致特征遗漏;调整经验参数遵循的原则是:在最少的数据包中找出特征最多且特征出现概率最高的特征组合;且整个调整过程自动完成。参数的调整可分为以下3个部分:
1、调整按端口和会话流量分类时,设置的上述第一阈值和第二阈值;
图7为应用数据包获取方法实施例七的流程示意图,如图7所示,以第一阈值为例,该调整过程为:
步骤701、获取各端口传输的会话数与所有端口传输会话总数的比例值;
步骤702、判断步骤701中获取各端口比例值的最大值是否大于根据经验设定的第一阈值的最小值,若大于,则进行步骤703;否则进行步骤704;
步骤703、重新计算第一阈值,接着进行步骤705;此处重新计算可以是对最初设置的阈值进行递减,一直递减到提取到合适的特征或递减到最初设定的该阈值的最小值;
步骤704、该应用不按端口进行分类;
步骤705、根据最终返回的第一阈值,将会话按照端口分类;需要说明的是,若用户对上述比例值有特殊要求,按照用户的指定的比例值对会话按照端口分类。
另外,第二阈值,即会话按流量分类的阈值调整步骤与上述步骤相同,只是将各端口传输的会话数与所有端口传输会话总数的比例值换作会话流量,在此不再赘述。
2、调整过滤特征时计算的第五阈值;
图8为应用数据包获取方法实施例八的流程示意图,如图8所示,以content特征为例,该调整过程为:
步骤801、在上述数据库中获取上述应用所有content特征的记录;
步骤802、根据步骤801中获取的记录中的会话命中率和数据包命中率的最大值和最小值,计算过滤content特征的第五阈值;第五阈值的计算方法如上所述,在此不再赘述;
步骤803、判断步骤802计算出的第五阈值是否小于根据经验设定的过滤比例的最小值,若小于,则进行步骤804;若大于,则进行步骤805;
步骤804、重新计算用于过滤content特征的第五阈值;
步骤805、将最终的第五阈值返回给后续处理环节;
ptlen特征和offlen特征在数据包和会话中出现比例的调整过程和上述content特征的相关调整过程相同,在此不再赘述。
3、特征提取参数的调整,在特征提取过程中,为了获取最优特征组合,主要通过调整3个参数的值:
用于表示获取每个会话前几个数据包进行特征提取的第六阈值,记为pt_num;
用于表示上述第三特征,即content特征在数据包中出现比例的第七阈值,记为ct_per;
用于表示上述第三特征,即content特征的长度要求的第八阈值,记为ct_len。
在上述特征提取参数的调整前,首先,设定上述参数的最严格条件、最低要求条件、每次调整的间隔和调整方法;其中,设定最严格条件是还包括一个参数:ptlen特征的阈值,记为ptlen_num,大于该阈值的ptlen特征为range类型,小于该阈值的ptlen特征为len类型;根据经验设定的最初最严格条件为:(pt_num:3;ct_per:0.9;ct_len:10;ptlen_num:5);设定最低要求条件,包括:ct_per的最低阈值,记为lowest_ct_per;ct_len的最低阈值,记为lowest_ct_len;pt_num的最大值,记为max_pt_num;以及阈值下调幅度,记为per_interval,根据经验设置的最初最低要求条件为:(lowesct_ct_per:0.3;per_interval:0.1;lowert_ct_len:4;10);
然后,根据上述调整时间间隔和调整方法,从上述最严格条件开始进行特征提取,其中调整方法有3中,会在下文中具体描述;当进行到特征匹配校验结束,检查提取到的特征,如果ptlen特征、offlen特征、content特征同时满足上述最严格条件,即(ptlen,content,offlen)特征组合满足条件,则将此时的特征组合和各参数值保存;如果只有(content,ptlen)或(content,offlen)中的一个组合满足上述最严格条件,先检查之前根据经验设置的文件中是否保存有此种组合特征,如果有,则保存该特征组合和此时各参数值,如果没有,则丢弃;如果只有content特征满足上述最严格条件,先检查之前根据经验设置的文件中是否保存有只有content特征的情况,如果有,则保存该特征和此时各参数值,如果没有,则丢弃;
图9为应用数据包获取方法实施例九的流程示意图,如图9所示,具体实现时,在上述将特征和相应参数保存的基础上,开始特征提取参数的调整,该过程包括:
步骤901、判断是否需要调整参数,即在上述保存特征和相应参数的指定位置,检查是否保存有ptlen特征、offlen特征、content特征同时满足条件的,如果有,则不需要调整参数,进行步骤902;如果没有,则需要调整参数,进行步骤903;
步骤902、将获取的特征和各个参数值同时保存到最终特征文件(命名为signature.int文件)和数据库中;
步骤903、调整参数,即降低参数要求,然后重复特征提取过程;若将参数降到最低要求条件时,还没有提取到ptlen特征、offlen特征、content特征同时满足条件的特征组合,则进行步骤904;
步骤904、在上述保存特征和相应参数的指定位置,检查是否保存有(content,ptlen)或(content,offln)这种特征组合,如果有,则进行步骤902;如果没有,则进行步骤905;
步骤905、在上述保存特征和相应参数的指定位置,检查是否保存有只有content特征的情况,如果有,则进行步骤902;如果没有,则进行步骤906;
步骤906、将最低要求条件的各参数,即(lowest_ct_per:0.3;per_interval:0.1;lowest_ct_len:4;max_pt_num:10),同时保存到signature.int文件和数据库中;代表该应用没有提取到任何特征,然后进行下一应用的特征提取。
上述步骤903中的调整参数,具体有三种方式,在设置上述调整方法时进行选择:
方式1、将上述3个参数同时降低一次要求,可表示为(pt_num+1,ct_len-1,ct_per-per_interval),然后再提取特征。如果还没有提取到特征,再此基础上再降低一次要求,依次进行,直到提取到合适的特征或参数已经调整到最低要求条件;
方式2、将3个参数按照ct_per、ct_len、pt_num的顺序每次降低一个参数条件后再提取特征,即按照下列参数条件组合依次进行特征提取:
(pt_num,ct_len,ct_per);
(pt_num,ct_len,ct_per-=per_interval);
(pt_num,ct_len-1,ct_per);
如果仍未提取到特征,则按该方式在上述方式1,即(pt_num+1,ct_len-1,ct_per-per_interval)的基础上再进行特征提取,直到提取到合适的特征或参数已经调整到最低要求条件;
方式3、将3个参数中任一参数条件降低要求,其他参数条件不变,然后提取特征,即按照下列参数条件组合依次进行特征提取:
(pt_num,ct_len,ct_per);
(pt_num,ct_len,ct_per-=per_interval);
(pt_num,ct_len-1,ct_per);
(pt_num,ct_len-1,ct_per-=per_interval);
(pt_num+1,ct_len,ct_per);
(pt_num+1,ct_len,ct_per-=per_interval);
(pt_num+1,ct_len-1,ct_per);
如果仍为提取到特征,则按该方式在上述方式1,即(pt_num+1,ct_len-1,ct_per-per_inter)的基础上再进行特征提取,直到提取到合适的特征或参数已经调整到最低要求条件。
上述参数调整的过程是在整个应用识别过程中动态进行的,从而保证了特征提取准确性。
图10为应用数据包获取方法实施例十的流程示意图,如图10所示,根据上述所有实施例,该应用识别处理方法的整个过程为:
步骤1010、在指定位置遍历所有的抓包(pcap)文件,并对这些pcap文件的名字进行解析,进而将所有pcap文件按照应用分类,获取到与应用对应的pcap文件列表;其中这些pcap文件是人工从大量应用中获取后存放在上述指定位置的,每种应用都会获取多个pcap文件;
步骤1020、在上述与应用对应的pcap文件列表中,每次选取一种应用的一个pcap文件进行解析,获取该pcap文件的会话信息;
步骤1030、对解析后的上述pcap文件中的会话以及会话的数据包进行过滤,并对过滤后的会话进行重组;
步骤1040、在重组后的上述会话中进行特征提取;
步骤1050、对提取到的上述特征进行匹配校验,获取最终的数据包命中率和会话命中率;
步骤1060、将获取的上述特征及其校验结果写入数据库;
步骤1070、判断上述应用的所有pcap包是否解析完,若没有,则重复步骤1020~1060;若解析完,则进行步骤80;具体实现时,可以通过在程序中设置pcap文件的总数,每解析一个记一次数,直到完成;
步骤1080、判断是否需要调整经验参数,若需要,则进行步骤1090;若不需要,则进入步骤1090;
步骤1090、调整参数,并在调整后重复步骤1020~1070;
步骤1100、从数据库中读取命中率最高的特征或特征组合作为推荐的特征值,写入最终特征文件(命名为signature.int文件),同时该signature.int文件中还记载了这些特征或特征组合对应的应用名称;
步骤1110、进行应用识别;当网络中的数据流量匹配到上述signature.int文件中的特征或特征组合,就可以在该signature.int文件中查找到匹配到的特征或特征组合所对应的应用名称,就可以识别出对应的应用。
需要说明的是,该过程自动化进行,人工在获取pcap文件并放到指定位置后,就不需要再有人工干预了。
本实施例通过在应用中提取特征,对这些特征以及特征组合进行匹配校验和并在提取过程中进行参数调整,以确保将来根据这些获取的特征及特征组合能准确识别出相应应用,另外,将整个过程中的数据写入数据库,保证了即使最终获取的特征或特征组合不是最优的话,还可以通过查询数据库的方式来获取其它特征或特征组合;且整个过程自动化进行,使整个特征提取和应用识别过程快速、准确,节省了工作时间和人力成本。
图11为本发明应用数据包获取装置实施例一的结构示意图,如图11所示,该装置包括:解析模块110,提取模块120,校验模块130和识别模块140,其中:
解析模块110,用于对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;
提取模块120,用于对上述会话进行特征提取,获取应用特征信息;
校验模块130,对上述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;
识别模块140,采用命中率最高的应用特征信息,对上述应用进行识别处理。
上述各模块的工作内容与图1所示方法实施例相同,在此不再赘述。
本实施例通过提取模块提取到的特征信息,识别模块就可以根据这些特征识别出对应的应用,其中由于增加了校验模块,使得应用识别更加准确。
图12为本发明应用数据包获取装置实施例二的结构示意图,如图11所示,在图11的基础上,该装置还包括重组模块150,用于对上述会话中的数据包进行过滤处理,并对过滤后的会话进行重组处理;在此,上述提取模块120,具体用于对重组处理后的会话进行特征提取,获取应用特征信息。
更具体的,重组模块150,用于过滤掉所述会话中的非传输控制协议TCP、用户数据报协议UDP、超文本传送协议HTTP的数据包;
过滤掉UDP数据包中的空负载数据包和域名系统DNS数据包;
过滤掉HTTP数据包中的广告数据包;
对完成过滤处理后的会话按TCP、UDP、HTTP协议分类;
将按照协议分类后的会话按传输方向分类。
此处重组模块150的功能对应对上述图2实施例中会话不按照端口或流量分类的情况,即未分类的情况,在此不再赘述。
另外,重组模块150,具体用于所述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类之前,
若通过一端口传输的会话数与所有端口传输会话总数的比例值大于第一阈值,则将完成过滤处理之后的会话按端口分类;
若完成过滤处理之后的会话的数据流量大于第二阈值,则将完成过滤处理之后的会话按流量分类;
上述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类,具体为:
对进行端口分类或者流量分类后的会话按TCP、UDP、HTTP协议分类。
此处重组模块150的功能对应于上述图2实施例中会话按端口或流量分类的情况,在此不再赘述。
上述提取模块120,具体用于提取下述特征中的至少一种特征:
用于描述所述会话中的数据包负载长度信息的第一特征;
用于描述承载所述会话中的数据包负载长度信息的字节的第二特征;
用于描述所述会话中的数据包负载的偏移位置或偏移范围总是出现的特定字符串的第三特征。
更具体的,提取模块120,用于获取包含应用的会话列表中所有数据包负载长度信息的集合;根据第三阈值对所述集合进行分类,分类后的集合作为所述第一特征。
用于遍历所述会话中的数据包,获取承载数据包负载长度信息的字节作为所述第二特征。
用于将所述会话中的HTTP数据包的公共字符串替换为空字符;
遍历所述会话中的数据包,获取所述数据包的公共字符串及其出现次数,并构建计数字典,其中,所述数据包包括替换后的HTTP数据包;
从所述计数字典中提取出出现次数大于第四阈值的公共字符串,构建偏移字典;
从所述偏移字典中提取出同一偏移位置的公共字符串作为所述第三特征;
从所述偏移字典中提取出偏移范围内的公共字符串作为所述第三特征。
具体提取过程对应于上述图3、图4、图5的方法实施例,在此不再赘述。
在具体实现过程中,上述校验模块130,用于统计上述应用的会话中存在至少一个数据包能够与上述第一特征、第二特征、第三特征中的至少一个特征匹配的会话数;
计算用于表示上述会话数与上述应用的会话总数比值的会话命中率;
统计上述应用的会话中所有数据包中能够与上述第一特征、第二特征、第三特征中的至少一个特征匹配的数据包数;
计算用于表示上述数据包数与上述应用的会话中所有数据包总数比值的数据包命中率;
上述会话命中率和数据包命中率作为特征命中率。
具体校验过程对应于上述图6方法实施例,在此不再赘述。
图13为本发明应用数据包获取装置实施例三的结构示意图,如图13所示,在图12的基础上,该装置还包括计算模块160,计算模块,用于根据上述特征命中率,计算用于过滤第一特征、第二特征、第三特征的第五阈值。根据该第五阈值过滤后,得到特征命中率较高的特征或特征组合。
需要说明的是,其中设置的各阈值可以通过增加调整模块进行自动调整,对应于上述图7、图8、图9方法实施例,以更好的提高识别应用的准确性。
本实施例中提取模块提取了第一特征、第二特征、第三特征,识别模块根据这三种特种的一个或组合可以识别出对应的应用,通过校验模块的校验可以筛选出特征命中率最高的特征或特征组合,更加保证了识别应用的可靠性和准确性,且整个过程自动化实现,节省了工作时间和投入的人力成本。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (14)

1.一种应用识别处理方法,其特征在于,包括:
对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;
对所述会话进行特征提取,获取应用特征信息;
对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;
采用命中率最高的应用特征信息,对所述应用进行识别处理;
所述对所述会话进行特征提取,获取应用特征信息之前,还包括:
对所述会话中的数据包进行过滤处理,并对过滤后的会话进行重组处理;
所述对所述会话进行特征提取,获取应用特征信息,包括:
对重组处理后的会话进行特征提取,获取应用特征信息;
所述对所述会话中的数据包进行过滤处理,并对过滤后的会话进行重组处理,包括:
过滤掉所述会话中的非传输控制协议TCP、用户数据报协议UDP、超文本传送协议HTTP的数据包;
过滤掉UDP数据包中的空负载数据包和域名系统DNS数据包;
过滤掉HTTP数据包中的广告数据包;
对完成过滤处理后的会话按TCP、UDP、HTTP协议分类;
将按照协议分类后的会话按传输方向分类;
所述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类之前,还包括:
若通过一端口传输的会话数与所有端口传输会话总数的比例值大于第一阈值,则将完成过滤处理之后的会话按端口分类;
若完成过滤处理之后的会话的数据流量大于第二阈值,则将完成过滤处理之后的会话按流量分类;
所述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类,具体为:
对进行端口分类或者流量分类后的会话按TCP、UDP、HTTP协议分类。
2.根据权利要求1所述的方法,其特征在于,所述对重组处理后的会话进行特征提取,获取应用特征信息,包括:
提取下述特征中的至少一种特征:
用于描述所述会话中的数据包负载长度信息的第一特征;
用于描述承载所述会话中的数据包负载长度信息的字节的第二特征;
用于描述所述会话中的数据包负载的一偏移位置或一偏移范围总是出现的特定字符串的第三特征。
3.根据权利要求2所述的方法,其特征在于,提取第一特征,包括:
获取包含应用的会话列表中所有数据包负载长度信息的集合;
根据第三阈值对所述集合进行分类,分类后的集合作为所述第一特征。
4.根据权利要求2所述的方法,其特征在于,提取第二特征,包括:
遍历所述会话中的数据包,获取承载数据包负载长度信息的字节作为所述第二特征。
5.根据权利要求2所述的方法,其特征在于,提取第三特征,包括:
将所述会话中的HTTP数据包的公共字符串替换为空字符串;
遍历所述会话中的数据包,获取所述数据包的公共字符串及其出现次数,并构建计数字典,其中,所述数据包包括替换后的HTTP数据包;
从所述计数字典中提取出出现次数大于第四阈值的公共字符串,构建偏移字典;
从所述偏移字典中提取出同一偏移位置的公共字符串作为所述第三特征;
从所述偏移字典中提取出偏移范围内的公共字符串作为所述第三特征。
6.根据权利要求2~5中任一项所述的方法,其特征在于,所述对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率,包括:
统计所述应用的会话中存在至少一个数据包能够与所述第一特征、第二特征、第三特征中的至少一个特征匹配的会话数;
计算用于表示所述会话数与所述应用的会话总数比值的会话命中率;
统计所述应用的会话中所有数据包中能够与所述第一特征、第二特征、第三特征中的至少一个特征匹配的数据包数;
计算用于表示所述数据包数与所述应用的会话中所有数据包总数比值的数据包命中率;
所述会话命中率和所述数据包命中率作为所述特征命中率。
7.根据权利要求6所述的方法,其特征在于,所述对重组处理后的会话进行特征提取,获取应用特征信息,还包括:
根据所述特征命中率,计算用于过滤所述第一特征、第二特征、第三特征的第五阈值。
8.一种应用识别处理装置,其特征在于,包括:
解析模块,用于对与应用对应的抓包文件进行解析,获取各抓包文件中的会话;
提取模块,用于对所述会话进行特征提取,获取应用特征信息;
校验模块,对所述应用特征信息进行匹配校验,获取与各应用特征信息对应的特征命中率;
识别模块,采用命中率最高的应用特征信息,对所述应用进行识别处理;
重组模块,用于对所述会话中的数据包进行过滤处理,并对过滤后的会话进行重组处理;
所述提取模块,具体用于对重组处理后的会话进行特征提取,获取应用特征信息;
所述重组模块,具体用于过滤掉所述会话中的非传输控制协议TCP、用户数据报协议UDP、超文本传送协议HTTP的数据包;
过滤掉UDP数据包中的空负载数据包和域名系统DNS数据包;
过滤掉HTTP数据包中的广告数据包;
对完成过滤处理后的会话按TCP、UDP、HTTP协议分类;
将按照协议分类后的会话按传输方向分类;
所述重组模块,具体用于所述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类之前,
若通过一端口传输的会话数与所有端口传输会话总数的比例值大于第一阈值,则将完成过滤处理之后的会话按端口分类;
若完成过滤处理之后的会话的数据流量大于第二阈值,则将完成过滤处理之后的会话按流量分类;
所述对完成过滤处理后的会话按TCP、UDP、HTTP协议分类,具体为:
对进行端口分类或者流量分类后的会话按TCP、UDP、HTTP协议分类。
9.根据权利要求8所述的装置,其特征在于,所述提取模块,具体用于提取下述特征中的至少一种特征:
用于描述所述会话中的数据包负载长度信息的第一特征;
用于描述承载所述会话中的数据包负载长度信息的字节的第二特征;
用于描述所述会话中的数据包负载的偏移位置或偏移范围总是出现的特定字符串的第三特征。
10.根据权利要求9所述的装置,其特征在于,所述提取模块,具体用于获取包含应用的会话列表中所有数据包负载长度信息的集合;
根据第三阈值对所述集合进行分类,分类后的集合作为所述第一特征。
11.根据权利要求9所述的装置,其特征在于,所述提取模块,具体用于遍历所述会话中的数据包,获取承载数据包负载长度信息的字节作为所述第二特征。
12.根据权利要求9所述的装置,其特征在于,所述提取模块,具体用于将所述会话中的HTTP数据包的公共字符串替换为空字符;
遍历所述会话中的数据包,获取所述数据包的公共字符串及其出现次数,并构建计数字典,其中,所述数据包包括替换后的HTTP数据包;
从所述计数字典中提取出出现次数大于第四阈值的公共字符串,构建偏移字典;
从所述偏移字典中提取出同一偏移位置的公共字符串作为所述第三特征;
从所述偏移字典中提取出偏移范围内的公共字符串作为所述第三特征。
13.根据权利要求9~12中任一项所述的装置,其特征在于,所述校验模块,具体用于统计所述应用的会话中存在至少一个数据包能够与所述第一特征、第二特征、第三特征中的至少一个特征匹配的会话数;
计算用于表示所述会话数与所述应用的会话总数比值的会话命中率;
统计所述应用的会话中所有数据包中能够与所述第一特征、第二特征、第三特征中的至少一个特征匹配的数据包数;
计算用于表示所述数据包数与所述应用的会话中所有数据包总数比值的数据包命中率;
所述会话命中率和所述数据包命中率作为所述特征命中率。
14.根据权利要求13所述的装置,其特征在于,还包括:
计算模块,用于根据所述特征命中率,计算用于过滤所述第一特征、第二特征、第三特征的第五阈值。
CN201210448057.9A 2012-11-09 2012-11-09 应用识别处理方法及装置 Active CN102938764B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210448057.9A CN102938764B (zh) 2012-11-09 2012-11-09 应用识别处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210448057.9A CN102938764B (zh) 2012-11-09 2012-11-09 应用识别处理方法及装置

Publications (2)

Publication Number Publication Date
CN102938764A CN102938764A (zh) 2013-02-20
CN102938764B true CN102938764B (zh) 2015-05-20

Family

ID=47697632

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210448057.9A Active CN102938764B (zh) 2012-11-09 2012-11-09 应用识别处理方法及装置

Country Status (1)

Country Link
CN (1) CN102938764B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9473355B2 (en) * 2013-03-14 2016-10-18 Amazon Technologies, Inc. Inferring application inventory
US10237147B2 (en) * 2013-05-13 2019-03-19 Marvell World Trade Ltd. Heuristic network traffic classification using byte-distributions
CN105100023B (zh) * 2014-05-21 2018-10-16 腾讯科技(深圳)有限公司 数据包特征提取方法及装置
CN104348682A (zh) * 2014-10-11 2015-02-11 北京中创腾锐技术有限公司 一种移动应用流量特征自动分析的方法和系统
CN104579845A (zh) * 2015-01-19 2015-04-29 太仓市同维电子有限公司 智能监控孩子上网记录装置的报警方法
CN105279230A (zh) * 2015-09-16 2016-01-27 广东顺德中山大学卡内基梅隆大学国际联合研究院 通过主动学习方法构建互联网应用特征识别数据库的方法及系统
CN107426049A (zh) * 2017-05-16 2017-12-01 国家计算机网络与信息安全管理中心 一种网络流量精确检测方法、设备及存储介质
CN108234347B (zh) * 2017-12-29 2020-04-07 北京神州绿盟信息安全科技股份有限公司 一种提取特征串的方法、装置、网络设备及存储介质
CN111371700A (zh) * 2020-03-11 2020-07-03 武汉思普崚技术有限公司 一种应用于正向代理环境中的流量识别方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505276A (zh) * 2009-03-23 2009-08-12 杭州华三通信技术有限公司 网络应用流量识别方法和装置及网络应用流量管理设备
CN101710898A (zh) * 2009-11-06 2010-05-19 北京理工大学 一种应用软件通信协议特征的描述方法
CN101883001A (zh) * 2009-05-08 2010-11-10 北京启明星辰信息技术股份有限公司 小型网络中p2p应用的流量识别及管理的方法和系统
CN102724317A (zh) * 2012-06-21 2012-10-10 华为技术有限公司 一种网络数据流量分类方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011143633A2 (en) * 2010-05-14 2011-11-17 Evolution Robotics Retail, Inc. Systems and methods for object recognition using a large database

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101505276A (zh) * 2009-03-23 2009-08-12 杭州华三通信技术有限公司 网络应用流量识别方法和装置及网络应用流量管理设备
CN101883001A (zh) * 2009-05-08 2010-11-10 北京启明星辰信息技术股份有限公司 小型网络中p2p应用的流量识别及管理的方法和系统
CN101710898A (zh) * 2009-11-06 2010-05-19 北京理工大学 一种应用软件通信协议特征的描述方法
CN102724317A (zh) * 2012-06-21 2012-10-10 华为技术有限公司 一种网络数据流量分类方法和装置

Also Published As

Publication number Publication date
CN102938764A (zh) 2013-02-20

Similar Documents

Publication Publication Date Title
CN102938764B (zh) 应用识别处理方法及装置
US9210090B1 (en) Efficient storage and flexible retrieval of full packets captured from network traffic
CN102664935B (zh) 一种web类用户行为和用户信息的关联输出方法及系统
CN102098331B (zh) 一种还原web类应用内容的方法及其系统
CN104320304B (zh) 一种易扩展的多方式融合的核心网用户流量应用识别方法
US8180916B1 (en) System and method for identifying network applications based on packet content signatures
CN106330584B (zh) 一种业务流的识别方法及识别装置
CN103281213A (zh) 一种网络流量内容提取和分析检索方法
US9100326B1 (en) Automatic parsing of text-based application protocols using network traffic data
US20120197847A1 (en) Method and System for Monitoring and Tracing Multimedia Resource Transmission
CN102882703A (zh) 一种基于http分析的url自动分类分级的系统及方法
CN104333483A (zh) 互联网应用流量识别方法、系统及识别装置
CN111222019B (zh) 特征提取的方法和装置
WO2017185912A1 (zh) 一种基于哈希节点的终端设备信息统计的方法及装置
CN107666486A (zh) 一种基于报文协议特征的网络数据流恢复方法及系统
CN102752216B (zh) 一种识别动态特征应用流量的方法
CN104333461A (zh) 互联网应用流量识别方法、系统及识别装置
CN104023018A (zh) 一种文本协议的逆向解析方法和系统
CN115473850B (zh) 一种基于ai的实时数据过滤方法、系统及存储介质
CN109783330B (zh) 日志处理方法、显示方法和相关装置、系统
CN110099138A (zh) 一种处理带vlan tag的dhcp数据的方法及系统
CN103036746A (zh) 基于网络中间点的网页响应时间被动测量方法及系统
CN107517237B (zh) 一种视频识别方法和装置
CN105100246A (zh) 一种基于下载资源名称的网络流量管控方法
CN106982147B (zh) 一种Web通讯应用的通讯监控方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100089 3rd floor, Yitai building, 4 Beiwa Road, Haidian District, Beijing

Patentee after: NSFOCUS Technologies Group Co.,Ltd.

Patentee after: NSFOCUS TECHNOLOGIES Inc.

Address before: 100089 3rd floor, Yitai building, 4 Beiwa Road, Haidian District, Beijing

Patentee before: NSFOCUS INFORMATION TECHNOLOGY Co.,Ltd.

Patentee before: NSFOCUS TECHNOLOGIES Inc.

CP01 Change in the name or title of a patent holder