行为控制方法、装置、电子设备及存储介质与流程

文档序号:30059181发布日期:2022-05-17 20:32阅读:74来源:国知局
行为控制方法、装置、电子设备及存储介质与流程

1.本发明涉及计算机技术领域,尤其涉及一种行为控制方法、装置、电子设备及存储介质。


背景技术:

2.强制访问控制(mandatory access control,mac)是一种由计算机操作系统约束的访问控制,目标是限制“主体”对“客体”执行某种行为的能力。其中,“主体”可以是用户和/或进程,客体是指各类需要被保护的对象,如文件、目录、网络端口、内存、io设备等。
3.根据现有的mac机制,进程是对“主体”进行权限约束的最小单元。可以想象,即使只允许某一特定的进程a才能对某一特定的被保护对象b进行操作,依据现有技术,也能够将一组“攻击”代码注入具有操作权限的特定进程a中,从而实现对被保护对象b的攻击。
4.因此,现有技术中基于mac机制所实现的行为控制方法存在一定的安全隐患。


技术实现要素:

5.针对现有技术中存在的问题,本发明实施例提供一种行为控制方法、装置、电子设备及存储介质。
6.本发明第一方面实施例提供一种行为控制方法,包括:
7.在目标行为发生时,获取所述目标行为所对应的指令数据;
8.将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权;其中,
9.所述指令白名单库用于存储被授权行为所对应的指令数据。
10.上述技术方案中,所述指令数据包括:指令执行序列;所述指令执行序列用于描述api调用序列中各层级的偏移地址及调用顺序;
11.相应地,所述将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,包括:
12.将所述目标行为的指令执行序列与指令白名单库中的指令执行序列进行匹配。
13.上述技术方案中,所述指令数据还包括:行为类型和/或api信息;
14.相应地,所述将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,还包括:
15.将所述目标行为的行为类型与所述指令白名单库中的行为类型进行匹配;
16.和/或,
17.将所述目标行为的api信息与所述指令白名单库中的api信息进行匹配。
18.上述技术方案中,所述指令数据还包括:程序名称以及程序版本号;
19.相应地,所述将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,还包括:
20.根据目标行为所属进程的信息确定目标行为所属程序的程序名称与版本号,根据
所述程序名称与版本号确定指令白名单库。
21.上述技术方案中,所述将所述目标行为的第一指令执行序列与指令白名单库中的指令执行序列进行匹配,包括:
22.按照预先设定的匹配顺序,将所述目标行为的指令执行序列中各层的偏移地址与指令白名单库中的指令执行序列中各层的偏移地址按照层级依次进行匹配,直至已匹配的层级数量达到预先设置的匹配层数。
23.上述技术方案中,所述获取所述目标行为所对应的指令数据,包括:
24.获取所述目标行为所对应的线程的栈数据;
25.根据所述栈数据还原所述目标行为发生时的指令执行序列。
26.上述技术方案中,方法还包括:
27.对程序以及其所使用的动态库进行分析,确定所述程序中与被授权行为相对应的指令数据;
28.根据被授权行为相对应的指令数据,生成指令白名单库。
29.上述技术方案中,所述确定所述程序中与被授权行为相对应的指令数据,包括:
30.确定与所述被授权行为相对应的第一api;
31.确定用于调用所述第一api的指令执行序列;
32.根据所述用于调用所述第一api的指令执行序列,确定所述程序中与被授权行为相对应的指令执行序列;
33.根据所述程序中与被授权行为相对应的指令执行序列,确定所述程序中与被授权行为相对应的指令数据。
34.上述技术方案中,所述根据所述用于调用所述第一api的指令执行序列,确定所述程序中与被授权行为相对应的指令执行序列,包括:
35.将所述用于调用所述第一api的指令执行序列的全部作为程序中与被授权行为相对应的指令执行序列;
36.或,将所述用于调用所述第一api的指令执行序列的一部分作为程序中与被授权行为相对应的指令执行序列。
37.本发明第二方面实施例提供一种行为控制装置,包括:
38.指令数据获取模块,用于在目标行为发生时,获取所述目标行为所对应的指令数据;
39.匹配模块,用于将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权;其中,
40.所述指令白名单库用于存储被授权行为所对应的指令数据。
41.本发明第三方面实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述行为控制方法的步骤。
42.本发明第四方面实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述行为控制方法的步骤。
43.本发明第五方面实施例提供一种计算机程序产品,所述计算机程序产品包括计算
机可执行指令,所述指令在被执行时用于实现如本发明第一方面实施例所述行为控制方法的步骤。
44.本发明实施例提供的行为控制方法、装置、电子设备及存储介质通过生成目标行为所对应的指令数据,将其与指令白名单库中的数据进行匹配,根据匹配结果确定目标行为是否合法,从而在代码指令层次实现行为控制,较现有的基于进程的行为控制方法安全性更高。
附图说明
45.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1为本发明实施例提供的行为控制方法的流程图;
47.图2为本发明实施例提供的行为控制装置的示意图;
48.图3为本发明实施例所涉及的电子设备的实体结构示意图。
具体实施方式
49.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
50.为了便于理解本发明实施例提供的行为控制方法,下面结合一个具体的场景对现有技术中基于mac机制所实现的行为控制方法进行说明。
51.假设有这样一个场景:在一个文本文件“a.txt”(扩展名为.txt的纯文本文档)中存储了重要的信息;为了保护这些重要的信息,对该文件设定了访问权限,只允许作为系统文本编辑器的记事本程序(notepad.exe)可以打开这个文本文件。
52.所对应的规则为:只有notepad.exe可以打开a.txt。
53.其中,主体是notepad.exe,客体是a.txt,行为是“文件打开”,而可以打开a.txt的权限被赋予了notepad.exe。
54.然后,每当有“文件打开”这个行为发生时,mac系统中的安全策略执行组件就会对主客体的权限进行检测,如果客体是a.txt,那主体必须是notepad.exe,打开文件的行为才会被允许,否则将被拒绝。
55.从整个过程中可以看出,“指令”并未参于到实际的规则判断之中,判断的仅仅是“进程”是否是“notepad.exe”,但实质上“打开文件”这个行为是由一组指令触发的,进程仅仅是一个容器。
56.在现有技术中存在着多种方法可以将一组指令放到任意进程中去执行,从而绕过基于进程识别的权限管控,例如以下方式中的任意一种:
57.a、进程中有漏洞,可导致任意远程代码执行;
58.b、通过线程注入的方式,注入一段代码到目标进程内执行;
59.c、加载一个模块到目标进程内并执行模块内的代码。
60.从上述场景的描述中可以看出,现有技术中基于mac机制所实现的行为控制方法存在安全漏洞,并不能万无一失地实现对行为的控制。只有进入到代码指令识别的层次,才能真正的区分行为的发生真的是由notepad.exe触发,还是由一段非notepad.exe的异常指令触发。
61.为此,本发明实施例提供了一种在代码指令层次实现行为控制的方法。
62.图1为本发明实施例提供的行为控制方法的流程图,如图1所示,本发明实施例提供的行为控制方法,包括:
63.步骤101、在目标行为发生时,获取所述目标行为所对应的指令数据。
64.在本发明实施例中,目标行为是指需要被控制的行为。例如,前述的对文本文件“a.txt”的“打开文件”的行为。对目标行为的控制既有可能是允许执行目标行为,也有可能是禁止执行目标行为。
65.在计算机操作系统中,一个行为由一条指令或多条指令实现。在本发明实施例中,若某一指令集合用于实现目标行为,则将与该指令集合相关的数据称为目标行为所对应的指令数据。
66.在本发明实施例中,所述指令数据包括指令执行序列。
67.指令执行序列用于描述api(application programming interface,应用程序接口)调用序列中各层级的偏移地址及调用顺序。api调用序列按程序的不同、功能的不同、分支的不同,可能会有不同的层深。例如,local_a函数调用local_b函数、local_b函数调用local_c函数、local_c函数调用系统api createfilew来打开一个文件。在这个例子中,api调用序列为三层调用。各层api调用序列所对应的内存中的指令相对于程序基地址的偏移是不一样的,api调用序列中各层级的偏移地址记录了各层api调用序列所对应的内存中的指令相对于程序基地址的偏移。例如,local_a函数在内存中的指令相对于程序基地址的偏移量为010000(仅为示例说明之用,真实的地址偏移量可以与之不同),local_b函数在内存中的指令相对于程序基地址的偏移量为020000,local_c函数在内存中的指令相对于程序基地址的偏移量为030000,createfilew在内存中的指令相对于程序基地址的偏移量为040000。这些偏移地址一般用十六进制的数字表示,并按照执行的先后顺序依次排列,如形成诸如010000020000030000040000的序列。api调用序列中各层级的偏移地址在指令执行序列中的顺序反映了调用顺序。
68.需要说明的是,同一类型的系统api,其在内存中的指令相对于程序基地址的偏移量有可能是不一样的。例如,notepad.exe中源于npcommand指令执行序列中的createfilew调用指令,与源于updateencoding指令执行序列中的createfilew调用指令均可实现文件打开操作。但源于npcommand指令执行序列中的createfilew调用指令是在偏移0x2323处的上一条指令;源于updateencoding指令执行序列中的createfilew调用指令是在偏移0x1300处的上一条指令。由此可见,即使同样是createfilew调用指令,也可能会有不同的地址偏移量。
69.在本发明的其他实施例中,所述指令数据还包括行为类型和/或api信息。
70.行为类型是指目标行为的类型。例如,典型的行为类型有打开文件、删除文件、保存文件、修改文件等。
71.api信息是指目标行为在执行时所调用的api的信息。api是一组定义、程序及协议的集合,它是程序与操作系统之间的接口,是程序能取得操作系统服务的唯一途径。程序的行为通常需要调用系统api来实现,例如,在windows系统中,调用系统api createfilew创建或打开文件、调用系统api createprocess来创建进程、调用系统api loadlibrary来加载模块。各个行为所对应的api的具体类型存在差异,因此指令数据中的api信息需要描述目标行为在执行时所调用的api的名称。
72.目标行为所对应的指令数据可能是合法的(得到授权),也可能是非法的(未得到授权)。在本发明实施例的后续步骤中,通过对目标行为所对应的指令数据的校验来确定目标行为是否被允许执行。
73.在与目标行为相关的进程触发所述目标行为时,通过对目标行为的拦截能够获知目标行为的发生。所述对目标行为的拦截可以采用现有mac机制中的行为拦截功能,如通过以下技术中的任意一种实现:文件系统过滤驱动、系统回调接口、hook技术。
74.通过对程序代码的分析可以知道,程序中与目标行为相关的指令数据是特定的,除了这些特定的指令数据外,其他的指令数据都与目标行为无关。
75.以指令执行序列为例,通过对notepad.exe程序进行分析可以知道,“打开文件”的行为在notepad.exe中有两组指令执行序列来实现:
76.第一组源于npcommand,中间经一系列调用,最终调用系统api createfilew来实现文件打开操作;
77.第二组源于updateencoding,中间经过一系列调用,最终调用系统api createfilew来实现文件打开操作。
78.除此之外,在notepad.exe中再无任何有关“打开文件”相关的指令存在。
79.也就是说,如果采用notepad.exe打开文件,那么内存中的指令执行序列必然是以上两条指令执行序列之一,任何产生“文件打开”操作的其它指令执行序列的调用都是非法的。
80.基于上述特点,在本步骤中,确定目标行为发生后,需要进一步获取目标行为所对应的指令数据,以在后续步骤中实现对目标行为的控制。
81.具体的说,在对目标行为的拦截时可以知道目标行为的行为类型。在之前的描述中已经对如何实现目标行为的拦截做了充分说明,因此不在此处重复。
82.由于行为与行为所调用的api之间的映射关系是固定且可穷举的,因此在确定目标行为的类型后,通过行为与api之间的映射关系能够得到目标行为的api信息。
83.在本发明实施例中,可通过栈数据获取目标行为所对应的指令执行序列。
[0084]“栈”是计算机系统中的一种具有特殊数据结构的动态内存。操作系统为每一个线程都维护了一个栈内存空间,在栈内存空间内保存的是此线程的函数调用信息,包括:函数调用的返回地址及参数。
[0085]
由于函数调用信息在“栈”中按照先后顺序依次存放,因此基于栈数据可以还原任一线程的函数调用序列。
[0086]
基于“栈”的前述特性,可以获得目标行为所对应的线程的栈数据,然后依据栈数据还原目标行为发生时的指令执行序列。如何依据栈数据还原目标行为发生时的指令执行序列是本领域技术人员的公知常识,因此不在此处做重复说明。
[0087]
由于在不同的程序中,同类型的行为所对应的指令数据可能存在差异。因此,在另一个实施例中,目标行为的指令数据包括:程序名称、版本号、行为类型、api信息、指令执行序列。
[0088]
其中,程序名称是指目标行为所属程序的名称。例如,前述打开文本文件“a.txt”的行为是由名称为notepad.exe的程序触发的,则指令数据中的程序名称就是notepad.exe。
[0089]
版本号是指目标行为所属的程序的版本号。应用程序通常会有多次迭代更新,为了区分不同版本的应用程序,会为应用程序设置版本号。例如,应用程序notepad.exe有1.0、2.0、3.0等多个版本,若目标行为只在2.0之后的版本出现,则指令数据的版本号中只包含2.0之后的版本号(如2.0、3.0)。
[0090]
目标行为所述程序的程序名称以及版本号可通过现有技术获取,在本发明实施例中不对其获取过程做详细描述。
[0091]
行为类型、api信息以及指令执行序列在之前的描述中已经有详细的说明,因此不在此处重复。
[0092]
通过前述的程序名称、版本号、行为类型、api信息、指令执行序列,可以精确地描述目标行为所对应的指令数据。
[0093]
步骤102、将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权。
[0094]
在本发明实施例中,指令白名单库用于存储被授权行为所对应的指令数据。其中,被授权行为是指被允许执行的行为。
[0095]
在不同的操作系统中,实现特定功能(即行为的执行结果)需要调用的api是固定不变的,这是由操作系统提供的标准接口规范所决定的。特定功能与所要调用的api之间的映射关系是固定且可穷举的,而非可随机变化的。因此,在本发明实施例中,将被授权的行为及其所要调用的指令执行序列之间的映射关系通过指令白名单库的方式予以存储。
[0096]
具体的说,在一个实施例中,指令数据包括:指令执行序列。
[0097]
指令执行序列用于描述api调用序列中各层级的偏移地址及调用顺序。
[0098]
在本发明另一个实施例中,指令数据还包括:行为类型及api信息。
[0099]
行为类型是指被授权的行为的类型。例如,典型的行为类型有打开文件、删除文件、保存文件、修改文件等。
[0100]
api信息是指被授权的行为在执行时所调用的api的信息。
[0101]
关于行为类型、api信息以及指令执行序列的详细内容在之前的描述中已经有较为充分的说明,因此不在此处重复。
[0102]
在本发明的另一个实施例中,指令数据包括:程序名称、版本号、行为类型、api信息、指令执行序列。
[0103]
被授权行为的指令数据在存储时,可以有多种存储方式。一种常见的存储方式是:程序名称及版本号均相同的程序内的所有被授权行为的数据(行为类型、api信息、指令执行序列)存储在一个指令白名单库中,不同的程序(不同的程序包含:名称不同的程序,名称相同但版本号不同的程序)会有各自对应的指令白名单库。在其他实施例中,也可以将不同程序内的被授权行为的指令数据都存储在一个指令白名单库中。
[0104]
在本发明实施例中,指令白名单库是预先设置的,可直接使用指令白名单库中的数据。在本发明的其他实施例中,将对指令白名单库的生成过程进行说明。
[0105]
当程序名称及版本号均相同的程序内的所有被授权行为的指令数据存储在一个指令白名单库中,且所述指令白名单库已经确定时,根据目标行为的指令数据就可以与指令白名单库中的数据进行匹配。
[0106]
如在一个实施例中,将所述目标行为的指令数据与指令白名单库中的指令数据进行匹配,包括:
[0107]
将所述目标行为的指令执行序列与指令白名单库中的指令执行序列进行匹配。
[0108]
其中,在将目标行为的指令执行序列中各层级的偏移地址与指令白名单库中的指令执行序列中各层级的偏移地址进行匹配时,需要按照预先设定的匹配顺序进行匹配操作。所述预先设定的匹配顺序可以与调用顺序反方向,也可以与调用顺序同方向。
[0109]
以匹配顺序与调用顺序反方向为例,在local_a函数调用local_b函数、local_b函数调用local_c函数、local_c函数调用系统api createfilew来打开一个文件的例子中,调用顺序为local_a—local_b—local_c—createfilew。而匹配操作的顺序则为createfilew—local_c—local_b—local_a。
[0110]
作为一种可选的实现方式,偏移地址做匹配时,可以根据实际需要(如具体的应用场景)设置匹配层数。例如,若匹配操作的顺序为createfilew—local_c—local_b—local_a,若只做一层匹配,那么只需要比较createfilew这一层的指令偏移地址是否一致;若需要做二层匹配,那么需要同时比较createfilew这一层的指令偏移地址以及local_c这一层的指令偏移地址是否一致;若需要做三层匹配,那么需要同时比较createfilew这一层的指令偏移地址、local_c这一层的指令偏移地址以及local_b这一层的指令偏移地址是否一致。依次类推,直至分层匹配的层数达到预先设置的匹配层数。
[0111]
若匹配成功,认为目标行为所对应的指令数据与预先设置的指令白名单库中的数据匹配成功。反之,若匹配失败,就认为目标行为所对应的指令数据与预先设置的指令白名单库中的数据匹配失败。
[0112]
在另一个实施例中,将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,还包括:
[0113]
将所述目标行为的行为类型与所述指令白名单库中的行为类型进行匹配;
[0114]
和/或,
[0115]
将所述目标行为的api信息与所述指令白名单库中的api信息进行匹配。
[0116]
也就是说,在该实施例中,需要同时对指令执行序列以及行为类型和/或api信息进行匹配。
[0117]
以需要同时对指令执行序列、行为类型以及api信息进行匹配为例,具体包括:
[0118]
将所述目标行为的行为类型与所述指令白名单库中的行为类型进行第一次匹配;
[0119]
当所述第一次匹配成功后,将所述目标行为的api信息与所述指令白名单库中的api信息进行第二次匹配;
[0120]
当所述第二次匹配成功后,将所述目标行为的指令执行序列与指令白名单库中的指令执行序列进行第三次匹配。
[0121]
只有前述三次匹配全部匹配成功,才认为目标行为所对应的指令数据与预先设置
的指令白名单库中的数据匹配成功。反之,只要有任意一项的匹配失败,就认为目标行为所对应的指令数据与预先设置的指令白名单库中的数据匹配失败。
[0122]
当程序名称及版本号均相同的程序内的所有被授权行为的指令数据(行为类型、api信息、指令执行序列中)存储在一个指令白名单库中,且所述指令白名单库尚未确定时,需要根据目标行为所属程序的程序名称、版本号、目标行为的行为类型、api信息以及指令执行序列中就可以与指令白名单库中的数据进行匹配。
[0123]
具体包括:
[0124]
首先,根据目标行为所属进程的信息确定目标行为所属程序的程序名称与版本号,根据所述程序名称与版本号确定指令白名单库。
[0125]
由于不同的程序会有各自对应的指令白名单库,因此需要根据目标行为所属程序的程序名称与版本号确定指令白名单库。
[0126]
接着,将所述目标行为的第一行为类型与所述指令白名单库中的第二行为类型进行第一次匹配;
[0127]
当所述第一次匹配成功后,将所述目标行为的api信息与所述指令白名单库中的api信息进行第二次匹配;
[0128]
当所述第二次匹配成功后,将所述目标行为的第指令执行序列与指令白名单库中的指令执行序列进行第三次匹配。
[0129]
上述的第一次匹配、第二次匹配以及第三次匹配的实现过程在之前的描述中已经有详细说明,因此不在此处重复。
[0130]
在得到匹配结果后,根据匹配结果可以确定目标行为是否被允许。如果匹配成功,则说明目标行为所对应的指令数据事先已经得到授权,该目标行为是合法的行为,可以正常执行。如果匹配失败,则说明目标行为所对应的指令数据事先并未得到授权,该目标行为可能是非法的行为,将阻止其被执行。
[0131]
本发明实施例提供的行为控制方法通过生成目标行为所对应的指令数据,然后将其与指令白名单库中的数据进行匹配,根据匹配结果确定目标行为是否合法,从而在代码指令层次实现行为控制,较现有的基于进程的行为控制方法安全性更高。
[0132]
基于上述任一实施例,在本发明实施例中,方法还包括:
[0133]
对程序以及其所使用的动态库进行分析,确定所述程序中与被授权行为相对应的指令数据;
[0134]
根据被授权行为相对应的数据,生成指令白名单库。
[0135]
在本发明实施例中,被授权行为是指被允许执行的行为。在程序中,一般只允许少量指令执行序列实现被授权行为。
[0136]
例如,通过对notepad.exe的代码进行分析可以知道,“打开文件”的行为在notepad.exe中有两组指令执行序列来实现:
[0137]
第一组源于npcommand,中间经一系列调用,最终调用系统api createfilew来实现文件打开操作;
[0138]
第二组源于updateencoding,中间经过一系列调用,最终调用系统api createfilew来实现文件打开操作。
[0139]
除了这两组指令执行序列外,notepad.exe中的其余指令不能执行“打开文件”的
行为。
[0140]
因此,在本发明实施例中,需要确定程序中与被授权行为相对应的指令数据。具体的说,
[0141]
首先,确定与被授权行为相对应的第一api。
[0142]
与被授权行为相对应的api可以有一个,也可以有多个,例如,“打开文件”的行为,既可以调用系统api openfile来实现,也可以调用系统api createfilew来实现。因此,在本步骤中需要确定与被授权行为相对应的api,将这一api记为第一api。
[0143]
由于行为与行为所调用的api之间的映射关系是固定且可穷举的,因此在确定被授权行为的类型后,通过行为与api之间的映射关系能够得到所述第一api。
[0144]
例如,可将行为与行为所调用的api之间的映射关系通过表格的方式予以存储。在确定第一api时,根据被授权行为的行为类型查找表格,所得到的查找结果即为第一api。
[0145]
接着,确定用于调用所述第一api的指令执行序列。
[0146]
在本发明实施例中,可通过反汇编引擎,确定用于调用所述第一api的指令执行序列。
[0147]
再接着,根据用于调用所述第一api的指令执行序列,确定所述程序中与被授权行为相对应的指令执行序列。
[0148]
调用api的指令执行序列可以有多层,如local_a函数调用local_b函数,local_b函数调用local_c函数,local_c函数调用系统api createfilew来打开一个文件。在这个例子中,调用系统api createfilew的指令执行序列有三层。
[0149]
在根据调用所述第一api的指令执行序列,确定所述程序中与被授权行为相对应的指令执行序列的过程中,可以将用于调用所述第一api的指令执行序列的全部作为程序中与被授权行为相对应的指令执行序列,也可以将用于调用所述第一api的指令执行序列的一部分作为程序中与被授权行为相对应的指令执行序列。
[0150]
例如,完整的调用系统api createfilew的指令执行序列为:local_a—local_b—local_c—createfilew。可以将这整个指令执行序列作为程序中与被授权行为相对应的指令执行序列,也可以将该指令执行序列的一部分,如local_b—local_c—createfilew,作为程序中与被授权行为相对应的指令执行序列。
[0151]
在确定所述程序中与被授权行为相对应的指令执行序列时,具体从调用所述第一api的指令执行序列选取多少层可以根据实际需要确定。理论上来说,哪怕只选取一层,也可以识别出绝大多数的正常调用与异常调用。当然,选取的层数越多,就越难以被伪造,选取的层数越少,伪造就越容易。
[0152]
最后,根据所述程序中与被授权行为相对应的指令执行序列,确定所述程序中与被授权行为相对应的指令数据。
[0153]
在确定程序中与被授权行为相对应的指令执行序列后,再获得被授权行为所属程序的程序名称、版本号、行为类型以及api信息等数据,就能够确定所述程序中与被授权行为相对应的指令数据,进而生成指令白名单库。
[0154]
本发明实施例提供的行为控制方法通过对程序以及其所使用的动态库进行分析,确定所述程序中与被授权行为相对应的指令数据;根据被授权行为相对应的指令数据,生成指令白名单库,根据所述指令白名单库可对目标行为所对应的指令数据进行匹配操作,
根据匹配结果确定目标行为是否合法,从而在代码指令层次实现行为控制,较现有的基于进程的行为控制方法安全性更高。
[0155]
基于上述任一实施例,在本发明实施例中,方法还包括:
[0156]
对所述目标行为所属进程的权限以及所述目标行为所要处理对象的权限进行校验。
[0157]
目标行为所属进程对应于程序,即mac机制中的主体;目标行为所要处理对象对应于文件,即mac机制中的客体。
[0158]
在目标行为所对应的指令数据进行校验前,可以首先对所述目标行为所属进程的权限以及所述目标行为所要处理对象的权限进行校验,只有通过校验才会进一步对目标行为所对应的指令执行序列进行校验。
[0159]
如何校验目标行为所属进程的权限以及目标行为所要处理对象的权限,在mac机制中已经有详细的说明,因此不在本发明实施例中做详细说明。
[0160]
本发明实施例提供的行为控制方法通过对目标行为所属进程的权限以及所述目标行为所要处理对象的权限进行校验,可以过滤明显的非法行为,有助于减轻对计算机系统的资源负载。
[0161]
基于上述任一实施例,图2为本发明实施例提供的行为控制装置的示意图,如图2所示,本发明实施例提供的行为控制装置,包括:
[0162]
指令数据获取模块201,用于在目标行为发生时,获取所述目标行为所对应的指令数据;
[0163]
匹配模块202,用于将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权;其中,
[0164]
所述指令白名单库用于存储被授权行为所对应的指令数据。
[0165]
本发明实施例提供的行为控制装置通过生成目标行为所对应的指令数据,然后将其与指令白名单库中的数据进行匹配,根据匹配结果确定目标行为是否合法,从而在代码指令层次实现行为控制,较现有的基于进程的行为控制装置安全性更高。
[0166]
图3为本发明实施例所涉及的电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(communications interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:
[0167]
在目标行为发生时,获取所述目标行为所对应的指令数据;
[0168]
将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权;其中,
[0169]
所述指令白名单库用于存储被授权行为所对应的指令数据。
[0170]
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,
read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0171]
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:
[0172]
在目标行为发生时,获取所述目标行为所对应的指令数据;
[0173]
将所述目标行为所对应的指令数据与预先设置的指令白名单库中的数据进行匹配,根据匹配结果确定所述目标行为是否被授权;其中,
[0174]
所述指令白名单库用于存储被授权行为所对应的指令数据。
[0175]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0176]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0177]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1