◆王文涛
安全协议综合识别方法
◆王文涛
(解放军91033部队 山东 266003)
安全协议识别技术是信息安全领域的关键问题。现有的三类协议识别方法各有优缺点。本文首先分析研究安全协议识别特征项,在此基础上,综合利用现有协议识别方法,给出安全协议识别策略,提出安全协议识别算法,识别报文所属的安全协议类型。实验结果表明本文方法可以有效识别安全协议。
安全协议;协议识别;端口特征;负载内容特征;流量统计特征
当前大量网络安全关键应用都以其所采用网络协议的详细描述为基础,网络协议流量分析也成为各种安全应用的重要环节。基于网络报文数据,识别信息系统所采用的协议类型是网络协议流量分析的关键内容,有助于对各种网络应用实施监控和管理,能够有效降低系统面临的安全风险,提升信息系统抵御恶意攻击的能力。
随着密码技术的广泛应用,安全协议被大量应用在互联网各种核心、关键应用中,与安全协议相关的各种数据在网络流量中比重日益增加,对安全协议的识别已成为当前网络安全技术中关键技术之一。
现有协议识别方法主要包括基于端口映射的方法、基于负载内容的方法、基于流量统计特征的方法。在协议识别的早期,许多传统应用大都采用由IANA分配的固定端口,因此可以依据端口号快速地识别出相应的网络协议。随着采用动态端口技术和复用端口技术的应用不断增加,基于端口映射的识别方法在很多协议上识别失效,人们开始研究基于负载内容的识别方法,利用协议负载的内容特征进行识别。该方法能够实现精确的协议识别,但需要预先建立待识别协议的特征项,对新版本协议的识别存在一定的滞后性;对包含加密内容的安全协议,由于可提取的特征较为稀少,特征提取难度较大。为了不依赖于报文的负载内容识别协议,基于流量统计特征的协议识别方法受到了关注,其基本思想是:相同协议的网络流具有相似的流量统计特征,可依据网络报文的流量统计特征完成对协议的识别。相对基于负载内容的协议识别方法,基于流量统计特征的协议识别方法可以识别全加密的协议,性能高,但是准确性和健壮性不如基于负载内容的方法。由上可知,这三类协议识别方法各有优缺点。如何结合各种方法的优点,使其优势互补是协议识别领域的重要研究方向。
本文在分析研究安全协议特征项的基础上,综合利用现有三类协议识别方法,给出安全协议识别策略,提出一种安全协议综合识别方法,并在此基础上识别网络流量所属的安全协议类型。
本节对安全协议识别特征项进行分析研究,下面进行详细阐述。
(1)端口特征项
与普通网络协议相似,安全协议也有各自对应的通信端口,通过向这些固定的端口发送和接收数据完成协议连接和数据交换。因此,可借助端口特征识别安全协议。
(2)负载关键词特征项
绝大多数的网络协议都在报文格式中定义一个或多个用于标识协议报文类型和传递相关控制信息的协议字段,该字段称为协议关键词。协议的关键词可以是协议包头中的特征字符串,包括协议名称、版本号等,也可以是协议控制信息的特征字符串,包括命令码、标识信息等。关键词在协议中频繁出现,是组成协议特征的重要元素。
大多数安全协议都存在明文部分,用于在会话开始时协商参数,因此通常也存在关键词字段。例如,SSL协议通信双方使用明文交互版本号和相关参数等,在SSL协议(TLSV1.2版本)的ClientHello报文头中,第0个偏移位置的字节值为“0x16”,表示协议类型为SSL握手协议,第1-2偏移位置的2个字节值为“0x03,0x03”,表示协议版本采用TLS1.2。
(3)统计特征项
安全协议中包含大量密文信息,其可用明文关键词信息相对普通网络协议更为稀少,但安全协议相关的流量统计特征不受加密影响,容易提取,其中数据包大小、包到达时间间隔是关键特征。Charles Wright等人认为:数据包大小、数据包到达时间间隔以及到达方向是不受加密影响的,并基于上述特征识别加密协议。Este等人利用互信息量比较网络流特征的时空稳定性,发现TCP连接建立后的第一个数据包大小所含的信息量最大,并在不同的时间和地点采集的数据上进行测试,验证了数据包大小是最稳定的特征。
(4)总结
为对协议流量进行早期识别,P. Haffner指出只需要流中前64B负载就可以很好地发掘协议识别特征。本文采用端口、流中前64B负载的关键词、流中前N个数据包的大小和包到达间隔时间作为安全协议识别特征。
本节给出安全协议识别策略,并在此基础上提出安全协议识别算法。
协议在网络运行中以IP数据包形式进行传输。同一个双向流中的数据包通常属于同一种协议,将数据包组合成流进行考虑可以降低复杂度。识别策略如下:
(1)基于流识别协议。安全协议识别在流的基础上进行,对每一个流记录识别状态,包括已识别(标记协议类型)、尚未识别(标记正在使用的识别方法)、不可识别三种状态,直到流结束。对每一个到达的数据包判断其所在流是否识别,若识别,将该数据包并入该流,更新流状态;若未识别,则需要进一步利用该数据包进行识别。
(2)基于反向流识别协议。当流(SIP、SPort、DIP、DPort、Transport_protocol)被识别为协议A时,其反向流(DIP、DPort、SIP、SPort、Transport_protocol)同样识别为协议A。
(3)分阶段识别协议。对协议特征库中的每一个安全协议,给出各自的识别策略,设置其所使用的识别方法和优先级。端口特征是最简单、复杂度最低的特征。负载关键词特征——流中前64B负载中关键词是最精准的特征,并且由于只需考虑流中前64B负载,复杂度较低。现有的协议识别系统大都是基于负载关键词特征的。统计特征——负载统计特征和数据包统计特征容易获取,复杂度低,但属于模糊特征,其识别准确度不如负载关键词特征。本文对识别方法设置优先级,按照端口识别——>DPI——>基于统计特征识别的顺序,分阶段进行识别。在每个阶段,若成功识别,则标记相应的协议类型;若未识别,则采用下一阶段进行识别;若所有阶段均未识别,则将该流标记为不可识别。
识别算法如图1所示。
图1 安全协议识别算法
Step1:对每一个到达的网络数据包,查找其所属流是否存在。若所属流不存在,产生新的流标识,将流识别状态标记为“尚未识别”,识别方法设置为“端口识别”;若所属流存在,执行Step2;
Step2:查找数据包所属流或者反向流的识别状态,若为“已识别”和“不可识别”,则不再对数据包进行识别,输出相应的协议类型;若为“尚未识别”,则执行Step3;
Step3:对尚未识别协议类型的数据包,根据其正在使用的识别方法进行在线特征提取。若正在使用的识别方法为端口识别,则从数据包的传输层头部获取流的端口特征,并利用端口识别规则与实例特征库中的协议端口值进行匹配。若存在相同的协议端口值,则输出相应的协议类型;若不存在相同的协议端口值,则执行Step4,并将所采用的识别方法设置为“负载关键词识别”;
Step4:根据协议关键词特征提取报文中的消息内容,并进行匹配。
①当协议关键词为固定偏移关键词特征时,在数据包的应用层负载中根据关键词的偏移、长度查找相应字段,并与关键词的值进行匹配,若相同,则成功匹配,继续与协议中下一关键词进行匹配,直到最后一个关键词匹配完毕;若不同,则不属于该类协议,与下一协议的关键词特征进行匹配;
②当协议关键词为非固定偏移关键词时,则需要在数据包的应用层负载中查找与关键词值相同的字段,若存在,则成功匹配,继续与协议中下一关键词进行匹配,直到最后一个关键词匹配完毕;若不存在,则不属于该类协议,与下一协议的关键词特征进行匹配;
③若协议关键词序列全部成功匹配,则成功识别,输出该报文所属流的协议类型,并将流识别状态标记为“已识别”;
④若协议特征库中所有协议的关键词特征均与该报文所属流不同,则将流识别方法设置为“统计特征识别”。
Step5:提取数据包所属流的统计特征,并根据协议特征库中的统计特征进行识别。在协议特征库中每个协议的统计特征由类簇中心和距离阈值刻画。计算提取的特征向量与所有协议类簇中心之间的欧式距离。①若特征向量与所有协议类簇中心之间的欧式距离均大于给定的距离阈值,则将该流识别状态标记为“不可识别”;②若存在协议类簇中心使得欧式距离小于给定的距离阈值,则选择距离最近的类簇中心作为对应的协议类型,并将流识别状态标记为“已识别”。
为验证本文方法的识别效果,设计实现了安全协议在线监测平台,并将其部署在实验室交换机的旁路上。
对SSL、SSH、NS和sof协议进行训练,并将这四类协议的特征存入安全协议特征库中。本文的网络流量除了以上4类协议外,还需要包含安全协议特征库中未出现的流量,以测试识别方法对新类型协议的发现能力。
实验中,采用10台主机与交换机相连,并在主机上运行协议。本文选取SSL协议、SSH协议、NS公钥协议、sof协议以及Skype协议、普通网络协议(包括HTTP、FTP等)进行实验,其中SSL、SSH和Skype协议是网络中广泛应用的安全协议;NS公钥协议和Sof属于经典基础安全协议。SSL协议采用OpenSSL与Apache实现、SSH协议采用OpenSSH实现、NS公钥协议和sof协议的应用程序采用Spi2Java工具生成、Skype应用程序可从其官网下载,FTP服务和HTTP服务利用IIS开启。随后,在交换机上通过端口镜像,将全部网络流量镜像到管理服务器上。在管理服务器上运行安全协议监测平台,对协议进行在线识别。协议流量数据集如表1所示。
表1 协议流量数据集
本文采用两个性能指标(识别率和误识别率)衡量协议识别效果。协议A的识别率是指:被正确识别为协议A的流量占协议A整个流量的百分比。协议A的误识别率是指:被错误识别为协议A的流量占协议A整个流量与错误识别流量之和的百分比。识别率越高,误识别率越低,说明相应的识别效果越好。
本文设计实现了安全协议在线监测平台,以识别协议类型,识别效果如图2所示。
图2 协议识别效果图
协议识别结果如图3所示:(1)该平台在识别出安全协议实例特征库已有协议的同时,能够区分出实例特征库中未出现的协议,具有发现新类型协议的能力;(2)对每类协议,识别率基本在91.7%以上,误识别率在5.8%以下,可以较好地识别协议。
(a)协议识别率(基本在91.7%以上)
(b)协议误识别率(基本在5.8%以下)
图3 协议识别结果
本文提出了一种安全协议综合方法,给出了安全协议识别策略,在此基础上提出了安全协议识别算法,识别网络报文所属的协议类型。实验结果表明,本文方法可以较好地解决安全协议识别问题。
[1]Xu K, Zhang M, Ye MJ, Chiu DM, Wu JP. Identify P2P Traffic by Inspecting Data Transfer Behavior[J]. Journal of Computer Communications,2010.
[2]Aceto G,Dainotti A,Donato W,et al.PortLoad: Taking the Best of Two Worlds in Traffic Classification[A]. Proceeding of IEEE INFOCOM Conference on Computer Communicaitons Workshops[C].San Diego,California, USA,2010.
[3]Freire MM, Carvalho DA, Pereira M. Detection of Encrypted Traffic in eDonkey Network Through Application Signatures[A].First International Conference on Advances in P2P Systems[C].Sliema, 2009.
[4]Crotti M,Dusi M,Gringoli F,et al.Traffic Classification through Simple Statistical Fingerprinting[J].ACM SIGCOMM Computer Communication Review. 2007.
[5]Crotti M,Gringoli F,Salgarelli L.Optimizing statistical classifiers of network traffic[A]. Proceedings of the 6th International Wireless Communications and Mobile Computing Conference[C]. ACM,2010:758-763.
[6]Bacquet C,Gumus K,Tizer D,Zincir-Heywood A.N, Heywood M.I.A Comparison of Unsupervised Learning Techniques for Encrypted Traffic Identification[J]. Journal of Information Assurance and Security, 2010.
[7]Wright C, Monrose F,Masson G M.On inferring application protocol behaviors in encrypted network traffic[J].Journal of Machine Learning Research 7 (December 2006).
[8]Este A,Gringoli F,Salgarelli L.On the stability of the information carried by traffic flow features at the packet level[J].ACM SIGCOMM Computer Communication Review,2009.
[9]Tongaokar A, Keralapura R, Nucci A. SANTaClass: A Self Adaptive Network Traffic Classification System[A]. IFIP Networking,2013.
[10]Haffner P,Sen S,Spatscheck O,et al.ACAS: automated construction of application signatures[A]. Proceedings of the ACM SIGCOMM workshop on Mining network data[C]. ACM,2005.