掌桥专利:专业的专利平台
掌桥专利
首页

访问控制中的进程检测方法、装置、电子设备和存储介质

文献发布时间:2023-06-19 12:22:51


访问控制中的进程检测方法、装置、电子设备和存储介质

技术领域

本公开涉及信息安全技术领域,尤其涉及一种访问控制中的进程检测方法、装置、电子设备和存储介质。

背景技术

目前,信息安全领域中,访问控制是最基本的、最重要的技术手段之一,其主要任务是根据策略(规则)确定用户(主体)是否有权限访问资源(客体),从而达到保护指定资源的目的。

通常,在主机(终端)安全系统的访问控制实现中,进程是最常应用的主体,例如进程对文件的访问,进程对注册表的访问,进程对设备的访问等等;在操作系统中,进程是操作系统执行程序的单元,本质上是操作系统动态分配并在程序执行生命周期内维护的一个数据结构,描述了地址空间、调度等信息。也就是说,进程是个动态对象,通常情况下,用进程启动时使用的可执行文件指代进程。

可以理解的是,操作系统中同时运行的多个进程中,有一部分是操作系统自身的进程,对其进行访问控制通常是不必要的:一方面,阻断这些进程的操作可能会导致系统故障;另一方面,对这些进程的操作进行判断会引发不必要的资源(中央处理器、内存等)消耗,降低系统的效率。

因此,如何判断一个进程是可信的,对主机安全系统是有重要影响的:过于宽松的判断会漏掉有风险的进程操作;过于严格的判断会降低系统效率。

相关技术中,按进程名放行,攻击者可通过将恶意程序的文件名重命名为规则指定的名称,绕过访问控制,检测准确性比较差。

发明内容

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种访问控制中的进程检测方法、装置、电子设备和存储介质。

本公开提供了一种访问控制中的进程检测方法,包括:

在进程启动时,获取所述进程的第一可执行文件;

获取所述第一可执行文件的第一代码签名,判断所述第一代码签名是否在可信发行者列表中;

所述第一代码签名在所述可信发行者列表中时,获取所述进程的父进程,并将所述父进程的可信标志作为所述进程的当前可信标志;

检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,以根据所述当前可信标志确定所述进程是否可信,以允许所述进程执行操作。

在本公开的一个可选实施例中,所述检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,包括:

在所述进程加载动态链接库时,获取所述动态链接库的第二可执行文件;

获取所述第二可执行文件的第二代码签名,判断所述第二代码签名是否在可信发行者列表中;

在所述第二代码签名在所述可信发行者列表中时,保持所述进程的当前可信标志不变;

在所述第二代码签名不在所述可信发行者列表中时,清除所述进程的当前可信标志。

在本公开的一个可选实施例中,所述检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,包括:

在所述进程被目标进程注入时,获取所述目标进程的第三可执行文件;

获取所述第三可执行文件的第三代码签名,判断所述第三代码签名是否在可信发行者列表中;

在所述第三代码签名在所述可信发行者列表中时,保持所述进程的当前可信标志不变;

在所述第三代码签名不在所述可信发行者列表中时,清除所述进程的当前可信标志。

在本公开的一个可选实施例中,所述检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,包括:

当检测到所述进程已接收到网络报文的操作时,清除所述进程的当前可信标志。

在本公开的一个可选实施例中,所述检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,包括:

在所述进程打开文件的操作时,判断所述文件是否为脚本文件;

在所述文件不为脚本文件时,保持所述进程的当前可信标志不变;

在所述文件为脚本文件时,清除所述进程的当前可信标志。

在本公开的一个可选实施例中,所述的访问控制中的进程检测方法,还包括:

在获取不到所述父进程的可信标志时,清除所述进程的当前可信标志。

在本公开的一个可选实施例中,所述的访问控制中的进程检测方法,还包括:

建立所述进程的信息链表项,将所述信息链表项插入全局的进程链表;其中,所述信息链表项包括可执行文件的路径、父进程的指针和可信标志。

本公开提供了一种访问控制中的进程检测装置,包括:

获取模块,用于在进程启动时,获取所述进程的第一可执行文件;

获取检测模块,用于获取所述第一可执行文件的第一代码签名,判断所述第一代码签名是否在可信发行者列表中;

处理模块,用于所述第一代码签名在所述可信发行者列表中时,获取所述进程的父进程,并将所述父进程的可信标志作为所述进程的当前可信标志;

检测更新模块,用于检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,以根据所述当前可信标志确定所述进程是否可信,以允许所述进程执行操作。

本公开提供了一种电子设备,包括:处理器和存储器;所述处理器通过调用所述存储器存储的程序或指令,用于执行如前述实施例所述的访问控制中的进程检测方法。

本公开提供了一种计算机可读存储介质,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行前述实施例所述的访问控制中的进程检测方法。

本公开实施例提供的技术方案与现有技术相比具有如下优点:

在进程启动时,获取进程的第一可执行文件;获取第一可执行文件的第一代码签名,判断第一代码签名是否在可信发行者列表中;在第一代码签名在可信发行者列表中时,获取进程的父进程,并将父进程的可信标志作为进程的当前可信标志;检测进程的操作信息,根据操作信息更新当前可信标志,以根据当前可信标志确定进程是否可信,以允许进程执行操作。由此,能够快速准确确定进程是否可信。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例所述一种访问控制中的进程检测方法的流程示意图;

图2为本公开实施例所述一种访问控制中的进程检测方法的流程示意图;

图3为本公开实施例所述的访问控制中的进程检测装置的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

本公开提出了一种在访问控制中的进程检测方法,不再简单地依据进程的文件名、路径或代码签名判断进程是否可信,而是从操作系统的原理出发,在进程启动时和运行时动态的评估进程是否可信。最终实现在访问控制过程中合理地最小化白名单进程,从而提高安全系统的安全性能和执行性能。

图1为本公开实施例所述一种访问控制中的进程检测方法的流程示意图。

如图1所示,该访问控制中的进程检测方法包括:

步骤101,在进程启动时,获取进程的第一可执行文件。

步骤102,获取第一可执行文件的第一代码签名,判断第一代码签名是否在可信发行者列表中。

在本公开实施例中,第一对可执行文件是否可信的评估,基础是对第一可执行文件的第一代码签名的验证。也就是说,一个可执行文件包含有操作系统发行者签发的数字签名时,可认为该可执行文件是操作系统的一部分,是可信的;另外,可通过策略指定额外信任的代码签名发行者,扩展对可执行文件的信任范围,进一步提高验证的灵活性。

在本公开实施例中,对于每一个进程,可以设置一个可信标志,该可信标志可被设置,也可被访问控制模块读取。

因此,进程启动时,根据进程的第一可执行文件是否有合规的代码签名(其中,合规指具有操作系统发行者或策略指定的发行者签发的数字签名,数字签名可能嵌入在文件中,也可能在操作系统的一个清单文件里),初步确定进程是否可信,即判断第一代码签名是否在可信发行者列表中。

在本公开实施例中,还可以获取第一可执行文件的路径,以后查询使用。

步骤103,第一代码签名在可信发行者列表中时,获取进程的父进程,并将父进程的可信标志作为进程的当前可信标志。

在本公开实施例中,第一代码签名在可信发行者列表中时表示进程可信,但是一个非可信进程可以调用windows的工具去做一些事情,而这些windows的小程序是有合法的签名,但是整个调用链是不可信的,所以需要把父进程的可信标志去替换原来的可信标志,即将父进程的可信标志作为进程的当前可信标志。

需要说明的是,在获取不到父进程的可信标志时,清除进程的当前可信标志,避免系统工具利用。

需要说明的是,对进程是否可信的判断,要考虑其父进程(创建者)的可信状态,如果父进程不可信,子进程也不可信。

需要说明的是,如果第一代码签名不合规,则清除进程的可信标志,如果第一代码签名合规,复制进程的父进程的可信标志作为当前可信标志。

步骤104,检测进程的操作信息,根据操作信息更新当前可信标志,以根据当前可信标志确定进程是否可信。

在本公开实施例中检测进程的操作信息,根据操作信息更新当前可信标志的方式有很多种,举例说明如下。

第一种示例,在进程加载动态链接库时,获取动态链接库的第二可执行文件,获取第二可执行文件的第二代码签名,判断第二代码签名是否在可信发行者列表中,在第二代码签名在可信发行者列表中时,保持进程的当前可信标志不变,在第二代码签名不在可信发行者列表中时,清除进程的当前可信标志。

第二种示例,在进程被目标进程注入时,获取目标进程的第三可执行文件,获取第三可执行文件的第三代码签名,判断第三代码签名是否在可信发行者列表中,在第三代码签名在可信发行者列表中时,保持进程的当前可信标志不变,在第三代码签名不在可信发行者列表中时,清除进程的当前可信标志。

第三种示例,当检测到进程已接收到网络报文的操作时,清除进程的当前可信标志。

第四种示例,在进程打开文件的操作时,判断文件是否为脚本文件,在文件不为脚本文件时,保持进程的当前可信标志不变,在文件为脚本文件时,清除进程的当前可信标志。

进一地,在过滤任意进程的操作时,读取进程的当前可信标志,如果是可信的,放行其操作。

因此,在进程出现被注入、加载脚本、建立网络连接等情况时,进程将不再可信。

综上所述,本公开的访问控制中的进程检测方法,在进程启动时,获取进程的第一可执行文件;获取第一可执行文件的第一代码签名,判断第一代码签名是否在可信发行者列表中;在第一代码签名在可信发行者列表中时,获取进程的父进程,并将父进程的可信标志作为进程的当前可信标志;检测进程的操作信息,根据操作信息更新当前可信标志,以根据当前可信标志确定进程是否可信,以允许进程执行操作。由此,能够快速准确确定进程是否可信。

图2为本公开实施例所述一种访问控制中的进程检测方法的流程示意图。

如图2所示,该访问控制中的进程检测方法包括:

步骤201,在进程启动时,获取进程的第一可执行文件。

步骤202,获取第一可执行文件的第一代码签名,判断第一代码签名是否在可信发行者列表中。

步骤203,第一代码签名在可信发行者列表中时,获取进程的父进程,并将父进程的可信标志作为进程的当前可信标志。

需要说明的是,步骤201-步骤203与步骤101-步骤103相同,具体参见步骤101-步骤103的描述,此处不再详述。

步骤204,在进程加载动态链接库时,获取动态链接库的第二可执行文件的第二代码签名,在第二代码签名在可信发行者列表中时,保持进程的当前可信标志不变,在第二代码签名不在可信发行者列表中时,清除进程的当前可信标志。

也就是说,对进程是否可信的判断,不仅仅是对其启动文件的可信性的评估,还可以计算其加载的动态链接库进行判断,进程加载动态链接库时,判断加载的动态链接库的第二可执行文件的代码签名是否合规,如不合规,则清除进程的可信标志。

具体地,获取目标动态链接库的文件路径,获取动态链接库的第二代码签名,判断第二代码签名是否命中可信发行者列表,如果没有命中,则清除进程的可信标志,以避免插件、动态库宿主利用,如果命中了,对进程的可信标准不做修改。

步骤205,在进程被目标进程注入时,获取目标进程的第三可执行文件的第三代码签名,在第三代码签名在可信发行者列表中时,保持进程的当前可信标志不变,在第三代码签名不在可信发行者列表中时,清除进程的当前可信标志。

在本公开实施例中,在进程被其它进程注入时,判断操作者进程当前是否可信,如不可信,则清除进程的可信标志。

具体地,当捕获到一个进程(主体进程)写入另一个进程(客体进程)的虚拟内存时,判断主体进程是否可信,如果不可信,则清除客体进程的可信标志。

步骤206,当检测到进程已接收到网络报文的操作时,清除进程的当前可信标志。

在本公开实施例中,在进程接收到网络报文时,清除进程的可信标志。

具体地,在网络过滤模块中,当捕获到进程已接收到网络报文的操作时,清除进程的可信标志,以避免漏洞利用。

步骤207,在进程打开文件的操作时,在文件不为脚本文件时,保持进程的当前可信标志不变,在文件为脚本文件时,清除进程的当前可信标志。

在本公开实施例中,在进程打开包含有脚本的文件时,清除进程的可信标志。

具体地,在文件系统模块捕获到打开文件的操作时,判断文件是否脚本文件,如果是,则清除当前进程的可信标志,以避免脚本利用。

进一地,在过滤任意进程的操作时,读取进程的当前可信标志,如果是可信的,放行其操作。

在本公开的一个可能实现方式中,建立进程的信息链表项,将信息链表项插入全局的进程链表;其中,信息链表项包括可执行文件的路径、父进程的指针和可信标志。也就是说,维护一个当前存活进程信息的全局进程链表,链表的元素存储有进程的详细信息,包括可执行文件的路径、父进程的指针和可信标志。

在本公开实施例中,可以向操作系统注册进程启动、停止和加载镜像等回调函数,以在特定事件发生时进行相关的处理、能够捕获一个进程向另一个进程写入虚拟内存的操作、判定给定的可执行文件代码签名是否合规,在启动时会加载可信的代码签名发行者列表,向其它模块提供查询、设置当前进程可信标志的接口函数,捕获进程接收网络报文的操作,以及用户捕获进程对文件的打开操作,判定给定的文件是否为脚本文件。

需要说明的是,在进程终止时,从全局进程链表删除并释放插入的信息链表项。

由此,对于每一个进程,维护其可信标志。在进程启动时,根据其可执行文件是否有指定的代码签名以及父进程的可信标志,决定其可信标志的初始值。在可信标志已被设置的情况下,在进程的后续操作中,根据情况实时更新可信标志,比如根据进程加载的可执行文件是否有指定的代码签名,来决定进程是否仍然可信,再比如在进程被其它进程注入时,根据操作者进程来决定是否仍然可信,还比如根据进程是否访问网络以及是否加载脚本,决定进程是否仍然可信。可以在保障安全性的前提下,放行可信进程的操作。

与上述图1至图2实施例提供方法相对应,本公开还提供一种装置,由于本公开实施例提供的装置与上述图1至图2实施例提供的方法相对应,因此在方法的实施方式也适用于本公开实施例提供的装置,在本公开实施例中不再详细描述。

图3为本公开实施例所述的访问控制中的进程检测装置的结构示意图。

如图3所示,该访问控制中的进程检测装置,包括:获取模块301、获取检测模块302、处理模块303和检测更新模块304。

其中,获取模块301,用于在进程启动时,获取所述进程的第一可执行文件。

获取检测模块302,用于获取所述第一可执行文件的第一代码签名,判断所述第一代码签名是否在可信发行者列表中。

处理模块303,用于所述第一代码签名在所述可信发行者列表中时,获取所述进程的父进程,并将所述父进程的可信标志作为所述进程的当前可信标志。

检测更新模块304,用于检测所述进程的操作信息,根据所述操作信息更新所述当前可信标志,以根据所述当前可信标志确定所述进程是否可信,以允许所述进程执行操作。

综上所述,本公开的访问控制中的进程检测装置,通过在进程启动时,获取进程的第一可执行文件;获取第一可执行文件的第一代码签名,判断第一代码签名是否在可信发行者列表中;在第一代码签名在可信发行者列表中时,获取进程的父进程,并将父进程的可信标志作为进程的当前可信标志;检测进程的操作信息,根据操作信息更新当前可信标志,以根据当前可信标志确定进程是否可信,以允许进程执行操作。由此,能够快速准确确定进程是否可信。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 访问控制中的进程检测方法、装置、电子设备和存储介质
  • 进程访问控制方法和装置、存储介质及电子设备
技术分类

06120113269978