技术领域
[0001] 本
发明涉及一种基于SVM的攻击流量分类方法。
背景技术
[0002] 网络异常流量检测能有效地抵御网络安全威胁,该方法核心在于流量数据的采集与分析。用于恶意流量检测的网络流量数据可分为4类,分别是:1).数据包级-流量的包头和
载荷信息;2).数据流级-网络流的统计信息;3).连接级-两个IP之间的连接数据信息;4).主机数据-主机活动信息。其中,数据包信息最为丰富,通过分析载荷信息,能
对流量进行更精准的分类,极大地降低系统安全
风险,提升系统安全性。当前,针对数据包级的恶意流量检测主要利用了深包检测技术,常用的
软件为:SNORT,Bro,Linux L7-filter等检测软件,通过分析标准化匹配
算法,来将载荷与现有的规则进行对比,从而判断输入是否为恶意流量。然而,这类软件在面对未知形式攻击时,检测效果不理想,规则库实时更新困难,安装成本高,需要计算能
力强大的
服务器来运营维护。
[0003] 随着
人工智能技术的发展,
机器学习算法被越来越多的应用于不同领域。利用机器学习算法和
深度学习算法,能弥补深包检测技术的不足,对网络流量进行分类,提升网络的安全性。已有文章提出,基于LSTM的CAN总线的恶意流量检测,ANN异常流量监测,基于SVM的网络流量分类等方法,并且在DDOS异常分类等二值分类问题上取得了突出成果。然而,在面对多分类问题时,机器学习算法暴露了现有多分类机制计算量过大,特征混淆导致分类
精度低等缺点。
发明内容
[0004] 为了充分利用网络流量数据包,并且克服当前机器学习算法在多分类问题上的不足,进而更加高效地检测恶意流量,保护系统安全。本发明将Http数据包流量与机器学习算法相结合,提供一种基于SVM攻击流量分类方法。通过特征化流量载荷和高效的SVM多分类机制,对网络流量的安全性进行预测,
预防潜在的安全风险。
[0005] 本发明的目的是通过以下技术方案来实现的:
[0006] 一种基于SVM的攻击流量分类方法,
[0007] 在恶意流量检测中,给定Nt为训练样本,其中单个样本xi∈Rd,代表一个d维的网络流量,每个维度都对应着流量的一个属性;
[0008] 流量分类是在d维的空间中解出决策函数f(x)=wx+b,从而找到边界,将样本x∈dR映射到对应的流量分类标签y∈Y上,使样本分布于边界两侧;
[0009] 在二维平面中,边界是一条直线;在高维空间中,边界是一个
超平面;基于SVM分类问题的核心在于找到一个服从于最小误分类比的边界,即找到凸二次规划问题的解;
[0010] 在求得二次规划问题的参数后,未知流量样本xi即可通过计算决策函数进行分类。
[0011] 作为优选方式,在SVM算法模型给定的情况下,提取样本的特征对决策函数进行拟合。
[0012] 作为优选方式,特征的选择需要满足以下要求:1.特征是否发散,方差是否接近为0;2.特征与目标的相关性。
[0013] 作为优选方式,将攻击载荷特征分为:(1).载荷中包含的特殊符号数量fsyb;(2).载荷中包含的特殊字符数量fstr;(3).字符符号比fratio;(4).载荷长度flen;其中载荷特殊符号数量fsyb和特殊字符数量fstr与攻击类型强相关。
[0014] 作为优选方式,攻击载荷样本选用三类共30000条数据作为恶意载荷数据集,三类攻击载荷样本包括SQL注入、目录遍历、命令注入攻击载荷样本。
[0015] 作为优选方式,通过词频统计方法获得每类攻击中出现
频率最高的特殊字符和特殊符号作为对应攻击的特征。
[0016] 作为优选方式,本发明采用分类巡回的方式来实现SVM多分类。
[0017] 作为优选方式,分类巡回的方式包括如下内容:
[0018] 首先我们随机
配对所有类别,在经过第一轮的分类后,将第一轮的分类结果随机配对,并进行第二轮分类;如此往复直到获得最终结果。
[0019] 作为优选方式,本发明包括如下步骤:
[0020] 第一:对需要安全防护的端口做流量获取与解析,利用tcpdump监听端口TCP流量;
[0021] 第二:使用python的scapy模
块对tcpdump生成的pcap文件进行解析,提取出流量中的载荷,输入到一个一对多二值分类SVM中,选用载荷的特殊字符,特殊符号,字符符号比和载荷长度作为特征,将正常流量与异常流量分开;
[0022] 第三:对异常流量做精准分类,利用分类巡回方法,实现多分类,减轻计算量,最终,统计分类结果,检测出攻击类型。
[0023] 本发明的有益效果是:
[0024] 1、本发明使用范围广泛,便于扩展。可扩展到FTP、Telnet、SMTP等协议的异常流量检测场景。
[0025] 2、利用数据包载荷进行异常流量检测,实现了攻击流量分类。在本发明中,三类攻击(SQL注入,命令行注入和目录遍历)的检测分类,准确率达到了96%以上。
[0026] 3、有效降低二值分类器处理多分类问题的计算量。
附图说明
[0027] 为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些
实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0028] 图1为SVM分类巡回示意图。
具体实施方式
[0029] 下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
[0030] 为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施方式的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的
选定实施方式。基于本发明中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
[0031] 一种基于SVM的攻击流量分类方法:
[0032] 在恶意流量检测中,给定Nt为训练样本,其中单个样本xi∈Rd,代表一个d维的网络流量,每个维度都对应着流量的一个属性,比如字符数,载荷长度等;
[0033] 流量分类是在d维的空间中解出决策函数f(x)=wx+b,从而找到边界,将样本x∈dR映射到对应的流量分类标签y∈Y上,使样本分布于边界两侧;
[0034] 在二维平面中,边界是一条直线;在高维空间中,边界是一个超平面;基于SVM分类问题的核心在于找到一个服从于最小误分类比的边界,即找到凸二次规划问题的解;
[0035] 在求得二次规划问题的参数后,未知流量样本xi即可通过计算决策函数进行分类。
[0036] 在SVM算法模型给定的情况下,提取样本的特征对决策函数进行拟合。
[0037] Http流量包含众多属性,包括:源地址,目的地址,源端口,目的端口,源mac,目的mac,流量载荷,载荷字符长数等,需要选择合适的属性作为训练机器学习模型的特征。特征提取和特征工程可能会占用开发一个机器学习模型80%-90%的时间。在攻击流量分类问题中,直观的流量属性对模型训练和预测影响微小。需要结合安全知识对载荷进行特征挖掘,提炼出流量中最显著的攻击特征。
[0038] 样本特征的
质量直接影响SVM分类的准确率。特征的选择需要满足以下要求:1.特征是否发散,方差是否接近为0;2.特征与目标的相关性。
[0039] 本发明中,结合安全背景知识,将攻击载荷特征分为:(1).载荷中包含的特殊符号数量fsyb;(2).载荷中包含的特殊字符数量fstr;(3).字符符号比fratio;(4).载荷长度flen;
[0040] 其中载荷特殊符号数量fsyb和特殊字符数量fstr与攻击类型强相关,这既是说,SQL注入攻击的字符、符号特征是载荷中的SQL语句;OS Command注入攻击的字符、符号特征实载荷中的系统操作指令;而跨站脚本攻击的字符、符号特征是载荷中的java script脚本。举例来说:SQL注入攻击语句:’or true--,需要关注特殊符号是:’-,需要关注的特殊字符为:or true。而在OS command注入攻击语句:cat../../etc/passwd中,需要关注的特殊符号为:./,需要关注的特殊字符为:cat etc passwd。正常流量载荷提取于实验室内部IDS日志,共计30000条。
[0041] 攻击载荷样本选用三类共30000条数据作为恶意载荷数据集,三类攻击载荷样本包括SQL注入、目录遍历、命令注入攻击载荷样本。从网上下载攻击载荷样本https://github.com/foospidy/payloads,一共
整理出3类(SQL注入、目录遍历、命令注入)共30000条数据作为恶意载荷数据集。
[0042] 通过词频统计方法获得每类攻击中出现频率最高的特殊字符和特殊符号,结合安全知识加以筛选,作为对应攻击的特征。
[0043] 基于SVM的多分类问题的一个处理机制是将N个类转化为N个一对多二值分类(OVR SVMs)问题。例如,处理第Nk个2值分类问题,所有的样本将以k类和不是k类(其余样本)来划分。一对多方法分类器个数较少,分类速度较快。然而每个分类器的训练是全部样本作为分类样本,求解二次规划问题时,训练速度会随着训练样本数增加而降低。由于剩余样本远高于分类样本,造成了样本不对称现象。此外,在恶意流量载荷检测方面,一对多分类使得攻击载荷特征变得模糊,从而导致分类精度下降。
[0044] 另一个多分类问题处理机制是一对一二值分类(OVO SVMs),做法是在任意两个样本之间构建SVM模型,统计分类结果,选择得分最高的分类。该方法能有效地避免特征相似而导致分类精度降低的问题,并且易于扩展,在新增分类时无需重新训练原有的SVM。然而所需构造的分类器较多,k类的样本需要设计(k(k-1))/2个分类器,单次预测时间较长。在恶意流量检测场景中,实现一个对8种攻击载荷进行分类的装置,将需要28个分类器,每次预测流量都将遍历28个分类器,这是十分低效的。
[0045] 本发明采用了分类巡回的方式来解决一对一二值分类在恶意流量检测场景中低效的问题。正如体育运动中的巡回赛一样,分类巡回的方式包括如下内容:
[0046] 首先我们随机配对所有类别,在经过第一轮的分类后,将第一轮的分类结果随机配对,并进行第二轮分类;如此往复直到获得最终结果。
[0047] 如图1所示,在对8种攻击载荷进行分类的场景中,一共只需要7次分类就可获得结果。在k分类问题中使用分类巡回机制,一共需要(k-1)个分类器,效率对比OVO SVMs提升了k/2。
[0048] 结合所述,一种基于SVM的攻击流量分类方法,具体包括如下步骤:
[0049] 第一:对需要安全防护的端口做流量获取与解析,利用tcpdump监听端口TCP流量;
[0050] 第二:使用python的scapy模块对tcpdump生成的pcap文件进行解析,提取出流量中的载荷,输入到一个一对多二值分类SVM中,选用载荷的特殊字符,特殊符号,字符符号比和载荷长度作为特征,将正常流量与异常流量分开;
[0051] 第三:对异常流量做精准分类,利用分类巡回方法,实现多分类,减轻计算量,最终,统计分类结果,检测出攻击类型。
[0052] 如图1所示,根据上述攻击样本特征工程方法,提取载荷SQLi特征fsql和XSS特征fxss,将两类特征合并为一个
特征向量输入SVMsqli|xss,依此类推,遍历所有恶意流量分类器。最终,统计分类结果,检测出攻击类型。本发明可用于任何数据包级攻击流量检测的应用场景。
[0053] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和
修改。所以,所附
权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,应当指出的是,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。