面向软件定义网络的隐蔽通信检测机制①

2018-09-17 08:49倪永峰闫连山崔允贺李赛飞
计算机系统应用 2018年9期
关键词:特征值交换机报文

倪永峰,闫连山,崔允贺,李赛飞

(西南交通大学 信息科学与技术学院,成都 611756)

作为一种新型网络架构,软件定义网络(Software Defined Network,SDN)将网络中的控制功能与数据转发功能相分离,实现了网络可编程化[1].在该网络架构中,控制功能逻辑性地集中在控制器中,其负责计算路由和下发流表.数据转发功能由交换机实现,其依据流表对数据报文进行转发.当前SDN架构中,控制器与交换机之间多采用OpenFlow协议进行通信.OpenFlow协议是一种新型网络协议,其定义了控制器与SDN交换机之间的通信方式及交换机处理到达报文的规则.基于此协议实现的SDN网络能够对其内的网络设备进行集中管理[2].自2009年提出第一版本至今,OpenFlow协议已有5个版本,其中1.3版本的OpenFlow协议是当前使用最广泛的南向接口协议之一.SDN架构使得控制器具备全局可见性,因此其能够精细化地对流量进行调度.基于此优势,目前SDN已成功应用于众多数据中心[3,4].

高级持续性威胁(Advanced Persistent Threat,APT)是一种新型网络攻击,其比传统攻击手段更具威胁性和破坏性[5].APT攻击持续时间通常可达数月甚至数年,所使用的技术较传统攻击手段更为复杂,同时较高的时间和金钱消耗决定了APT攻击通常用于企业、军工等重要目标.因此美国将APT攻击纳为网络战的范畴,并成立了专门的网络部队以应对和发起APT 攻击.自 2010 年 Google 遭受“极光”攻击以来,高级持续性威胁便引起网络安全界的广泛关注.经过长期研究,众多研究者通常将APT攻击分为攻击准备、横向攻击、资料回传、退出四个阶段.2011年Tankard等人总结出了APT攻击的流程,其中详细叙述了APT攻击中常用的水坑攻击以及端口扫描等攻击手段,并建议采用日志分析、文件完整度检查、注册监控以及恶意病毒检测等技术检测APT攻击[6].Li等人总结了各攻击阶段常用的攻击手段:APT进入阶段通常使用水坑攻击实现,潜伏阶段多使用远程控制、横向移动、获取特权、隐蔽通信等手段,退出阶段通常包括资料回传、销毁数据等步骤[7].Chandra等人研究了APT攻击开始阶段攻击者常用的社会工程学理论,针对网络资源虚拟化框架OpenStack制定了纵深防御机制[8].由于APT攻击具有高隐蔽性,传统的监测设备不易察觉其行为目的,Stefan Rass等人提出了一种基于博弈论的APT检测机制,该机制通过分析网络行为评估网络的风险性以检测APT攻击[9].针对APT攻击的特点,Ibranhim Ghafir和 Vaclav Prenosil提出了八种检测方法,分别为恶意附件检测、恶意域名检测、C&C隐蔽通信检测、恶意证书检测、鱼叉攻击检测、恶意文件哈希值检测、域名流量检测以及匿名网络TOR检测[10].

隐蔽通信是指受控主机与攻击者控制的C&C服务器(Command and Control server)建立的能够躲避网络监控的秘密通信,是APT攻击各个阶段必须使用的技术.无论是起初的横向攻击或获取资料后的回传过程,为避免被网络中安全设备检测出异常,攻击者都必须在受控主机与C&C服务器之间建立隐蔽通信信道.文献[11]中研究发现常见APT攻击的隐蔽通信均采用SSL/TLS协议,此类协议是加密协议并且采用证书的方式交换客户端与服务器使用的密钥.因此如果能够检测网络中存在的恶意隐蔽通信就可以及时阻止攻击,避免APT攻击造成的损失.Fu等人提出了一种区分SSL流量的机制,该机制采用报文长度、报文到达间隔以及流量方向作为特征值,利用C4.5机器学习算法对SSL流量进行分类[12].Ibranhim Ghafir等人利用开源架构Intelligence Framework[13]提出了一种SSL证书检测机制,首先从互联网中获取IF架构证书黑名单并建立本地黑名单列表,当有SSL流量时提取其中的服务器证书信息,然后判断此服务器证书是否在本地黑名单中,若不在本地黑名单中SSL报文才可通过[14].该方法依赖IF架构中的黑名单,同时需要及时更新黑名单信息.Cao等人提出了一种两步检测方法,该方法首先检测SSL/TLS服务器可信度,然后提取证书信息对证书包含的信息进行评价,最后得到证书的安全等级[11].

为增强 SDN抵抗APT攻击的能力,本文对APT攻击的关键步骤-隐蔽通信-进行了分析及研究,基于此,本文提出了一种高效的隐蔽通信检测机制.该机制利用SDN的特性便捷地抓取SSL/TLS流量,并从中提取证书信息,然后计算能够表征证书特征的特征值,并将上述特征值输入证书可信度检测模块以判断是否存在隐蔽通信.实验分析及结果表明本文的隐蔽通信检测方案可以准确区分正常证书和恶意证书,进而检测出SDN网络中的隐蔽通信.

1 面向SDN网络的隐蔽通信检测机制背景

1.1 SDN架构

当前SDN通常采用OpenFlow协议作为南向接口协议.OpenFlow协议规定,当交换机收到新到达的报文时,其按照流表优先级依次匹配其内流表中的MATCH域.如图1所示,MATCH域包含网络层协议、运输层协议以及运输层协议端口等匹配项.交换机一旦找到能匹配数据报文的流表,就根据流表ACTION域中的端口将报文转发出去.流表ACTION域中的端口可以为报文下一跳交换机与当前交换机所连接的端口,也可为控制器与当前交换机连接的端口,即交换机能够将报文转发至下一跳交换机或服务器,也能够将报文转发至控制器.若交换机不能找到匹配报文的流表,则将此报文上报至控制器,由控制器计算报文在网络中的转发路径,并下发此报文能匹配的流表至交换机.

在SDN架构中,控制器具有全网拓扑可见性,因此其能够精确控制流量转发路径:将大流量从带宽较大的链路转发,小流量从带宽较小的链路转发,当流量增大时能够修改流表将数据从带宽较小的链路转至带宽较大的链路.采用SDN架构除了可以对流量精确控制之外,还能够通过部署在交换机上的流表抓取特定类型的报文,而在传统网络中获取特定协议的流量通常需要进行流量的分类识别,因此在有选择地抓取流量方面SDN架构具有较大的优势.本文正是利用SDN的这一优势抓取所需要的报文.

图1 OpenFlow1.0 流表项结构

1.2 SSL隐蔽通信流程

为增强网络抵抗APT攻击的能力,本文分析了几种典型的APT攻击案例,研究发现APT攻击中隐蔽通信检测的关键在于非法证书检测.

2009年谷歌遭遇的极光行动是最典型的APT攻击,在此次攻击中攻击者使用了SSL加密通信对受控服务器进行控制.持续时间长达五年的暗鼠行动中,攻击者使用了远程命令与控制通信远程控制受控服务器窃取攻击机密资料.在APT攻击火焰病毒与高斯病毒中,攻击者均采用自签名证书建立隐蔽.由上述可知,典型的APT攻击中攻击者均使用了隐蔽通信,并且为躲避网络安全设备的监测通常采用SSL协议加密.根据SSL协议,通信双方传输数据之前需协商加密算法以及交换密钥,这些信息均在数字证书(Server Certificate)中.数字证书包含攻击者控制的C&C服务器的身份信息,以及C&C服务器密钥和其支持的加密算法类型.攻击者为防止自身信息暴露均会采用非法证书.因此若能在隐蔽通信建立阶段检测出攻击者使用的非法证书,就能检测出网络存在的隐蔽通信,从而防止网络遭受进一步的攻击.

为获取隐蔽通信使用的非法证书,需要对建立SSL通信的流程进行研究.SSL通信由受控服务器中的恶意软件发起,恶意软件根据其内部机制发起DNS请求,获取 C&C服务器IP地址,进而建立TCP连接,进入 SSL握手阶段.受控服务器发送ClientHello报文,C&C服务器接收ClientHello报文之后,回复带有数字证书的ServerHello消息,其中数字证书包含C&C服务器的身份信息以及其使用的密钥,然后受控服务器回复自身的密钥发送给C&C服务器.最后,受控服务器与C&C服务器采用协商一致的加密算法建立通信信道,握手阶段结束.SSL握手阶段结束之后,受控服务器与C&C服务器进入正常通信状态.

综上所述,采用SSL加密的隐蔽通信在建立通信的握手阶段均会使用非法证书,同时由于合法加密通信使用的证书均是由可信机构颁发的合法证书,因此网络中的合法通信不存在非法证书.因此若能检测出网络中的非法证书,就能检测出网络中存在的隐蔽通信.本文提出的面向SDN网络的隐蔽通信检测机制正是检测网络中SSL协议使用的证书是否非法.

2 面向SDN网络的隐蔽通信检测机制

2.1 面向SDN的隐蔽通信检测机制(SD-CCD)

如图2所示,本文假设有M个交换机和N个服务器,其中 CH为受控服务器,AT为 C&C服务器(Command and Control server),DS 为隐蔽通信检测服务器,Controller为 SDN 控制器.根据 SDN 架构,交换机S={S1,S2,S3,…}均与控制器 Controller连接.

受控服务器CH为攻击者通过社会工程学获取到权限的目标网络内的服务器,其与C&C服务器建立连接并按照指令对目标网络发起扫描或嗅探以窃取网络中的资料.C&C服务器AT为攻击者控制的服务器,攻击者通过C&C服务器与受控服务器CH进行隐蔽通信,控制CH在目标网络中的行动,并且接收CH窃取的资料.

图2 SDN 隐蔽通信检测架构

如图2所示,本文提出的面向SDN的隐蔽通信检测机制(Software-Defined Convert Communication Detection mechanism,SD-CCD)由运行在隐蔽通信检测服务器DS上的隐蔽通信检测模块及运行在控制器上的流量采集模块及溯源抑制模块组成.其中,隐蔽通信检测服务器DS上运行隐蔽通信检测模块,该模块包括证书提取、特征值计算以及隐蔽通信检测算法.其主要对输入的SSL流量进行处理,判断SSL流量是否为非法隐蔽通信.若为非法隐蔽通信,隐蔽通信检测服务器发送警报事件到控制器Controller,然后由控制器进行处理.

运行在控制器上的流量采集模块和溯源抑制模块负责SSL流量的采集及对非法隐蔽通信的溯源和抑制.流量采集模块利用OpenFlow中的流表将SSL流量导入隐蔽通信检测模块DS,溯源抑制模块对受控服务器发起溯源并抑制其在网络中的行为.控制器Controller中流量采集模块基于SDN特性利用OpenFlow流表对网络中的SSL报文进行采集.虽然现行OpenFlow协议中还没有针对SSL协议的匹配项,但是SSL协议封装于TCP协议中且通常使用443端口,因此本文将使用TCP协议并且目的端口与源端口均为443的报文视为SSL报文.当第一个SSL报文由交换机上报至控制器,控制器计算完路由路径并下发流表时,在流表MATCH域中添加运输层协议为TCP且源端口和目的端口均为443的匹配项,同时在此流表的ACTION域中添加转发至隐蔽通信检测服务器所在的端口,以此就可抓取所需的SSL报文.

在进行APT攻击时,攻击者获取CH权限后,需与AT建立SSL通信,但此时CH所挂载的交换机S3中没有转发SSL报文的流表,因此不能转发CH发出的 ClientHello 报文.根据 OpenFlow 协议,S3将ClientHello报文转发至控制器Controller,控制器计算出CH到AT的路由路径并依次下发流表至路径上的交换机,同时计算出受控服务器CH到隐蔽通信检测服务器DS的路径并下发流表至路径上的交换机,由此就可在不影响正常通信的情况下将SSL流量导入隐蔽通信检测服务器.

隐蔽通信检测服务器DS对导入的SSL流量进行提取,得到SSL通信中服务器所使用的证书,然后调用基于iForest的隐蔽通信检测算法检测此证书是否异常.若检测结果为证书异常,即表示当前SSL连接为非法隐蔽通信,则隐蔽通信检测服务器DS立刻发送SSL连接异常警报事件至SDN控制器Controller.控制器收到隐蔽通信检测服务器发送的警报后,立刻对当前网络中与使用非法证书的SSL服务器连接的客户端进行溯源,并下发流表至异常主机挂载的交换机以阻塞此主机发送的SSL报文,从而达到抑制非法隐蔽通信的目的.

2.2 基于iForest的隐蔽通信检测算法(iFCCD)

基于iForest的隐蔽通信检测算法(iFCCD)对SSL报文中提取的服务器证书进行检测以判断网络中是否存在隐蔽通信.其检测精度受特征值表征证书的准确度影响,因此在调用隐蔽通信检测算法之前需提取能够准确表征证书特性的特征值.

在介绍本文提取的证书特征值之前,引入两个集合[11],分别是最常见通用名集合(the most Frequently Appeared CommonName Set,FAS)和最常见匿名性通用名集合(the most Frequently Appeared Anonymous CommonName Set,FAAS).其中 FAS 是根据统计得到的频繁使用的通用名集合,FAAS也是相同方法得到,但目前只包含两个元素,分别为localhost和localdomain.

攻击者制作隐蔽通信使用的证书时,为保证隐蔽性,通常采用自签名证书,并且为了避免自身信息暴露,此类证书使用者和颁发者的项通常较少.由于需保持通信的隐蔽性防止被网络安全设备发现,攻击者在制作证书时通常会设定较短的证书有效时间.同时攻击者会采用随机构成的域名作为证书通用名,以此进一步提高隐蔽性.本文中FAS集合和FAAS集合就是针对证书的域名而建立的,若证书的域名在FAS中说明其属于网络中常见的域名,即表示其可信度较高.若证书的域名出现在FAAS中说明其匿名性较强,即表示此证书的安全性较低.

基于上述特点,本文采用了8个特征值来表征证书,如表 1 所示,分别为:(1)是否为自签名证书;(2)证书使用者包含的项数;(3)证书颁发者包含的项数;(4)证书是否被可信根验证通过;(5)通用名是否在FAS中;(6)通用名是否在 FAAS 中;(7)使用者通用名是否符合域名格式(CN=xxx.com);(8)证书的有效年份.上述八个特征值是从证书中提取的关键信息,能够表征证书的合法性.

表1 iFCCD 采取的证书特征值

iFCCD算法采用孤立森林算法(isolation Forest algorithm,iForest),iForest是一种基于决策树的异常检测算法,其基于数在二叉搜索树中的深度判断数据是否异常,具有较高的检测精度.相对于神经网络算法,iForest的训练时间短,达到相同精度的计算时间少.

本文采用的八个参数特征值对应的当前iForest中的评价值计算公式如下[15]:

其中,E(h(x))为特征值x在树中的平均深度,C为当前森林中数的平均深度,计算公式如下[15]:

隐蔽通信检测启动时,从配置文件中读取已准备好的训练数据,训练数据均为从正常证书中提取的相关特征值,孤立森林算法使用这些特征值训练算法模型.假设某一特征值训练数据有L组,训练阶段孤立森林有放回的取出G组数据,然后构建K棵决策树,得到K棵决策树组成的森林,并根据孤立森林算法计算出当前森林的阈值thresholdi.8个孤立森林分类器均采用上述的训练流程.孤立森林算法训练完成之后,隐蔽通信检测正式进入检测阶段.

算法.iFCCD Input:SSL 流量Output:恶意证书检测结果1.Begin 2. Get Hello packet in SSL 3. Extract SSL certificate 4. Calculate features of SSL certificate 5. if this certificate is Self-signed certificate then 6. append ‘1’ to eigenvalue matrix 7. else 8. append ‘0’ to eigenvalue matrix 9. end if

10. Append the length of subject to eigenvalue matrix 11. Append the length of Issuer to eigenvalue matrix 12. if the root in certificate is trusty then 13. append ‘1’ to eigenvalue matrix 14. else 15. append ‘0’ to eigenvalue matrix 16. end if 17. if domain name in FAS then 18. append ‘1’ to eigenvalue matrix 19. else 20. append ‘0’ to eigenvalue matrix 21. end if 22. if domain name in FAAS then 23. append ‘1’ to eigenvalue matrix 24. else 25. append ‘0’ to eigenvalue matrix 26. end if 27. if subject’s domain name is belong to normal format 28. then 29. append ‘1’ to eigenvalue matrix 30. else 31. append ‘0’ to eigenvalue matrix 32. end if 33. Append valid time of certificate to eigenvalue matrix 34. Send matrix to iForest 35. if the result of detection is true then 36. send result to controller 37. else 38. goto end 39. end if 40.End

进行检测时,隐蔽通信检测算法接收新的证书特征值矩阵,然后调用训练完成的算法模型判断此证书特征值是否为异常.当待检测的特征值矩阵输入时,各特征值分别送入相应的分类器.在各自的分类器中,每个决策树返回待测特征值在树中的层数,然后得到当前特征值在该森林中的评价值Si.在一个分类器中,若特征值评价值小于该分类器阈值,则表示当前数据为异常数据.

在iFCCD中,最后计算分类器的评价值,若该评价值小于阈值则判定当前特征值矩阵为异常,即当前证书为非法证书;否则判定为正常证书,如公式(4)所示:

综上所述,为准确表征证书特征,iFCCD算法采用八个特征值表征证书信息,同时使用孤立森林作为异常检测算法,提高非法证书的检测精度.在训练阶段中,iForest的训练数据均为正常证书的特征值.在检测阶段中,iFCCD利用已训练的iForest模型分别对8个特征进行判定,最后综合判定表征证书信息的八元组矩阵是否异常,以此可判定网络中是否存在隐蔽通信.

3 实验验证与分析

3.1 实验环境

本文采用的数据集有三个:ITOC2009[16]、Contagio Malware Dump(CMD)[17]以及从本地抓取的正常HTTPS证书.训练数据中有100个证书,其中50个为ITOC数据集中的正常证书,50个为CMD数据集中的正常证书.测试数据有271个证书,其中包括74个CMD数据集中正常的证书,26个本地抓取的正常证书以及171个CMD数据集中的非法证书.首先提取训练数据集中证书的特征值,然后将训练证书特征值作为输入训练孤立森林算法.在训练iForest算法模型时,从100组训练数据中有放回地取出75组数据,构建100棵决策树.

本文采用文献[11]中提到的证书可信度计算算法(文献[11]中将其简称为CCD算法)作为对比实验,其中计算结果小于0时视为证书非常可疑,计算结果大于0小于0.85时视为证书较可疑,大于0.85则认为证书正常.本文使用受试者工作特征曲线(Receiver Operating Characteristic curve,ROC 曲线)衡量iFCCD与CCD两种算法的检测精度.

3.2 实验结果

本文对上述提出的检测算法的实验验证过程如下:首先使用训练数据训练iForest模型,检测时将数据集里的证书依次提取出来,获得其中的证书特征值,然后将证书特征值依次送入训练好的iForest模型中.在衡量iFCCD与CCD两种算法精度时,通过动态调整iForest的阈值得到的ROC曲线如图3所示.

图3 中,横坐标为误检率,纵坐标为检测精度,其中实线为本文提出的iFCCD算法得到的检测结果,虚线为对比算法CCD的检测结果.从图中可以看到,iFCCD算法的误检率在16%时可以达到100%的检测精度,而CCD算法要达到100%的检测精度其误检率需达到24%.显然本文提出的证书检测算法在提高证书检测精度的同时能够降低误检率.图3中,两种算法的ROC曲线均在误检率达到一定值时快速上升,出现上述现象的原因是数据集里的非法证书的特征值基本相似.

图3 iFCCD 及 CCD 算法 ROC 曲线图

3.3 实验结果分析

为进一步说明iFCCD及CCD算法的检测精度,本节对iFCCD及CCD算法的检测结果进行了详细分析.

数据集ITOC2009中出现了大量类似如下格式的非法证书:“Version=3;Issure:C=--;ST=SomeState;Validity:one year;OU=SomeOriganizationalUnit;EMAIL=root@localhost.localdomain;O=SomeOrganization;L=SomeCity;”,对于上述非法证书,CCD算法计算出的可信度为–0.1,CCD算法认定其为非常可疑的证书,既CCD算法能够成功检测上述非法证书.

但是对于图4所示的非法证书,使用CCD算法计算的可信度为0.35(属于较可疑级别),其不能精确检测上述非法证书.通过进一步分析可知此证书属于非法证书,因为其使用者项中都是匿名信息符合非法证书的特征,而且证书有效时间较短.此证书相对于ITOC2009数据集的一般非法证书仅仅将使用者CN换了一个匿名,就使得CCD产生漏检.虽然可以将匿名域名加入到FAAS中提高CCD的检测精度,但匿名性域名范围太广无法将全部新匿名域名包含在集合中,因此采用CCD方法容易导致漏检.而在采用iFCCD方法检测上述非法证书时,由于iForest 所具有的检测精度高的优点,所以iFCCD方法能够将其判定为非法证书.

与CCD算法相比,iFCCD算法的误检率更低.图5所示为ITOC2009的合法证书,CCD算法计算该证书可信度为-0.1,判定其为非法证书,但是经查询得知此证书为根级证书属于可信任证书,CCD算法明显导致了误检测.而iFCCD算法能够正确判定其为合法证书.

图4 非法证书使用者信息示例

图5 正常证书使用者信息示例

从上述分析得知,本文提出的基于iForest的隐蔽通信检测机制能够在降低误检率的同时提高检测精度.

4 总结

为解决SDN网络中存在的隐蔽通信检测问题,本文提出了面向SDN的隐蔽通信检测机制,该机制利用SDN的特性准确获取网络中可能存在的隐蔽通信流量.针对CCD方法较为模糊的判定结果问题,本文提出了基于iForest算法的隐蔽通信检测算法iFCCD,该算法可以降低误检率、提高检测精度,同时避免了使用经验值作为阈值可能导致的误检率增高或精度降低的问题.本文提出的iFCCD方法具有较好的可扩展性,只需改变提取证书的特征值或训练数据集就可运用于不同场景的SDN网络.

猜你喜欢
特征值交换机报文
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
利用LMedS算法与特征值法的点云平面拟合方法
面向未来网络的白盒交换机体系综述
单圈图关联矩阵的特征值
局域网交换机管理IP的规划与配置方案的探讨
凯莱图的单特征值
浅析反驳类报文要点
更换汇聚交换机遇到的问题
基于地铁交换机电源设计思考