实现模型训练的方法、装置、实现节点检测的方法及装置转让专利

申请号 : CN202011336688.2

文献号 : CN112468487B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王之梁王苏尹霞施新刚

申请人 : 清华大学

摘要 :

本文公开一种实现模型训练的方法、装置、实现节点检测的方法、装置、计算机存储介质及终端,本发明实施例将良性数据源图作为样本集合训练子模型,训练出第一个子模型之后,根据最新训练的子模型输出的分类结果信息确定错误分类的节点,以错误分类的节点训练新的子模型,直至最新训练出的子模型确定不存在错误分类的节点时结束训练;将训练获得的所有子模型组合为用于异常节点检测的第一组合模型。除第一个子模型外,通过确定出的错误分类的节点训练,使子模型针对错误分类的节点进行行为信息的学习,具备对其学习到的节点类别的检测能力,组合的第一组合模型具备了各子模型学习到的所有类别节点的检测能力,提升了异常节点检测的效率。

权利要求 :

1.一种实现模型训练的方法,包括:以第一数据源图包含的节点作为样本集合训练子模型;

根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;

确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;

确定不存在错误分类的节点时,结束子模型的训练;

将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;

其中,所述第一数据源图为良性数据源图;

所述子模型通过以下方式训练获得:将所述样本集合中各节点的节点信息输入图采样和聚合GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;其中,所述节点信息包括:根据节点类别确定的节点标签信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连接的节点确定的相邻节点信息;

根据所述GraphSAGE模型输出的所述分类结果信息和所述节点标签信息,确定所述GraphSAGE模型模型损失函数;

通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,获得所述子模型。

2.根据权利要求1所述的方法,其特征在于,所述以第一数据源图包含的节点作为样本集合训练一个子模型之前,所述方法还包括:将所述第一数据源图包含的节点按预设策略划分为一个以上所述样本集合。

3.根据权利要求1所述的方法,其特征在于,所述通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,包括:通过确定的所述模型损失函数,以反向传播方式对所述GraphSAGE模型的参数进行调整。

4.根据权利要求1所述的方法,其特征在于,所述确定是否存在错误分类的节点之前,所述方法还包括:

对所有所述子模型,将根据所述分类结果信息与所述节点标签信息表示分类不同的节点,确定为错误分类的节点。

5.根据权利要求4所述的方法,其特征在于,所述确定是否存在错误分类的节点之前,所述方法还包括:

对训练的一个以上所述子模型,所述节点标签信息与由子模型获得的所述分类结果信息表示节点所属分类相同时,确定节点被划分为各个分类的最高概率和次高概率;

计算确定的所述最高概率和所述次高概率的概率比值;

将计算获得的所述概率比值小于预设比值阈值的节点,确定为所述错误分类的节点。

6.根据权利要求1~5任一项所述的方法,其特征在于,所述将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型之后,所述方法还包括:通过所述第一组合模型,对预设数量张第二数据源图分别进行是否是良性数据源图的检测;

当预设数量张第二数据源图中,被检测为良性数据源图的比例小于预设比例阈值时,确定每张所述第二数据源图相应的被所述第一组合模型确定为错误分类的节点的错误节点数;

以确定出的所述错误节点数最大的第二数据源图,训练第二组合模型;

将训练获得的所述第二组合模型中的子模型,添加至所述第一组合模型中,重新组合获得所述第一组合模型;

其中,所有所述第二数据源图均为良性的数据源图。

7.根据权利要求1~5任一项所述的方法,其特征在于,所述将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型,包括:将训练获得的所有子模型,按照预设排序策略进行排序;

对完成排序的子模型,将相邻的两个子模型中排序在前的子模型的输出与排序在后的子模型的输入相连,获得所述第一组合模型。

8.一种实现节点检测的方法,包括:接收待检测的数据源图;

通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点;

所述第一组合模型通过以下方式训练获得:以第一数据源图包含的节点作为样本集合训练子模型;

根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;

确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;

确定不存在错误分类的节点时,结束子模型的训练;

将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;

其中,所述第一数据源图为良性数据源图;所述子模型通过以下方式训练获得:将所述样本集合中各节点的节点信息输入图采样和聚合GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;其中,所述节点信息包括:根据节点类别确定的节点标签信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连接的节点确定的相邻节点信息;

根据所述GraphSAGE模型输出的所述分类结果信息和所述节点标签信息,确定所述GraphSAGE模型模型损失函数;

通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,获得所述子模型。

9.一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1~7中任一项所述的实现模型训练的方法,或如权利要求

8所述的实现节点检测的方法。

10.一种终端,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,处理器被配置为执行存储器中的计算机程序;

所述计算机程序被所述处理器执行时实现如权利要求1~7中任一项所述的实现模型训练的方法,或如权利要求8所述的实现节点检测的方法。

11.一种实现模型训练的装置,包括:训练单元、判断单元和组合单元;其中,训练单元设置为:以第一数据源图包含的节点作为样本集合训练子模型;判断单元确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;判断单元确定不存在错误分类的节点时,结束子模型的训练;

判断单元设置为:根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;

组合单元设置为:将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;

其中,所述第一数据源图为良性数据源图;

所述子模型通过以下方式训练获得:将所述样本集合中各节点的节点信息输入图采样和聚合GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;其中,所述节点信息包括:根据节点类别确定的节点标签信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连接的节点确定的相邻节点信息;

根据所述GraphSAGE模型输出的所述分类结果信息和所述节点标签信息,确定所述GraphSAGE模型模型损失函数;

通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,获得所述子模型。

12.一种实现节点检测的装置,包括:接收单元和检测单元;其中,接收单元设置为:接收待检测的数据源图;

检测单元设置为:通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点;

所述装置还包括:训练单元、判断单元和组合单元;其中,训练单元设置为:以第一数据源图包含的节点作为样本集合训练子模型;判断单元确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;判断单元确定不存在错误分类的节点时,结束子模型的训练;

判断单元设置为:根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;

组合单元设置为:将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;

其中,所述第一数据源图为良性数据源图;

所述子模型通过以下方式训练获得:将所述样本集合中各节点的节点信息输入图采样和聚合GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;其中,所述节点信息包括:根据节点类别确定的节点标签信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连接的节点确定的相邻节点信息;

根据所述GraphSAGE模型输出的所述分类结果信息和所述节点标签信息,确定所述GraphSAGE模型模型损失函数;

通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,获得所述子模型。

说明书 :

实现模型训练的方法、装置、实现节点检测的方法及装置

技术领域

[0001] 本文涉及但不限于网络安全技术,尤指一种实现模型训练的方法、装置、实现节点检测的方法及装置。

背景技术

[0002] 高级持续性威胁(APT)是一种近年来愈发常见的网络威胁,攻击者选取特定目标,利用零日漏洞对其进行隐蔽、长期的入侵。这些特点使得APT难以被传统的网络入侵检测方
法检测到。
[0003] 近年来国际顶会上关于APT检测的论文有:知识发现与数据挖掘会议(KDD)2016年的快速且内存高效的流式异构图异常检测(Fast Memory‑efficient Anomaly Detection 
in Streaming Heterogeneous Graphs)(StreamSpot)、计算机与通信安全会议(CCS)2019
年的Poirot:通过比对攻击行为和内核审计记录来检测网络威胁(Aligning Attack 
Behavior with Kernel Audit Records for Cyber Threat Hunting)(Poirot)、安全和隐
私(S&P)2019年的HOLMES:通过可疑信息流的相关性对ATP攻击进行实时检测(Real‑time 
APT Detection through Correlation of Suspicious Information Flows)(Holmes)、网
络与分布式系统安全研讨会(NDSS)2020年的UNICORN:基于数据来源的高级持续性威胁在
线检测器(Runtime Provenance‑Based Detector for Advanced Persistent Threats)
(Unicorn)。以下就上述论文涉及的相关技术进行介绍:
[0004] 传统的APT检测方法通常使用系统审计日志和系统调用记录作为数据源进行APT检测,由于APT的隐蔽性和持续性,通常需要对长时间的数据中的因果关系进行检测,从而
找到异常的行为;由于系统审计日志和系统调用记录中的数据较为独立,难以找到数据之
间的因果关系。因此,近年来的APT攻击检测开始使用数据源图作为数据源。上述四篇论文
进行APT检测的数据源均为数据源图。数据源图是由部署在操作系统层面的CamFlow的源图
生成系统(官网为https://camflow.org)生成的有向无环图,一台主机对应一张数据源图,
数据源图中包含了系统初始化以来出现过的所有实体及它们之间的调用关系;图中的点表
示系统中的实体(包括进程节点、文件节点等),边表示实体之间的调用关系(如一个进程读
取了一个文件)。相比于系统审计日志和系统调用记录,数据源图更适用于检测长时间持续
的APT攻击。
[0005] 上述论文中的ATP检测方法可以分为基于误用和基于异常两类ATP检测方法;其中,Holmes和Poirot是基于误用的ATP检测方法,而StreamSpot和Unicorn是基于异常的ATP
检测方法。基于误用的ATP检测方法需要构造异常信息库,通过将检测对象与异常信息库进
行比对来检测异常行为,由于依赖于异常信息库,因此难以检测未在异常信息库中出现过
的零日APT攻击。基于异常的ATP检测方法会学习良性行为的特征并构建良性行为模型,通
过检测对象在良性行为模型上的偏差来检测异常的行为,存在检测未知攻击的潜力;但由
于基于异常的ATP检测方法均需要对全图进行特征提取,因此对于异常占比较少的APT场景
来说,难以从全图特征上体现局部的异常,会导致检测;此外,基于异常的ATP检测方法直接
检测图是否为异常,故无法在检测异常的同时定位异常在图中的位置,即且无法定位异常
行为在系统中的位置。
[0006] 综上,基于误用的ATP检测方法存在难以检测零日APT攻击的问题;基于异常的ATP检测方法难以检测异常占比小的APT攻击,且无法定位异常行为在系统中的位置。此外,
StreamSpot和Holmes方法将数据源图存储在内存中,当数据源图数据量不断增大而无法存
储,会对ATP检测应用造成影响。如何提升ATP攻击的检测效率,成为一个有待解决的一个问
题。

发明内容

[0007] 以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
[0008] 本发明实施例提供一种实现模型训练的方法、装置、实现节点检测的方法及装置、计算机存储介质及终端,能够提升ATP攻击的检测效率。
[0009] 本发明实施例提供了一种实现模型训练的方法,包括:
[0010] 以第一数据源图包含的节点作为样本集合训练子模型;
[0011] 根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;
[0012] 确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;
[0013] 确定不存在错误分类的节点时,结束子模型的训练;
[0014] 将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0015] 其中,所述第一数据源图为良性数据源图。
[0016] 在一种示例性实例中,所述以第一数据源图包含的节点作为样本集合训练一个子模型之前,所述方法还包括:
[0017] 将所述第一数据源图包含的节点按预设策略划分为一个以上所述样本集合。
[0018] 在一种示例性实例中,所述子模型通过以下方式训练获得:
[0019] 将所述样本集合中各节点的节点信息输入图采样和聚合GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;其中,所述节点信息包括:根据节点类别确定的节点
标签信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节
点连接的节点确定的相邻节点信息;
[0020] 根据所述GraphSAGE模型输出的所述分类结果信息和所述节点标签信息,确定所述GraphSAGE模型模型损失函数;
[0021] 通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,获得所述子模型。
[0022] 在一种示例性实例中,所述通过确定的所述模型损失函数对所述GraphSAGE模型进行参数调整,包括:
[0023] 通过确定的所述模型损失函数,以反向传播方式对所述GraphSAGE模型的参数进行调整。
[0024] 在一种示例性实例中,所述确定是否存在错误分类的节点之前,所述方法还包括:
[0025] 对所有所述子模型,将根据所述分类结果信息与所述节点标签信息表示分类不同的节点,确定为错误分类的节点。
[0026] 在一种示例性实例中,所述确定是否存在错误分类的节点之前,所述方法还包括:
[0027] 对训练的一个以上所述子模型,所述节点标签信息与由子模型获得的所述分类结果信息表示节点所属分类相同时,确定节点被划分为各个分类的最高概率和次高概率;
[0028] 计算确定的所述最高概率和所述次高概率的概率比值;
[0029] 将计算获得的所述概率比值小于预设比值阈值的节点,确定为所述错误分类的节点。
[0030] 在一种示例性实例中,所述将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型之后,所述方法还包括:
[0031] 通过所述第一组合模型,对预设数量张第二数据源图分别进行是否是良性数据源图的检测;
[0032] 当预设数量张第二数据源图中,被检测为良性数据源图的比例小于预设比例阈值时,确定每张所述第二数据源图相应的被所述第一组合模型确定为错误分类的节点的错误
节点数;
[0033] 以确定出的所述错误节点数最大的第二数据源图,训练第二组合模型;
[0034] 将训练获得的所述第二组合模型中的子模型,添加至所述第一组合模型中,重新组合获得所述第一组合模型;
[0035] 其中,所有所述第二数据源图均为良性的数据源图。
[0036] 在一种示例性实例中,所述将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型,包括:
[0037] 将训练获得的所有子模型,按照预设排序策略进行排序;
[0038] 对完成排序的子模型,将相邻的两个子模型中排序在前的子模型的输出与排序在后的子模型的输入相连,获得所述第一组合模型。
[0039] 另一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述实现模型训练的方法。
[0040] 再一方面,本发明实施例还提供一种终端,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,
[0041] 处理器被配置为执行存储器中的计算机程序;
[0042] 所述计算机程序被所述处理器执行时实现如上述实现模型训练的方法。
[0043] 还一方面,本发明实施例还提供一种实现节点检测的方法,包括:
[0044] 接收待检测的数据源图;
[0045] 通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点。
[0046] 在一种示例性实例中,所述第一组合模型通过以下方式训练获得:
[0047] 以第一数据源图包含的节点作为样本集合训练子模型;
[0048] 根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;
[0049] 确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;
[0050] 确定不存在错误分类的节点时,结束子模型的训练;
[0051] 将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0052] 其中,所述第一数据源图为良性数据源图。
[0053] 还一方面,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现上述实现节点检测的方法。
[0054] 还一方面,本发明实施例还提供一种终端,包括:存储器和处理器,所述存储器中保存有计算机程序;其中,
[0055] 处理器被配置为执行存储器中的计算机程序;
[0056] 所述计算机程序被所述处理器执行时实现如上述实现节点检测的方法。
[0057] 还一方面,本发明实施例还提供一种实现模型训练的装置,包括:训练单元、判断单元和组合单元;其中,
[0058] 训练单元设置为:以第一数据源图包含的节点作为样本集合训练子模型;判断单元确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;判断单
元确定不存在错误分类的节点时,结束子模型的训练;
[0059] 判断单元设置为:根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;
[0060] 组合单元设置为:将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0061] 其中,所述第一数据源图为良性数据源图。
[0062] 还一方面,本发明实施例还提供一种实现节点检测的装置,包括:接收单元和检测单元;其中,
[0063] 接收单元设置为:接收待检测的数据源图;
[0064] 检测单元设置为:通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点。
[0065] 在一种示例性实例中,所述装置还包括:训练单元、判断单元和组合单元;其中,
[0066] 训练单元设置为:以第一数据源图包含的节点作为样本集合训练子模型;判断单元确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;判断单
元确定不存在错误分类的节点时,结束子模型的训练;
[0067] 判断单元设置为:根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;
[0068] 组合单元设置为:将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0069] 其中,所述第一数据源图为良性数据源图。
[0070] 本发明实施例将良性数据源图作为样本集合训练子模型,训练出第一个子模型之后,根据最新训练的子模型输出的分类结果信息确定错误分类的节点,以错误分类的节点
训练新的子模型,直至最新训练出的子模型确定不存在错误分类的节点时结束训练;将训
练获得的所有子模型组合为用于异常节点检测的第一组合模型。除第一个子模型外,通过
确定出的错误分类的节点训练,使子模型针对错误分类的节点进行行为信息的学习,具备
对其学习到的节点类别的检测能力,组合的第一组合模型具备了各子模型学习到的所有类
别节点的检测能力,提升了异常节点检测的效率。
[0071] 本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利
要求书以及附图中所特别指出的结构来实现和获得。

附图说明

[0072] 附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
[0073] 图1为本发明实施例实现模型训练的方法的流程图;
[0074] 图2为本发明实施例实现节点检测的方法的流程图;
[0075] 图3为本发明实施例实现模型训练的装置的结构框图;
[0076] 图4为本发明实施例实现节点检测的装置的结构框图;
[0077] 图5为本应用示例数据源图的示意图;
[0078] 图6为本应用示例用于子模型训练的节点示意图;
[0079] 图7为本应用示例另一用于子模型训练的节点示意图;
[0080] 图8为本应用示例再一用于子模型训练的节点示意图;
[0081] 图9为本应用示例还一用于子模型训练的节点示意图;
[0082] 图10为不同批处理参数时的速率对比图;
[0083] 图11为不同子图大小参数时的速率对比图;
[0084] 图12为不同批处理参数时的内存使用率和CPU使用率对比图;
[0085] 图13为不同子图大小参数时的内存使用率和CPU使用率对比图。

具体实施方式

[0086] 为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中
的特征可以相互任意组合。
[0087] 在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺
序执行所示出或描述的步骤。
[0088] 图1为本发明实施例实现模型训练的方法的流程图,如图1所示,包括:
[0089] 步骤101、以第一数据源图包含的节点作为样本集合训练子模型;其中,第一数据源图为良性数据源图;
[0090] 在一种示例性实例中,以第一数据源图包含的节点作为样本集合训练一个子模型之前,本发明实施例方法还包括:
[0091] 将第一数据源图包含的节点按预设策略划分为一个以上样本集合。
[0092] 需要说明的是,将第一数据源图包含的节点划分为多个样本集合时,本发明实施例对划分获得的各样本集合分别进行子模型的训练,即对划分的每一个样本集合,分别采
用后续步骤进行子模型的训练;完成各样本集合对应的子模型的训练之后,将通过所有样
本集合训练的子模型进行组合,获得第一组合模型。
[0093] 在一种示例性实例中,本发明实施例可以根据内存容量和子模型训练所需的样本数量,将第一数据源图包含的节点划分为一个以上样本集合。
[0094] 步骤102、根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;确定存在错误分类的节
点时,执行步骤103;确定不存在错误分类的节点时,执行步骤104;
[0095] 在一种示例性实例中,步骤102确定是否存在错误分类的节点之前,本发明实施例方法还包括:
[0096] 对所有子模型,将根据分类结果信息与节点标签信息表示分类不同的节点,确定为错误分类的节点。
[0097] 在一种示例性实例中,步骤102确定是否存在错误分类的节点之前,本发明实施例方法还包括:
[0098] 对训练的一个以上子模型,节点标签信息与由子模型获得的分类结果信息表示节点所属分类相同时,确定节点被划分为各个分类的最高概率和次高概率;
[0099] 计算确定的最高概率和次高概率的概率比值;
[0100] 将计算获得的概率比值小于预设比值阈值的节点,确定为错误分类的节点。
[0101] 本发明实施例通过设置比值阈值,对最高概率和次高概率比较接近的节点进行过滤,避免以可能误判的节点进行子模型训练,降低子模型的准确度。
[0102] 步骤103、以错误分类的节点作为样本集合训练新的子模型;
[0103] 步骤104、结束子模型的训练;
[0104] 步骤105、将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0105] 在一种示例性实例中,本发明实施例子模型通过以下方式训练获得:
[0106] 将样本集合中各节点的节点信息输入图采样和聚合(GraphSAGE)模型中,获得GraphSAGE模型输出的分类结果信息;其中,节点信息包括:根据节点类别确定的节点标签
信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连
接的节点确定的相邻节点信息;
[0107] 根据GraphSAGE模型输出的分类结果信息和节点标签信息,确定GraphSAGE模型的模型损失函数;
[0108] 通过确定的模型损失函数对GraphSAGE模型进行参数调整,获得子模型。
[0109] 在一种示例性实例中,本发明实施例模型损失函数包括:负对数似然损失函数(NLLLoss)。
[0110] 在一种示例性实例中,本发明实施例通过确定的模型损失函数对GraphSAGE模型进行参数调整,包括:
[0111] 通过确定的模型损失函数,以反向传播方式对GraphSAGE模型的参数进行调整。
[0112] 需要说明的是,GraphSAGE是一种用于节点分类的图神经网络(GNN)模型,本发明实施例应用GraphSAGE模型的节点分类能力,将APT攻击检测问题建模为数据源图中的异常
节点检测;基于GraphSAGE模型进行子模型的训练,从第一数据源图中学习不同类别的节点
的表示,训练子模型后用于检测数据源图中节点的类型;利用异常节点检测对数据源图中
占比少的信息更敏感,提升了检测APT攻击的效率。
[0113] 本发明实施例,若节点被确定为错误分类的节点(如文件节点被错误分类为进程节点),说明该节点的行为信息和子模型学习到的节点的行为信息不同,训练获得的子模型
判断其可能是一个带有异常行为的节点。本发明实施例在不需要异常先验知识的前提下,
学习到了良性的数据源图中不同类型的节点的行为信息,从而可以用于检测异常节点。
[0114] 为便于理解本发明实施例,以下以图G为例,就GraphSAGE的训练部分进行简要说明:
[0115] GraphSAGE模型包括输入层、掩藏层和输出层;其中,
[0116] 输入层:图G中的每个节点v及其特征向量XV和标签LV,记XV的维度为1*n,LV的类别数目为m。对于每个节点v,用一个向量h来记录该节点在模型内部传输过程中的值。首先在
0 0
输入层将每个节点v的向量h赋值为其特征向量,即hV=XV,因此hV的维度也为1*n。
[0117] 隐藏层:在隐藏层中,对每个节点v进行一次信息聚合,聚合的信息为v的一维邻居1
节点。设v的一维邻居节点集合为N(v),聚合N(v)中每个节点的信息,聚合后的信息用hN(v)
表示,公式如下:
[0118]
[0119] AGGREGATE1表示第一层的聚合函数,一般使用的是均值聚合函数,即h1N(v)中每一0
维度的值为hu, 相应维度值的平均值;
[0120] 将每个节点v的h0V与h1N(v)相连,得到h1v=CONCAT(h0V,h1N(v));
[0121] h1v的维度为1*2n,设置2n*2n的权重矩阵W1,将h1v和W1相乘,得到相乘后的维度为1 1 1
1*2n的向量hv=hv·W;
[0122] 最后使用sigmoid激活函数f(x)=1/(1+e‑x),得到最终的h1v=f(h1v)。
[0123] 输出层:输出层对每个节点v再进行一次信息聚合,设v的一维邻居节点集合为N2
(v),聚合后的信息用hN(v)表示,公式如下:
[0124]
[0125] 聚合函数AGGREGATE2依然采用了均值聚合函数。由于u是当前节点v的一维邻居节1 2
点,而hu在隐藏层中已经进行了一次聚合,聚合了u的一维邻居节点的信息,因此hN(v)中聚
1 2 2 1
合了节点v的二维邻居节点信息。接着将每个节点v的hv与hN(v)相连,得到hv=CONCAT(hv,
2 2 2 2 2
hN(v));hv的维度为1*3n,一般设置3n*m的权重矩阵W ,将hv和W 相乘,得到相乘后的维度为
2 2 2
1*m的hv=hv·W。
[0126] 接着,使用sigmoid激活函数f(x)=1/(1+e‑x),得到h2v=f(h2v)。
[0127] 最后,用softmax函数S对h2v进行运算。h2v中共有m个元素,记B=∑jeAj,j∈[1,m]。2 Ai/B Aj
假设hv中的第i个元素为Ai,则经过softmax函数运算后的A’i=e 。由此可知∑je =1,j
∈[1,m]。由前文可知m为图G中所有节点的不同标签种类,因此经过softmax函数运算后的
2 2
1*m维向量h v的每一维表示该节点v属于某一类的概率。hv同样也是GraphSAGE模型最终输
出的值。
[0128] 反向传播:对于良性节点,希望它经过模型的运算后得到的h2v中其正确的类表示2
的维度的值为1,其他值为0。将其表示为理想结果。模型输出的每个节点的hv和其理想结果
存在差异,本发明实施例可以用负对数似然损失函数(NLLLoss)来计算,并根据结果对模型
1 2
进行反向传播,从而对W 、W等参数进行调整。反向传播算法和深度学习相似,在此不做赘
述。
[0129] 在一种示例性实例中,本发明实施例将样本集合中节点的节点信息输入图采样和聚合(GraphSAGE)模型中进行训练之前,本发明实施例方法还包括:
[0130] 将节点信息进行编码。
[0131] 在一种示例性实例中,本发明实施例为数据源图中各节点分别设置相应的身份编码(ID),即节点ID,通过记录与节点连接的节点的节点ID确定的相邻节点信息;为各节点类
别分别设置相应的类别编码,获得节点标签信息;按照预设的出边种类和入边种类排序,对
各种类出边和入边的数量进行统计后,获得节点特征信息;最后,根据节点ID,确定对应于
节点的节点标签信息、节点特征信息及相邻节点信息;
[0132] 在一种示例性实例中,本发明实施例中的节点类别可以包括:文件和进程等;
[0133] 在一种示例性实例中,本发明实施例中边的种类可以包括:派生、读取、删除和写入等。
[0134] 在一种示例性实例中,本发明实施例将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型,包括:
[0135] 将训练获得的所有子模型,按照预设排序策略进行排序;
[0136] 对完成排序的子模型,将相邻的两个子模型中排序在前的子模型的输出与排序在后的子模型的输入相连,获得第一组合模型。
[0137] 在一种示例性实例中,将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型之后,本发明实施例方法还包括:
[0138] 通过第一组合模型,对预设数量张第二数据源图分别进行是否是良性数据源图的检测;
[0139] 当预设数量张第二数据源图中,被检测为良性数据源图的比例小于预设比例阈值时,确定每张第二数据源图相应的被第一组合模型确定为错误分类的节点的错误节点数;
[0140] 以确定出的错误节点数最大的第二数据源图,训练第二组合模型;
[0141] 将训练获得的第二组合模型中的子模型,添加至第一组合模型中,重新组合获得第一组合模型;
[0142] 其中,所有第二数据源图均为良性的数据源图。
[0143] 需要说明的是,预设数量和预设比例阈值可以由本领域技术人员根据经验设定;例如、预设比例阈值可以设定为90%左右的值,预设数量可以是一个取值范围内的值,例
如、100±5。第二数据源图是否为良性数据源图,可以由第一组合模型对数据源图各节点是
否为良性节点的判定确定;当第二数据源图中包含的所有节点均被判定为良性节点时,第
二数据源图被确定为良性数据源图。
[0144] 本发明实施例在预设数量张第二数据源图中,被检测为良性数据源图的比例小于预设比例阈值时,通过训练选取第二数据源图进行更多的子模型的训练,提升了第一组合
模型的准确率。另外,重新组合获得的第一组合模型,若对预设数量张第二数据源图再次进
行检测时,如果被检测为良性数据源图的比例仍小于预设比例阈值,本发明实施例可以再
次选取新的第二数据源图,用于训练更多的子模型,直至被检测为良性数据源图的比例大
于或等于预设比例阈值时停止。
[0145] 在一种示例性实例中,对每一张第二数据源图,本发明实施例中的第一组合模型通过以下处理实现第二数据源图是否是良性数据源图的确定,包括:
[0146] 将第二数据源图包含的节点的节点信息输入至第一组合模型的排序在第一位的子模型中,排序在第一位的子模型输出分类结果信息,并根据分类结果信息和节点标签信
息,确定错误分类的节点;
[0147] 除排序在第一位以外的其他子模型,接收排序在前的子模型确定的错误分类的节点的节点信息,对接收到的错误分类的节点的节点信息进行检测,输出分类结果信息,并根
据分类结果信息和节点标签信息,确定错误分类的节点,并将确定的错误分类的节点输出
至在后一个子模型,直至子模型不再确定错误分类的节点或所有子模型按照排序运算结束
时停止;
[0148] 当第一组合模型中的子模型,不再确定错误分类的节点时,则当前第二数据源图为良性数据源图;
[0149] 当所有子模型按照排序运算结束,最后一个子模型仍确定出错误分类的节点时,则最后一个子模型确定出的错误分类的节点为异常节点,当前第二数据源图被确定为异常
数据源图。
[0150] 本发明实施例将良性数据源图作为样本集合训练子模型,训练出第一个子模型之后,根据最新训练的子模型输出的分类结果信息确定错误分类的节点,以错误分类的节点
训练新的子模型,直至最新训练出的子模型确定不存在错误分类的节点时结束训练;将训
练获得的所有子模型组合为用于异常节点检测的第一组合模型。除第一个子模型外,通过
确定出的错误分类的节点训练,使子模型针对错误分类的节点进行行为信息的学习,具备
对其学习到的节点类别的检测能力,组合的第一组合模型具备了各子模型学习到的所有类
别节点的检测能力,提升了异常节点检测的效率。
[0151] 本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述实现模型训练的方法。
[0152] 本发明实施例还提供一种终端,包括:存储器和处理器,存储器中保存有计算机程序;其中,
[0153] 处理器被配置为执行存储器中的计算机程序;
[0154] 计算机程序被处理器执行时实现如上述实现模型训练的方法。
[0155] 图2为本发明实施例实现节点检测的方法的流程图,如图2所示,包括:
[0156] 步骤201、接收待检测的数据源图;
[0157] 步骤202、通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点。
[0158] 在一种示例性实例中,本发明实施例中的第一组合模型可以参照步骤101~105训练获得。
[0159] 本发明实施例通过良性数据源图训练获得两个以上子模型;基于训练获得的子模型,组合获得用于进行异常节点检测的第一组合模型;基于组合获得的第一组合模型,提升
了异常节点的检测效率。
[0160] 本发明实施例还提供一种计算机存储介质,计算机存储介质中存储有计算机程序,计算机程序被处理器执行时实现上述实现节点检测的方法。
[0161] 本发明实施例还提供一种终端,包括:存储器和处理器,存储器中保存有计算机程序;其中,
[0162] 处理器被配置为执行存储器中的计算机程序;
[0163] 计算机程序被处理器执行时实现如上述实现节点检测的方法。
[0164] 图3为本发明实施例实现模型训练的装置的结构框图,如图3所示,包括:训练单元、判断单元和组合单元;其中,
[0165] 训练单元设置为:以第一数据源图包含的节点作为样本集合训练子模型;判断单元确定存在错误分类的节点时,以错误分类的节点作为样本集合训练新的子模型;判断单
元确定不存在错误分类的节点时,结束子模型的训练;
[0166] 判断单元设置为:根据样本集合训练出第一个子模型之后,根据最新训练出的子模型输出的节点所属分类的分类结果信息,确定是否存在错误分类的节点;
[0167] 组合单元设置为:将训练获得的所有子模型组合为用于进行异常节点检测的第一组合模型;
[0168] 其中,第一数据源图为良性数据源图。
[0169] 在一种示例性实例中,本发明实施例装置还包括划分单元,设置为:
[0170] 将第一数据源图包含的节点按预设策略划分为一个以上样本集合。
[0171] 在一种示例性实例中,训练单元是设置为通过以下方式训练获得子模型:
[0172] 将样本集合中各节点的节点信息输入图采样和聚合(GraphSAGE)模型中,获得GraphSAGE模型输出的分类结果信息;其中,节点信息包括:根据节点类别确定的节点标签
信息、根据与节点连接的各种类出边和入边的数量确定的节点特征信息、及根据与节点连
接的节点确定的相邻节点信息;
[0173] 根据GraphSAGE模型输出的分类结果信息和节点标签信息,确定GraphSAGE模型模型损失函数;
[0174] 通过确定的模型损失函数对GraphSAGE模型进行参数调整,获得子模型。
[0175] 在一种示例性实例中,训练单元是设置为通过确定的模型损失函数对GraphSAGE模型进行参数调整,包括:
[0176] 通过确定的模型损失函数,以反向传播方式对GraphSAGE模型的参数进行调整。
[0177] 在一种示例性实例中,判断单元还设置为:
[0178] 对所有子模型,将根据分类结果信息与节点标签信息表示分类不同的节点,确定为错误分类的节点。
[0179] 在一种示例性实例中,判断单元还设置为:
[0180] 对训练的一个以上子模型,节点标签信息与由子模型获得的分类结果信息表示节点所属分类相同时,确定节点被划分为各个分类的最高概率和次高概率;
[0181] 计算确定的最高概率和次高概率的概率比值;
[0182] 将计算获得的概率比值小于预设比值阈值的节点,确定为错误分类的节点。
[0183] 在一种示例性实例中,本发明实施例组合单元是设置为:
[0184] 将所有根据样本集合训练获得的所有子模型,按照预设策略进行排序;
[0185] 对完成排序的子模型,将相邻的两个子模型中排序在前的子模型的输出与排序在后的子模型的输入相连,获得第一组合模型。
[0186] 在一种示例性实例中,本发明实施例装置还包括验证调整单元,是设置为:
[0187] 通过组合的第一组合模型,对预设数量张第二数据源图分别确定是否是良性数据源图;
[0188] 当预设数量张第二数据源图中,被确定为良性数据源图的比例小于预设比例阈值时,确定每张第二数据源图相应的被第一组合模型确定为错误分类的节点的错误节点数;
[0189] 以确定出的错误节点数最大的第二数据源图,训练第二组合模型;
[0190] 将训练获得的第二组合模型中的子模型,添加用于组合第一组合模型的子模型中,重新组合获得第一组合模型;
[0191] 其中,所有第二数据源图均为良性的数据源图。
[0192] 图4为本发明实施例实现节点检测的装置的结构框图,如图4所示,包括:接收单元和检测单元;其中,
[0193] 接收单元设置为:接收待检测的数据源图;
[0194] 检测单元设置为:通过预先训练获得的第一组合模型对待检测的数据源图进行检测,以确定待检测的数据源图中是否包含异常节点。
[0195] 在一种示例性实例中,本发明实施例装置还包括图3所示的:训练单元、判断单元和组合单元等结构。
[0196] 本发明实施例将良性数据源图作为样本集合训练子模型,训练出第一个子模型之后,根据最新训练的子模型输出的分类结果信息确定错误分类的节点,以错误分类的节点
训练新的子模型,直至最新训练出的子模型确定不存在错误分类的节点时结束训练;将训
练获得的所有子模型组合为用于异常节点检测的第一组合模型。除第一个子模型外,通过
确定出的错误分类的节点训练,使子模型针对错误分类的节点进行行为信息的学习,具备
对其学习到的节点类别的检测能力,组合的第一组合模型具备了各子模型学习到的所有类
别节点的检测能力,提升了异常节点检测的效率。
[0197] 以下通过应用示例对本发明实施例进行简要说明,应用示例仅用于陈述本发明实施例,并不用于限定本发明的保护范围。
[0198] 应用示例
[0199] 本应用示例为数据源图中的节点分别配置相应的节点ID,根据记录的与节点连接的节点的节点ID确定的相邻节点信息;将不同的节点类别和节点连接的出边和入边的种类
映射为相应编码后,通过编码表示节点标签信息和节点特征信息。因为,节点特征信息由各
种类出边和入边的数量组成,因此本应用示例中节点特征信息的维数是边的种类总数的两
倍。本应用示例提取节点特征信息后,通过GraphSAGE模型的训练可以学习到良性节点的邻
域信息,可以反映不同种类的良性节点的行为信息。图5为本应用示例数据源图的示意图,
如图5所示,数据源图中包含文件和进程两种类别的节点,边的种类包括派生、读取、删除和
写入,假设将进程和文件这两个节点类别分别编码映射为0和1,则图中的四个节点的节点
标签分别为0、0、1和1;图1中边的种类包括:派生、读取、删除和写入,则本应用示例节点特
征信息的维数为4*2=8;假设前四维按序分别表示节点连接的派生、读取、删除和写入这四
个种类的入边的数量,后四维按序分别表示节点连接的派生、读取、删除和写入这四个种类
的出边的数量。则图5所示的数据源图的各节点的节点特征信息分别为:节点1的节点特征
信息为:[0,0,0,0,1,1,0,0];节点2的节点特征信息为:[1,0,0,0,0,0,1,1];节点3的节点
特征信息为:[0,1,1,0,0,0,0,0];节点4的节点特征信息为:[0,0,0,1,0,0,0,0];本应用示
例可以通过节点ID,确定对应于节点的节点标签信息、节点特征信息及相邻节点信息。
[0200] 本应用示例对选择的用于训练第一组合模型的数据源图,根据内存大小和训练子模型所需样本数量,划分为一个以上样本集合;对划分的每一个样本集合,根据样本集合中
的节点训练获得两个以上子模型;将根据所有样本集合训练获得的所有子模型,组合为用
于进行异常节点检测的第一组合模型;
[0201] 本应用示例通过GraphSAGE模型进行子模型的训练;本应用示例与相关技术不同,相关技术应用GraphSAGE模型进行训练时,将节点的标签设置良性和异常两类,本应用示例
将GraphSAGE模型要学习的节点标签定为节点本身的类别,通过使用良性数据源图中包含
的节点的节点信息训练GraphSAGE模型,对不同类别的良性节点的行为进行学习。
[0202] 在一种示例性示例中,本发明实施例通过GraphSAGE模型训练子模型,包括:
[0203] 将样本集合中各节点的节点信息输入GraphSAGE模型中,获得GraphSAGE模型输出的分类结果信息;
[0204] 根据GraphSAGE模型输出的分类结果信息和节点标签信息,确定GraphSAGE模型模型损失函数;
[0205] 通过确定的模型损失函数,以反向传播方式对GraphSAGE模型的参数进行调整。
[0206] 本发明实施例模型损失函数带入函数中的参数后,可以计算获得相对于的模型损失值。
[0207] 本应用示例将样本集合中各节点的节点信息输入GraphSAGE模型进行训练时,若节点被确定为错误分类的节点(如文件节点被错误分类为进程节点),说明该节点的行为信
息和子模型学习到的节点的行为信息不同,训练获得的子模型判断其可能是一个带有异常
行为的节点。本应用示例在不需要异常先验知识的前提下,学习到了良性的数据源图中不
同类型的节点的行为信息,从而可以用于检测异常节点。
[0208] 当数据源图中的节点,包含一些种类的节点,其数量很少(如stdin节点);或同一种类的节点,节点的行为差异很大(如bash进程节点和browser进程节点的行为差异很大);
则数量很少的种类的节点和同一种类中行为存在差异的数量较少的那一部分节点,在训练
时容易被GraphSAGE模型忽略,即在模型学习时会出现这部分节点的行为信息的缺失,导致
误报。为了降低发生误报的概率。本应用示例通过以下方式对每一个样本集合分别进行训
练,获得两个以上子模型:
[0209] 将样本集合中所有节点的节点信息输入图采样和聚合(GraphSAGE)模型中进行训练,获得第一个子模型;
[0210] 将样本集合中的所有节点输入至获得的第一个子模型中,获得分类结果信息;
[0211] 根据节点标签信息和获得的分类结果信息,确定错误分类的节点;
[0212] 将错误分类的节点的节点信息输入新的GraphSAGE模型中进行训练,获得第二个子模型;
[0213] 将用于训练第二个子模型的节点输入至训练获得的第二个子模型中,获得分类结果信息;
[0214] 根据节点标签信息和通过第二个子模型获得的分类结果信息,确定是否包含错误分类的节点;
[0215] 根据确定的是否包含错误分类的节点,确定是否进行下一个子模型的训练处理。
[0216] 图6到图9为本应用示例用于子模型训练的节点示意图;其中,图6为样本集合中所有良性节点;图中空白圆圈标识良性节点,横线填充的圆圈标识错误分类的节点;随着子模
型个数的增加,确定出的错误分类的节点的数量逐渐减少。
[0217] 节点被训练好的子模型正确分类时,未必表示子模型学习到了节点的信息,有可能仅仅是因为子模型认为节点更加不可能属于其他的分类,所以才将其分为当前类别;子
模型的这种处理可能会导致节点误报,为了减少误报,本应用示例进行了以下处理:
[0218] 对一个以上子模型,由子模型获得的分类结果信息与节点标签信息表示所属分类相同的节点,确定节点被划分为各个分类的最高概率和次高概率;
[0219] 计算确定的最高概率和次高概率的概率比值;
[0220] 将计算获得的概率比值小于预设比值阈值的节点,确定为错误分类的节点。
[0221] 本应用示例通过设置比值阈值,对最高概率和次高概率比较接近的节点进行过滤,避免以可能误判的节点进行子模型训练,降低子模型的准确度。
[0222] 在一种示例性实例中,本应用示例利用graphChi工具(是一个基于c++的库)将数据源图存储在磁盘上,以进行高效的读写操作。graphChi利用graphChi在内存中高效维持
一个代表当前系统行为的子图,用于后续的检测,可以避免可拓展问题。
[0223] 本应用示例比对了本应用示例技术方案与独角兽(Unicorn)和流点式(StreamSpot)的检测效率。实验结果如表1和表2所示,通过对比数据可以确定,本应用示例
第一组合模型的检测性能得到提升。
[0224]
[0225] 表1
[0226]
[0227]
[0228] 表2
[0229] 本应用示例提供的第一组合模型,还可以定位异常节点的位置。以下为在高级研究计划局透明计算(DARPA TC)数据集上进行节点异常检测效果评估。DARPA TC数据集产生
于DARPA透明计算项目的第三次APT模拟攻防演习,包含了若干场景(详细介绍网址:
https://github.com/darpa‑i2o/Transparent‑Computing);本应用示例在DARPA TC的忒
伊亚(THEIA)、追溯(Trace)、军官(CADETS)、五个方向(fivedirections)场景上进行了实
验,实验结果如表3所示,可见本应用示例方法在检测异常节点方面有良好的性能;
[0230]
[0231] 表3
[0232] 本应用示例使用独角兽支持链(UnicornSC)数据集测试了本应用示例方法的运行性能,包括运行速度、内存使用率和中央处理器(CPU)利用率。实验用的机器是一台16核和
64吉比特内存的Ubuntu 16.04.6LTS服务器。实验结果如图10~13所示。图10为不同批处理
参数时的速率对比图,批处理(BS,batch size)是graphSAGE模型进行批处理的参数,图10
中,曲线1‑1表示上文提到的测试用的Streamspot、UnicornSC和DARPA TC三个数据集中的
最快边产生速度,曲线1‑2表示Unicorn的的运行速度。曲线1‑3表示本发明实施例方法的运
行速度。图11为不同子图大小参数时的速率对比图,子图大小参数(SS,subgraph size)表
示内存中维持的子图大小;图11中,曲线2‑1表示上文提到的测试用的Streamspot、
UnicornSC和DARPA TC三个数据集中的最快边产生速度,曲线2‑2表示Unicorn的的运行速
度。曲线2‑3表示本发明实施例方法的运行速度。图12为不同批处理参数时的内存使用和
CPU使用率对比图,其中,左侧纵轴表示内存使用,右侧纵轴表示CPU使用率图12中,曲线3‑1
表示本发明实施例CPU利用率,曲线3‑2表示Unicorn的内存使用,曲线3‑3表示本发明实施
例内存使用;曲线3‑4表示Unicorn的CPU使用率;图13为不同子图大小参数时的内存使用率
和CPU使用率对比图,图13中,曲线4‑1表示本发明实施例CPU利用率,曲线4‑2表示Unicorn
的内存使用,曲线4‑3表示本发明实施例内存使用;曲线4‑4表示Unicorn的CPU使用率;通过
比对可知,本应用示例方法具有良好的运行速度、内存使用率和CPU利用率。
[0233] 本应用示例使用源图生成工具camflow生成数据源图,接着分别在内存和磁盘中存储生成的数据源图,并进行本应用示例的相关处理。
[0234] 以下以UnicornSC数据集作为数据源图集合,对本应用示例进行进一步说明;UnicornSC数据集(包含若干张数据源图的集合),是网络与分布式系统安全研讨会(NDSS)
2020的论文Unicorn中,通过搭建实验环境后模拟生成的数据集,由125张良性数据源图和
25张异常数据源图组成,数据源图中包含的攻击是利用CVE‑2014‑6271漏洞在bash脚本中
植入恶意代码。UnicornSC数据集中的图用txt文件记录;数据源图的txt文件的平均大小为
97600千字节(KB),数据源图中的节点和边的平均数量分别是239224和917608。本应用示例
选择五折交叉验证法,将100张良性数据源图组成训练集,剩余25张良性数据源图和25张异
常数据源图组成测试集。由于UnicornSC数据集只对每张图是否为异常进行了标记,为对本
应用示例的检测效果进行评估,本应用示例将数据源图中是否出现异常节点作为判断数据
源图是否为异常数据源图的判断条件。
[0235] 将数据源图存储在内存中进行处理,将会有很大的内存要求。本应用示例将整张数据源图存在磁盘中,并针对不同阶段做不同的处理。
[0236] 本应用示例以良性的数据源图训练第一组合模型;假设用于训练第一组合模型的数据源图为数据源图0。从磁盘中随机选取数据源图0的150000个点及相应的边(可以定义
为子图)作为样本集合读入内存中,通过GraphSAGE模型训练获得一个以上子模型。完成一
个样本集合中所有节点的训练后,急需从磁盘中选取样本集合,并重复上述步骤,直至完成
数据源图0中所有节点的训练。通过划分样本集合的方式进行子模型的训练,可以保证内存
中用于模型训练的节点的数量固定,从而保证可拓展性。数据源图0训练完后,本应用示例
用训练集中的剩余99张良性数据源图进行验证。假如设定超过90%的数据源图被检测为良
性,才表示已经学习到了足够的良性信息;则验证时被判定为良性的数据源图必需超过
90%时,第一组合模型才训练结束;如果数据源图被检测为良性的比值小于90%,本应用示
例挑选确定出错误分类的节点数量最多的一张良性数据源图,继续训练更多子模型,直至
将训练获得的子模型添加到第一组合模型后,满足超过90%的数据源图被检测为良性这一
条件为止。本应用示例一次随机试验中,用于训练子模型的数据源图的编号包括0、6、24、
31、73和112,训练获得的子模型数量分别为13、13、13、14、16和10,共79个子模型。训练集中
剩余的良性数据源图中的节点均可在这79个子模型上被正确分类。在训练子模型的过程
中,本应用示例设定比值阈值为1.5。通过比值阈值的设置处理,本应用示例获得了更多子
模型;这些子模型学习到了几乎所有训练集中良性节点的信息。
[0237] 本应用示例,在内存中维护一张表示系统当前行为的固定大小的子图。为反应动态在线检测的效果,本应用示例将UnicornSC数据集中的数据源图进行流式重发,数据源图
中的边按照时间顺序逐步输入第一组合模型;在接收边时,本应用示例将边添加至磁盘和
内存中。当内存中边的数量达到一定值时(在本应用示例中该值设为200000),将内存中的
样本集合发给第一组合模型进行检测。若一张数据源图中存在节点被检测为异常,则确定
该数据源图为异常的数据源图。本应用示例对测试集中的数据源图进行检测,最终结果是:
25张良性数据源图中有21张被正确分类为良性,4张被确定为异常;25张异常数据源图中有
24张被正确分类为异常,1张被确定为良性;准确率为86%、召回率为96%、F‑Score为91%。
[0238] “本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式
中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,
一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某
些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或
者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机
可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或
暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息
(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失
性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪
存或其他存储器技术、CD‑ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储
或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介
质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程
序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何
信息递送介质。”