基于系统调用自动机的攻击溯源方法及装置与流程

文档序号:31331389发布日期:2022-08-31 07:10阅读:180来源:国知局
基于系统调用自动机的攻击溯源方法及装置与流程

1.本发明涉及网络安全技术领域,具体而言,涉及一种基于系统调用自动机的攻击溯源方法及装置。


背景技术:

2.随着计算机技术和通信技术的除旧革新,网络已经与人们的日常生活息息相关。网络基础设施的全面覆盖和新兴网络应用的不断革新,使得互联网用户规模呈现持续扩大的态势。庞大的网络不可避免地会引起黑客的关注,引发网络攻击。高级持续性威胁(apt)最近已成为企业和机构面临的最关键的网络空间威胁之一。apt攻击是一种隐蔽且长时间运行的计算机网络入侵,通常具有一定的目的性。
3.上述apt攻击溯源方法大多利用审计日志构建溯源图,借助其强大的语义表达能力和攻击历史关联能力进行攻击建模,从而构建完整的攻击路径并分析攻击影响。然而,在服务器长时间运行并产生大量日志的背景下,基于溯源图的攻击溯源方法将攻击事件归因于进程级别,而这一粗粒度的假设在分析攻击路径时会导致依赖爆炸现象。
4.由于难以在大量的事件关联中快速构建完整的攻击路径,使得攻击溯源算法在实际安全场景中的可用性大幅降低。为了解决依赖爆炸的问题,相关技术提出了执行单元的概念,它可以将系统对象间的依赖限制在执行单元级别,具体在实行过程中攻击溯源方法通过引入反映应用程序结构的高级语义信息,可以将进程划分为执行单元。然而,高级语义信息的获得形式一般为程序插桩和收集应用程序日志,基于程序插桩的方式需要对程序的执行文件进行修改,而可执行文件的修改权限在真实的生产环境中不被允许,且程序插桩在生产环境中会带来很大的时间和空间上的开销,因而缺乏通用性。利用应用程序日志的方式也需要应用程序提供格式规范的日志功能,且运行时产生的额外时间和空间开销对系统性能提出了更高的要求。


技术实现要素:

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.(1)通过将程序控制流图处理为便于程序计算的图结构,提取了系统调用和控制流,为后续构建应用程序系统调用的自动机提供了支持。
69.(2)划分执行单元后的日志消除了长时间运行进程的无关依赖,将依赖限制在执行单元范畴,从而缓解了依赖爆炸问题。
70.(3)攻击溯源算法能够在审计日志中识别出攻击事件的起因和完整的攻击过程,并分析其对系统造成的后果,为安全人员分析攻击场景提供了帮助,解决了大量审计日志导致攻击分析产生的依赖爆炸问题。
71.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
72.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
73.图1为本发明实施例提供的一种基于系统调用自动机的攻击溯源方法的流程图;
74.图2为本发明实施例提供的系统调用有向图的数据结构示意图;
75.图3a为本发明实施例提供的消除有向图中空节点的示意图;
76.图3b为本发明实施例提供的消除有向图中不可达节点的示意图;
77.图3c为本发明实施例提供的调整出入口节点的示意图;
78.图3d为本发明实施例提供的合并有向图中等效节点的示意图;
79.图4为本发明实施例提供的划分执行单元的流程示意图;
80.图5为本发明实施例提供的划分执行单元后的系统级溯源图;
81.图6a为本发明实施例提供的溯源图上进行后向分析的流程示意图;
82.图6b为本发明实施例提供的溯源图上进行前向分析的流程示意图;
83.图7为本发明实施例提供的攻击溯源流程的框架示意图;
84.图8为本发明实施例提供的一种基于系统调用自动机的攻击溯源方法装置的组成框图。
具体实施方式
85.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
86.需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
87.本发明提供了一种基于系统调用自动机的攻击溯源方法及装置,通过构建反映程序结构的系统调用的自动机,为后续执行单元划分的过程提供应用程序的高级语义信息,从而解决基于程序插桩和收集应用程序日志得到的高级语义信息来划分的执行单元的方
式很难应用到缓解依赖爆炸的实际生产环境的问题。在攻击溯源的过程中,对于长时间运行的进程,一般需要引入相应的应用程序结构作为额外语义信息,辅助执行单元划分的过程。现有的算法一般采用应用程序插桩和应用程序日志的形式引入表征程序结构的额外语义信息。然而程序插桩的方法对于可执行文件的修改性提出了要求,利用应用程序的方法也需要应用程序提供格式规范的日志功能,且运行时产生的额外时间和空间开销也对系统性能提出了更为严格的要求。
88.下面对本发明实施例进行详细说明。
89.图1为本发明实施例提供的一种基于系统调用自动机的攻击溯源方法的流程示意图。所述方法可以包括如下步骤:
90.s100:通过对应用程序的二进制文件进行静态分析,生成应用程序函数的控制流图,根据所述控制流图构造系统调用的有向图。
91.其中,系统调用的有向图中记录有应用程序函数之间的调用关系,在二进制的汇编形式中,每个函数都有对应的控制流图,表征了函数的结构信息,显示了该函数内部可能的代码执行路径。这里控制流图由基本代码块和连接基本代码块的有向边组成,每个基本代码块包含若干条顺序执行的汇编指令,每条有向边表示执行流从源代码块到目的代码块的转移。当第一个代码块执行完毕后,控制流图会根据参数的不同,选择执行第二个或者第三个代码块,并在执行完成后返回。基本代码块中会包含call指令,以及完成函数执行后的retn指令。
92.可以理解的是,在静态二进制分析阶段,算法会在应用程序的二进制文件执行之前,对二进制文件进行反汇编处理。对于应用程序的每个函数,都生成汇编形式的控制流图。这里控制流图中所包含的信息较为冗余,除了存在系统调用信息之外,还存在其他的汇编指令,而这些汇编指令在后续的分析中是不产生作用的。为了进一步获得系统调用信息,需要对控制流图的描述文件进行文本提取,从而获得系统调用信息。同时还需要设计合适的数据结构对系统调用的执行流进行表征,即系统调用的有向图,并使用系统调用的有向图来存储系统调用的可能执行路径。具体地,可以利用静态反编译软件提出的导出控制流图功能对应用程序的二进制文件进行静态分析,生成描述应用程序函数调用的控制流图,进一步针对每个应用程序函数,通过从描述相应应用程序函数调用的控制流图中提取节点信息和有向边信息,保留节点中的预设指令,构造系统调用的有向图。
93.在实际应用场景中,获得应用程序函数的控制流图描述文件的过程可依赖于反编译软件ida pro提供的ida python插件,ida pro支持几何描述语言(geometric description language,gdl)文件格式导出函数的流程控制图。在生成应用程序函数的控制流图过程中,具体可以根据应用程序名,获得所有函数的名称和地址列表,对于每个子函数,利用ida pro提供的导出控制流图功能,生成当前函数的gdl文件,该gdl文件由三部分组成,分别是控制流图的布局信息、节点信息和有向边信息,根据节点信息和有向边信息,可以构造系统调用有向图。在根据控制流图构造系统调用的有向图过程中,具体可以对gdl文件进行文本分割处理,得到节点信息集合和有向边信息集合,由于文件对节点信息和有向边信息的描述存在冗余信息,需要进一步的格式化提取,对节点信息集合中的每一个节点信息,分别提取其中的名称和标签属性,分别代表基本代码块的名称和代码块所包含的汇编指令。
94.在汇编指令中,call指令的对象为用户函数或库函数,如果指令对象为库函数且该对象属于映射字典的键集,则提取该对象所对应的系统调用,同时为保留控制流信息,对call指令所调用的非空函数和retn指令也进行提取,其中非空函数是指对应的系统调用有向图不为空的用户函数。具体而言,对于标签属性,进一步提取其中被call指令所调用的非空函数或系统调用和retn指令,接着将表征当前代码块名称和精简汇编指令(名称,新标签)的构成对加入控制流图的节点信息集合。类似的,对有向边信息集合中的每一个有向边信息,分别进一步提取其中的数据源和目标属性,分别代表有向边的源节点和目的节点,并将(源节点,目的节点)的构成对加入控制流图有向边集合。此时得到了描述系统调用有向图的数据结构,通过系统调用有向图中的节点集合和有向边集合可以获取各个函数控制流图的系统调用有向图。
95.示例性的,图2展示了一个系统调用有向图的数据结构,在有向图中共有9个节点和11条边,其中,2号、4号和5号节点中分别存在系统调用,2号节点中存在3次写系统调用,而4号和5号节点分别存在一次写系统调用。
96.进一步需要说明的是,系统调用有向图是表征应用系统结构信息的重要数据结构,展示了应用程序的系统调用控制流。然而,直接从控制流图中提取系统调用的有向图中存在一些空节点、不可达节点和等效节点,空节点的产生原因在于程序块可能不包含调用信息,但在构建图的过程中依然保留了该程序块的对应节点。而不可达节点则是指仅存在出边但不存在入边的程序块的对应节点。空节点和不可达节点的存在对于系统调用的控制流图并不影响,但却扩大了系统调用的有向图规模,使得有向图的结构变得复杂。为了实现更快速的执行单元划分,可通过消除与合并的方式处理这些节点,以进一步精简系统调用的有向图的规模。具体地,可以在构造系统调用的有向图之后,利用系统调用的有向图中记录的边和节点信息,分别获取系统调用的有向图中的空节点、不可达节点以及等效节点,然后通过对系统调用的有向图中的空节点和不可达节点进行消除处理,对等效节点进行合并处理,以对系统调用有向图进行图结构优化。
97.进一步的,为了统一有向图中的出入口节点,可以在构造系统调用的有向图之后,利用构造的前置节点调整系统调用的有向图中的入口节点,若入口节不为空,则添加源节点为前置节点目的节点为入口节点的边,若入口节点为空,则对与入口节点相连的边进行替换,以统一将前置节点作为系统调用的有向图的入口节点;利用构造的后置节点调整系统调用的有向图中的出口节点,对系统调用的有向图中所有出度为零的节点,添加该节点指向后置节点的边。
98.在系统调用的有向图中,由于一些节点对应的代码块不包含call指令,或是不包含属于映射字典键集中的库函数,成为了有向图中的空节点,该节点的标签为空,空节点的存在既占用了存储资源,也为后续构造自动机的过程增添了时间开销,因此通过消除有向图中的空节点,可以简化有向图的结构。示例性的,图3a示出了消除空节点的过程,系统调用的有向图原有9个节点,在消除空节点后,保留了作为函数入口的0号节点、产生调用的2号、4号以及5号节点,以及产生retn指令的7号节点。同时,被保留的节点之间的有向边也在维持控制流图不变的前提下进行了调整。
99.在系统调用的有向图中,还存在有这样的节点,该节点并非函数的入口节点,并且仅作为有向边的源节点,但没有指向该节点的有向边。这样的节点在实际的控制流图中是
不可达的,因此通过消除有向图中的不可达节点,可以简化有向图的结构。示例性的,图3b示出了消除不可达节点的过程,系统调用的有向图原有8个节点,4号节点是入度为0的非入口节点,即不可达节点,因此消除4号至5号和6号节点的有向边,并消除孤立的4号和5号节点,完成消除不可达节点的优化。
100.需要对上述实施例中图3a和图3b进一步需要说明的是,在消除空节点和不可达节点的过程中,考虑到有向图中编号为0的节点作为函数入口的特殊性,始终保持了该节点不变。为了统一有向图的入口节点,需要额外对有向图中的编号为0的节点进行调整。类似的,还需要对有向图统一添加出口节点。具体在调整有向图的入口节点的过程中,首先构造前置节点,令其编号为-1。当有向图的入口节点0不为空时,调整源节点为前置节点-1,目的节点为节点0的有向边,当节点0为空时,为了统一将前置节点作为有向图的入口节点,对与节点0相连接的边进行以下替换:构建节点0的入边的源节点集合,将对应的入边替换为源节点集合中节点指向前置节点-1的有向边,构建节点0的出边的目的节点集合,将对应的出边替换为目的节点集合中节点指向前置节点-1的有向边。在调整有向图的出口节点的过程中,构造编号为-2的后置节点。对于有向图中所有出度为0的节点,均添加该节点指向后置节点-2的有向边。示例性的,图3c示出了调整有向图中出入口节点的过程,优化后系统调用的有向图中有5个节点,0号节点是入口节点,该节点为空节点,可直接使用前置节点-1替换节点0,7号节点是出口节点,出度为0,添加节点7指向后置节点-2的有向边,完成有向图中出入口节点的调整。
101.在系统调用的有向图中,还存在有这样的情况,存在两个节点,它们的节点内容、入边的源节点和出边的目的节点完全一样,即这两个节点是有向图中的等效节点,可通过合并有效节点的方式来简化有向图的结构。示例性的,图3d示出了合并等效节点的过程,系统调用的有向图有7个节点,4号节点和5号节点含有相同的写系统调用,且两者的入边的源节点均为节点-1,出边的目的节点均为节点3,可以判定节点4和节点5为等效节点,通过消除节点4或者节点5的相连边,并移除节点4或者节点5,完成等效节点的合并。
102.s110:针对所述系统调用的有向图中节点集和有向边集采用不确定的有穷自动机作为应用程序系统调用的状态转移表示,构建应用程序系统调用自动机。
103.可以理解的是,为了能更好地执行划分单元,需要构建系统调用的自动机。这里可以使用优化后的系统调用的有向图来构建应用程序系统调用自动机,优化后的系统调用的有向图有效精简了图的规模,提高后续执行单元的划分效果。具体可以针对系统调用的有向图中节点集和有向边集,构建函数调用自动机,并以函数调用自动机作为基础,通过对应用程序入口函数进行深度优先搜索,构建应用程序系统调用自动机。
104.具体构建函数调用的自动机过程中,可以构造空的不确定的有穷自动机,将编号为初始数值的节点作为有穷状态集合的初始状态,将编号为终止数值的节点加入有穷状态集合的终止状态集合,进一步针对节点集中的每个节点,将其编号加入至有穷状态集合,并将其节点内容不重复的加入输入符号集合,针对有向边集中的每个有向边,将其规则添加至转换函数,构建函数调用自动机,这里规则表示有向边的源节点状态在接收到目的节点内容作为输入符号的情况下会转移至目的节点状态。在实际应用场景中,首先构造空的不确定的有穷自动机nfa,然后将编号为-1的节点作为初始状态s0,将编号为-2的节点加入终止状态集合f0,对于有向图节点中的每个节点,将其变化加入有穷状态机集合s,并将其节
点内容不重复的加入符号集合∑,对于有向边集合中的每条有向边e,都有φ(e.source,e.target.label),并将添加至转换函数f,φ是转换函数中的一条规则,表示e的源节点状态在接受e的目的节点内容作为输入符号的情况下会转移至e的目的节点状态。
105.在构建函数系统调用自动机之后,可以进一步构建完整的应用程序系统调用自动机,需要枚举应用程序在整个生命周期中可能出现的有效执行路径。然而提取所有执行路径并不是一个直接对各个函数进行优先搜索的过程,还需要额外考虑以下三种情况:
106.(1)同一个函数可能被不同的调用者所调用,因而不得不被多次遍历。
107.(2)调用函数的call指令应当和对应的返回指令retn相匹配。
108.(3)应用程序会使用循环和递归函数,这些函数也需要被多次遍历。
109.对于情况(1)可以采用缓存函数自动机的方法进行处理。对于情况(2)可以借助函数自动机的初始状态和终止状态集合进行处理。对于(3)可以对循环和递归函数采取不动点迭代的方法解决,即持续遍历此类函数直至不再有新的执行路径加入遍历过程,此时可以认为循环或递归过程结束。
110.具体构建应用程序系统调用自动机的过程中,可以枚举应用程序在整个生命周期中的有效执行路径,以应用程序的入口函数为起点对所述有效执行路径进行深度优先搜索,通过节点中的预设指令串联函数调用自动机中各子函数的状态机,当遍历至预设子函数时,在不离开预设子函数地址空间的前提下对预设子函数进行局部深度优先搜索遍历,在完成局部深度优先搜索遍历后,将当前函数的自动机缓存至内存中局部深度优先搜索遍历通过节点中的预设指令展开对子函数的自动机调用。在实际应用场景中,为了构建应用程序的系统调用自动机,应当以应用程序的的入口函数为起点,对可能的执行路径进行深度优先搜索,并通过call指令和retn指令串联各子函数的状态机,当遍历至子函数fun时,由于已确定其初始状态和终止状态集合,可以在不离开函数fun地址空间的前提下对其进行局部深度优先搜索遍历,局部深度优先搜索遍历依然通过call指令和retn指令展开对下层函数的自动机调用,在完成局部遍历后,为了加速遍历过程,将当前函数的自动机缓存于内存中,尤其对情况(1)和情况(3)而言,节省了再次加载当前函数自动机的开销。
111.s120:使用所述应用程序系统调用自动机对预先生成的标准格式日志进行执行单元的划分,并根据划分得到执行单元的日志构造表示系统事件之间因果关系的系统级溯源图。
112.其中,标准格式日志为对审计模块提供的日志进行字段提取得到,这里标准格式日志条目中包括的系统调用字段,并与应用程序系统调用自动机中的系统调用进行状态转移匹配,划分执行单元。为了构建标准格式日志,需要进一步对不同类型值的日志条目进行分析,提取部分字段的值,构成新的日志序列。具体提取系统调用序列的过程中,对审计日志进行遍历,对于一组日志中不同类型的日志条目,分别按照类型提取不同的关键字段,生成一条新的标准格式的日志条目。
113.可以理解的是,这里新的日志条目在保留审计日志有效信息的前提下,对审计日志的字段进行了精简,构建了标准日志格式。标准日志格式一方面缩减了日志的规模,另一方面也提供了后续日志划分和攻击溯源所需的信息。
114.具体地,可以将预先生成的标准日志中的系统调用与应用程序系统调用自动机进行状态转移匹配,并在匹配的过程中调用连续匹配方式对多个状态转移匹配项的情况进行
处理,调用前向看匹配和后向看匹配的方式对没有状态转移匹配项的情况进行处理,以识别同属于一个执行单元的日志,划分得到执行单元,进一步根据划分得到执行单元的日志向溯源图中添加事件,并在添加事件时区分单元级事件和系统级事件,构造表示系统事件之间因果关系的系统级溯源图,其中,溯源图中数据流出者作为事件的主体,数据流入者作为事件的客体,事件作为主体指向客体的有向边。
115.示例性的,图4示出了划分执行单元的流程,在标准日志的系统调用序列与应用程序的系统调用自动机匹配过程中,对序列中的候选系统调用元素,需要在自动机中找到对应的系统调用状态,完成当前系统调用状态转移匹配后,将序列中的下一个系统调用作为候选系统调用元素,与自动机中当前状态的邻居状态进行匹配。若候选系统调用元素与某个邻居状态中的系统调用符合唯一匹配条件,则对当前标准日志记录所述的单元进行标记,并继续如此直至完成匹配过程,若未完成唯一匹配,则可能出现多重匹配或无匹配的情况,则通过连续匹配、向前看匹配和向后看匹配进行处理。若系统调用序列的元素未能与自动机中的系统调用状态完成唯一匹配,则可能的情况之一是:当前元素与自动机中的多个状态能够匹配,即发生多重匹配问题。对于这一情况可以使用连续匹配的方法解决,通过读入多条连续日志作为待匹配项,相应地在自动机中寻找多个连续状态进行匹配,即通过连续的模式进行特定化的路径选择。应说明的是,这一过程中连续日志的数量不应过多,否则会导致待搜索路径数量快速地增长,因此需要设置连续匹配的阈值。对于系统调用序列的元素未能与自动机中的系统调用状态完成唯一匹配的另一种情况可定能是:由于构建应用程序系统调用自动机时可能遗漏执行路径,导致当前元素无法在自动机中找到匹配状态,对于这一情况,可通过向前看匹配进行处理。具体而言,如果当前系统调用元素在自动机中没有匹配状态,则令当前状态再进入下一状态,尝试让当前元素与下一状态进行匹配。若在下一状态完成唯一匹配,则向前看匹配过程结束;若在下一状态发生多重匹配,则转向冲突解决匹配,若仍未找到匹配状态,则继续向前看匹配过程。需要说明的是,向前看匹配的过程也不能无限制进行,这里可以设置向前看的次数阈值,当向前看的次数达到次数阈值时结束向前看匹配过程。
116.可以理解的是,向前看匹配过程失败是因为当前系统调用已经属于新的执行单元,从而无法在上一个执行单元中完成状态转移匹配。这里引入向后看匹配将待匹配的状态转移至执行单元的入口进行匹配。同样,对于向后看匹配也可以设置阈值次数,当达到阈值次数仍然匹配失败,则将系统调用所属的目标条目单独划分为一个执行单元,成为孤立执行单元。下一日志条目的匹配依然从执行单元入口开始,最后可以合并连续的孤立执行单元。
117.本发明实施例利用标准日志格式与应用程序调用系统自动机进行状态转移匹配,并通过连续匹配、向前看匹配和向后看匹配解决匹配过程中的多重匹配和无匹配问题,将标准格式日志划分为若干执行单元,划分执行单元后的日志消除了长时间运行进程的无关依赖,将依赖限制在执行单元范畴,从而缓解了依赖爆炸问题,划分后的执行单元也将用于后续攻击分析阶段的溯源图构建。
118.在完成执行单元的划分后,可以根据溯源图的定义,构造表示系统事件之前因果关系的系统级溯源图,具体可以根据溯源图的定义,对于进程、线程、文件和套接字等系统实体,数据流出者作为事件的主体,数据流入者作为事件的客体。然而对于划分执行单元之
后的溯源图,一个长时间运行的进程在不同执行单元之间将被视为不同的实体。因此,向溯源图添加事件时,需要区分单元级和系统级事件,对于单元级事件的主体应该用进程标识和单元标识的组合进行展示。
119.其中,溯源图的边指向则代表了数据流向,如果一个执行单元或系统的实体u收到了来自其他系统实体v的输入,例如,u读取v的数据,则在溯源图中添加一条从v指向u的有向边。类似地,如果执行单元或系统的实体u向其他系统实体v进行了数据输出,例如,u向v写入或更新数据,则在溯源图中添加一条从u指向v的有向边。此外,事件的时间将被标注为边的信息,从而确定事件之间的时序信息。这样,数据输出事件中的实体就仅依赖于同执行单元中的输入事件实体,而不再依赖于整个进程实体生命周期中的所有前置输入事件。
120.示例性的,图5示出了划分执行单元后的系统级溯源图,图中浏览器作为长时间运行的应用程序,在生命周期中与大量套接字和文件产生了关联,因此每个文件都依赖于所有在它之前被访问的套接字。但实际浏览器可能只从单个套接字下载了一个文件,即该文件仅依赖于一个特定的套接字,在划分执行单元后的溯源图中,浏览器被划分为若干执行单元,其生命周期中相关联的套接字和文件也相应地属于不同的执行单元,每个文件仅依赖于其所属执行单元中的套接字,通过划分执行单元,浏览器所造成的的依赖爆炸问题可以得到缓解。
121.s130:以所述系统级溯源图为基础对症状事件执行攻击分析,并在所述系统溯源图中汇总依赖所述症状事件的节点分别形成攻击路径和攻击影响。
122.本发明实施例中,利用溯源图对于系统对象和事件的抽象表达能力和历史关联能力展开对攻击的分析。当终端检测响应等安全设备检测到攻击事件并发出警告时,将被告警的事件定义为症状事件。
123.在完成系统级溯源图的构建之后,可以针对症状事件展开攻击分析,这里攻击分析会根据划分执行单元后的日志构建系统级溯源图,并利用系统级溯源图进行后向分析和前向分析,生成攻击分析报告,攻击分析包括将会描述攻击路径和攻击对系统的影响。具体地,以系统级溯源图为基础对症状事件执行后向攻击分析,从症状事件开始,在溯源图上展开逆数据流向的回溯,若被回溯到的节点直接或间接地向症状事件的主体或客体输入数据,则将该节点汇总到攻击路径;以系统级溯源图为基础对症状事件执行前向攻击分析,从症状事件开始,在溯源图上展开顺数据流向的搜索,若被搜索到的节点直接或间接地受到症状事件主体或客体的数据输入,则将该节点汇总到攻击影响
124.示例性的,图6a示出了溯源图上进行后向分析的流程示意图,当edr对页签创建并运行恶意脚本的事件发出告警时,以事件6为症状事件开始后向分析,所有发生在症状事件之前且直接或间接地向症状事件中的实体输出数据的事件都被加入攻击路径。特别地,当浏览器进行攻击分析时,仅将访问恶意套接字的浏览器执行单元,即浏览器1加入攻击路径,而不对其他浏览器单元进行攻击分析。通过对症状事件的后向分析,发现攻击是从恶意套接字进入主机,也挖掘了从入侵到症状事件的完整路径。图6b示出了溯源图上进行前向分析的流程示意图,当edr对页签创建并运行恶意脚本的事件发出告警时,以事件6为症状事件开始前向分析,所有发生在症状事件之后且直接或间接地收到来自症状事件的实体数据的事件都被加入攻击影响,通过对症状事件的前向分析,发现攻击删除了系统中的重要文本并删除恶意脚本,试图擦除攻击痕迹,明确了从症状事件到攻击事件发作期间的影响。
这里利用划分执行单元后的标准日志格式构建系统级溯源图,当edr发出告警时,将被告警的事件在溯源图上标记为症状事件。基于症状事件,攻击分析在溯源图上开展攻击分析工作,攻击分析以症状事件为出发点,一方面开展逆数据流向的分析,构建攻击路径,另一方面开展顺数据流向的前向分析,分析攻击影响。
125.本发明实施例采用应用程序控制流图作为额外语义信息,辅助执行单元的划分过程,相较于程序插桩和应用程序日志等形式,控制流图是一种更易获得的、对于应用程序无特殊要求的、反映程序结构的信息,并且也不会使系统在运行时产生额外的时间和空间开销。这里应用程序函数的控制流图中包含的系统调用信息,同样存在与系统审计日志之中,因此可以将系统调用作为共同元素,使得审计日志和应用程序的控制流进行匹配,从而完成执行单元的划分。
126.具体在实际应用场景中,攻击溯源流程的框架如图7所示,图7中主要包括四个过程,分别是构建自动机阶段、审计日志分析阶段、执行单元划分阶段和攻击分析阶段。
127.(1)在构建自动机阶段,需要根据优化有向图的节点与边提供的图信息,构建当前函数的系统调用自动机,函数系统调用自动机表示了从当前函数的入口开始,根据不同的系统调用而发生的状态转移,直至离开当前函数的地址空间。通过对call指令和retn指令的分析,可以完成对各函数的系统调用自动机的串联,以此构造完整的应用程序系统调用自动机。应用程序系统调用自动机时对程序生命周期中所有可能的系统调用状态转移路径的描述,为后续执行单元划分过程提供了重要的程序结构信息。
128.(2)在审计日志分析阶段,需要根据操作系统的审计模块提供的日志生成标准格式日志。对于每一个系统事件,都会产生若干条日志记录。然而对于不同的事件,用于描述的日志类型是不同的,因而日志提供的信息也是各异的。为了统一地描述系统事件,需要设计统一的日志格式,即标准日志格式。这里标准日志格式的设计需满足以下几点:包含用于划分执行单元的系统调用关键字段、包含用于构建溯源图的系统实体信息的字段、增加用于表示执行单元信息的字段、尽可能地缩减字段数量,减少日志量。
129.(3)在执行单元划分阶段,需要引入应用程序系统调用自动机作为辅助工具,划分执行单元主要针对长时间运行的应用程序,这些应用程序会在系统审计日志中产生大量的相关条目,为攻击分析工作带来了不便。因此,这里将利用标准格式日志中的系统调用与应用程序系统调用自动机进行状态转移匹配。在匹配过程中,如果遇到有多个状态匹配项的情况,则调用连续匹配的方法进行处理,如果没有状态转移匹配项,则调用向前看匹配和向后看匹配的方法进行处理。如此便识别了同属于一个执行日志的单元,从而对该应用程序的相关日志完成执行单元的划分。
130.可以理解的是,对于长时间应用程序日志的执行单元划分减少了大量的无关依赖,有效地缓解了依赖爆炸问题。一个执行单元中的数据输出之间,仅依赖于单元中前置的数据输入事件,而不再依赖于其他单元中的前置数据输入事件。
131.(4)在攻击分析阶段,首先根据划分执行单元后的系统标准格式日志,构建系统级溯源图。每当症状时间到来时,攻击分析将基于溯源图展开,主要分为两个方面:后向分析和前向分析。后向分析以症状事件为出发点,在溯源图上展开逆数据流向的分析过程,将直接或间接地被症状事件所依赖的事件添加至攻击路径中,直至达到攻击的入口点,从而完成攻击路径的构建。前向分析以症状事件为出发点,在溯源图上展开顺数据流向的分析过
程,将直接或间接地依赖于症状事件的事件添加至攻击影响中,直至达到攻击的发作事件或终止事件,从而完成对攻击影响的分析。
132.本发明实施例提供的基于系统调用自动机的攻击溯源方法,通过对应用程序的二进制文件进行静态分析,生成应用程序函数的控制流图,根据控制流图构造系统调用的有向图,该系统调用的有向图中记录有应用程序函数之间的调用关系,并针对系统调用的有向图中节点集和有向边集采用不确定的有穷自动机作为应用程序系统调用的状态转移表示,构建应用程序系统调用自动机,使用应用程序系统调用自动机对预先生成的标准格式日志进行执行单元的划分,并根据划分得到执行单元的日志构造表示系统事件之间因果关系的系统级溯源图,该标准格式日志为对审计模块提供的日志进行字段提取得到,以系统级溯源图为基础对症状事件执行攻击分析,并在系统溯源图中汇总依赖所述症状事件的节点形成攻击路径,相比于现有技术基于程序插桩和收集应用程序日志得到的高级语义信息来划分的执行单元的方式相比,本发明实施例通过构建反映程序结构的系统调用的自动机,为后续执行单元划分的过程提供应用程序的高级语义信息,从而解决基于程序插桩和收集应用程序日志得到的高级语义信息来划分的执行单元的方式很难应用到缓解依赖爆炸的实际生产环境的问题。
133.基于上述实施例,本发明的另一实施例提供了一种基于系统调用自动机的攻击溯源方法装置,如图8所示,所述装置包括:
134.生成单元20,可以用于通过对应用程序的二进制文件进行静态分析,生成应用程序函数的控制流图,根据所述控制流图构造系统调用的有向图,所述系统调用的有向图中记录有应用程序函数之间的调用关系;
135.构建单元22,可以用于针对所述系统调用的有向图中节点集和有向边集采用不确定的有穷自动机作为应用程序系统调用的状态转移表示,构建应用程序系统调用自动机;
136.划分单元24,可以用于使用所述应用程序系统调用自动机对预先生成的标准格式日志进行执行单元的划分,并根据划分得到执行单元的日志构造表示系统事件之间因果关系的系统级溯源图,所述标准格式日志为对审计模块提供的日志进行字段提取得到;
137.分析单元26,可以用于以所述系统级溯源图为基础对症状事件执行攻击分析,并在所述系统溯源图中汇总依赖所述症状事件的节点分别形成攻击路径和攻击影响。
138.在具体应用场景中,所述生成单元20包括:
139.生成模块,可以用于利用静态反编译软件提出的导出控制流图功能对应用程序的二进制文件进行静态分析,生成描述应用程序函数调用的控制流图;
140.构造模块,可以用于针对每个应用程序函数,通过从描述相应应用程序函数调用的控制流图中提取节点信息和有向边信息,保留节点中的预设指令,构造系统调用的有向图。
141.在具体应用场景中,所述装置还包括:
142.获取单元,可以用于在所述通过对应用程序的二进制文件进行静态分析,生成应用程序函数的控制流图,根据所述控制流图构造系统调用的有向图之后,利用所述系统调用的有向图中记录的边和节点信息,分别获取系统调用的有向图中的空节点、不可达节点以及等效节点;
143.优化单元,可以用于通过对系统调用的有向图中的空节点和不可达节点进行消除
处理,对等效节点进行合并处理,以对所述系统调用有向图进行图结构优化。
144.在具体应用场景中,所述装置还包括:
145.调整单元,可以用于利用构造的前置节点调整所述系统调用的有向图中的入口节点,若所述入口节不为空,则添加源节点为前置节点目的节点为入口节点的边,若所述入口节点为空,则对与所述入口节点相连的边进行替换,以统一将前置节点作为所述系统调用的有向图的入口节点;
146.所述调整单元,还可以用于利用构造的后置节点调整所述系统调用的有向图中的出口节点,对所述系统调用的有向图中所有出度为零的节点,添加该节点指向所述后置节点的边。
147.在具体应用场景中,所述构建单元22包括:
148.第一构建模块,可以用于针对所述系统调用的有向图中节点集和有向边集,构建函数调用自动机;
149.第二构建模块,可以用于以所述函数调用自动机作为基础,通过对应用程序入口函数进行深度优先搜索,构建应用程序系统调用自动机。
150.在具体应用场景中,所述第一构建模块,具体可以用于构造空的不确定的有穷自动机,将编号为初始数值的节点作为有穷状态集合的初始状态,将编号为终止数值的节点加入有穷状态集合的终止状态集合;
151.所述第一构建模块,具体还可以用于针对所述节点集中的每个节点,将其编号加入至所述有穷状态集合,并将其节点内容不重复的加入输入符号集合,针对所述有向边集中的每个有向边,将其规则添加至转换函数,构建函数调用自动机,所述规则表示有向边的源节点状态在接收到目的节点内容作为输入符号的情况下会转移至目的节点状态。
152.在具体应用场景中,所述第二构建模块,具体可以用于枚举应用程序在整个生命周期中的有效执行路径,以应用程序的入口函数为起点对所述有效执行路径进行深度优先搜索,通过节点中的预设指令串联函数调用自动机中各子函数的状态机;
153.所述第二构建模块,具体还可以用于当遍历至预设子函数时,在不离开所述预设子函数地址空间的前提下对所述预设子函数进行局部深度优先搜索遍历,在完成局部深度优先搜索遍历后,将当前函数的自动机缓存至内存中所述局部深度优先搜索遍历通过节点中的预设指令展开对下层函数的自动机调用。
154.在具体应用场景中,所述划分单元24包括:
155.划分模块,可以用于将预先生成的标准日志中的系统调用与所述应用程序系统调用自动机进行状态转移匹配,并在匹配的过程中调用连续匹配方式对多个状态转移匹配项的情况进行处理,调用前向看匹配和后向看匹配的方式对没有状态转移匹配项的情况进行处理,以识别同属于一个执行单元的日志,划分得到执行单元;
156.构造模块,可以用于根据所述划分得到执行单元的日志向溯源图中添加事件,并在添加事件时区分单元级事件和系统级事件,构造表示系统事件之间因果关系的系统级溯源图,其中,溯源图中数据流出者作为事件的主体,数据流入者作为事件的客体,事件作为主体指向客体的有向边。
157.在具体应用场景中,所述分析单元26,具体可以用于以所述系统级溯源图为基础对症状事件执行后向攻击分析,从症状事件开始,在溯源图上展开逆数据流向的回溯,若被
回溯到的节点直接或间接地向症状事件的主体或客体输入数据,则将该节点汇总到攻击路径;
158.以所述系统级溯源图为基础对症状事件执行前向攻击分析,从症状事件开始,在溯源图上展开顺数据流向的搜索,若被搜索到的节点直接或间接地受到症状事件主体或客体的数据输入,则将该节点汇总到攻击影响。
159.基于上述方法实施例,本发明的另一实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现上述方法。
160.基于上述实施例,本发明的另一实施例提供了一种基于系统调用自动机的攻击溯源方法,包括:
161.一个或多个处理器;
162.存储装置,用于存储一个或多个程序,
163.其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的方法。
164.上述装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
165.本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
166.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1