发明内容
本发明旨在提供一种软件行为异常检测与防护方法,通过描述、获取和建立软件服务程序的带有虚空间地址属性的行为特征信息模型并应用该行为特征信息模型来检测与防护软件行为的异常,进而防范“黑客”入侵及误用所导致的信息安全风险。
根据本发明的一方面,提供一种软件行为异常的检测与防护方法,包括:
获取一软件行为及其地址属性并建立对应的特征数据集合;
应用所建立特征数据集合检测并防护软件行为异常,其中,所述特征数据集合带有虚空间地址属性。
较佳的,所述获取一软件行为及其地址属性并建立对应的特征数据集合包括,
确定需要处理的系统调用清单和共享库地址空间范围值;其中,
所述调用清单是根据需要从完整的系统调用集合中找出实际需要处理的部分;
向系统提出要采集处理的应用程序对象,并将要处理的系统调用清单和共享库地址范围通告给系统内部处理机制;
启动要求采集处理的应用程序,并按“黑盒”或“白盒”测试要求运行程序;
在应用程序运行期间,系统并行处理机制自动截获清单内指定的系统调用,实时获取相应调用的用户空间入口地址、层次信息,并与调用相捆绑构造调用三元组;
取出系统采集的行为数据集合,按特定要求加以处理、入库。
其中,确定共享库地址空间范围值进一步包括,首先确定宿主操作系统中共享库的虚空间地址是否是固定的,如果是固定的,要明确找出系统为该共享库设定的使用范围,如果共享库空间是随着应用程序而变,则设为特定值。
根据本发明的一实施例,所述获取一软件行为及其地址属性并建立对应的特征数据集合具体包括:
步骤11)在应用层确定共享库地址空间范围值。
步骤12)通过系统接口传递来自用户应用层的采集请求信息,其中包括控制模式信息、
应用程序名、系统调用清单、共享库地址范围设定,创建系统作业控制队列表项,供系统执行时识别用;根据指定的采集要求建立首层信息采集数据结构并完成初始化;
步骤13)在用户层终止并重新启动采集对象程序,并按预定测试方式运行;
步骤14)系统在执行一个新的文件时,根据步骤12)建立的系统作业控制队列内容,判定将执行的程序是否是要采集行为信息的对象,若不是则转步骤19),如是则为当前任务创建系统任务控制队列项,同时建立两条队列项的映射关系;
步骤15)在由系统调用清单所列的系统调用入口处,根据系统任务控制队列判断当前任务是否是被采集行为信息的对象;如不是则转步骤19);如是则截获当前任务的系统调用;
步骤16)根据共享库地址范围设定,检查堆栈内帧顶返回地址是否落在共享库地址空间,如不是则将该地址与调用号绑定,构造{调用、地址、层}三元组,并记录到当前进程对应进程数据结构,转步骤18),否则继续下一步骤;
步骤17)在用户堆栈内根据栈帧划分向前查找用户返回地址,直至该地址不落入共享库地址范围。将找到的返回地址与调用号绑定,构造{调用、地址、层}三元组,并记录到当前任务对应任务数据结构;
步骤18)若当前任务调用不希望创建子任务,则转步骤19),否则,首先为子任务创建新的系统任务控制队列表项,并查找当前作业结构中是否已有下一层任务的结构和空间;如有,建立勾连关系并转下一步,否则为下一层任务创建结构并完成初始化处理;
步骤19)转入正常系统调用处理流程;
以上步骤15)-19)在获取指定服务程序行为特征信息过程中多次循环执行,在获取完整的信息数据后进入以下处理流程:
步骤110)通过专用接口提取系统已采集的应用程序行为特征信息,并按格式要求对数据进行处理、存档。
较佳的,所述应用所建立特征数据集合检测并防护软件行为异常包括:
向系统提交要控制处理的应用程序对象,并将相应对象行为特征数据集合通告给系统内部处理机制,其中,所述行为特征数据集合带虚空间地址属性;
重新启动要求监控处理的应用程序;
在应用程序运行期间,系统监控处理机制自动识别需监控的对象,并截获所述系统调用清单内指定的系统调用,同时获取相应调用的用户空间入口地址,并与调用相捆绑构成调用、地址三元组{调用号,地址,层};
将构造的三元组{调用号,地址,层}与相应行为集合中的数据相比较,如集合中包含该三元组,说明此次系统调用合法,转入正常系统调用执行系列,否则,可认为是非法操作,按照一定的错误处理原则加以处理。根据本发明的一实施例,所述应用所建立特征数据集合检测并防护软件行为异常具体包括:
步骤21)通过系统接口提交需要监控的应用程序对象,同时提供相应行为控制数据集合;
步骤22)系统根据监控请求信息,从中提取控制模式信息、网络应用程序名、系统调用清单、共享库地址范围设定,创建系统作业控制队列项,供系统执行新程序识别时使用;根据提交的应用程序的行为信息数据结构完成监控数据结构的初始化;
步骤23)在用户层终止并重新启动监控对象程序,并按正常方式运行;
步骤24)系统在执行一个新的文件时,根据步骤22)建立的系统作业控制队列项,判定将执行的程序是否是要监控其行为的对象,若不是则转步骤28),如是则为当前任务创建系统任务控制队列项,同时建立两条队列项的映射关系;
步骤25)在清单所列系统调用入口处,根据系统进程控制队列项判断当前任务是否是被监控行为特征的任务。如不是则转步骤28);如是则截获当前的系统调用;
步骤26)完成行为三元组的构造,并对行为合法性实施仲裁,如访问仲裁成功,继续;否则失败,转步骤29);
步骤27)若当前任务调用不希望创建子任务,则转步骤28),否则,首先为子任务创建新的系统任务控制队列项,并查找当前作业行为结构中是否已有下一层任务的行为结构和属性信息,如有,建立勾连关系并转下一步;否则,认为此次进程创建为非法,转步骤29);
步骤28)转入正常系统调用处理流程;
步骤29)错误处理并返回用户程序。
以上步骤25)-29)在监控指定服务程序行为特征信息过程中多次循环执行,监护应用程序按照既定的行为框架运行。
总结而言,本发明的方法提供带地址属性的软件行描述,其中基本要素如下:
把系统调用作为软件行为的基本要素。系统调用是指操作系统提供给应用层软件的各种服务接口,为应用软件完成仅由系统才能完成的特定任务。
将系统调用在应用程序中的入口地址,既用户虚空间入口地址作为该系统调用的重要特征属性。
将系统调用所在任务层次信息作为该调用的另一个特征属性。
构造系统调用三元组{调用、地址、层}作为一次软件调用行为的特征描述。
应用软件为完成设计目标而需要运行的所有系统调用的三元组集合构成该软件的带有地址特征属性的行为数据集合。
采用本发明的方法,与采用条件概率方法相比,这种数据模型应用于行为控制等有关的应用项目时,可无差错的约束软件的行为轨迹。在提高检测准确性的同时,可大大提高识别效率,并实施方便。它可独立使用,当与其他数据联合使用时,譬如:短序列模式、状态属性、资源属性,可为建立信息系统安全异常监控模型提供更有效、灵活地支持。实现对应用程序行为的实时检测与控制,堵塞应用程序运行中可能出现的漏洞,以大幅提高软件行为异常检测与监控的准确性和效率。
具体实施方式
下面结合具体实施例进一步描述本发明的技术方案。
首先,本发明提供一种软件行为异常的检测与防护方法,包括:获取一软件行为及其地址属性并建立对应的特征数据集合;以及应用所建立特征数据集合检测并防护软件行为异常,其中,所述特征数据集合带有虚空间地址属性。在本发明的方法中,可提供带地址属性的软件行描述,其中基本要素如下:
1)把系统调用作为软件行为的基本要素。系统调用是指操作系统提供给应用层软件的各种服务接口,为应用软件完成仅由系统才能完成的特定任务。
2)将系统调用在应用程序中的入口地址,既用户虚空间入口地址作为该系统调用的重要特征属性。
3)将系统调用所在任务层次信息作为该调用的另一个特征属性。
4)构造系统调用三元组{调用、地址、层}作为一次软件调用行为的特征描述。
5)应用软件为完成设计目标而需要运行的所有系统调用的三元组集合构成该软件的带有地址特征属性的行为数据集合。
其中,第一个步骤:获取一软件行为及其地址属性并建立对应的特征数据集合,可实现如下。
参考图1,图1示出了获取一软件行为及其地址属性并建立对应的特征数据集合的基本过程,其中该特征数据集合带虚空间地址属性。根据本发明,该步骤需要遵循如下的基本过程:
确定需要处理的系统调用清单和共享库地址空间范围值。对于系统调用清单,是根据需要,从完整的系统调用集合中找出实际需要处理的部分。对于共享库地址空间,首先确定宿主操作系统中共享库的虚空间地址是否是固定的。通常系统为了统一处理起见,将共享库安排为用户空间的固定区域,这时要明确找出系统为该共享库设定的使用范围。若共享库空间是随着应用程序而变,则设为特定值,比如设置为0xfffffff。
向系统提出要采集处理的应用程序对象,并将要处理的系统调用清单和共享库地址范围通告给系统内部处理机制。
启动要求采集处理的应用程序,并按“黑盒”或“白盒”测试要求运行程序。
在应用程序运行期间,系统并行处理机制自动截获清单内指定的系统调用,实时获取相应调用的用户空间入口地址、层次信息,并与调用相捆绑构造调用三元组。
取出系统采集的行为数据集合,按特定要求加以处理、入库。
在上述过程中,需要说明如下几点:
确定共享库地址范围,是为了尽量避免在共享库地址范围固定的情况下,不同应用程序系统调用地址属性的趋同性。
该方法的实施要求宿主操作系统提供并发采集机制或机制接口。
要求采用不同的测试方式以保证行为集合符合实际需要,同时要求在此期间避免采用攻击测试。
最终数据是带有虚空间地址等属性的系统调用序列集合。
根据本发明的一实施例,采集并制作所述的特征数据集合包括:在系统内核构建一种机制,全程监控指定应用程序的运行,并根据设定获取该程序的行为特征信息集合,经分析处理后构建应用程序的三元组系统调用序列行为特征模型,具体步骤如下:
步骤11)通过系统工具或技术说明资料确定共享库地址空间范围值(应用层)。
步骤12)通过系统接口传递来自用户应用层的采集请求信息,其中包括控制模式信息、网络应用程序名、系统调用清单、共享库地址范围设定,创建系统作业控制队列表项,供系统执行时识别用;根据指定的采集要求建立首层信息采集数据结构并完成初始化。
步骤13)在用户层终止并重新启动采集对象程序,并按预定测试方式运行。
步骤14)系统在执行一个新的文件时,根据步骤12)建立的系统作业控制队列内容,判定将执行的程序是否是要采集行为信息的对象,若不是则转步骤19),如是则为当前任务创建系统任务控制队列项,同时建立两条队列项的映射关系。
步骤15)在系统调用(清单所列)入口处,根据系统任务控制队列判断当前任务是否是被采集行为信息的对象;如不是则转步骤19);如是则截获当前任务的系统调用。
步骤16)根据共享库地址范围设定,检查堆栈内帧顶返回地址是否落在共享库地址空间,如不是则将该地址与调用号绑定,构造{调用、地址、层}三元组,并记录到当前进程对应进程数据结构,转步骤18);否则继续。
步骤17)在用户堆栈内根据栈帧划分向前查找用户返回地址,直至该地址不落入共享库地址范围。将找到的返回地址与调用号绑定,构造{调用、地址、层}三元组,并记录到当前任务对应任务数据结构。
步骤18)若当前任务调用不希望创建子任务,则转步骤19),否则,首先为子任务创建新的系统任务控制队列表项,并查找当前作业结构中是否已有下一层任务的结构和空间;如有,建立勾连关系并转下一步,否则为下一层任务创建结构并完成初始化处理。
步骤19)转入正常系统调用处理流程;
以上步骤15)-19)在获取指定服务程序行为特征信息过程中多次循环执行,在获取较为完整的信息数据后进入以下处理流程,
步骤110)通过专用接口提取系统已采集的应用程序行为特征信息,并按格式要求对数据进行处理、存档。
图1从操作流程的角度示出了获取一软件行为及其地址属性并建立对应的特征数据集合的基本过程,如图1所示:
步骤a,首先截获系统调用;
步骤b,判断该系统调用是否是行为采集请求,如果是则进行步骤b1,提取信息、建立作业监控表项、初始化行为数据结构,此后还需要执行步骤b2,重启被采集行为数据的程序,该重启的过程是在应用层实现;如果不是,则进入到步骤c;
步骤c,判断是否执行被监控的程序,如果决定执行,则进入到步骤d;如果决定不执行,则进入到步骤c1,进一步判断该进程是否是已经被采集的进程,如果是,则进入步骤c2,建立与该进程相关任务表项的勾连,如果不是,则进入到步骤i;
步骤d,为该进程创建任务控制表项并与作业表项勾连;之后进入步骤e,需要说明,上述的步骤c2完成之后也进入步骤e;
步骤e,获取该进程用户栈地址并构造调用三元组;
步骤f,判断该三元组是否在行为集合中,如果判断的结果为是,则进入步骤g,如果判断的结果为否,则越过步骤g,直接进入步骤h;
步骤g,保存该三元组中的数据到行为集合中;
步骤h,判断该调用是否是创建子进程,如果判断结果为是,则进入步骤h1为子进程创建任务控制表项,并与作业表项勾连;如果判断结果为否,则进入步骤i;
步骤i,完成正常的系统调用任务,需要说明,在前述的步骤c1,如果判断的结果为否,也进入步骤i,步骤h1执行完成之后也进入步骤i。
本发明的方法的第二个步骤:应用所建立特征数据集合检测并防护软件行为异常,可实现如下:
参考图2,图2示出了应用所建立特征数据集合检测并防护软件行为异常的基本过程,其中该特征数据集合带虚空间地址属性。根据本发明,该步骤需要遵循如下的基本过程:
向系统提交要控制处理的应用程序对象,并将相应对象的带虚空间地址属性的行为特征数据集合通告给系统内部处理机制,该行为特征数据集合的获取以及建立方式可以参照前面的第一个步骤进行;
重新启动要求监控处理的应用程序;
在应用程序运行期间,系统监控处理机制自动识别需监控的对象,并截获清单内指定的系统调用,同时获取相应调用的用户空间入口地址,并与调用相捆绑构成调用、地址三元组{调用号,地址,层};
将构造的三元组{调用号,地址,层}与相应行为集合中的数据相比较,如集合中包含该三元组,说明此次系统调用合法,转入正常系统调用执行系列。否则,可认为是非法操作,按照一定的错误处理原则加以处理。
根据本发明的一实施例,利用行为数据集合实施监控包括:在系统内核建立一种控制机制,全程监控指定应用程序的运行,并根据设定截获该程序的具有地址属性的行为特征信息,经分析处理后进行访问仲裁,并根据仲裁结果作相应处理,具体步骤如下:
步骤21)通过系统接口提交需要监控的应用程序对象,同时提供相应行为控制数据集合。
步骤22)系统根据监控请求信息,从中提取控制模式信息、网络应用程序名、系统调用清单、共享库地址范围设定,创建系统作业控制队列项,供系统执行新程序识别时使用;根据提交的应用程序的行为信息数据结构完成监控数据结构的初始化。
步骤23)在用户层终止并重新启动监控对象程序,并按正常方式运行。
步骤24)系统在执行一个新的文件时,根据步骤22)建立的系统作业控制队列项,判定将执行的程序是否是要监控其行为的对象,若不是则转步骤28),如是则为当前任务创建系统任务控制队列项,同时建立两条队列项的映射关系。
步骤25)在清单所列系统调用入口处,根据系统进程控制队列项判断当前任务是否是被监控行为特征的任务;如不是则转步骤28);如是则截获当前的系统调用。
步骤26)完成行为三元组的构造,并对行为合法性实施仲裁。如访问仲裁成功,继续;否则失败,转步骤29)。
步骤27)若当前任务调用不希望创建子任务,则转步骤28),否则,首先为子任务创建新的系统任务控制队列项,并查找当前作业行为结构中是否已有下一层任务的行为结构和属性信息。如有,建立勾连关系并转下一步;否则,认为此次进程创建为非法,转步骤29)。
步骤28)转入正常系统调用处理流程。
步骤29)错误处理并返回用户程序。
以上步骤25)-29)在监控指定服务程序行为特征信息过程中多次循环执行,监护应用程序按照既定的行为框架运行。
图2从操作流程的角度示出了应用所建立特征数据集合检测并防护软件行为异常的基本过程,如图2所示:
步骤a’,首先截获系统调用;
步骤b’,判断该系统调用是否是行为监控请求,如果是则进行步骤b1’,提取信息、建立作业监控表项、初始化行为数据结构,此后还需要执行步骤b2’,重启被采集行为数据的程序,该重启的过程是在应用层实现;如果不是,则进入到步骤c’;
步骤c’,判断是否执行被监控的程序,如果决定执行,则进入到步骤d’;如果决定不执行,则进入到步骤c1’,进一步判断该进程是否是已经被监控的进程,如果是,则进入步骤e’,如果不是,则进入到步骤h’;
步骤d’,为该进程创建任务控制表项并与作业表项勾连;之后进入步骤e’,需要说明,上述的步骤c1’完成之后也进入步骤e’;
步骤e’,获取该进程用户栈地址并构造调用三元组;
步骤f’,判断该三元组是否在行为集合中,如果判断的结果为是,则进入步骤g’,如果判断的结果为否,则进入步骤f1’,进行错误处理、报警、记录审计信息等,之后结束该步骤;
步骤g’,判断该调用是否是创建子进程,如果判断结果为是,则进入步骤g1’为子进程创建任务控制表项,并与作业表项勾连;如果判断结果为否,则进入步骤h’;
步骤h’,完成正常的系统调用任务,需要说明,在前述的步骤c1,如果判断的结果为否,也进入步骤h’,步骤g1’执行完成之后也进入步骤h’。
根据本发明的一实施例,执行本发明的方法时,其中包含了两条队列:系统作业控制队列:其中的每一项用于登记当前需要采集或控制的作业的具体信息,同时包含有容纳行为特征信息空间的指针;以及系统任务控制队列:其中的每一项用于登记当前的任务ID、历史关联信息、控制类型、层次信息、容纳本层程序行为信息空间的指针、所属作业标识、启动时间、下一队列项指针等。
图3示出了根据本发明的一实施例的系统作业控制队列和系统进程控制队列的结构图,执行本发明的方法时,描述了一种准确获取或监控指定程序行为特征集合的运行步骤和机制,其中包含了两条队列:
(1)系统作业控制队列:其中的每一队列项用于登记当前需要采集或控制的作业的具体信息,同时包含有容纳行为特征信息空间的指针。
(2)系统进程控制队列:其中的每一队列项用于登记当前的进程ID、历史关联信息、控制类型、层次信息、容纳本层程序行为信息空间的指针、所属作业标识、启动时间、下一队列项指针等。
参考图3,图3描述了上述两条主要的控制数据队列,其中一条是作业控制队列,它是一条双向队列。其中每一队列结构项包含以下作业基本控制信息(主要字段)及二者的关系。
作业名(Object_name):具体应用程序的全路径名。譬如:/usr/sbin/vsftpd(FTP文件服务器守护程序)。
控制类型(O_type):采集型或控制型。
行为信息首结构指针(O_datap):用于存放作业行为特征信息的数据结构的地址。
标志信息(O_flag):用于存放各种操作标志。
同步锁(O_lock):用于行为信息的操作同步。
该队列可同时存在多个表项,即可同时对多个作业实施采集或监控。
另一条队列是任务控制队列,它也是一条双向队列。其中每一队列表结构项包含以下进程基本控制信息(主要字段):
进程标识号(p_pid):它是系统中唯一的进程标识。
控制类型(p_type):表明进程是采集或受控状态。
队列指针(p_p):指向本层行为信息结构空间。
层级号(p_level):进程在作业中所处的层级;
进程启动时间(p_stime):进程在系统中实际启动的时间。
进程调用历史记录(p_l):进程执行系统调用的历史。
该队列可同时存在多个表项,记录了所有采集或受控作业的相关进程信息。
采用本发明的方法,与采用条件概率方法相比,这种数据模型应用于行为控制等有关的应用项目时,可无差错的约束软件的行为轨迹。在提高检测准确性的同时,可大大提高识别效率,并实施方便。它可独立使用,当与其他数据联合使用时,譬如:短序列模式、状态属性、资源属性,可为建立信息系统安全异常监控模型提供更有效、灵活地支持。实现对应用程序行为的实时检测与控制,堵塞应用程序运行中可能出现的漏洞,以大幅提高软件行为异常检测与监控的准确性和效率。
上述实施例是提供给熟悉本领域内的人员来实现或使用本发明的,熟悉本领域的人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。