非侵入式系统安全保护方法以及安全保护装置与流程

文档序号:29853911发布日期:2022-04-30 08:46阅读:97来源:国知局
非侵入式系统安全保护方法以及安全保护装置与流程

1.本发明涉及安全保护技术领域,具体地涉及一种非侵入式系统安全保护方法、一种非侵入式系统安全保护装置、一种处理器、一种机器可读存储介质以及一种计算机程序产品。


背景技术:

2.随着网络技术的不断发展,网络安全成为日益严重的问题,网络安全风险对应用系统的防护能力提出了更高的要求和更严重的挑战。
3.现有的应用系统防护方法主要分为内部防护方法和外部防护方法两大类,针对内部防护方法,开发人员在应用系统的设计开发过程中,需要对常见的安全攻击手段与防护技术有较为深入的了解,并在开发过程中,对于可能的攻击手段事先设计编写相应的具有防御检测功能的代码,因此对开发人员的防护能力要求较高,同时开发人员无法系统、全面地掌握安全防护知识,因此降低了系统防护可靠性;
4.而针对外部防护方法,往往通过配置大量的外部设备和前置检测手段,以对危险请求进行拦截和处理,然而专业的外部防护设备为企业造成了极大的成本压力,同时前置检测手段也无法对正常行为和攻击行为进行准确的分析和确定,从而降低了防护效果,无法满足用户的实际需求。


技术实现要素:

5.为了克服现有技术中存在的上述技术问题,本发明实施例提供一种非侵入式系统安全保护方法,通过根据恶意程序对关键api的调用规律准确识别恶意程序,并通过预设虚拟环境对恶意程序进行非侵入式的动态修改,从而在不侵入原程序的运行的基础上,实现对应用系统的安全保护。
6.为了实现上述目的,本发明实施例提供一种非侵入式系统安全保护方法,所述方法包括:确定关键api集,所述关键api集包括多个关键api;判断是否获取到针对至少一个关键api的调用操作;在确定获取到所述调用操作的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境;生成动态拦截指令,在所述预设虚拟环境中基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令;在所述预设虚拟环境中运行所述修改后指令。
7.优选地,所述确定关键api集,包括:获取预设第一api集;获取当前业务信息,基于当前业务信息确定第二api集,所述第一api集和所述第二api集均为基于java的api集;对所述第一api集和所述第二api集执行并集处理,生成关键api集。
8.优选地,所述方法还包括:在确定获取到所述调用操作后,获取针对所述至少一个关键api的调用频率;判断所述调用频率是否大于预设频率阈值;在所述调用频率大于所述预设频率阈值的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境。
9.优选地,所述将所述调用操作对应的关键api调用指令重加载至预设虚拟环境,包
括:创建基于java agent的预设虚拟环境;在所述预设虚拟环境中调用预设贴合程序;基于所述预设贴合程序对所述关键api调用指令进行重加载操作,以将所述关键api调用指令重加载至所述预设虚拟环境。
10.优选地,所述生成动态拦截指令,包括:确定与所述关键api调用指令对应的被调用api集;确定所述被调用api集的危险等级;在所述危险等级小于第一等级的情况下,生成对应的告警指令;在所述危险等级大于等于所述第一等级的情况下,生成对应的阻断拦截指令;将所述告警指令或所述阻断拦截指令作为所述动态拦截指令。
11.优选地,所述基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令,包括:获取预设动态添加工具;通过所述预设动态添加工具将所述动态拦截指令前置添加于所述关键api调用指令,生成所述修改后指令。
12.相应的,本发明实施例还提供一种非侵入式系统安全保护装置,所述装置包括:api集确定单元,用于确定关键api集,所述关键api集包括多个关键api;判断单元,用于判断是否获取到针对至少一个关键api的调用操作;重加载单元,用于在确定获取到所述调用操作的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境;修改单元,用于生成动态拦截指令,在所述预设虚拟环境中基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令;指令运行单元,用于在所述预设虚拟环境中运行所述修改后指令。
13.优选地,所述api集确定单元包括:第一api集获取模块,用于获取预设第一api集;第二api集获取模块,用于获取当前业务信息,基于当前业务信息确定第二api集,所述第一api集和所述第二api集均为基于java的api集;api集确定模块,用于对所述第一api集和所述第二api集执行并集处理,生成关键api集。
14.优选地,所述装置还包括筛选单元,所述筛选单元用于:在确定获取到所述调用操作后,获取针对所述至少一个关键api的调用频率;判断所述调用频率是否大于预设频率阈值;在所述调用频率大于所述预设频率阈值的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境。
15.优选地,所述重加载单元包括:环境创建模块,用于创建基于java agent的预设虚拟环境;程序调用模块,用于在所述预设虚拟环境中调用预设贴合程序;重加载模块,用于基于所述预设贴合程序对所述关键api调用指令进行重加载操作,以将所述关键api调用指令重加载至所述预设虚拟环境。
16.优选地,所述拦截指令生成单元包括:第一确定模块,用于确定与所述关键api调用指令对应的被调用api集;第二确定模块,用于确定所述被调用api集的危险等级;第一指令生成模块,用于在所述危险等级小于第一等级的情况下,生成对应的告警指令;第二指令生成模块,用于在所述危险等级大于等于所述第一等级的情况下,生成对应的阻断拦截指令;指令确定模块,用于将所述告警指令或所述阻断拦截指令作为所述动态拦截指令。
17.优选地,所述修改单元包括:工具获取模块,用于获取预设动态添加工具;动态修改模块,用于通过所述预设动态添加工具将所述动态拦截指令前置添加于所述关键api调用指令,生成所述修改后指令。
18.另一方面,本发明实施例还提供一种处理器,被配置成执行本发明实施例提供的方法。
19.另一方面,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行本发明实施例提供的方法。
20.另一方面,本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本发明实施例提供的方法。
21.通过本发明提供的技术方案,本发明至少具有如下技术效果:
22.通过根据恶意程序对关键api的调用行为进行分析,并确定对应的关键api集,根据针对该关键api集的调用行为可以确定恶意程序,另一方面,通过将恶意程序在jvm中进行动态拦截,从而实现在不侵入恶意程序的基础上,实现对应用系统的安全保护,提高了应用系统的安全性,满足了用户的实际需求。
23.本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
24.附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
25.图1是本发明实施例提供的非侵入式系统安全保护方法的具体实现流程图;
26.图2是本发明实施例提供的非侵入式系统安全保护方法中确定关键api集的具体实现流程图;
27.图3是本发明实施例提供的非侵入式系统安全保护方法中将关键api调用指令重加载至预设虚拟环境的具体实现流程图;
28.图4是本发明实施例提供的非侵入式系统安全保护装置的结构示意图。
具体实施方式
29.以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
30.本发明实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上,鉴于此,本发明实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。另外,需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
31.请参见图1,本发明实施例提供一种非侵入式系统安全保护方法,所述方法包括:
32.s10)确定关键api集,所述关键api集包括多个关键api;
33.s20)判断是否获取到应用针对至少一个关键api的调用操作;
34.s30)在获取到所述调用操作的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境;
35.s40)生成动态拦截指令,在所述预设虚拟环境中基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令;
36.s50)在所述预设虚拟环境中运行所述修改后指令。
37.在一种可能的实施方式中,为了实现对恶意代码的动态防护,需要确定关键api集,并通过该关键api集对恶意代码的恶意调用行为进行确定,在该关键api集中包括多个关键api,例如请参见图2,在本发明实施例中,所述确定关键api集,包括:
38.s11)获取预设第一api集;
39.s12)获取当前业务信息,基于当前业务信息确定第二api集,所述第一api集和所述第二api集均为基于java的api集;
40.s13)对所述第一api集和所述第二api集执行并集处理,生成关键api集。
41.例如首先获取预设第一api集,该预设第一api集可以基于公开的恶意程序所调用的api集进行确定,为了进一步提高识别准确性,获取当前业务信息,例如技术人员在开发应用系统的过程中,可以确定应用系统在正常运行时所运行的指令,以及所需要调用的正常api集,并进一步标注确定存在被攻击风险的api集,此时可以将上述存在被攻击风险的api集作为第二api集,在本发明实施例中,为了实现对恶意程序的动态防护,基于java平台的跨平台能力以及程序的动态加载能力,本发明实施例提供的应用系统可以基于java开发,上述第一api集和第二api集可以均为基于java的api集,此时对上述第一api集和第二api集执行并集处理,以过滤掉第一api集和第二api集中的重复api集,并最终获取到关键api集。
42.在本发明实施例中,通过在现有的公开恶意api集的基础上,进一步根据当前业务的实际情况确定对应的容易受到攻击的细化api集,生成最终的关键api集,从而有效提高了在后续的恶意程序的api调用过程中对恶意调用的识别准确率,提高了对应用系统的防护性能。
43.在确定上述关键api集后,应用系统在运行的过程中对程序对api的调用过程进行监控,并判断是否获取到针对上述至少一个关键api的调用操作,例如在日常的运行过程中,若并未监控到针对上述任意一个关键api的调用操作,则可以确定所运行程序为合法程序,因此不进行任何的安全响应或安全检测;在某一时刻,若应用系统监控到某程序对某关键api进行调用,则该程序可能为恶意程序,因此将执行上述调用操作对应的关键api调用指令重加载至预设虚拟环境进行运行,此时可以进一步生成动态拦截指令,例如可以针对上述关键api调用指令生成对应的动态拦截指令,例如根据其指令类型、指令运行规则、指令运行环境等信息生成对应的动态拦截指令,然后基于上述动态拦截指令对该关键api调用指令进行修改,从而获得对该关键api调用指令进行动态修改后的修改后指令,然后在该预设虚拟环境中运行该修改后指令,从而实现在不侵入原程序或原api调用指令的基础上,对应用系统进行安全保护,提高了应用系统的安全性和可靠性。
44.然而在实际应用过程中,对关键api的调用存在一定的灰色空间,即对于某些关键api,正常的应用程序也会调用,但其调用与恶意程序的调用依然存在区别,因此为了进一步提高对恶意程序的识别准确性,可以进一步对api的调用指令进行筛选。
45.例如在本发明实施例中,所述方法还包括:在确定获取到所述调用操作后,获取针对所述至少一个关键api的调用频率;判断所述调用频率是否大于预设频率阈值;在所述调用频率大于所述预设频率阈值的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境。
46.在本发明实施例中,通过对恶意程序对关键api的调用频率与正常应用程序对关键api的调用频率进行分析,在实际应用过程中,将对关键api的调用频率较高的程序识别为恶意程序,能够进一步提高对恶意程序的识别准确性,同时能够有效降低对正常应用程序的误检测,减少应用系统的误动作,降低对用户的正常业务操作的影响,提高了用户体验。
47.在确定当前所应用的程序为恶意程序后,可以将其关键api调用指令重加载至预设虚拟环境中,以便于对其进行动态修改。
48.请参见图3,在本发明实施例中,所述将所述调用操作对应的关键api调用指令重加载至预设虚拟环境,包括:
49.s31)创建基于java agent的预设虚拟环境;
50.s32)在所述预设虚拟环境中调用预设贴合程序;
51.s33)基于所述预设贴合程序对所述关键api调用指令进行重加载操作,以将所述关键api调用指令重加载至所述预设虚拟环境。
52.为了实现对恶意程序的动态修改,首先创建预设虚拟环境,例如该预设虚拟环境为jvm(java虚拟机,java virtual machine),在该jvm中编写java agent,此时在该jvm中调用预设贴合程序,例如该预设贴合程序为attach函数,通过该预设贴合程序对上述关键api调用指令进行重加载操作,以将该关键api调用指令重加载至该jvm中,例如将该关键api调用指令重加载至指定进程编号的jvm进程上。
53.此时可以进一步生成动态拦截指令。例如在本发明实施例中,所述生成动态拦截指令,包括:确定与所述关键api调用指令对应的被调用api集;确定所述被调用api集的危险等级;在所述危险等级小于第一等级的情况下,生成对应的告警指令;在所述危险等级大于等于所述第一等级的情况下,生成对应的阻断拦截指令;将所述告警指令或所述阻断拦截指令作为所述动态拦截指令。
54.例如在一种可能的实施方式中,可以对上述关键api集中的多个关键api进行危险分级,对于危险性不高的关键api,在确定被恶意程序调用后可以仅进行报警提示,以降低对用户的业务操作的影响;而对于危险性较高的关键api,在确定被恶意程序调用后必须进行对应的拦截,因此可以针对上述危险分级生成对应的动态拦截指令,具体的,首先确定与关键api调用指令对应的被调用api集,然后确定其危险等级,例如可以根据该被调用api集中危险等级最高的api确定该被调用api集整体的危险等级,然后将其危险等级与第一等级进行比较,例如该第一等级为初级危险等级,并根据比较结果生成进行报警的告警指令或进行拦截的阻断拦截指令,即确定了动态拦截指令,此时可以在该预设虚拟环境中对该关键api调用指令进行修改。
55.在本发明实施例中,所述基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令,包括:获取预设动态添加工具;通过所述预设动态添加工具将所述动态拦截指令前置添加于所述关键api调用指令,生成所述修改后指令。
56.在一种可能的实施方式中,在生成动态拦截指令后,获取预设动态添加工具,例如该预设动态添加工具为java instrument api函数,可以通过在该jvm中调用java instrument api函数,以对上述关键api调用指令进行动态修改,例如在其前置部分增加上述动态拦截指令,从而生成修改后指令,此时在该jvm中运行该修改后指令,就能够在不侵
入原程序的情况下,实现对应用系统的安全保护,有效提高了应用系统的安全性。
57.下面结合附图对本发明实施例所提供的非侵入式系统安全保护装置进行说明。
58.请参见图4,基于同一发明构思,本发明实施例提供一种非侵入式系统安全保护装置,所述装置包括:api集确定单元,用于确定关键api集,所述关键api集包括多个关键api;判断单元,用于判断是否获取到针对至少一个关键api的调用操作;重加载单元,用于在确定获取到所述调用操作的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境;修改单元,用于生成动态拦截指令,在所述预设虚拟环境中用于基于所述动态拦截指令对所述关键api调用指令进行修改,获得修改后指令;指令运行单元,用于在所述预设虚拟环境中运行所述修改后指令。
59.在本发明实施例中,所述api集确定单元包括:第一api集获取模块,用于获取预设第一api集;第二api集获取模块,用于获取当前业务信息,基于当前业务信息确定第二api集,所述第一api集和所述第二api集均为基于java的api集;api集确定模块,用于对所述第一api集和所述第二api集执行并集处理,生成关键api集。
60.在本发明实施例中,所述装置还包括筛选单元,所述筛选单元用于:在确定获取到所述调用操作后,获取针对所述至少一个关键api的调用频率;判断所述调用频率是否大于预设频率阈值;在所述调用频率大于所述预设频率阈值的情况下,将所述调用操作对应的关键api调用指令重加载至预设虚拟环境。
61.在本发明实施例中,所述重加载单元包括:环境创建模块,用于创建基于java agent的预设虚拟环境;程序调用模块,用于在所述预设虚拟环境中调用预设贴合程序;重加载模块,用于基于所述预设贴合程序对所述关键api调用指令进行重加载操作,以将所述关键api调用指令重加载至所述预设虚拟环境。
62.在本发明实施例中,所述拦截指令生成单元包括:第一确定模块,用于确定与所述关键api调用指令对应的被调用api集;第二确定模块,用于确定所述被调用api集的危险等级;第一指令生成模块,用于在所述危险等级小于第一等级的情况下,生成对应的告警指令;第二指令生成模块,用于在所述危险等级大于等于所述第一等级的情况下,生成对应的阻断拦截指令;指令确定模块,用于将所述告警指令或所述阻断拦截指令作为所述动态拦截指令。
63.在本发明实施例中,所述修改单元包括:工具获取模块,用于获取预设动态添加工具;动态修改模块,用于通过所述预设动态添加工具将所述动态拦截指令前置添加于所述关键api调用指令,生成所述修改后指令。
64.进一步地,本发明实施例还提供一种处理器,被配置成执行本发明实施例所述的方法。
65.进一步地,本发明实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令在被处理器执行时使得所述处理器被配置成执行本发明实施例所述的方法。
66.进一步地,本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现本发明实施例所述的方法。
67.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实
施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
68.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
69.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
70.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
71.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
72.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
73.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
74.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
75.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1