基于日志关联分析的攻击溯源方法及装置与流程

文档序号:30381409发布日期:2022-06-11 04:16阅读:642来源:国知局
基于日志关联分析的攻击溯源方法及装置与流程

1.本发明涉及网络安全技术领域,具体而言,涉及一种基于日志关联分析的攻击溯源方法及装置。


背景技术:

2.高级持续性威胁(apt)最近已成为企业和机构面临的最关键的网络空间威胁之一。apt攻击通常会持续很长时间,它们使用隐蔽的技巧使自己难以被发现。相关技术表明,溯源图可以帮助安全操作员从攻击症状追溯到初始攻击入口点。具体可通过收集和分析系统日志以构建溯源图,其中节点表示实体(如进程、文件、网络套接字),边表示节点之间的操作。但是,在处理长时间运行的应用程序时,这些方法可能会面临严重的问题,这些应用程序在其生命周期中具有大量的输入和输出操作。这导致节点具有大量传入和传出边,可参照图1中的firefox进程。这种节点会阻碍回溯分析,因为它们的所有出边都依赖于它们的所有入边。这就是所谓的“依赖爆炸”问题。
3.传统方法使用污点分析和二进制插桩来缓解依攻击溯源中的赖爆炸问题,这两种技术可以将长时间运行的进程切分为更加细粒度的单元,这些单元代表了事件处理的循环,从而此前施加在进程上的依赖关系可以被更精确地绑定到单元上,因为一个单元比原先的进程实体有更少的依赖关系,故而依赖爆炸能够被减弱。但是,这两种方法有各自的问题。污点分析方法往往带来巨大的时间和空间开销,这在apt这一数据量巨大的场景下无法工作;二进制插桩方法通常需要修改源代码或二进制文件,这在企业环境下往往是难以使用的。
4.近年来,学者们试图在攻击溯源过程中基于一些非插桩的日志融合方法来进行依赖分析,它们不仅利用进程自身的信息,还利用进程之外的信息来进行依赖建模。它们利用了更多种类的日志,尤其是应用层日志,来完成进程到单元的划分。因为应用日志提供了应用行为的高阶语义,这些语义很难从传统的审计日志中捕捉到,所以这些方法在不使用二进制插桩的情况下也能较好地处理依赖爆炸问题。基于日志融合的依赖分析方法的设计有两个关键点:一是日志融合机制,二是融合多层次日志的能力。举例来说,alchemist提供了一个通用执行模型,并在其中设置了135条规则;uiscope只用一条规则(时间戳匹配)来合并gui层溯源图和审计层溯源图。直观地,通常认为一个理想的基于日志融合的依赖分析框架应该具有下述特点:第一,融合机制需要通用而稳定,从而任何数据源的变动都不会导致规则的大量变化甚至是完全重写;第二,框架需要有能力融合尽可能多的日志层次和是指种类,因为更多的信息会带来更多的语义,从而使分析算法能够分析出更精确的依赖。然而,alchemist不能够覆盖所有的执行模型,它的融合规则并不完备;uiscope则只能融合两个特定层次的数据源,其方法不具备通用性。因此,上述在攻击溯源中使用依赖分析缓解依赖爆炸问题的方式很难达到的预期效果,不能够准确还原出攻击步骤之间的因果关系。


技术实现要素:

5.本发明提供了一种基于日志关联分析的攻击溯源方法及装置,通过使用日志关联分析技术来合并多个数据源的溯源图,并在合并后溯源图的基础上执行基于短路机制的攻击溯源,从而解决了现有技术在攻击溯源中使用依赖分析来缓解依赖爆炸问题的方式很难达到的预期效果,并不能够准确还原出攻击步骤之间的因果关系的问题。具体的技术方案如下:
6.第一方面,本发明实施例提供了一种基于日志关联分析的攻击溯源方法,所述方法包括:
7.收集系统内各个层次的日志,根据所述各个层次的日志之间的关联关系,构建日志连接图,所述日志连接图表现为日志节点和标记节点交替出现,一个日志节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出;
8.利用所述日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图,所述单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,所述溯源元素包括节点和边;
9.在所述融合溯源图中执行攻击溯源算法,并基于短路机制挖掘所述融合溯源图中围绕依赖爆炸节点周围形成的连通路径,所述依赖爆炸节点为输入边和输出边之和大于预设数值的节点;
10.针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
11.可选的,所述根据所述各个层次的日志之间的关联关系,构建日志连接图,包括:
12.以每行日志作为一个日志节点,解析所述各个层次的日志中表达日志节点之间关联关系的特征,形成标记节点集合;
13.针对标记节点集合中的每个标记节点,使用至少被两个日志节点解析出的标记节点形成连接纽带,并根据所述连接纽带将所述至少两个日志节点与标记节点进行连接,绘制出日志连接图。
14.可选的,所述解析所述各个层次的日志中表达日志节点之间关联关系的特征,形成标记节点集合,包括:
15.针对同层次的日志节点,使用频繁分析项来挖掘表征同层日志节点之间关联关系的公共模式,形成标记节点集合;
16.针对跨层次的日志节点,使用预先列举的跨层连接标记来表达日志节点之间关联关系的特征,形成标记节点集合。
17.可选的,所述针对标记节点集合中的每个标记节点,使用至少被两个日志节点解析出的标记节点形成连接纽带,并根据所述连接纽带将所述至少两个日志节点与标记节点进行连接,绘制出日志连接图,包括:
18.针对标记节点集合中的每个标记节点,判断若该标记节点是否被其他日志节点解析出,则将该标记节点作为至少被两个日志节点解析出的标记节点;
19.使用将该标记节点形成连接纽带来表达标记节点与日志节点之间的共享关系,并根据所述共享关系绘制出日志连接图,所述共享关系中标记节点连接与其关联的至少两个
日志节点。
20.可选的,所述利用所述日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图包括:
21.遍历所述日志连接图中所有标记节点,查询所述日志连接图中日志节点之间的关联关系,并根据所述节点之间的关联关系,解析出各个单源溯源图中具有关联关系的溯源元素;
22.将所述各个单源溯源图中具有关联关系的溯源元素进行连接,得到融合溯源图。
23.可选的,所述在所述融合溯源图中执行攻击溯源算法,并基于短路机制挖掘所述融合溯源图中围绕依赖爆炸节点周围形成的连通路径,包括:
24.预先将所述融合溯源图中输入边和输出边之和大于预设数值的节点确定为依赖爆炸节点;
25.在所述融合溯源图中执行攻击溯源算法,当所述攻击溯源算法定位到依赖爆炸节点,基于短路机制围绕所述依赖爆炸节点进行路径的深度优先搜索,挖掘围绕所述依赖爆炸节点周围形成的连通路径。
26.可选的,所述针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链,包括:
27.针对所述攻击溯源算法中搜索路径的每一个步数,设置日志节点之间的时间差、日志节点出现频率以及搜索路径中包含所述连通路径作为路径评估因素;
28.通过加权汇总不同路径评估因素在攻击溯源算法搜索到各个路径上作用的分数,得到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
29.可选的,在所述针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链之后,所述方法还包括:
30.针对预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并从每个日志数据集的攻击链中获取评估攻击的参考标准;
31.使用日志关联分析的攻击溯源算法输出从日志数据集中溯源得到的攻击链;
32.根据所述评估攻击的参考标准,对所述从日志数据集中溯源得到的攻击链进行准确率评估。
33.可选的,所述针对预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并获取评估攻击的参考标准,包括:
34.使用预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并标记所述攻击链中的敏感实体;
35.利用所述敏感实体对应的标识信息从日志数据集中匹配攻击日志,作为评估攻击的参考标准。
36.第二方面,本发明实施例提供了一种基于日志关联分析的攻击溯源装置,所述装置包括:
37.构建单元,用于收集系统内各个层次的日志,根据所述各个层次的日志之间的关联关系,构建日志连接图,所述日志连接图表现为日志节点和标记节点交替出现,一个日志
节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出;
38.连接单元,用于利用所述日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图,所述单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,所述溯源元素包括节点和边;
39.挖掘单元,用于在所述融合溯源图中执行攻击溯源算法,并基于短路机制挖掘所述融合溯源图中围绕依赖爆炸节点周围形成的连通路径,所述依赖爆炸节点为输入边和输出边之和大于预设数值的节点;
40.选取单元,用于针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
41.可选的,所述构建单元包括:
42.解析模块,用于以每行日志作为一个日志节点,解析所述各个层次的日志中表达日志节点之间关联关系的特征,形成标记节点集合;
43.绘制单元,用于针对标记节点集合中的每个标记节点,使用至少被两个日志节点解析出的标记节点形成连接纽带,并根据所述连接纽带将所述至少两个日志节点与标记节点进行连接,绘制出日志连接图。
44.可选的,所述解析模块,具体用于针对同层次的日志节点,使用频繁分析项来挖掘表征同层日志节点之间关联关系的公共模式,形成标记节点集合;
45.所述解析模块,具体还用于针对跨层次的日志节点,使用预先列举的跨层连接标记来表达日志节点之间关联关系的特征,形成标记节点集合。
46.可选的,所述绘制模块,具体用于针对标记节点集合中的每个标记节点,判断若该标记节点是否被其他日志节点解析出,则将该标记节点作为至少被两个日志节点解析出的标记节点;
47.所述绘制模块,具体还用于使用将该标记节点形成连接纽带来表达标记节点与日志节点之间的共享关系,并根据所述共享关系绘制出日志连接图,所述共享关系中标记节点连接与其关联的至少两个日志节点。
48.可选的,所述连接单元包括:
49.查询模块,用于遍历所述日志连接图中所有标记节点,查询所述日志连接图中日志节点之间的关联关系,并根据所述节点之间的关联关系,解析出各个单源溯源图中具有关联关系的溯源元素;
50.连接模块,用于将所述各个单源溯源图中具有关联关系的溯源元素进行连接,得到融合溯源图。
51.可选的,所述挖掘单元包括:
52.确定模块,用于预先将所述融合溯源图中输入边和输出边之和大于预设数值的节点确定为依赖爆炸节点;
53.挖掘模块,用于在所述融合溯源图中执行攻击溯源算法,当所述攻击溯源算法定位到依赖爆炸节点,基于短路机制围绕所述依赖爆炸节点进行路径的深度优先搜索,挖掘围绕所述依赖爆炸节点周围形成的连通路径。
54.可选的,所述选取单元包括:
55.设置模块,用于针对所述攻击溯源算法中搜索路径的每一个步数,设置日志节点之间的时间差、日志节点出现频率以及搜索路径中包含所述连通路径作为路径评估因素;
56.选取模块,用于通过加权汇总不同路径评估因素在攻击溯源算法搜索到各个路径上作用的分数,得到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
57.可选的,所述装置还包括:
58.获取单元,用于针对预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并从每个日志数据集的攻击链中获取评估攻击的参考标准;
59.输出单元,用于使用日志关联分析的攻击溯源算法输出从日志数据集中溯源得到的攻击链;
60.评估单元,用于根据所述评估攻击的参考标准,对所述从日志数据集中溯源得到的攻击链进行准确率评估。
61.可选的,所述获取单元包括:
62.标记模块,用于使用预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并标记所述攻击链中的敏感实体;
63.匹配模块,用于利用所述敏感实体对应的标识信息从日志数据集中匹配攻击日志,作为评估攻击的参考标准。
64.第三方面,本发明实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述的方法。
65.第四方面,本发明实施例提供了一种基于日志关联分析的攻击溯源的设备,包括:
66.一个或多个处理器;
67.存储装置,用于存储一个或多个程序,
68.其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现第一方面所述的方法。
69.由上述内容可知,本发明实施例提供的基于日志关联分析的攻击溯源方法及装置,通过收集系统内各个层次的日志,根据各个层次的日志之间的关联关系,构建日志连接图,能够有效融合不同层次、不同数据源的日志,该日志连接图表现为日志节点和标记节点交替出现,一个日志节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出,然后利用日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图,该单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,溯源元素包括节点和边,进一步在融合溯源图中执行攻击溯源算法,并基于短路机制挖掘融合溯源图中围绕依赖爆炸节点周围形成的连通路径,该连通路径考虑到日志之间的关联关系的同时加强事件之间的因果关系,相比于现有技术在攻击溯源中使用依赖分析缓解依赖爆炸问题的方式,本发明实施例在攻击溯源过程中输出的攻击链能够准确还原出攻击步骤之间的英国关系,从而有效在溯源时绕开依赖爆炸节点,缓解依赖爆炸问题。
70.此外,本实施例还可以实现的技术效果包括:
71.(1)该攻击溯源方式采用了一套通用的基于日志关联分析的溯源流程图合并框架,能够合并每个数据源的单元溯源图,生成一张充满高阶语义的通用溯源图。
72.(2)该攻击溯源方式在融合溯源图上涉及了一种基于短路的攻击溯源算法,能够
有效缓解依赖爆炸问题,并提升了攻击溯源的准确度。
73.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
74.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
75.图1为本发明实施例提供的一种firefox的依赖爆炸示例图;
76.图2为本发明实施例提供的一种基于日志关联分析的攻击溯源方法的流程图;
77.图3为本发明实施例提供的日志连接图的层次结构示意图;
78.图4为本发明实施例提供本发明实施例中溯源图元素的合并机制;
79.图5为本发明实施例提供的攻击溯源方法应用至依赖分析与攻击溯源框架的系统流程示意图;
80.图6为本发明实施例提供的系统的数据集攻击链路和拓扑结构图;
81.图7为本发明实施例提供的短路机制的示例图;
82.图8为本发明实施例提供的apt-microservice数据集在9天中的数据量增长情况;
83.图9为本发明实施例提供的apt-microservice数据集的内存占用统计;
84.图10为本发明实施例提供的pro-navigator产生的日志连接图与hercule产生的日志连接图进行比较的结果;
85.图11为本发明实施例提供的一种基于日志关联分析的攻击溯源装置的组成框图。
具体实施方式
86.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
87.需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
88.本发明提供了一种基于日志关联分析的攻击溯源方法及装置,通过使用日志关联分析技术来合并多个数据源的溯源图,并在合并后溯源图的基础上执行基于短路机制的攻击溯源,从而解决了现有技术在攻击溯源中使用依赖分析来缓解依赖爆炸问题的方式很难达到的预期效果,并不能够准确还原出攻击步骤之间的因果关系的问题。针对依赖爆炸问题对apt场景下攻击溯源带来的跳帧,相关技术的解决方案使用日志融合技术来充分利用多层次的信息以缓解依赖爆炸问题,取得了超过传统的二进制插桩方法和污点分析方法的结果。然而,这些融合机制要么建立在一些复杂的融合规则上,缺乏灵活性,要么建立在过
于简单的规则上,只能处理特殊的场景。在本发明实施例中,提出了基于溯源图融合的方式,使用通用的依赖分析与攻击溯源框架,兼具通用性和灵活性,具体通过使用日志关联分析技术来合并多个数据源的溯源图,生成一张融合溯源图,该方式是一种在融合溯源图级别上通用的合并方法,使得分析人员可以忽略数据源的差异,进一步在融合溯源图上设计一种基于短路机制的攻击溯源算法,能够绕过依赖爆炸节点,缓解依赖爆炸问题。
89.下面对本发明实施例进行详细说明。
90.图1为本发明实施例提供的一种基于日志关联分析的攻击溯源方法的流程示意图。所述方法可以包括如下步骤:
91.s100:收集系统内各个层次的日志,根据所述各个层次的日志之间的关联关系,构建日志连接图。
92.其中,日志连接图表现为日志节点和标记节点交替出现,一个日志节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出。根据这种关联关系,可构造一张日志连接图。
93.应说明的是,相关技术中的日志连接图是被hercule首先提出的,它定义了每行日志之间的关联关系。它将日志视为节点,从日志中解析出属性,并提供了29个用于判断关联关系的等式。如果两行日志满足其中的部分等式,他们将被在日志连接图中被一条无向边直接相连。显然,这种做法的时间复杂度是n的平方,因为每行新日志在到来时都需要检查其与此前所有的日志是否相连。这带来了巨大的时间和空间负载,导致其在apt场景下无法使用。而本技术通过改变相关技术中日志连接图中的格式,以解析到标记集合作为连接纽带构建日志连接图,使得查询复杂度大大减小,这种接近线性的复杂度能够在apt场景下很好的工作。
94.具体在根据各个层次的日志之间的关联关系,构建日志连接图的过程中,可以以每行日志作为一个日志节点,解析各个层次的日志中表达日志节点之间关联关系的特征,形成标记节点集合,进一步针对标记节点集合中的每个标记节点,使用至少被两个日志节点解析出的标记节点形成连接纽带,并根据连接纽带将所述至少两个日志节点与标记节点进行连接,绘制出日志连接图。在实际应用场景中,日志连接图的层析结构可以如图3所示,结合下文中构造日志连接图的算法执行过程具体流程包括:输入的参数lall代表了所有收集到的日志,parselogtags代表了上文中提及的标记解析过程,它会返回一个解析出的标记集合,对于每个标记,判断其是否在哈希表中已经存在,如果不存在,将新建一个标记节点并将其加入哈希表中,如果存在,将直接取出哈希表中的对应节点,最后连接标记节点和日志节点。这里哈希表的查询复杂度是o(1),系统一共支持k类标记(k是一个小常数,即共需要存放k个哈希表),则对每条日志,可逐类判断它是否能够解析出该类标记,若共有n条日志,其时间复杂度是o(kn),这种接近线性的复杂度能够在apt场景下很好的工作。
95.算法1:构造日志连接图
[0096][0097]
在本发明实施例中,依赖分析与攻击溯源得输入通常为不同层次的日志,这些日志的格式不同,存在着“语义鸿沟”。为了表达日志之间的关联关系,需要从日志中解析出一些特征,称其为标记。当两个日志共享了任何一个相同的标记,则认为两者之间存在着某种直接关联,可根据日志-标记之间的关系绘制出日志连接图。考虑到日志节点所处的层次可能相同,也可能不同,这里针对同层次的日志节点,使用频繁分析项来挖掘表征同层日志节点之间关联关系的公共模式,形成标记节点集合,针对跨层次的日志节点,使用预先列举的跨层连接标记来表达日志节点之间关联关系的特征,形成标记节点集合。
[0098]
具体针对同层日志的标记解析,与hercule使用预定义的特征来连接日志的方法不同,本发明实施例中使用频繁项分析来选择用于同层日志关联的标记集。同层日志一般具有相似的格式,例如,网络层日志总是有《ip,port》两列或《url,http_status,method》三列,审计层日志总是有《uid,gid,suid,sgid,fuid,fgid》六列,gui层日志总是有
[0099]
《x_pos,y_pos》两列。当处理同层的多个日志数据源时,可以挖掘其共同的频繁项,找到一些公共的模式,用以连接该层次内的不同日志,这种方式非常灵活,可以自定义任何的层次,例如,某些公司的应用有其统一而独特的日志格式,在不使用预定义规则的情况下完成他们的关联分析。
[0100]
具体针对跨层次日志的标记解析,不同层次的日志往往不能解析出相同的标记类型,它们之间的日志格式差异很大,但有时确实存在着关联关系。举例来说,一行apache日志“172.16.0.1...get/index.html http/1.1”能够解析出值为“172.16.0.1”的ip标记;类似的,audit日志可能也会记录一行ssh远程连接日志并记录下“hostname=172.16.0.1”。显然,这两行日志存在一定的联系,这个ip首先发起了web渗透攻击,随后得知了主机的ssh密码,然后直接通过ssh登录主机。在这个例子中,ip可以作为一个标记关联着两条分别属于服务器层和审计层的日志。下面通过分析大量的日志,总结了65个可能的跨层连接标记,并选择了其中最常用的5个跨层连接标记列举在表1中,与uiscope这种只使用时间戳的方式相比,本发明实施例中所使用的的特征集合能够完成更通用、更复杂的跨层日志关联分析。
[0101]
表1:跨层连接标记列举
[0102]
标记约束条件
timestamp两行日志在同一时刻被记录processes两行日志有相同的进程号或父进程号sname从两行日志中可以提取出相通的字符串(比如文件名)pname两行日志的文件路径相同ipname两行日志的ip地址相同
[0103]
通常情况下,一些方法直接利用日志进行攻击调查,而不解析其中的实体,相较于溯源图中的因果关系,日志连接图通过直接使用关联关系就能够从一条有问题的日志进行攻击回溯,从而找到大量与攻击相关的日志,进而直接用于攻击调查。但是这种直接使用日志连接图完成攻击调查的做法由于溯源粒度较为粗糙,只关注到日志级,而忽略了日志中蕴含的丰富语义和这些语义能解析出的丰富因果关系。故而本发明实施例提供的攻击溯源分析方法仅采用日志连接图作为合并溯源图的规则,而不在日志连接图上直接进行溯源,提高了攻击溯源的准确率。
[0104]
对于后向和前向分析,攻击溯源算法往往在溯源图上运行,包含后向分析和前向分析。后向分析算法可以发现攻击的起源,它从一个征兆事件开始一直回溯,依据事件的时间戳来获得一条因果链路。前向分析算法可以发现一系列被攻击影响到的事件,它往往以后向分析找到的节点为入口。传统的溯源分析算法会依赖爆炸问题,以为apt攻击的运行时间很长且很隐蔽,这带来了大量的系统负载和误报。在对一些典型的应用构建溯源图时,本技术参考了后向分析的思路,在对gui层的溯源图进行构建时制定一些构图策略,使得攻击溯源算法能够更好地应用至各种场景,相应的,如果每个数据源的溯源图构建质量不高,usr算法的效果也会随之下降。而本发明实施例提供的攻击溯源算法可以称为prov-navigator,并应用于日志关联的精确的依赖分析和攻击溯源框架中,在攻击溯源中,这里后向分析算法相当于一个导航仪一样带领分析者在不同的数据源间穿梭,不断寻求捷径以探索更深、更完整的攻击路径。
[0105]
s110:利用所述日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图。
[0106]
其中,单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,溯源元素包括节点和边。这里溯源图是一张代表了系统中主体(进程、线程等)与客体(文件、注册表、网络socket等)之间的因果关系的,以时间为方向的有向无环图。无论两个事件时间间隔有多大,溯源图都能够将两个事件的因果关系表达出来,所以安全专家能够用它来完成攻击调查,从backtracker开始,绝大多数工作使用系统日志来生成溯源图。
[0107]
本发明实施例中的溯源图参考了相关技术中的构造方式,包括beep、protracer、uiscope和backtracking。这些方法使用日志解析来获取实体和边,其中边代表了实体之间的溯源关系,按照上述日志连接图的算法将每个数据源的日志都转换为一张单独的溯源图,由于已经分析了日志之间的关联关系且获得了日志连接图,这里可以将有直接管理难的两行日志所解析出的位于各自溯源图的溯源元素(点或面)直接连接起来,从而完成溯源图合并。
[0108]
可以理解的是,由于溯源图是无向环图,所以在单源溯源图之间引入新的边也是有方向的,边的方向代表溯源元素之间的时间关系,具体参照图4所示,图4中展示了本发明实施例中溯源图元素的合并机制,说明在不同情况下如何确定边的方向,特别在两个溯源
元素都是edge的情况下,sortentities函数被用来保证生成的溯源图是无环的。
[0109]
具体地,可以通过遍历日志连接图中所有标记节点,查询日志连接图中日志节点之间的关联关系,并根据节点之间的关联关系,解析出各个单源溯源图中具有关联关系的溯源元素;将各个单源溯源图中具有关联关系的溯源元素进行连接,得到融合溯源图。具体将单独的溯源图合并成一张融合溯源图过程中,可使用溯源图合并的方式来构造融合溯源图,在获得日志连接图clg之后,只需要将有直接关联的两行日志所解析出的溯源图元素(点或边)连接起来,就可以完成溯源图合并。在合并过程中,仅需要考虑三种情况,即点到点的匹配、点到边的匹配、边到边的匹配。具体参照下文中多个单源溯源图合并算法中所描述的内容:参数clg代表了构造出的日志连接图,ps代表了由每张单独溯源图构成的集合。因为在日志连接图clg中,两行有关联的日志通过标记直接连接,所以,只需要遍历所有标记,使用prographmerge函数处理直接相连的每对日志,就能完成融合溯源图的构建。
[0110]
算法2:多个单源溯源图合并
[0111][0112]
在实践中中,本发明实施例中的攻击溯源算法的准确率需要依赖每个数据源的溯源图构建的质量。如果每个数据源的溯源图在构建时都能保持非常丰富的语义,则usr的查询结果也会变得非常好,也就是说,相应的攻击溯源效果会更好。在构建底层溯源图时,相关技术已经有很多成熟的方式,但对于上层日志进行构图时,目前并没有通用的做法。
[0113]
需要说明的是,本发明实施例中的攻击溯源算法能够很好的处理流式数据,整个
算法的三个步骤都支持流式计算,具体表现在构建日志连接图的构建过程中,每当出现一条新的日志,只需要从中解析出标记,就能同已有的若干日志完成关联,这种解析和处理效率有所提高,能够很好地应对大量数据涌入的情况。随后,在真实场景下采用高支持流式的溯源图生成算法,则合并这些溯源图的过程也完全是流式的,用户可以随时根据报警信息即时地进行攻击链查询,从而获得当前时刻的攻击报告。
[0114]
上述溯源图的合并方式无需基于规则完成,通用且灵活,无论使用哪种日志,只要完成日志关联分析并构造出日志连接图,即可使用本发明实施例中的合并方式将各自的单源溯源图合并为一张融合溯源图。
[0115]
s120:在所述融合溯源图中执行攻击溯源算法,并基于短路机制挖掘所述融合溯源图中围绕依赖爆炸节点周围形成的连通路径。
[0116]
其中,依赖爆炸节点为输入边和输出边之和大于预设数值的节点。由于依赖爆炸问题主要发生在长时间运行的进程上,该进程在其生命周期内与许多其他实体交互,从而产生了大量的依赖关系。在溯源图中进行溯源时,这些进程的所有输入边都依赖于它们的输出边。然而,只有很少一部分依赖是真正与攻击相关的。具体参照图1所示使用firefox场景来描述溯源图中的依赖爆炸问题。所有的套接字实体(超过了300个)都依赖于所有的文件实体(超过了200个),共产生了数以万计的依赖关系,这使得溯源分析难以进行。本发明实施例通过融合各个单源溯源图中的溯源元素,使得融合后溯源图会产生产生一些高层次的溯源路径,进而在后续应用攻击溯源算法过程中,可以通过这些路径成功地绕开依赖爆炸节点,这里将这些路径成为shortcut。在攻击溯源时,每当发现前方是一个依赖爆炸节点,都进行一次深度优先搜索(dfs),这次dfs不通过前方的依赖爆炸节点,如果发现一条shortcut绕开了前方的依赖爆炸节点直达其另一端,就选择这条路径继续溯源。
[0117]
本发明实施例提供的攻击溯源算法,当报警发生时,将其作为征兆事件输入该算法来重构攻击链。具体可以预先将融合溯源图中输入边和输出边之和大于预设数值的节点确定为依赖爆炸节点;在融合溯源图中执行攻击溯源算法,当攻击溯源算法定位到依赖爆炸节点,基于短路机制围绕依赖爆炸节点进行路径的深度优先搜索,挖掘围绕所述依赖爆炸节点周围形成的连通路径。
[0118]
可以理解的是,依赖爆炸节点通常存在于审计层溯源图。当描述相同的行为时,高层溯源图常常有丰富的语义但缺乏连通性,审计层溯源图则正相反,它们往往具备非常强的连通性,但不具备丰富的语义信息。如果只使用底层溯源图进行溯源,溯源算法不可避免地会通过依赖爆炸节点。但在合并溯源图之后,高层溯源图缺乏连通性的问题将被缓解,连通后的融合溯源图中存在许多高层的路径,这些路径的产生为绕过依赖爆炸节点提供了可能。在融合溯源图中,当多源溯源图合并算法遇到一个依赖爆炸节点,它可以进行一次深度优先搜索,如果有一条高层路径绕过了依赖爆炸节点直达其邻居,则称这类路径为短路。基于观察到的结果,在合并后的溯源图中,短路是经常出现的,这是因为对于同一个系统行为,高层数据源和底层数据源往往都要记录。短路的本质是:当底层的溯源发生依赖爆炸时,采纳高层的记录进行更精确的溯源,这些高层的记录不仅更准确,而且语义更丰富,从而能够还原出更好的攻击链。所以,每当找到一条短路,就显著提高了该条路径的权重,使溯源算法更倾向于选择这条短路,这就是短路机制的工作方式。
[0119]
s130:针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述
连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
[0120]
具体地,可以针对攻击溯源算法中搜索路径的每一个步数,设置日志节点之间的时间差、日志节点出现频率以及搜索路径中包含连通路径作为路径评估因素;通过加权汇总不同路径评估因素在攻击溯源算法搜索到各个路径上作用的分数,得到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
[0121]
本发明实施例中的攻击溯源方式改良了传统算法,为基于短路机制的攻击溯源算法,具体算法执行流程如下文所示,step代表了搜索的最大步数,k代表了每个步骤探索的情况数,即每步选择k个评分最高的情况继续搜索。路径的分数由calculatesocre函数计算,它考虑了时间差、频率、短路三个因素。其中,时间和频率是受到其他工作nodoze holmes和morse的影响,他们认为,在apt攻击中,时间跨度越长的事件、越少出现的时间越可能在攻击链上。但与他们不同的是,依赖分析与攻击溯源框架不需要遍历你全图来统计频率,而是直接采用日志连接图中对应的标记连接的日志数来表达频率(因为根据上文的合并策略,hpg中跨数据源的边一定是从一个标记得来的),这是使用日志连接图clg来合并溯源图的一个重要优势。路径评分的细节如公式1所示:对时间差和频率赋以权重,并直接加上短路机制加上的附加分。如前文所述,在遇到依赖爆炸节点时,calculatescore函数会为shortcut路径加上附加分,从而使这些路径更容易被溯源算法主动选择。最后在选择每步的路径时,选择分数最高的k个实体作为下一次搜索的入口节点,直至没有新的实体被发现或达到了设定的步数。最终,输出包含这些被找到的实体和边的子图,即为依赖分析与攻击溯源框架输出的攻击链。
[0122]
算法3:基于短路机制的攻击溯源算法
[0123][0124]
综上所述,本发明实施例中基于日志关联分析的攻击溯源搭建了一套融合精准、通用的依赖分析分析与攻击溯源框架,兼具通用性和灵活性,使用了与其他工作类似的威胁模型。首先,假设日志的完整性,攻击者可以入侵系统,但不能篡改收集的各个层次、各个数据源的日志。事实上,有一些成熟的手段可以保障这一点。其次,假设由日志生成的溯源图和产生溯源图的过程不会受到攻击,换句话说,生成的溯源图也具备完整性。第三,假设在部署依赖分析与攻击溯源框架之前,系统未受到攻击。第四,假设硬件、内核、审计系统时可信计算机的一部分。
[0125]
在实际应用场景中,本发明实施例提供的攻击溯源方法可应用至依赖分析与攻击溯源框架的系统流程图,具体如图5所示,首先收集系统内各层次的日志,包括审计层、应用层、服务层、网络层、gui层、用户层等,随后分析这些日志之间的关联关系,构建日志连接图(clg)。日志连接图将被用作后续的溯源图和并的规则,溯源图合并基于两个基本假设:(1)每个数据源的日志都能产生自己的溯源图。(2)如果两行日志在日志连接图中有直接关联,那么其解析的溯源图元素(实体或边)也有直接的关联。故而当得到了日志连接图,就可以直接合并每个日志产生的溯源图,形成一张融合的溯源图,融合的溯源图会产生一些高层的溯源路径,使得攻击溯源算法可以通过这些路径绕开依赖爆炸节点,进一步提供基于短路机制的攻击溯源算法,当报警发生时,将溯源图中的节点作为征兆事件输入至攻击溯源算法,进而重构出攻击链路。
[0126]
进一步的,为了验证本发明实施例中基于日志关联分析的攻击溯源方式所达到的溯源效果,还可以针对预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并从每个日志数据集的攻击链中获取评估攻击的参考标准;使用日志关联分析的
攻击溯源算法输出从日志数据集中溯源得到的攻击链;根据评估攻击的参考标准,对从日志数据集中溯源得到的攻击链进行准确率评估。
[0127]
作为实验评估过程的预先设定,本发明实施例中使用6次apt攻击来评估prov-navigator的性能。这些实验中使用的操作系统包括ubuntu 18.04和windows 10。所有这些操作系统都运行审计日志记录和其他应用程序级或用户级日志记录模块。审计日志详细级别设置为debug或info。大多数时候,系统以良性活动运行。攻击很少发生在整个实验期间。,用来测试我们的prov-navigator算法的开销和有效性的服务器部署了intel xeon platinum 8255c 2.50ghz cpu和16gb内存,运行在ubuntu 18.04.4上。这6次攻击的基本情况描述如下:
[0128]
(1)apt-1至apt-5
[0129]
为了检验prov-navigator的准确率和召回率,并检验短路机制的有效性。我们设计了五组实验,它们是apt-1至apt-5,它们的详细情况被列在表2中。这些数据集包含了审计层、应用层、用户层的日志,它们是从多个机器上收集到的,每个数据集都包含了完整的、多跳的攻击。这些攻击在设计时参考了darpa tc数据集的攻击方式,和一些诸如att&ck的典型的攻击模型。
[0130]
表2:apt数据集的基本信息
[0131][0132]
(2)apt-microservice
[0133]
apt-microservice数据集是从一个包含13个节点的分布式微服务环境下收集的长达9天数据集,它被用来评估prov-navigator的空间开销(rq3)和评估prov-navigator在apt场景下的执行速度。这个场景的结构和运行模式如下所示。
[0134]
具体场景设计描述如下:这是一个中型金融企业的内部办公网络,该企业的主营业务是智能量化投资。该系统的数据集攻击链路和拓扑结构如图6所示,实现和虚线分别代表了良性行为和攻击路径。该企业的正常业务流程是:员工提交交易策略,经理可以审批和发布员工提交的交易策略,已发布的策略能够自动操作资金池并完成交易。此外员工还可以进行打卡等日常操作。
[0135]
攻击场景的设计描述如下:一名负责维护公司门户网站的员工在使用公司配发的笔记本电脑居家办公时,点击了一个钓鱼链接,这个链接使黑客远程控制了员工的笔记本,并且登录进了公司内网。为了获得一条稳定的入侵路径,黑客在公司门户网站的后端植入了一个后门,从此可以从门户网站的服务器稳定进入公司内网。黑客长时间观察了内网中的行为,通过对员工打卡数据库sql注入窃取了经理的密码,从而能够登录审批节点。黑客
又模仿正常员工的行为提交了恶意的交易策略,并登录审批节点发布了该恶意策略。黑客提交的恶意策略所进行的交易最终给公司带来了巨大的财务损失。
[0136]
进一步的,为了展示重构攻击链的表现情况,具体获取评估攻击的参考标准的过程中,可以使用预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并标记所述攻击链中的敏感实体;并利用敏感实体对应的标识信息从日志数据集中匹配攻击日志,作为评估攻击的参考标准。
[0137]
基于设计的apt-1到apt-5,由于这五组实验都是多机、多跳的复杂实验,所以需要详细描述获得用于评估准确率的参考答案的过程:首先,根据攻击脚本手动重构了每个数据集的攻击链;然后,标记了其中的敏感实体(比如ip,进程号,文件名等);最后,根据这些实体来进行三种类型的匹配。首先是名称匹配,将直接包含这些实体名称的日志划归为标准答案;其次是时间范围匹配,将与名称匹配找到的日志同时发生的日志划归为标准答案,这是因为一个攻击步骤往往会产生大量的同时发生的日志;最后是人工复核,因为前两步可能包含了正常行为,所以会让领域专家标记出这其中的正常事件,将其从答案集合中排除。
[0138]
在上述步骤之后,就得到了用于评估准确率的参考答案,在这五个数据集上运行本发明实施例中的攻击溯源方法,统计攻击溯源所查出的结果中命中答案的个数以计算准确率;同时还关注查询结果覆盖了多少攻击步骤,并以此计算召回率。
[0139]
具体实验结果如下表3所示,说明了本发明实施例所提供的攻击溯源算法在这些数据集上的效果,其中tp代表击中groundtruth的事件数,fp代表被攻击溯源算法误报的正常行为,tp/(tp+fp)代表了准确率。这里在五个数据集上取得了95.3%的平均准确率。在apt-1和apt-4数据集上的准确率相对较低,这是因为当etw被用作审计工具时,会记录非常多的攻击伴生行为,这会带来一定的误报。尽管如此,在这两个数据集上的准确率都超过了90%,且在同样使用etw的apt-2数据集上取得了100%的准确率。与此同时,在这五个数据集上还取得了高达98.4%的平均召回率,在前四个数据集上找出了全部的攻击步骤,在步骤最多的apt-5数据集上,仅仅没找到1个步骤,且这个步骤是一个分支步骤(并非主干步骤),这充分证明了本发明实施例所提供的攻击溯源算法在apt场景下的优良效果。
[0140]
表3:本发明实施例中攻击溯源算法在各个数据集上的表现
[0141][0142]
进一步的,为了说明本发明实施例所提供的攻击溯源算法所采用的溯源图合并手段对依赖爆炸问题的缓解效果,设计了两组对照试验,第一组去掉了shortcut机制,第二组只使用底层日志(去掉了shortcut机制的基础上又去掉了全部的高层日志)。这里不需要做一组去掉高层日志但保留shortcut的实验,这是因为shortcut只在有高层日志的时候才会引入。在只使用底层日志的情况下,准确率降低为84.4%,且召回率大幅度下降至69%,这是因为在底层溯源图中,溯源算法无法通过高层shortcut路径绕开依赖爆炸节点,在通过依赖爆炸节点时,自然会产生大量的误报(从而导致准确率下降),且溯源的方向和深度也会受到影响,以至于不能找出全部的攻击步骤(从而导致召回率下降)。这充分说明:高层日志的融合有助于本发明实施例中攻击溯源算法缓解apt场景下的依赖爆炸问题。
[0143]
应说明的是,本发明实施例并没有复现其他相关技术中的方式。一方面,alchemist没有公开其全部的135条融合规则,从而无法复现;另一方面,uiscpope仅仅是针对ui分析的方法,只合并了gui层和审计层的溯源图,无法处理这里提供的多个其他层次的日志,不具备通用性。
[0144]
综合上述实验可以得到如下结论:本发明实施例提供的攻击溯源算法在五个apt攻击数据集上都取得了很好的效果,取得了95.3%的平均准确率和98.4%的平均召回率,在五个数据集的64个攻击步骤上只有一个没找到,且高层日志越丰富,攻击溯源算法会起到越好的效果。
[0145]
进一步还可以对短路机制进行评估,具体通过在表3中做了一组去掉攻击溯源算法中短路机制的实验,去掉短路机制后,攻击溯源算法的准确率下降至83.4%,召回率下降至89.8%,除了apt-4外,每个数据集上都有1-3个攻击步骤没有找到。这证明了:在融合溯源图上使用带短路机制的溯源算法能够有效绕过依赖爆炸节点,提高溯源的准确率和召回
率。
[0146]
为了更形象地说明短路机制的效果,在图7中给出了一个例子,这是apt-3数据集中的一个真实案例。在这个案例中,攻击者向网站后端发送了一个请求,该请求发起了一个mysql事务,通过sql注入查询mysql中的一张有敏感信息的数据表。底层日志和上层日志都记录了上述行为,但mysql数据库总会产生一些像图中“mysql pid”节点一样的依赖爆炸的进程。如果只使用审计层的溯源图,从attack1节点开始溯源时,在通过该依赖爆炸节点溯源到attack2节点时,必然会将benign3和benign4纳入溯源范围,从而导致误报。而通过本发明实施例中的溯源图合并,将数据库级溯源图和应用级溯源图中相关的部分合并起来,形成了一条shortcut路径。这条路径绕开了底层的依赖爆炸节点,准确地从attack1节点通过高层路径到达了attack2节点,从而避免了误报的发生,并在攻击路径中加入了更丰富的语义信息,这就是shortcut机制的工作方式。
[0147]
进一步还可以对攻击溯源算法的速度进行评估,为了验证攻击溯源算法在apt场景下的海量的数据中能否以较快的速度完成融合溯源图构建,可以在apt-microservice数据集中进行了实验,表5描述了在9天的运行过程中,每天的数据量增长和构建溯源图耗费的时间。实验结果显示:攻击溯源算法只用134秒就从9天共计25gb的原始日志数据中,构建出了包含1037万个实体、9127万条边的庞大溯源图,达到了平均187mb/s的数据处理速度。这说明,本发明实施例提供的攻击溯源算法有能力处理apt场景和分布式集群带来的海量数据,并以超快的处理速度完成融合溯源图的构建。
[0148]
表4:apt-microservice数据集的构图时间统计
[0149][0150][0151]
进一步还可以对本发明实施例中攻击溯源算法的空间负载进行评估,主要包括对磁盘占用开销和内存占用开销进行评估:
[0152]
(1)对于磁盘占用开销,磁盘占用开销定义为溯源图大小(占用的磁盘空间)与原始日志大小(占用的磁盘空间)的比率。为了测量空间开销,在同一系统上处理来自6个实验的日志。结果如表5所示,所显示平均空间开销仅为3.1%。
[0153]
表5:apt-1至apt-5数据集的空间复杂度统计
[0154]
数据集名称空间负载apt-15.2%apt-21.0%apt-31.2%apt-43.5%apt-54.8%apt-microservice3.0%average3.1%
[0155]
对于apt-2,系统引入了1.0%的开销,而apt-1引入了5.2%的开销。这种差异是因为与审计日志相比,应用程序和本发明实施例中攻击溯源算法的日志具有更大的有用语义信息部分,因此需要压缩的无用信息部分更少。apt-1具有更高的空间开销,因为应用程序日志的比例更高。这里还评估了apt微服务中的整个系统开销。在9天的正常工作负载下,此时系统会生成25gb的日志。图8显示了apt-microservice数据集9天内原始日志占用空间的增长情况。进一步将上述结果与具有相同空间开销评估方法的omegalog进行比较。在omegalog中,空间开销比率从1%到8%,相比之下,本发明实施例中攻击溯源算法的性能更好,其结果范围为1%到5%。
[0156]
(2)针对工作负载相对较重的系统评估本发明实施例中攻击溯源算法的内存开销。表明攻击溯源算法表现出低内存开销。图9显示了apt-microservice数据集的内存占用统计,包括构建clg、hhpg和查询攻击杀伤链。随着时间的推移,内存利用率一直在增加,最终的内存占用达到了5.1gb的峰值,相比于这一场景下的数据量大小,这种级别的内存占用是可接受的。
[0157]
这里需要强调的是,本发明实施例的攻击溯源算法能够处理不同日志乱序到达的情况,事实上这在真实环境下是非常常见的。攻击溯源算法的日志连接图构建算法并不要求日志的到来按照某种特定顺序,日志以任意顺序到达,都不会改变最终的构图结果,自然也不会影响后续的溯源图合并和攻击链查询。
[0158]
相关研究可以被分类为日志处理和攻击溯源。日志处理包含了日志审计、日志关联分析和日志解析;攻击溯源包含了数据溯源和溯源分析。在这些工作中,通过选取最相关的一些工作与本发明实施例的工作在表6中进行了对比,对比结果显示如下:
[0159]
表6:各类溯源框架的对比
[0160][0161]
可以理解的是,传统方法充分利用进程自身的信息来确定输入与输出之间的关系,从而解决依赖爆炸问题。最经典的两类解决方案是污点分析和二进制插桩。污点分析方法,比如rain,检测溯源图中的异常并对溯源图进行剪枝。rain使用动态信息流追踪技术进行攻击重放,它使用污点流运算来追踪程序之间的污点传播逻辑。但这类方法都会带来大量的运行时开销和空间开销,在真实生产环境下无法使用。二进制插桩方法,比如beep,mpi,trace,将应用进程切分成更小的单元,并将进程上的依赖转换为单元间的依赖。beep使用事件处理循环来进行执行分区;trace使用ubsi技术实现了一个数据结构识别。尽管二进制插桩技术显著缓解了依赖爆炸并提高了溯源准确率,但由于开发者无法保证自己对二进制代码的修改不会对系统的稳定性和安全性造成影响,导致其在生产环境中难以被使用。
[0162]
近年来,越来越多的研究人员试图在传统溯源图中引入高层语义信息,生成一张包含丰富上下文信息的融合溯源图。融合溯源图在攻击调查中利用了更多源的信息,也提供了更多的细节。omegalog和alchemist采用日志融合的方式产生将多种日志中的信息融合到一起,产生一份融合日志,随后直接将这份融合日志转换成融合溯源图。omegalog将audit日志作为总线,将其他日志的信息嵌接到总线上。它使用控制流图来加强日志融合的效果,但是它的方法不能处理多线程和后台进程的情况。alchemist从不同的日志中抽取公共字段,在这些字段上建立了135条融合规则,并利用规则推理引擎来辅助完成日志融合。alchemist只将日志划分为高层和低层,这导致当需要引入更细致的层次时,比如gui层,数据库层,它的规则就需要大量增加,甚至是完全重写。所以,alchemist的融合规则无法应对层次扩展的情况。uiscope提供了一个新的生成融合溯源图的视角。它声称可以通过融合gui层溯源图和审计层溯源图的方式来解决依赖爆炸问题,因为融合后的溯源图可以将一个长时间运行的进程绑定至多个gui事件,从而可以对该进程进行细粒度的unit划分。uiscope主要使用时间戳来进行gui层溯源图和审计层溯源图的连接,这在一些特定的情况下取得了不错的效果。然而,uiscope不能被用作一种通用的溯源图合并方案,因为有很多
应用是在无gui的情况下运行的。
[0163]
而本技术使用日志关联技术来挖掘和分析不同日志之间的关联关系,用来完成异常检测任务。为了进一步阐述pro-navigator产生的日志连接图与hercule产生的日志连接图进行比较的结果,具体如图10所示,基于hercule提出的日志连接图概念,该日志连接图首先分析了多种日志,比如dns日志、http日志、审计日志等,进而使用专家书写的规则来提取日志中的字段,比如ip address,然后基于这些字段给出了29个等式来判断两个日志之间是否存在关联关系,并将日志作为节点,将有关联的日志连接在一起,以此构成日志连接图。在此之后,hercule利用了社交网络发现分析和社区检测技术来进行分析,并使用一些机器学习相关的方法来优化权重,采用了一种复杂度为n平方的构图方式,这使其难以在apt场景下工作。除此之外,hercule直接在日志关联图clg上进行溯源分析,这种做法只考虑了日志之间的关联关系而忽视了事件之间的因果。与那些基于溯源图的方法相比,这种方法获得攻击链不能够准确的还原出攻击步骤之间的因果关系。而本技术提出的攻击溯源方法,首先利用所有层次和类型的日志来构建一张日志关联图。然后,使用日志关联图来合并由单个数据源的日志生成的单源溯源图。最后,攻击溯源算法使用一个新颖的查询方法,充分利用溯源图融合所产生的高层短路,从征兆事件出发重构攻击链,完成攻击调查。最终评估实验显示:攻击溯源算法能够有效地查出与攻击相关的子图,取得了很高的召回率与准确率,且具有很强的可用性和稳定性,无需使用任何插桩技术,即可在apt场景下以极低的开销取得良好的工作效果。
[0164]
本发明实施例提供的基于日志关联分析的攻击溯源方法,通过收集系统内各个层次的日志,根据各个层次的日志之间的关联关系,构建日志连接图,能够有效融合不同层次、不同数据源的日志,该日志连接图表现为日志节点和标记节点交替出现,一个日志节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出,然后利用日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图,该单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,溯源元素包括节点和边,进一步在融合溯源图中执行攻击溯源算法,并基于短路机制挖掘融合溯源图中围绕依赖爆炸节点周围形成的连通路径,该连通路径考虑到日志之间的关联关系的同时加强事件之间的因果关系,相比于现有技术在攻击溯源中使用依赖分析缓解依赖爆炸问题的方式,本发明实施例在攻击溯源过程中输出的攻击链能够准确还原出攻击步骤之间的英国关系,从而有效在溯源时绕开依赖爆炸节点,缓解依赖爆炸问题。
[0165]
基于上述实施例,本发明的另一实施例提供了一种基于日志关联分析的攻击溯源装置,如图11所示,所述装置包括:
[0166]
构建单元20,可以用于收集系统内各个层次的日志,根据所述各个层次的日志之间的关联关系,构建日志连接图,所述日志连接图表现为日志节点和标记节点交替出现,一个日志节点解析出至少一个标记节点,一个标记节点至少被一个日志节点解析出;
[0167]
连接单元22,可以用于利用所述日志连接图中的标记节点将各个单源溯源图中的溯源元素进行连接,得到融合溯源图,所述单源溯源图为使用日志解析算法对每个数据源的日志文件转换得到,所述溯源元素包括节点和边;
[0168]
挖掘单元24,可以用于在所述融合溯源图中执行攻击溯源算法,并基于短路机制挖掘所述融合溯源图中围绕依赖爆炸节点周围形成的连通路径,所述依赖爆炸节点为输入
边和输出边之和大于预设数值的节点;
[0169]
选取单元26,可以用于针对所述攻击溯源算法中搜索路径的每一个步数,使用搜索路径包含所述连通路径作为路径评估因素之一,计算所述攻击溯源算法搜索到各个路径的评估分数,选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
[0170]
在具体应用场景中,所述构建单元20包括:
[0171]
解析模块,可以用于以每行日志作为一个日志节点,解析所述各个层次的日志中表达日志节点之间关联关系的特征,形成标记节点集合;
[0172]
绘制单元,可以用于针对标记节点集合中的每个标记节点,使用至少被两个日志节点解析出的标记节点形成连接纽带,并根据所述连接纽带将所述至少两个日志节点与标记节点进行连接,绘制出日志连接图。
[0173]
在具体应用场景中,所述解析模块,具体可以用于针对同层次的日志节点,使用频繁分析项来挖掘表征同层日志节点之间关联关系的公共模式,形成标记节点集合;
[0174]
所述解析模块,具体还可以用于针对跨层次的日志节点,使用预先列举的跨层连接标记来表达日志节点之间关联关系的特征,形成标记节点集合。
[0175]
在具体应用场景中,所述绘制模块,具体可以用于针对标记节点集合中的每个标记节点,判断若该标记节点是否被其他日志节点解析出,则将该标记节点作为至少被两个日志节点解析出的标记节点;
[0176]
所述绘制模块,具体还可以用于使用将该标记节点形成连接纽带来表达标记节点与日志节点之间的共享关系,并根据所述共享关系绘制出日志连接图,所述共享关系中标记节点连接与其关联的至少两个日志节点。
[0177]
在具体应用场景中,所述连接单元22包括:
[0178]
查询模块,可以用于遍历所述日志连接图中所有标记节点,查询所述日志连接图中日志节点之间的关联关系,并根据所述节点之间的关联关系,解析出各个单源溯源图中具有关联关系的溯源元素;
[0179]
连接模块,可以用于将所述各个单源溯源图中具有关联关系的溯源元素进行连接,得到融合溯源图。
[0180]
在具体应用场景中,所述挖掘单元24包括:
[0181]
确定模块,可以用于预先将所述融合溯源图中输入边和输出边之和大于预设数值的节点确定为依赖爆炸节点;
[0182]
挖掘模块,可以用于在所述融合溯源图中执行攻击溯源算法,当所述攻击溯源算法定位到依赖爆炸节点,基于短路机制围绕所述依赖爆炸节点进行路径的深度优先搜索,挖掘围绕所述依赖爆炸节点周围形成的连通路径。
[0183]
在具体应用场景中,所述选取单元26包括:
[0184]
设置模块,可以用于针对所述攻击溯源算法中搜索路径的每一个步数,设置日志节点之间的时间差、日志节点出现频率以及搜索路径中包含所述连通路径作为路径评估因素;
[0185]
选取模块,可以用于通过加权汇总不同路径评估因素在攻击溯源算法搜索到各个路径上作用的分数,得到各个路径的评估分数,并选取评估分数最高的路径作为攻击溯源算法输出的攻击链。
[0186]
在具体应用场景中,所述装置还包括:
[0187]
获取单元,用于针对预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并从每个日志数据集的攻击链中获取评估攻击的参考标准;
[0188]
输出单元,用于使用日志关联分析的攻击溯源算法输出从日志数据集中溯源得到的攻击链;
[0189]
评估单元,用于根据所述评估攻击的参考标准,对所述从日志数据集中溯源得到的攻击链进行准确率评估。
[0190]
在具体应用场景中,所述获取单元包括:
[0191]
标记模块,用于使用预先设置包含有不同攻击场景的日志数据集重构每个日志数据集的攻击链,并标记所述攻击链中的敏感实体;
[0192]
匹配模块,用于利用所述敏感实体对应的标识信息从日志数据集中匹配攻击日志,作为评估攻击的参考标准。
[0193]
基于上述方法实施例,本发明的另一实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现上述方法。
[0194]
基于上述实施例,本发明的另一实施例提供了一种基于日志关联分析的攻击溯源,包括:
[0195]
一个或多个处理器;
[0196]
存储装置,用于存储一个或多个程序,
[0197]
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的方法。
[0198]
上述装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0199]
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0200]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1