基于SSL流量的指纹识别
作者:苏頔昕 施勇 薛质
来源:《信息安全与技术》2015年第11
        近年来windows server 2012四个版本APT(高级持续性威胁)威胁着社会经济生活,它常利用SSL隐藏和传递机密信息,目前对异常SSL流量的检测能够有效减少APT带来的威胁。然而SSLSSL VPN以及浏览器产生的SSL之分,因此要建立异常SSL检测模型需要先区分出不同类型SSL流量。论文正是基于此提出了SSL流量的指纹识别方法,这也为后续检测模型的建立和有效性提供了有力保障。
        关键词 SSLSSL VPN;指纹识别;APT
        1 引言
        随着信息技术的飞速发展,互联网技术的普及,一方面为人们生活带来的便利,另一方面也出现越来越多的安全问题。自2013年美国棱镜门事件后,关于APT(高级持续性威胁)的讨论和研究也越来受到关注。
        APT是一种针对特定目标组织的有经济或政治目的,且持续时间较长的一种攻击,它结合了传统的网络攻击方式同时利用0day漏洞,常常使受攻击者防不胜防,直到出现真正损失才觉察到攻击的存在。目前在APT攻击中,常利用SSL隐藏或传递机密信息,同时SSL木马的频繁使用,危害也日益严重,因此如何区分出正常和异常的SSL成为了预防APT攻击的一种有效方式。现有的方法主要是针对SSL证书的可信度检测上,但是近年来伪造证书可信度越来越高,所以单从证书角度已不全面可靠,还需要从SSL流量的端口、上下报文以及连接时长等流量统计特点出发进行。由于SSL有不同类型,比如SSL VPN、浏览器的SSL,不同类型具体的检测方式也不相同,因此在此之前需要对抓取的各类SSL流量进行分类。目前对SSL流量分类的相关研究仍是空白,本文基于此提出了各种SSL流量的指纹识别方法。
        文章共分为四部分,首先介绍研究内容背景和意义,然后简要说明SSL握手协议,其次对SSL流量指纹识别方法进行详细阐述,最后分析方法的特点及未来研究展望。
        2 SSL握手协议
        SSL安全套阶层协议是为主机间提供安全通道的协议,位于传输层和应用层之间,提供连接的隐秘性、用户的真实性以及数据的可靠性。SSL协议由握手层协议、记录层协议、更
改密文协议和警报协议组成,如图1所示。
        其中握手协议是SSL协议中最为重要的协议,通过握手可以提供对双方的身份验证机制。在这一过程中客户端和服务器需要确认一个用于加密明文数据所使用的密钥和算法,同时协商双方的信息摘要算法、数据压缩算法等,过程如图2所示。
        1ClientHello消息。客户端会首先向服务器发送这条消息,来通知对方客户端所支持的算法,以及为了将来生成多个加密密钥所需要的客户端随机数。
        2ServerHello消息。服务器会从客户端发送的加密算法中选择其中的一种。
        3Server Certificate 消息。Server Certificate包含了用于身份认证的服务器标识,以及一个用于生成加密参数的随机数。
        4Certificate Request 消息。可选消息,如果服务器不需要验证客户端的身份,则不会发送这条消息。
        5Server Hello Done消息。这条消息表示ServerHello消息与Certificate消息一经发
送完毕,服务器会等候客户端的回应。客户端一旦收到这条消息,才开始数字证书合法性的验证。
        6Client Certificate 消息。可选,如果没有收到Certificate Request消息,则不需要发送数字证书。
        3 SSL类型识别
        SSL握手是客户端和服务器进行密钥、算法协商的步骤,不同类型的SSL有特定的密钥和算法选择方式,这些可选择的密钥和算法通过ClientHello消息进行传递,因此本文将根据SSL握手协议中客户端发送的ClientHello消息来区分不同类型的SSL流量。
        ClientHello消息中包含了SSL/TLS版本号、Cipher Suites(加密套件)和扩展部分的签名算法等。通常对于同一个客户端发出的不同类型SSL请求,其ClientHello消息是有差别的。目前SSL流量可大致分为SSL VPN和浏览器产生的SSL,我们通过Wireshake软件进行大量抓包后分析发现,通过Cipher SuitesSessionTicket TLSStatus_request这三个字段信息可以有效区分SSL VPN和浏览器的SSL流量,甚至可区分出不同浏览器和同一浏览器在不同操作系统下的SSL流量。
        近几年Microsoft推出使用SSL进行加密的SSTP,方便了用户在Windows上直接建立VPN,所以本文对SSL VPN的分析着重集中在SSTP VPN。同时主流的浏览器有IEChromeFirefoxSougou,其中Sougou是使用IEChrome内核,因此不对Sougou浏览器进行分析。特别需要注意的是,IE的各个版本随着不同的操作系统版本SSL流量具有明显不同。
        3.1 SSTP VPN
        SSTP VPN仅支持Win7操作系统及以上版本,在Win7Win8以及Win8.1客户端与Windows Server 2012间搭建SSTP VPN并抓取数据包,通过大量实验总结发现,SSTP VPNWin7Win8操作系统中通常使用TLSv1.0,而Win8.1则使用TLSv1.2。并且Win7Win8Cipher Suites的总数相同,共12个,相比之下Win8.1 SSTP VPN Cipher Suites包含了24个加密套件。Cipher Suites通常由三个部分组成,第一是密钥交换算法,第二是对称加密算法,第三是摘要或者MAC算法, RFC2246中建议了很多中组合,一般写法是密钥交换算法-对称加密算法-摘要算法
        虽然Win7Win8SSTP VPN的加密套件数量相同,但是还可通过扩展部分是否包含S
essionTicket TLS进行有效区分,实验表明只有Win8Win8.1才包含该项。Session Ticket是用于在握手阶段SSL连接中断后重新握手使用的,与Session ID的区别在于即使客户端的重新请求发送至另一台服务器仍然可以恢复对话,但是它仅保存在客户端, 目前在浏览器中只有FirefoxChromeWin8以上版本的IE浏览器支持。此外三个操作系统下的SSTP VPN都不包含Status request扩展项,而浏览器则都包含,这是它们之间的最大区别。SSTP VPN的比较见表1“√”表示包含,反之为“×”
        3.2 IE浏览器
        对于IE浏览器,目前仍有使用的是IE8IE11,其中Win7支持IE8IE9Win7 Sp1版本支持IE11以前的所有版本,从Win8.1开始则主要使用IE11。在Win8及以上版本,IE浏览器产生的SSL流量包含了SessionTicket TLS字段,这是Win7版本与Win8Win8.1流量的最大区别,通过这一特点可快速区分出浏览器的操作系统环境。然而,在Win7Win7 sp1版本中,IE8IE9IE10都没有区别,无论从握手协议扩展项或者加密密码套件上看都是相同的,数量都为12个,与Win7环境下SSTP VPN的加密套件一致。唯独能够进行区分的只有IE11,其加密密码套件Cipher Suites包含了21个,在原有12个的基础上新增了9个组合。
        相比之下Win8.1则较容易识别,因为只使用IE11,且用TLS 1.2版本,不仅包含SessionTicket TLS,而且Cipher Suites共有19个,更新升级后的Win8.1专业版的Cipher Suites则包含24个,不只是数量上简单的增加,还去除了原有的几个加密算法组合。IE各版本识别如表2所示。
        3.3 其他浏览器
        针对其他两个非IE的浏览器,FirefoxChrome,这两类浏览器产生的SSL流量都包含了SessionTicket TLSStatus_reques。但Cipher Suites数量上,在Win7系统下,当FirefoxChrome使用TLS 1.0时, Firefox11Cipher Suites,而Chrome则有17个。除了在Cipher Suites的数量上的差别,FirefoxChrome在其他扩展字段与IE浏览器有明显区别,主要体现在签名哈希算法数量以及椭圆曲线算法。在签名哈希算法数量选择上,Chrome10个,比Firefox总数多了2个,且具体签名算法也不尽相同,而IE浏览器只有在使用TLS 1.2时扩展项才有签名哈希算法,数量为7个。不仅如此,在椭圆曲线算法上,Chrome浏览器、IE浏览器以及SSTP VPN各版本在数量和类型上都相同,只有Firfox多了一个。该特点即可区分Firefox与其他SSL类型。
        通过以上ClientHello几个字段的比较可以明显区分各种类型的SSL流量,实现了SSL“指纹识别,同时也为后续设计SSL检测模型防御APT攻击奠定了基础。虽然所提分类方式弥补了目前研究空缺,但是对浏览器的SSL流量识别仅集中在Win7及以上现今较流行操作环境,对微软早前的操作系统比如XPVista等未做分析,这是实验的不足之处。
        4 结束语
        本文通过分析现有APTSSL研究背景,提出了一种通过SSL握手协议中的ClientHello消息进行SSL流量类型识别的方法,不仅对Win7及以上版本的SSTP VPN、各版本浏览器的SSL流量做了有效区分,也为以后提出SSL检测模型做好准备工作。未来我们将在此基础上深入分析各种SSL流量类型的异常检测。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。