一种基于流量日志特征提取的无监督异常检测方法与流程

    专利查询2022-07-07  201


    1.本发明属于网络安全技术领域,具体涉及一种基于流量日志特征提取的无监督异常检测方法。


    背景技术:

    2.近年来,互联网迅速发展,逐渐成为人们生活中不可或缺的一部分。随着网络设施的不断升级与完善,互联网在人们生活中起着越来越重要的作用。网络安全也越来越得到重视,网络流量异常检测则是网络安全领域中重要的一环。
    3.异常检测在现代大规模分布式系统的管理中起着重要作用,记录系统运行时信息的日志广泛用于异常检测。传统上通常使用关键字搜索或规则匹配等方法手动检查日志。然而日志复杂性以及数据量的增大使得人工检测难以进行。因此提出了许多基于日志的异常检测方法。网络流量异常检测的目的是找到流量日志中和大多数数据不同的数据,并将这些离群点其视为异常。常用的流量异常检测算法一般分为一下五类。
    4.1.使用基于统计学的方法。这种方法一般会构建一个概率分布模型,并通过该模型计算对象的概率,把具有低概率的对象视为异常点。比如假设数据分布近似为正态分布,那么会有大约95%的数据值会在两个标准差的范围内,而大约99.7%的数据值会在三个标准差范围内。因此如果数据值超过了三倍的标准差,那么可以认为该点为异常点。缺点是这种方法比较简单死板,过于绝对,会存在不少漏检和误检的情况。同时对于高维数据效果不好。
    5.2.使用基于聚类的方法。由于大部分聚类算法基于数据特征的分布将数据聚集成簇,同样也被用于单维或多维数据的基于密度的流量异常检测。通常在聚类后会发现某些聚类簇的数据样本量很多,而有的数据量很少,甚至只有自己一个孤立点作为一个类别,这就说明这个簇里的数据特征分布等值和其他簇也差异很大,通常认为这些簇里的样本点是异常点。比如k-means聚类算法和dbscan密度聚类算法都可以在聚类的同时做异常点的检测。然而聚类方法不是专门用于异常检测,效果不明显。聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大,产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性。
    6.3.使用基于密度的方法。基于密度的方法如局部异常因子算法,lof通过计算一个数值score来反映一个样本的异常程度。这个数值的大致意思是:一个样本点周围的样本点所处位置的平均密度比上该样本点所在位置的密度。比值越大于1,则该点所在位置的密度越小于其周围样本所在位置的密度,这个点就越有可能是异常点。因为lof对密度的是通过点的第k邻域来计算,而不是全局计算,因此得名为“局部”异常因子,这样就不会因为数据密度分散情况不同而错误的将正常点判定为异常点。lof算法能有效避免数据密度分布不同对检测带来的影响。但lof算法在面对高维数据时效果会有所下降。因为无监督,正常的数据没有足够的邻居或者异常点有很多的邻居,计算复杂度以及定义数据之间的距离有时会很困难。
    7.4.使用专门的异常点检测算法。对于聚类算法来说,主要任务还是将数据聚集成不同的簇,检测异常点只是一个附带的结果,而孤立森林的目的就是专门检测异常点。孤立森林不同于之前的算法,它们都是先寻找正常的数据范围,然后将不在正常区域的点视为异常点,而孤立森林则是明确地隔离异常值,是一种非常有效的异常检测算法。孤立森林适用于高维数据,然而孤立森林的分割过程是随机的,这会导致异常检测的结果不稳定。
    8.5.使用基于深度学习的方法。采用深度学习的方法来进行流量异常检测需要提供带有标记的数据集,通过不断的迭代生成模型。模型有足够的表达能力,能适应大数据,泛化能力强。然而通常的流量日志中异常通常是极少数,也没有标签可供网络训练。
    9.因此如何克服现有技术的不足是目前网络安全技术领域亟需解决的问题。


    技术实现要素:

    10.本发明的目的是为了解决现有技术的不足,提供一种基于流量日志特征提取的无监督异常检测方法,该方法解决了现有异常检测方法存在的面对高维数据时检测效果下降、检测结果不稳定的技术问题,有效地实现对于流量日志提取高维特征的异常检测。
    11.为实现上述目的,本发明采用的技术方案如下:
    12.一种基于流量日志特征提取的无监督异常检测方法,包括如下步骤:
    13.步骤一,对截取的pcap包进行解析,以不同的源ip作为用户,提取各用户对应的特征信息,组成高维特征,作为样本;
    14.步骤二,对步骤一获取的样本采用孤立森林算法,计算其异常分数s_iforest(a);a为诽a个样本;
    15.步骤三,对步骤一获取的样本采用局部异常因子算法,计算其异常分数s_lof(a);
    16.步骤四,分别计算异常分数s_iforest(a)、s_lof(a)的z-score值zs_iforest(a)、zs_loff(a);
    [0017][0018][0019]
    其中,mean_iforest、std_iforest为孤立森林算法结果中所有异常分数的均值与标准差:mean_lof、std_lof为局部异常因子算法结果中所有异常分数的均值与标准差;
    [0020]
    步骤五,计算得到样本a最终的异常分数score(a);
    [0021]
    score(a)=(1-β)*zs_iforest(a) β*zs_lof(a)
    [0022]
    其中,β为融合权重;
    [0023]
    步骤六,输出所有用户的异常分数,并从大到小进行排序;将排名靠前用户作为疑似异常用户进行进一步检测。
    [0024]
    进一步,优选的是,步骤一中,所述的高维特征包括用户ip、连接时间、持续时间、出流量大小、出流量峰值、出流量均值、入流量大小、入流量峰值、入流量均值、出包大小、出包峰值、出包均值、入包大小、入包峰值和入包均值。
    [0025]
    进一步,优选的是,步骤一中,将所有样本生成csv文件进行保存。
    [0026]
    进一步,优选的是,步骤五中,β取值范围区间[0.6,0.8]。
    [0027]
    进一步,优选的是,步骤六中,排名前十的用户作为疑似异常用户。
    [0028]
    本发明对于疑似异常用户进行进一步检测可采用建立用户历史基线或通过标注异常数据进行深度学习等方法,本发明对此不作特殊限制。
    [0029]
    本发明与现有技术相比,其有益效果为:
    [0030]
    (1)本发明有效利用不同算法的优点,提高异常检测的准确率和稳定性。与原始孤立森林算法稳定性更高,比原始lof算法准确率更高;
    [0031]
    (2)本发明方法能够很好地适应高维特征数据,检测出更多可能存在的异常,提高处理高维数据的效率,加快加测速度;
    [0032]
    (3)本发明自动化处理水平较高,通过无监督的机器学习方法,避免了对数据集的标注,可以极大地降低操作人员工作量。
    附图说明
    [0033]
    图1为本发明基于流量日志特征提取的无监督异常检测方法流程图;
    [0034]
    图2为异常得分的抖动图。
    具体实施方式
    [0035]
    下面结合实施例对本发明作进一步的详细描述。
    [0036]
    本领域技术人员将会理解,下列实施例仅用于说明本发明,而不应视为限定本发明的范围。实施例中未注明具体技术或条件者,按照本领域内的文献所描述的技术或条件或者按照产品说明书进行。所用材料或设备未注明生产厂商者,均为可以通过购买获得的常规产品。
    [0037]
    本发明的基本思想是通过采集流量日志中的信息,提取高维特征向量,保留更多的信息以检测出更多潜在异常。利用无监督的机器学习算法进行异常检测,避免人工标注数据集的繁杂工作。利用孤立森林算法对于高维特征数据的适应性以及lof算法检测的稳定性对提取到的特征进行异常检测。通过计算z-score值将两种异常检测机器学习算法的结果映射到同一空间,并计算出最终的异常分数。具体步骤如下:
    [0038]
    一、提取高维特征。
    [0039]
    通过对截取的pcap包进行解析,提取用户ip、连接时间、持续时间、出流量大小、出流量峰值、出流量均值、入流量大小、入流量峰值、入流量均值、出包大小、出包峰值、出包均值、入包大小、入包峰值、入包均值共d个维度特征如下,并生成csv文件保存这些特征。
    [0040]
    x={x1,x2,

    ,xd}
    ꢀꢀꢀ
    (1)
    [0041]
    其中xi表示一个用户所具有的的第i个特征。
    [0042]
    高维特征提取意味着数据集至少拥有两个及以上的特征维度。本发明所提取的流量特征超过了十维。多维存在两个问题:1)不同维度特征互相关联影响,像欧式距离这种相似性的度量概念不复存在,并且在不同维度的视图下,数据集特性不同。2)由于多维空间上的数据具有稀疏性,并且存在噪声和无关特征,无法以有意义的方式测量数据对象之间的距离,使得离群点检测任务更具有挑战性。对于一些基于密度或距离的异常检测算法来说,会使得计算量增加,时间成本增大。因此,离群点异常检测技术需要随着数据集维度和规模等实际情况进行相应改进。
    [0043]
    二、使用机器学习模型进行异常检测。
    [0044]
    将得到的高维特征数据放入改进后的机器学习模型进行检测。本发明提出一种结合不同模型优势的异常检测算法。
    [0045]
    在孤立森林中,异常被定义为“容易被孤立的离群点”,可以将其理解为分布稀疏且离密度高的群体较远的点。在特征空间里,分布稀疏的区域表示事件发生在该区域的概率很低,因而可以认为落在这些区域里的数据是异常的。孤立森林是一种适用于连续数据的无监督异常检测方法,即不需要有标记的样本来训练,但特征需要是连续的。孤立森林异常检测的步骤如下:给定n个样本数据x特征的维度为d,构建一棵孤立树,随机选择一个特征q及其分割值p,递归地分割数据集x,直到满足以下任意一个条件:(1)树达到了限制的高度;(2)节点上只有一个样本;(3)节点上的样本所有特征都相同。在这种随机分割的策略下,异常点通常具有较短的路径。孤立森林具有时间复杂度低、精度高、适应高维数据的优点,但容易丢失数据局部密度信息,因而对全局离群点的检测优势较大,不擅长处理局部离群点。
    [0046]
    局部异常因子算法能有效避免数据密度分布不同对检测带来的影响,但由于计算lof值时需要查找每个数据点的k近邻与可达距离,导致检测成本非常高,难以满足对高维数据的高效检测需求。lof算法的具体步骤如下:首先计算数据点间的欧式距离dist(di,dj),计算k距离k_dist(di):将数据点di到其他数据点的距离从小到大排序,数据点到第k个数据点的距离即为k距离。计算k距离邻域nk(di):到数据点di距离小于k_dist(di)的数据点集合。计算可达距离reach_distk(dr,di):数据点dr的k距离和数据点di到数据点dr间距中的最大值。
    [0047]
    reach_distk(dr,di)=max{k_dist(di),dist(dr,di)}
    ꢀꢀꢀ
    (2)
    [0048]
    其中,dr和di表示点r和点i
    [0049]
    计算局部可达密度lrd(di):数据点di的k距离邻域内的所有数据点到数据点di的平均可达距离的倒数
    [0050][0051]
    其中,ds表示数据点di的k距离邻域内的数据点s。
    [0052]
    计算局部离群因子lof(di):数据点di的k距离邻域中所有点的局部可达密度与数据点di的局部可达密度之比的平均数。
    [0053][0054]
    其中,dt表示数据点di的k距离邻域中的点t。
    [0055]
    最终的到的lof(di)即是di点的异常分数。
    [0056]
    三、融合结果。
    [0057]
    将孤立森林和lof两个算法输出的结果映射到同一空间并计算得出最终的异常分数。
    [0058]
    在孤立森林中,样本点a的路径长度h(a)为从孤立树的根节点到叶子节点所经过的边的数量。给定一个包含w个样本的数据集,树的平均路径长度为
    [0059][0060]
    其中,h(i)为调和数,可以通过ln(i) 0.5772156649(欧拉常数)来估算。,c(w)为给定样本数w时,路径长度的平均值;
    [0061]
    样本a的孤立森林异常分数定义为
    [0062][0063]
    其中e(h(a))计算数学期望,即均值
    [0064]
    得分越高代表该点越异常而样本a在lof算法中的异常分数为
    [0065]
    s_lof(a)=lof(a)
    ꢀꢀꢀ
    (7)
    [0066]
    得分越高代表该点越异常判断所考察数据点是否为异常点,需要从其在全局数据空间所处位置以及邻域密度差异两方面来考虑。孤立森林根据数据全局信息计算数据点异常分数,lof根据数据点邻域信息计算lof值,因此,本发明从数据点的全局分布下的异常信息以及局部离群程度来综合确定最终离群点。结合两个算法所得数据点a的异常分数s_iforest(a)以及s_lof(a),分别计算它们的z-score值,将它们标准化到同一空间
    [0067][0068][0069]
    其中,mean_iforest、std_iforest、mean_lof、std_lof分别是各自算法结果中所有异常分数的均值与标准差。最后,根据公式(10)计算得到数据点a最终的异常分数score(a)。其中,β为融合权重,由于lof算法检测更精确,具有更高可信度,且孤立森林算法具有随机性,因此赋予lof值较大权重,取值范围区间[0.6,0.8]。
    [0070]
    score(a)=(1-β)*zs_iforest(a) β*zs_lof(a)
    ꢀꢀꢀ
    (10)
    [0071]
    最后输出所有用户的异常分数,并从大到小进行排序。排名越靠前用户越有可能是异常用户
    [0072]
    本发明采用的数据集是自制数据集,通过截取数据包软件把捕获的数据包保存为pcap格式的本地文件。将数据预处理成可直接读取的csv格式,作为流量日志。其中包含100个用户ip,共一千万条数据包信息。基于流量日志特征提取的无监督异常检测方法,所用的机器学习模型,本质上解决的是二分类问题。机器学习模型使用流量日志进行训练,将得到的流量日志分别放入孤立森林和lof算法,其中孤立森林子样本大小设置为256,树的数量设置为100。最终计算出各用户的异常得分并排名。设置阈值为η,排名前η个用户即可视为流量异常用户。
    [0073]
    在自制数据集中,基于流量日志特征提取的无监督异常检测模型(本发明方法)计算出最终异常得分的抖动图如图2。图片横轴表示最终异常得分,每个点代表一个用户。得分越高的用户越异常。可以看出该模型有效地识别出了网络异常流量的用户。
    [0074]
    本发明利用无监督的方式,相较于有监督方法,无需大量标记数据,训练时没有标签信息,不同于现有孤立森林和lof异常检测技术,本方法通过公式(8)(9)标准化以及(10)融合得到最后的异常得分,并按照从大到小排序,排名越靠前用户越有可能是异常用户。最终结果结合了两种算法的优点,与现有技术相比更加可信。实验表明基于流量日志特征提
    取的无监督异常检测方法有效地识别出了网络异常流量的用户。
    [0075]
    以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
    转载请注明原文地址:https://tc.8miu.com/read-1257.html

    最新回复(0)