本发明涉及网络安全和机器学习的交叉领域,具体为一种基于双维度特征的加密恶意流量检测方法和系统。
背景技术:
为了保护用户和企业的安全通信,网站流量加密成为主流措施,应用ssl/tls(安全套接层/传输层安全)协议是加密这类流量的主要手段。加密流量可以在一定程度上保护私人信息的机密性和完整性,但也给网络上的恶意行为提供了庇护。
当前加密恶意流量主要是采用有监督学习的方法。但现有方法往往仅用一种特征,无法对域名更新频率极快的恶意流量进行检测。在五元组信息复杂的复杂网络环境下,若将恶意流量的频繁更换的五元组信息作为重要特征,会对模型识别精度产生影响。若把流量的五元组特征去除后,再次使用这些方法检测加密恶意流量,其识别率大大降低。
因此,本文提出了一个加密恶意流量识别方法,通过数据预处理的方式将加密流量划分为两个维度,报文负载和流指纹。在规避五元组信息的情况下,用报文负载和流指纹描述每一个流量的位置,并通过逻辑回归机器学习模型进行训练和预测。
技术实现要素:
本发明解决的问题为,在恶意流量来源多样的复杂网络环境下,流量的网络层特征多样化,五元组特征不再具有规律性,传统方法的检测率降低的问题。为此,本发明提出一种不依赖流量五元组特征的ssl/tls加密恶意流量检测方法,将流量多重特征归纳为报文负载特征和流指纹特征的联合特征,使得流量在复杂网络环境下具有差异化更大的特征,从两种维度描述一个流量,使用逻辑回归模型分类,实现在复杂网络环境下对ssl/tls协议加密恶意流量的检测。
本发明提出一种基于双维度特征的加密恶意流量检测方法,提取被监测加密流量的报文负载特征和流指纹特征,以此为基础识别恶意流量。
进一步地,所述检测方法包括以下步骤:
步骤1、将相同五元组的数据包合并成双向会话流量;
步骤2、对五元组特征做遮蔽处理;
步骤3、提取所述会话流量的所述报文负载特征;
步骤4、提取所述会话流量的所述流指纹特征;
步骤5、将所述步骤3-4提取的流量特征整合和标准化;
步骤6、使用逻辑回归机器学习模型进行恶意流量分类。
进一步地,所述步骤1包括:
步骤1.1、将五元组相同的流量合并成会话,所述五元组是指源ip地址、目的ip地址、源端口、目的端口、协议;
步骤1.2、把流入流量的源ip地址与流出流量的目的ip地址相同的、流入流量的目的ip地址与流出流量的源ip地址相同的、流入流量的源端口与流出流量的目的端口相同的、流入流量的目的端口与流出流量的源端口相同的、流入流量的协议与流出流量的协议相同的会话合并为双向流。
进一步地,在所述步骤2中,将所述会话流量中的ip、端口、协议字段的数据信息用全0代替填充。
进一步地,在所述步骤3中,选取了clienthello和serverhello报文中的五种元素作为报文负载的特征,包括:tlsversion(协议版本)、ciphers(持的密码套件)、extensions(扩展字段)、ellipticcurves(椭圆曲线密码)、ellipticcurvepointformats(椭圆曲线密码格式);将此五种元素的组合数据归化为专有的指纹数组x正=[x1,x2,x3,x4,x5],其中
x1:协议版本的代码,
x2:支持的所有密码套件的代码,
x3:所有扩展字段的代码,
x4:椭圆曲线密码类型的代码,
x5:椭圆曲线密码格式的代码。
进一步地,在所述步骤4中,提取包长度和包到达间隔时间、以及字节分布数据作为流指纹特征。
进一步地,对于包长度,将每个会话中的所有包的长度离散进入相同大小的窗口,窗口大小为n字节,将包长度在[0,n)字节之间的包放入第一个bin,将包长度在[n,2n)字节之间的包放入第二个bin,以此类推;然后构造矩阵a,其中每个元素a[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;最后,对a的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包长度特征。
进一步地,对于包到达时间间隔,将每个会话中的所有包的到达时间间隔离散进入相同大小的窗口,窗口大小为t毫秒,将包到达时间间隔在[0,t)毫秒之间的包放入第一个bin,将包到达时间间隔在[t,2t)毫秒之间的包放入第二个bin,以此类推;然后构造矩阵b,其中每个元素b[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;最后,对b的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包到达时间间隔特征。
进一步地,字节分布是一个长度256数组,它对流中每个包的有效负载中的每个字节值进行计数;将这个计数除以数据包有效负载中发现的字节总数,可以得到每一个字节值出现的概率;不同应用程序的字节分布提供了大量关于该应用程序数据编码的信息;此外,字节分布还可以提供ssl/tls协议握手信息包与整个流的负载比、握手信息的字节组成以及添加任何未实现填充的信息。
进一步地,将长度和包到达间隔时间、以及字节分布数据两项的组合数据归化为专有的流的流指纹特征。
本发明提出一种基于双维度特征的加密恶意流量检测系统,包括:
ssl/tls流量提取模块,从网络上抓取流量数据;
双向流化模块,执行所述步骤1;
五元组特征模糊化处理模块,执行所述步骤2;
报文负载特征提取模块,执行所述步骤3;
流指纹特征提取模块,执行步骤4;
逻辑回归分析模块,执行步骤5-6;
分类结果输出模块,输出对流量的分类结果。
本发明的有益效果在于,能克服在大规模复杂网络条件下五元组特征不稳定带来的加密恶意流量的检测准确率下降的问题,实验结果表明,该方法在不依赖五元组的条件下对复杂网络环境的ssl/tls协议加密恶意流量的检测准确率高达97.86%,比传统方法高出34.45%。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是本申请一个实施例的检测方法的步骤图。
图2是本申请一个实施例的检测系统包含的模块。
图3是本申请一个实施例提取报文负载时所参考的ssl/tls协议流程图。
图4是本申请一个实施例中,通过已知数据集进行测试,在单一网络环境和复杂网络环境下得到的评估指标的具体数值。
图5是本申请一个实施例中,通过已知数据集进行测试,不同会话流量在单一网络环境下得到的双维度坐标图。
图6是本申请一个实施例中,通过已知数据集进行测试,不同会话流量在复杂网络环境下得到的双维度坐标图。
具体实施方式
以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。
在五元组信息复杂的复杂网络环境下,若将恶意流量的频繁更换的五元组信息作为重要特征,会对模型识别精度产生影响。若把流量的五元组特征去除后,再次使用这些方法检测加密恶意流量,其识别率大大降低。
因此,通过数据预处理的方式将加密流量划分为两个维度,报文负载和流指纹。在模糊五元组信息的情况下,用报文负载和流指纹描述每一个流量的位置,通过逻辑回归机器学习模型进行训练和检测。
实施例一:
如图1所示,在本发明提出的检测方法的一个实施例中,通过已知的离线数据集训练逻辑模型,并使用不同内容的已知离线数据对训练出的模型进行测试,以测试其检测的准确度。
训练过程的具体步骤如下:
步骤1:使用离线的,已经被标识为恶意流量的pcap文件作为恶意部分的训练数据集,恶意流量进一步被分类为:扫描探测、暴力破解、c&c通信等恶意行为的加密通信(如:neris、rbot、virut、menti、soguo、murlo、nsis.ay等);使用离线的,已经被标识为良性流量的pcap文件作为良性部分的训练数据集;数据集都为加密的ssl/tls流量;
步骤2:将两部分数据集分别进行数据预处理;
步骤2又包括如下子步骤:
步骤2.1:将流量根据源ip地址、目的ip地址、源端口、目的端口、协议这五元组进行切割;
步骤2.2:将五元组相同的流量合并成会话;
步骤2.3:依据流入流量的源ip地址与流出流量的目的ip地址相同的、流入流量的目的ip地址与流出流量的源ip地址相同的、流入流量的源端口与流出流量的目的端口相同的、流入流量的目的端口与流出流量的源端口相同的、流入流量的协议与流出流量的协议相同的会话合并为双向流;
步骤2.4:将所有会话的五元组信息模糊,即将源ip地址、目的ip地址、源端口、目的端口、协议全部用十六进制的00代替,会话的其余信息保持不变;
步骤3:提取会话流量的报文负载特征。内容包括:tlsversion(协议版本)、ciphers(支持的密码套件)、extensions(扩展字段)、ellipticcurves(椭圆曲线密码)、ellipticcurvepointformats(椭圆曲线密码格式)。将五种元素的数据组合为专有的指纹数组:
x正=[x1,x2,x3,x4,x5]
其中,x1:协议版本的代码;x2:支持的所有密码套件的代码;x3:所有扩展字段的代码;x4:椭圆曲线密码类型的代码;x5:椭圆曲线密码格式的代码。
步骤4:提取会话流量的流指纹特征,包括:包长度和包到达间隔时间,能够提供应用程序数据编码信息的字节分布数据作为流指纹特征;
其中,包长度和包到达间隔时间:建模为马尔可夫链;
对于包长度,将每个会话中的所有包的长度离散进入相同大小的窗口,窗口大小为150字节,将包长度在[0,150)字节之间的包放入第一个bin,将包长度在[150,300)字节之间的包放入第二个bin,以此类推;
然后构造矩阵a,其中每个元素a[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;
最后,对a的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包长度特征,即a包长度;
对于包到达时间间隔,将每个会话中的所有包的到达时间间隔离散进入相同大小的窗口,窗口大小为50毫秒,将包到达时间间隔在[0,50)毫秒之间的包放入第一个bin,将包到达时间间隔在[50,100)毫秒之间的包放入第二个bin,以此类推;
然后构造矩阵b,其中每个元素b[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;
最后,对b的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包到达时间间隔特征,即b到达时间间隔;
字节分布:字节分布是一个长度256数组,它对流中每个包的有效负载中的每个字节值进行计数。将这个计数除以数据包有效负载中发现的字节总数,可以得到每一个字节值出现的概率。不同应用程序的字节分布提供了大量关于该应用程序数据编码的信息,即c字节分布;
将这两项的组合数据归化为专有的会话的流指纹特征
y流=[a包长度,b到达时间间隔,c字节分布];
步骤5:将报文负载特征和流指纹特征归一化后,标识该会话流量,并输入逻辑回归机器学习模型;逻辑回归机器学习模型配置如下:
正则化类型“l1”,迭代终止判断的误差范围“1e-4”,正则化强度倒数“1.0”,所有类的权重为“1”,算法选择“liblinear”,迭代次数“100”,损失函数选用“sigmoid”
步骤6:完成训练过程,并保存模型。
接下来,对训练后保存的模型进行测试,具体步骤如下:
步骤1:使用离线的,已经被标识为恶意流量的pcap文件作为恶意部分的测试数据集,恶意流量进一步被分类为:扫描探测、暴力破解、c&c通信等恶意行为的加密通信(如:neris、rbot、virut、menti、soguo、murlo、nsis.ay等)。使用离线的,已经被标识为良性流量的pcap文件作为良性部分的测试数据集,数据集都为加密的ssl/tls流量;
步骤2-4与分别与训练步骤2-4相同;
步骤5:将报文负载特征和流指纹特征归一化后,输入训练完成的逻辑回归模型,得到模型的输出分类结果,并与实际分类做比对,检测模型的准确性。
实施例二:
如图2所示,本发明提出的检测系统的一个实施例,包括以下模块:ssl/tls流量提取模块、双向流化模块、五元组特征模糊化处理模块、报文负载特征提取模块、流指纹特征提取模块、逻辑回归分类器模块、分类结果输出模块。对本检测系统做训练和测试,各模块的处理过程如下:
ssl/tls流量提取模块:使用tcpreplay在服务器网卡重放测试流量,再使用tshark在服务器网卡抓包,只捕获ssl/tls流量。
双向流化模块:将流量根据源ip地址、目的ip地址、源端口、目的端口、协议这五元组进行切割。再将五元组相同的流量合并成会话。
五元组特征模糊化处理模块:将所有会话的五元组信息模糊,即将源ip地址、目的ip地址、源端口、目的端口、协议全部用十六进制的00代替,会话的其余信息保持不变。
报文负载特征提取模块:ssl/tls协议构成如图3所示,其原理如下:
启动tls会话后,客户端向服务器发送clienthello数据包,其生成方式取决于构建客户端应用程序所使用的软件包和方法。如果接受连接,服务器将使用基于服务器端库和配置以及clienthello消息中的详细信息创建serverhello数据包进行响应,之后服务器端发送certificate(证书),serverkeyexchange(密钥交换)以及serverhellodone完成serverhello的消息发送。客户端收到后会利用certificate中的publickey进行clientkeyexchange的sessionkey交换,之后发送changecipherspec指示server从现在开始发送的消息都是经过加密的,以finished结尾。服务器收到后发送同样性质的消息进行确认。之后便开始按照之前协商的ssl协议规范收发应用数据;
其中握手协商阶段的报文内容是明文,应用数据传输阶段的内容为密文;因此可以从报文内容层面使用hello数据包中的详细信息对客户端应用程序进行指纹识别,提取会话流量的报文负载特征,内容包括:version(协议版本)、ciphers(支持的密码套件)、extensions(扩展字段)、ellipticcurves(椭圆曲线密码)、ellipticcurvepointformats(椭圆曲线密码格式);
将五种元素的组合数据归化为专有的指纹数组:
x正=[x1,x2,x3,x4,x5]
其中x1:协议版本的代码;x2:支持的所有密码套件的代码;x3:所有扩展字段的代码;x4:椭圆曲线密码类型的代码;x5:椭圆曲线密码格式的代码。
流指纹特征提取模块:提取会话流量的流指纹特征,包括:
包长度和包到达间隔时间:建模为马尔可夫链。对于数据包长度和到达间隔时间,将其值离散为相同大小的窗口,对于包长度的数据,使用大小为150字节的窗口,将数据大小在[0,150)的放入第一个bin,将数据大小在[150,300)放入第二个bin,以此类推。然后构造矩阵a[i,j],计算第i个bin和第j个bin之间的转换概率。最后,对a进行标准化处理,即归一化,确保得到一个合适的马尔科夫链;将a作为该项数据的特征即a包长度;
对于包到达时间间隔,将每个会话中的所有包的到达时间间隔离散进入相同大小的窗口,窗口大小为50毫秒,将包到达时间间隔在[0,50)毫秒之间的包放入第一个bin,将包到达时间间隔在[50,100)毫秒之间的包放入第二个bin,以此类推;
然后构造矩阵b,其中每个元素b[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;
最后,对b的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包到达时间间隔特征,即b到达时间间隔;
字节分布:字节分布是一个长度256数组,它对流中每个包的有效负载中的每个字节值进行计数。将这个计数除以数据包有效负载中发现的字节总数,可以得到每一个字节值出现的概率。不同应用程序的字节分布提供了大量关于该应用程序数据编码的信息,即c字节分布;
将这两项的组合数据归化为专有的会话的流指纹特征
y流=[a包长度,b到达时间间隔,c字节分布]。
逻辑回归分析模块:将报文负载特征和流指纹特征归一化后,标识该会话流量,并输入逻辑回归机器学习模型。逻辑回归机器学习模型配置如下:
正则化类型“l1”,迭代终止判断的误差范围“1e-4”,正则化强度倒数“1.0”,所有类的权重为“1”,算法选择“liblinear”,迭代次数“100”,损失函数选用“sigmoid”
分类结果输出模块:在测试模型的过程中,需要对模型的性能进行评估。本发明的评估标准划分为四大类:真正例(truepositive,记为tp)、假正例(falsepositive,记为fp)、真反例(truenegative,记为tn)、假反例(falsenegative,记为fn);
定义准确率(accuracy,记为a)为分类正确的样例数占总样例数的比例,即
另外,本发明还使用了精确率和召回率作为评价指标;精确率和召回率表示分类器在每个类别上工作的能力;准确度反映了分类器的整体性能。f1-measure(记为f1)是结合精度和召回的评估指标。
精确率=真正例/(真正例 假正例)
召回率=真正例/(真正例 假反例)
f1=2*(精确率*召回率)/(精确率 召回率)
本发明使用捷克理工大学(ctu)数据集作为测试该方法和系统的数据集,提取了ctu13数据集中的c&c通信所产生的ssl流量,共0.698gb,正常流量数据集的大小为0.76gb。正负数据集的大小满足了训练数据的平衡性。
将数据集在网络环境单一和复杂的两种环境下进行对比试验,得到下表和图4-6:
本实施例将流量的所有特征归类为报文负载特征和流指纹特征后,从两个维度对流量进行刻画,并使用这两个维度的特征训练分类器模型,最终得到的结果无论在单一网络环境还是复杂网络环境下都能够达到97%以上的识别准确率,流量的f1-measure指标也都达到97%以上。
实施例三:
本发明提出的检测系统的一个实施例,包括以下模块:ssl/tls流量提取模块、双向流化模块、五元组特征模糊化处理模块、报文负载特征提取模块、流指纹特征提取模块、逻辑回归分类器模块、分类结果输出模块。将本检测系统用于实时流量检测,各模块的处理过程如下:
ssl/tls流量提取模块:使用tshark在服务器网卡抓包,捕获实时ssl/tls流量。
双向流化模块:同实施例二的同名模块;
五元组特征模糊化处理模块:同实施例二的同名模块;
报文负载特征提取模块:同实施例二的同名模块;
逻辑回归分类器模块:同实施例二的同名模块;
分类结果输出模块:输出对流量的判断,最终形成流量的分类结果,包括:扫描探测、暴力破解、c&c通信等恶意行为的加密通信(如:neris、rbot、virut、menti、soguo、murlo、nsis.ay等)。
复杂网络环境下的正常流量由于来自各不同网站的正常ssl/tls通信流量,其tlsversion,ciphers,extensions,ellipticcurves,ellipticcurvepointformats因各自的ssl证书不同而差异较大,所以归一化后的值分布在0到1之间;而恶意流量因为无法获得正规渠道的合法ssl证书,只能采用版本较老的ssl/tls协议版本,且支持的密码套件以及扩展数量也较少,因此归一化后的值分布区域有限。
本发明的实施例通过加密流量预处理,ip、端口规避后,将选取的特征归类为报文负载特征和流指纹特征,从两个维度描述一个流量,以满足模型的训练需求。实施例结果表明,在传统的加密流量研究当中,随着恶意行为的发展而逐渐失效的五元组特征占总分类权重较大,降低了模型对于复杂网络环境流量的识别准确率,提出的报文和流指纹特征识别方法解决了这一问题,且只需从单一网络环境流量中训练模型,所以泛用性更广。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
1.一种基于双维度特征的加密恶意流量检测方法,其特征在于,提取被监测加密流量的报文负载特征和流指纹特征,以此为基础识别恶意流量。
2.如权利要求1所述的基于双维度特征的加密恶意流量检测方法,其特征在于,包括以下步骤:
步骤1、将相同五元组的数据包合并成双向会话流量;
步骤2、对五元组特征做遮蔽处理;
步骤3、提取所述会话流量的所述报文负载特征;
步骤4、提取所述会话流量的所述流指纹特征;
步骤5、将所述步骤3-4提取的流量特征整合和标准化;
步骤6、使用逻辑回归机器学习模型进行恶意流量分类。
3.如权利要求2所述的基于双维度特征的加密恶意流量检测方法,其特征在于,所述步骤1包括:
步骤1.1、将五元组相同的流量合并成会话,所述五元组是指源ip地址、目的ip地址、源端口、目的端口、协议;
步骤1.2、把流入流量的源ip地址与流出流量的目的ip地址相同的、流入流量的目的ip地址与流出流量的源ip地址相同的、流入流量的源端口与流出流量的目的端口相同的、流入流量的目的端口与流出流量的源端口相同的、流入流量的协议与流出流量的协议相同的会话合并为双向流。
4.如权利要求2所述的基于双维度特征的加密恶意流量检测方法,其特征在于,在所述步骤2中,将所述会话流量中的ip、端口、协议字段的数据信息用全0代替填充。
5.如权利要求2所述的基于双维度特征的加密恶意流量检测方法,其特征在于,在所述步骤3中,选取了clienthello和serverhello报文中的五种元素作为所述报文负载特征,包括:tlsversion(协议版本)、ciphers(持的密码套件)、extensions(扩展字段)、ellipticcurves(椭圆曲线密码)、ellipticcurvepointformats(椭圆曲线密码格式);将此五种元素的组合数据归化为专有的指纹数组x正=[x1,x2,x3,x4,x5],其中
x1:协议版本的代码,
x2:支持的所有密码套件的代码,
x3:所有扩展字段的代码,
x4:椭圆曲线密码类型的代码,
x5:椭圆曲线密码格式的代码。
6.如权利要求2所述的基于双维度特征的加密恶意流量检测方法,其特征在于,在所述步骤4中,提取包长度和包到达间隔时间、以及字节分布数据作为所述流指纹特征。
7.如权利要求6所述的基于双维度特征的加密恶意流量检测方法,其特征在于,对于包长度,将每个会话中的所有包的长度离散进入相同大小的窗口,窗口大小为n字节,将包长度在[0,n)字节之间的包放入第1个bin,将包长度在[n,2n)字节之间的包放入第2个bin,以此类推;然后构造矩阵a,其中每个元素a[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;最后,对a的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包长度特征。
8.如权利要求6所述的基于双维度特征的加密恶意流量检测方法,其特征在于,对于包到达时间间隔,将每个会话中的所有包的到达时间间隔离散进入相同大小的窗口,窗口大小为t毫秒,将包到达时间间隔在[0,t)毫秒之间的包放入第1个bin,将包到达时间间隔在[t,2t)毫秒之间的包放入第2个bin,以此类推;然后构造矩阵b,其中每个元素b[i,j]表示计算第i个bin中的包转换到第j个bin中的包的次数;最后,对b的每行进行归一化处理,每行即为一个马尔可夫链,并作为该会话的包到达时间间隔特征。
9.如权利要求6所述的基于双维度特征的加密恶意流量检测方法,其特征在于,字节分布是一个长度256数组,它对流中每个包的有效负载中的每个字节值进行计数;将这个计数除以数据包有效负载中发现的字节总数,得到每一个字节值出现的概率。
10.一种基于双维度特征的加密恶意流量检测系统,包括:
ssl/tls流量提取模块,从网络上抓取流量数据;
双向流化模块,执行如权利要求2-9任一所述步骤1;
五元组特征模糊化处理模块,执行如权利要求2-9任一所述步骤2;
报文负载特征提取模块,执行如权利要求2-9任一所述步骤3;
流指纹特征提取模块,执行如权利要求2-9任一所述步骤4;
逻辑回归分析模块,执行如权利要求2-9任一所述步骤5-6;
分类结果输出模块,输出对流量的分类结果。
技术总结