一种面向HTTPS隐蔽隧道的加密木马检测方法与流程

文档序号:17548813发布日期:2019-04-30 18:05阅读:560来源:国知局
一种面向HTTPS隐蔽隧道的加密木马检测方法与流程

本发明涉及面向https隐蔽隧道的加密木马检测技术领域,具体涉及一种面向https隐蔽隧道的加密木马检测方法。



背景技术:

木马主要用于主机控制及信息窃取,通常不会破坏用户系统,也不会自我繁殖,具备较高的隐蔽性。近年来,越来越多的木马程序借助隧道技术提高自身穿透性,并借助加密技术来对抗dpi检测,给木马通信流量识别带来新的挑战。无论木马在主机中如何修改特征规避主机端检测,或使用复杂的加密算法对载荷进行加密,其交互的过程不会改变,被控端都需要接受控制端的命令并做出反馈。因此,研究基于通信行为分析的加密木马流量识别技术,有利于从骨干网络关键节点的网络流量中,检测出潜在的木马威胁。

到目前为止,在木马检测领域中,研究者已经从不同角度提出了多种木马检测的方法。木马的识别方法总体上可以分为两类,基于主机和基于网络通信。针对加密木马的检测技术,主要有三种类型,基于木马阶段化行为特征,基于主机木马样本的动静态特征和基于网络流量特征。

部分学者将检测重点放在木马阶段化特征来构建防御系统,这样作为避免从木马的加密载荷分析。如ruzhang提出了一种通过挖掘ids安全日志来构建木马攻击场景的新方法,并使用构建的木马攻击场景来用于木马检测;friedberg等人使用白名单方法来检测木马攻击;choietal使用正常行为和异常模式的提取来检测木马攻击的异常;stech描述了防御者如何构建和定制网络欺骗链方法;zhang提出基于入侵杀死链构建攻击树模型,并分析攻击日志形成攻击路径来预测木马攻击。

部分学者将检测重点放在主机木马样本的动静态特征。如ajayanto通过将可疑设备与安全设备控制流所建立的控制流图进行比较,从而识别判断设备是否感染木马攻击样本。该方法虽然在开源平台取得的比较好的成果,但缺乏通用性,尤其是针对部分闭源程序,难以建立内核的控制流图;weber等分析二进制文件的架构,判断文件是否在编译后被注入恶意代码;wang等则通过在内存中搜索木马的特征路径来检测木马。研究者们也对恶意程序进行的操作动态进行监控,尤其关注特定的敏感行为;liu等利用捕获分析irps监控访问计算机敏感文件的进程来识别木马进程;chen等通过对比socket层和network层的通信流量的变化;mungyu通过使用pe文件的api来提取恶性行为模式。

部分学者选择端口作为检测依据,提取该类系统进程端口号与iana的tcp/udp端口号进行比较,尽管该方法可以不依赖于协议及载荷内容,但目前互联网流量只有30%到70%能基于该方法检测。如sherry提出一种新的深度包检测系统,可以在无须解密的情况下检测加密的有效载荷,但只能处理个别协议;iliofotou等人提出了一个交通分散图(tdg)的方法来对各种流量进行分类;lakhina等引进熵作为摘要工具来表述某一时刻ip地址和端口的离散聚合程度。并利用多路子空间和k-means算法于对流量进行分类,并识别恶意进程流量;louvieris等仿真了一个小型工作环境并且将攻击按攻击效果分成四类:单请求单资源、单请求多资源、多请求单资源和多请求多资源,依据资源请求检测恶意攻击流量;l.xue提出基于多层交互阶段的网络行为特征的检测系统;lim等使用k-means算法将流量划分为不同的簇,经过分类后能发现同族的恶意软件生成的流标识序列相似度较高;li等对传输层连接进行了近似重组,基于k-means聚类算法使用流数和周期性等特征对流进行分类,检测tcp连接的木马c&c通信行为;pu等综合分析了木马网络行为,设计了一个多层逻辑的线性系统来检测木马。其中,第一层为保持连接探测器和主从连接探测器,第二层检测上传下载速率比;jiang等分析了多款木马和正常应用软件后,用握手阶段的多维特征对木马进行检测;adachi等研究了20款木马,将木马的网络会话与进程监控结合起来检测;niyaz提出了一种基于深度学习的方法来建立包含稀疏自动编码器和soft-max回归算法。

综上,现阶段基于流量检测恶意攻击的研究思路主要是通过提取特征载荷来表征木马特性的流量统计特征,然后利用机器学习方法建立木马分类模型。但目前方法主要存在以下问题:

(1)特征选择

目前对流量检测领域使用机器学习时,选取的特征大多数源于专家经验,分类效果依赖于先验知识或选择算法,个别特征甚至经过高阶变换,尽管取得较好的分类效果,但所选特征和所得结果的不具备可解释性,难以进一步分析。

(2)时间序列性

研究流量分类的经典文献中均考虑了流量的时间序列性,并结合机器学习方法进行分类或聚类,由此可见数据包的时序特征为流量分类提供了重要依据。但目前与木马检测相关研究中,几乎不曾从时间序列角度考虑。

(3)样本稀少木马程序涉及巨大的经济利益或军事目的,少有组织或机构会公开木马工具样本,因此在研究过程中,难以获得新样本流量。并且由于现实网络环境错综复杂,检测算法选择的特征过度依赖于特定环境,通过研究学习的特征在实际部署中效果不理想。



技术实现要素:

针对现有技术中存在的缺陷和问题,本发明提供一种面向https隐蔽隧道的加密木马检测方法,该检测方法提出将ssl网络会话分为元数据交互阶段和加密应用数据交互阶段的检测方法,进一步利用数据流切片算法和频繁向量集挖掘算法剔除噪声数据,从而检测木马流量。做到了在与协议无关的前提下实现了对木马与正常通信的识别。测试结果显示该系统可有效的检测出木马的命令控制行为,所得数据可表征木马操作行为特征,实用性较好。

本发明解决其技术问题所采用的方案是:一种面向https隐蔽隧道的加密木马检测方法,其特征在于:包括以下步骤:

步骤1:数据流预处理过滤

(1)提取网络通信的基本五元组来标识一个三元组的tcp会话,其中,三元组包括:源ip地址、目的ip地址和上层协议,每个五元组对应一个tcp会话,可表示为<ipsrc,ipdst,pro>;

(2)为tcp会话构建一个数据包列表flowi,记录会话中每个数据包的源ip地址、目的ip地址、到达时间和序列号;数据包向量可表示为packeti=<ipsrc,ipdst,timestampi,seq_numberi>,其中1≤i≤n;timestampi为到达时间;seq_numberi为序列号,将所有的特征向量存入对应的流列表可得到数据包列表flow={packet1,pakcet2,pakcet3…,packetn};

步骤2:依据时间序列进行数据流切片

(1)时间阈值t由流内网络的运行状况决定:a为放大系数,a取值20;conpkti+1-conpkti表示tcp会话中两个有交互行为的相邻数据包的时间差;n为tcp会话中数据包总数;多次计算取平均值作为时间阈值t;

(2)顺序遍历tcp会话数据包列表中的每一项,判断其与前一项的时间差是否大于t,若大于t,则新建一个数据包群组列表并存入此项;反之,则将该项添加到当前数据包群组末端;

(3)得到多个tcp数据包群组列表,可表示为:其中,gather表示群组,k表示该群组中包个数,pki表示数据包;

步骤3:基于朴素贝叶斯算法进行外部控制行为检测

(1)将每组内的tcp数据包依据数据包的方向构建方向序列:u={pk1,pk2,pk3...,pkn},用“0”表示方向由外向内的数据包,用“1”表示由内向外的数据包;

当簇内包序列u出现“01”、“010”、“001”、“011”时,判定为是外部控制簇sec;同理,出现“10”、“101”、“100”、“110”时,认为是正常流量sic,并用p(u|sic)来估计正常样本在特征序列u出现的先验概率;p(u|sec)来估计木马样本在特征序列u出现的先率,令

p(sec|u)>p(sic|u)

上式成立时,认为序列u的包簇是由外部发起控制的;将上式两端用全概率公式展开,有

可转化为

当此式成立时,认为序列u包簇属于外部控制;

同理,当成立时,认为序列u属于内部控制;

p(sec)和p(sic)分别代表的网络中的未知分簇是外部控制分簇的概率和是内部控制分簇的概率;考虑实际情况,有

对式中削弱判定条件,可得若一个未知分簇包含特征序列“01”、“010”、“011”、“111”、“001”中的任一项,认为序列u包簇属于外部控制分簇,反之,则认为序列u包簇属于内部控制分簇;

(2)定义会话流的数据序列0-1特征向量slicedata=(d1,d2,…,dn),其中,n代表会话流包含的分簇数目,di代表一个分簇是否为数据泄露,若是,则di=1;若不是,则di=0。

(3)当分簇属于由外部的主机操控的外部控制分簇,并且存在数据泄露时,就认为分簇为木马分簇;定义会话流行为特征向量:

behaviortrojan=slicecontrol·*slicedata

当会话中的木马分簇超过了一定的比例时,就认为该会话流为木马会话流;计算会话流中外部控制行为分簇占所有分簇的比例:

进一步的,在步骤2之后、步骤3之前,将对tcp会话过程分析产生干扰的冗余数据包进行过滤,其中,冗余数据包包括无tcp载荷的数据包、单向数据包、https握手包和心跳包。

本发明的有益效果:本发明的一种面向https隐蔽隧道的加密木马检测方法,将加密的ssl流量分为元数据交互阶段和加密应用数据交互阶段,并针对不同的阶段构建不同的检测方法。首先从时序角度分析木马会话,发现单条木马会话具有可切分为多次小会话流的特点,提出结合时间分片算法切分逐次的交互会话的方法,该时间分片算法从离散性强的tcp会话流量提取出多个交互性强的数据包群组,并以数据包群组为单位来表示tcp交互的具体过程,根据加密tcp木马与正常tcp会话在交互过程方面的明显差异,判断tcp流量的异常性,提高了对于通信不频繁的tcp隧道木马的检测准确率。然后进一步分析逐条小会话过程,发现木马的心跳数据包会干扰会话中应用数据交互序列,提出利用频繁向量挖掘算法过滤各个时间簇中的心跳数据包,最后提出利用朴素贝叶斯来区分木马流量与正常会话。充分利用人为操作在时间尺度上的离散性,并且能够对截断的会话流进行检测。系统只需要在关键节点部署即可,不需要在每台主机部署。对现实流量进行的测试和分析,结果显示该系统低误报率高检测率的特点,并且可以仅仅依据流量盲测木马通信行为。

附图说明

图1为本发明的检测系统架构图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

实施例1:一种面向https隐蔽隧道的加密木马检测方法,包括以下步骤:

由于木马通信流量离散性强,根据相邻数据包的时间差将一个tcp会话划分成多个数据包群组。数据包群组是一组时间关联性强的数据包集合,在本发明中采用列表的形式进行管理。若两个相邻的数据包的时间差不超过时间阀值t,则认为属于相同的数据包群组,反之,则为不同的数据包群组。

①基本定义

定义1三元组包括:源ip地址、目的ip地址和上层协议。可表示为<ipsrc,ipdst,pro>。

定义2数据包列表flowi表示为floww={packet1pakcet2,pakcet3…,packetn}。

定义3记录会话中每个数据包的源ip地址、目的ip地址、到达时间、序列号等信息,可表示为packeti=<ipsrc,ipdst,timestampi,seq_numberi>。

②算法描述

首先提取一个三元组tcp会话,然后为会话构建一个包列表,将所有的特征向量存入对应的流列表,并依据时序划分算法进行处理。下面给出具体算法描述。

输入:tcp会话流量包列表

输出:tcp会话的多个数据包群组列表

(1)确定时间阈值t由流内网络的运行状况决定:其中,a为放大系数,本发明默认为20;conpkti+1-conpkti表示tcp会话中两个有交互行为的相邻数据包的时间差;n为tcp会话中数据包总数。多次计算取平均确定时间阈值t。

(2)顺序遍历tcp会话数据包列表中的每一项,判断其与前一项的时间差是否大于t,若大于t,则新建一个数据包群组列表并存入此项;反之,则将该项添加到当前数据包群组末端。

(3)得到多个tcp数据包群组列表,可表示为:其中,gather表示群组,k表示该群组中包个数,pki表示数据包。

该算法从离散性强的tcp会话流量提取出多个交互性强的数据包群组,并以数据包群组为单位来表示tcp交互的具体过程,根据加密tcp木马与正常tcp会话在交互过程方面的明显差异,判断tcp流量的异常性,提高了对于通信不频繁的tcp隧道木马的检测准确率。

考虑到所捕获tcp会话中存在着大量的冗余数据包,会对tcp会话过程的分析产生干扰,导致https隧道木马检测的准确率降低,因而过滤以下会话数据包:

(1)无tcp载荷的数据包

数据包的有效载荷是指去除去协议头部的报文。tcp流量中存在许多有效载荷为0的数据包,这一类数据包无法传递任何有效信息,因此丢弃此类数据包不会对检测结果产生影响。

(2)单向数据包

单向会话是指整个tcp会话过程中仅有一个方向的流量,单向数据包是指单向会话中的所有数据包。tcp隧道木马程序具有强烈的交互性,因此丢弃不具备交互性的单向数据包不会对检测结果产生影响。

(3)https握手包

https握手包主要用于元数据交互阶段检查特定字段是否符合统计规律,对后续加密阶段的数据交互没用帮助,并可能因为网络延迟影响时序划分,将其过滤后能更直观展示通信交互规律。

(4)心跳包

在tcp木马会话中,每个数据包群组都有可能存在许多心跳包,降低系统检测结果的准确性,因此本文利用apriori算法丢弃心跳包不会对检测结果产生影响。

在完成数据流预处理过滤、时序分片与心跳包过滤后。将每组内的依据数据包的方向构建方向序列:u={pk1,pk2,pk3...,pkn},用“0”表示方向由外向内的数据包,用“1”表示由内向外的数据包。得到图1所示的序列组:

当簇内包序列u出现“01”、“010”、“001”、“011”时,判定为是外部控制簇sec;同理,出现“10”、“101”、“100”、“110”时,认为是正常流量sic,并用p(u|sic)来估计正常样本在特征序列u出现的先验概率;p(u|sec)来估计木马样本在特征序列u出现的先率,令p(sec|u)>p(sic|u),成立时,认为序列u的包簇是由外部发起控制的。将上式两端用全概率公式展开,有可转化为当此式成立时,认为序列u包簇属于外部控制。同理,当成立时,认为序列u属于内部控制。p(sec)和p(sic)分别代表的网络中的未知分簇是外部控制分簇的概率和是内部控制分簇的概率。

考虑实际情况,有耐式中削弱判定条件,可得若一小未知分簇包含特征序列“01”、“010”、“011”、“111”、“001”中的任一项,本文认为它是一个外部控制分簇,反之,则不为外部控制分簇。

定义会话流的数据序列0-1特征向量slicedata=(d1,d2,...,dn),其中,n代表会话流包含分簇数目,di代表的一个分簇是否为数据泄露,若是,则di=1;若不是,则di=0。

本发明的检测方法利用了两点。分簇由外部的主机操控,并且存在数据泄露,本文就认为分簇为木马分簇,当会话中的木马分簇超过了一定的比例,就认为该会话流为木马会话流。定义会话流行为特征向量behaviortroian=slicecontrol·*slicedata。计算会话流中外部控制行为分簇占所有分簇的比例

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1