CN108647512B - 终端安全控制方法、装置和计算机可读存储介质 - Google Patents

终端安全控制方法、装置和计算机可读存储介质 Download PDF

Info

Publication number
CN108647512B
CN108647512B CN201810463406.1A CN201810463406A CN108647512B CN 108647512 B CN108647512 B CN 108647512B CN 201810463406 A CN201810463406 A CN 201810463406A CN 108647512 B CN108647512 B CN 108647512B
Authority
CN
China
Prior art keywords
kernel module
security
module
specified
kernel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201810463406.1A
Other languages
English (en)
Other versions
CN108647512A (zh
Inventor
陈章琪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Anyun Century Technology Co Ltd
Original Assignee
Beijing Anyun Century Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Anyun Century Technology Co Ltd filed Critical Beijing Anyun Century Technology Co Ltd
Priority to CN201810463406.1A priority Critical patent/CN108647512B/zh
Publication of CN108647512A publication Critical patent/CN108647512A/zh
Application granted granted Critical
Publication of CN108647512B publication Critical patent/CN108647512B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了终端安全控制方法、装置和计算机可读存储介质。所述方法包括:响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;基于已加载的指定类型的内核模块监测相应的指定系统调用行为;当监测到指定系统调用行为时,执行预设的安全控制操作。该技术方案针对某些病毒具备系统级的操作权限,而普通的安全软件操作权限较低,无法应对的问题,通过动态加载的内核模块实现了对指定系统调用行为的监测,而这些行为往往是只有病毒才会执行的系统调用行为,也就实现了对病毒的检测和后续的处理,安全有效,稳定性高。

Description

终端安全控制方法、装置和计算机可读存储介质
技术领域
本发明涉及计算机安全领域,具体涉及终端安全控制方法、装置和计算机可读存储介质。
背景技术
在计算机安全领域,病毒的“攻”与安全软件的“防”是互有胜负的,为了应对技术革新后的病毒程序,安全软件的防护策略也需要不断升级。以安卓手机为例,目前许多ELF病毒通过获取ROOT权限,在感染系统分区后进一步破坏系统和安全软件等,为用户带来了巨大损失,如何应对这类病毒是需要解决的问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的终端安全控制方法、装置和计算机可读存储介质。
依据本发明的一个方面,提供了一种终端安全控制方法,包括:
响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;
基于已加载的指定类型的内核模块监测相应的指定系统调用行为;
当监测到指定系统调用行为时,执行预设的安全控制操作。
可选地,所述响应于内核模块操作请求,加载和/或卸载指定类型的内核模块包括:
由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
可选地,该方法还包括:
设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
可选地,所述由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块包括:
由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
可选地,所述基于所述内核模块监测指定类型的系统调用行为包括:
为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为。
可选地,所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
可选地,所述执行预设的安全控制操作包括:
在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
可选地,所述预设的安全控制操作包括如下的一种或多种:
拦截所述系统调用行为;
记录执行该系统调用行为的进程的名称和/或特征值;
上报已记录的进程的名称和/或特征值。
依据本发明的另一方面,提供了一种终端安全控制装置,包括:
内核模块操作单元,适于响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;
监测单元,适于基于已加载的指定类型的内核模块监测相应的指定系统调用行为;
安全控制单元,适于当监测到指定系统调用行为时,执行预设的安全控制操作。
可选地,所述内核模块操作单元,适于由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
可选地,所述内核模块操作单元,适于设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
可选地,所述内核模块操作单元,适于由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
可选地,所述监测单元,适于为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为。
可选地,所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
可选地,所述安全控制单元,适于在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
可选地,所述预设的安全控制操作包括如下的一种或多种:拦截所述系统调用行为;记录执行该系统调用行为的进程的名称和/或特征值;上报已记录的进程的名称和/或特征值。
依据本发明的又一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一项所述的方法。
由上述可知,本发明的技术方案,通过动态地在系统内核加载、卸载指定类型的内核模块,基于已加载的内核模块可以对指定系统调用行为进行监测,并在监测到指定系统调用行为时执行预设的安全控制操作。该技术方案针对某些病毒具备系统级的操作权限,而普通的安全软件操作权限较低,无法应对的问题,通过动态加载的内核模块实现了对指定系统调用行为的监测,而这些行为往往是只有病毒才会执行的系统调用行为,也就实现了对病毒的检测和后续的处理,安全有效,稳定性高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种终端安全控制方法的流程示意图;
图2示出了根据本发明一个实施例的一种终端安全控制装置的结构示意图;
图3示出了根据本发明一个实施例的计算机可读存储介质的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的一种终端安全控制方法的流程示意图。如图1所示,该方法包括:
步骤S110,响应于内核模块操作请求,加载和/或卸载指定类型的内核模块。
这里的内核模块(kernel object)通常是.ko格式的文件,一般的内核模块用于提供系统驱动程序。在本发明的实施例中,指定类型的内核模块可以是针对某种类型的病毒或某个特定病毒而开发的,其作用可以在后续步骤中体现。
步骤S120,基于已加载的指定类型的内核模块监测相应的指定系统调用行为。
可以看出,一个指定类型的内核模块是与一种或多种待监测的指定系统调用行为相对应的。这里的指定系统调用行为可以是某些危险的系统调用行为,并且是普通应用不会用到的。举例而言,基于Linux开发的系统中(例如目前常见的安卓系统),chmod+x操作可以提升操作权限,当这一操作的对象是系统分区下的文件时,自然是一种危险操作,目前操作系统往往采取设置安全模块的方式,需要调用安全模块才能执行这样的操作,也就需要产生系统调用行为。
安全模块通常采用鉴权方式来判断调用者是否具有合适的权限,但是对于前面提到的ELF病毒,其往往可以获取ROOT权限,这样安全模块会对其进行放行,因此ELF病毒可以肆无忌惮地对系统进行破坏。
而在本实施例中,则采取基于指定类型的内核模块监测这样的指定系统调用行为,也就是不再仅依赖于可被病毒无视的安全模块,采取了更独特、更精确的应对方式。例如,根据用户的上报等,发现病毒A通过系统调用行为a的方式可以破坏系统,那么则生成对应的内核模块B,在终端将内核模块B加载到系统内核中后,可以监测到所有的系统调用行为a,也就实现了对病毒A的检测。
这里较为危险的系统调用行为除了对系统分区下的文件执行chmod+x操作而产生的对安全模块的调用外,还可以包括对系统分区进行remount操作而产生的对安全模块的调用。这是一种重新挂载分区的命令,在用户正常使用终端的过程中几乎不会出现。
步骤S130,当监测到指定系统调用行为时,执行预设的安全控制操作。
可见,图1所示的方法,通过动态地在系统内核加载、卸载指定类型的内核模块,基于已加载的内核模块可以对指定系统调用行为进行监测,并在监测到指定系统调用行为时执行预设的安全控制操作。该技术方案针对某些病毒具备系统级的操作权限,而普通的安全软件操作权限较低,无法应对的问题,通过动态加载的内核模块实现了对指定系统调用行为的监测,而这些行为往往是只有病毒才会执行的系统调用行为,也就实现了对病毒的检测和后续的处理,安全有效,稳定性高。
在本发明的一个实施例中,上述方法中,响应于内核模块操作请求,加载和/或卸载指定类型的内核模块包括:由内核模块管理服务接收内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
在本实施例中通过在操作系统中设置内核模块管理服务,由其接收内核模块操作请求,为了保证内核模块操作请求不被忽视,在本发明的一个实施例中,上述方法还包括:设置内核模块管理服务在终端的操作系统启动过程中启动,并在操作系统的运行过程中常驻。这样,每当终端启动后,该内核模块管理服务就会一并启动并在操作系统关闭前不会退出,以不遗漏内核模块操作请求。
在本发明的一个实施例中,上述方法中,由内核模块管理服务接收内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块包括:由内核模块管理服务提供内核模块操作接口,通过内核模块操作接口接收内核模块操作请求;对内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
以Linux类系统为例,具体来说内核模块操作接口可以是一个socket接口。由于内核模块的权限较大,为了确保安全性,可以限制只有信任的应用,例如安全软件才可以加载、卸载内核模块。在本实施例中给出了一些示例,例如通过签名信息的方式,先对内核模块操作请求的发出者进行验证;在验证通过后,再验证待操作的内核模块的签名信息,如果也通过,那么说明该内核模块操作请求是可以接受的,则执行相应的加载/卸载操作。
在本发明的一个实施例中,上述方法中,基于内核模块监测指定类型的系统调用行为包括:为内核模块提供安全接口,以使内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过安全接口获取该指定系统调用行为。
如前面所述,许多系统中设置有安全模块来对一些危险操作进行安全控制,LSM(Linux Security Module,Linux安全模块)就是Linux内核的安全模型或是说安全框架,其支持多种安全模块,如selinux、apparmor、smack、yama等。
在LSM中设置有多个监测点,例如前面示例的chmod+x、remount等,当有这些操作发生时,实际的流程是调用LSM的函数,LSM再调用上述selinux、apparmor等安全模块的接口。
在本实施例中,由于上述的selinux、apparmor等安全模块不能有效地防护系统不受ELF病毒的破坏,但是还需要这些安全模块来实现其他的安全防护,因此可以采用例如hook的方式,预先设置一个安全接口供内核模块调用。具体来说,由于LSM中本身就设置有若干监测点,那么基于此再设置相关联的安全接口就较为容易。
LSM中有一个用于调用安全模块的总指针security_ops,其指向安全模块中的结构体。在本发明的一个实施例中,上述方法中,LSM调用安全模块的总指针指向安全结构体,安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;安全接口用于获取函数指针的调用事件。
上述的安全结构体实际上是对安全模块中结构体进行复制得到的,正如前面所述,LSM对安全模块的正常调用流程为(以安全模块为selinux为例):通过security_ops调用selinux的selinux_security结构体,selinux_security结构体中保存有对应监测点的指针。而在本实施例中,对selinux_security结构体进行复制,得到安全结构体,并修改security_ops不指向selinux_security结构体而是指向安全结构体。这样由于安全结构体中保存的函数指针与selinux_security结构体中保存的函数指针相同,在没有加载指定类型的内核模块时,其可以正常执行原LSM调用selinux的逻辑。
而在加载了指定类型的内核模块的情况下,在本发明的一个实施例中,上述方法中,执行预设的安全控制操作包括:在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向内核模块中的安全控制函数,以使安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
例如对系统分区执行remount操作,LSM中已有相应的监测点,在现有技术中,LSM的security_ops指针指向selinux_security结构体,其中与上述监测点对应的函数指针被调用,执行remount操作(当然这里还包括selinux对操作发起者的权限验证)。而在本实施例中,LSM的security_ops指针指向安全结构体,则可以动态修改与上述监测点对应的函数指针指向内核模块中的安全控制函数,这样获取到了系统调用行为,也可以执行相应的安全控制操作。由于安全控制操作的种类是预设的,也可以以接口方式实现。在本发明的一个实施例中,上述方法中,预设的安全控制操作包括如下的一种或多种:拦截系统调用行为;记录执行该系统调用行为的进程的名称和/或特征值;上报已记录的进程的名称和/或特征值。则相应的接口可以为拦截接口、记录接口、上报接口,特征值可以为sha1值。
在执行了相应的安全控制操作后,可以继续跳转回selinux,通过原结构体执行后续逻辑,当然,在执行拦截操作时也可以不需要这样处理。
在上述各实施例中,已经说明了内核模块操作请求可以是由安全软件发出的。更进一步来说,安全软件可以是从服务器获取到内核模块后,再发出相应的内核模块操作请求,而服务器则是可以根据搜集的恶意程序、病毒信息生成内核模块。
图2示出了根据本发明一个实施例的一种终端安全控制装置的结构示意图。如图2所示,终端安全控制装置200包括:
内核模块操作单元210,适于响应于内核模块操作请求,加载和/或卸载指定类型的内核模块。
这里的内核模块(kernel object)通常是.ko格式的文件,一般的内核模块用于提供系统驱动程序。在本发明的实施例中,指定类型的内核模块可以是针对某种类型的病毒或某个特定病毒而开发的,其作用可以在后续步骤中体现。
监测单元220,适于基于已加载的指定类型的内核模块监测相应的指定系统调用行为。
可以看出,一个指定类型的内核模块是与一种或多种待监测的指定系统调用行为相对应的。这里的指定系统调用行为可以是某些危险的系统调用行为,并且是普通应用不会用到的。举例而言,基于Linux开发的系统中(例如目前常见的安卓系统),chmod+x操作可以提升操作权限,当这一操作的对象是系统分区下的文件时,自然是一种危险操作,目前操作系统往往采取设置安全模块的方式,需要调用安全模块才能执行这样的操作,也就需要产生系统调用行为。
安全模块通常采用鉴权方式来判断调用者是否具有合适的权限,但是对于前面提到的ELF病毒,其往往可以获取ROOT权限,这样安全模块会对其进行放行,因此ELF病毒可以肆无忌惮地对系统进行破坏。
而在本实施例中,则采取基于指定类型的内核模块监测这样的指定系统调用行为,也就是不再仅依赖于可被病毒无视的安全模块,采取了更独特、更精确的应对方式。例如,根据用户的上报等,发现病毒A通过系统调用行为a的方式可以破坏系统,那么则生成对应的内核模块B,在终端将内核模块B加载到系统内核中后,可以监测到所有的系统调用行为a,也就实现了对病毒A的检测。
这里较为危险的系统调用行为除了对系统分区下的文件执行chmod+x操作而产生的对安全模块的调用外,还可以包括对系统分区进行remount操作而产生的对安全模块的调用。这是一种重新挂载分区的命令,在用户正常使用终端的过程中几乎不会出现。
安全控制单元230,适于当监测到指定系统调用行为时,执行预设的安全控制操作。
可见,图2所示的装置,通过各单元的相互配合,动态地在系统内核加载、卸载指定类型的内核模块,基于已加载的内核模块可以对指定系统调用行为进行监测,并在监测到指定系统调用行为时执行预设的安全控制操作。该技术方案针对某些病毒具备系统级的操作权限,而普通的安全软件操作权限较低,无法应对的问题,通过动态加载的内核模块实现了对指定系统调用行为的监测,而这些行为往往是只有病毒才会执行的系统调用行为,也就实现了对病毒的检测和后续的处理,安全有效,稳定性高。
在本发明的一个实施例中,上述装置中,内核模块操作单元210,适于由内核模块管理服务接收内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
在本实施例中通过在操作系统中设置内核模块管理服务,由其接收内核模块操作请求,为了保证内核模块操作请求不被忽视,在本发明的一个实施例中,上述装置中,内核模块操作单元210,适于设置内核模块管理服务在终端的操作系统启动过程中启动,并在操作系统的运行过程中常驻。这样,每当终端启动后,该内核模块管理服务就会一并启动并在操作系统关闭前不会退出,以不遗漏内核模块操作请求。
在本发明的一个实施例中,上述装置中,内核模块操作单元210,适于由内核模块管理服务提供内核模块操作接口,通过内核模块操作接口接收内核模块操作请求;对内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
以Linux类系统为例,具体来说内核模块操作接口可以是一个socket接口。由于内核模块的权限较大,为了确保安全性,可以限制只有信任的应用,例如安全软件才可以加载、卸载内核模块。在本实施例中给出了一些示例,例如通过签名信息的方式,先对内核模块操作请求的发出者进行验证;在验证通过后,再验证待操作的内核模块的签名信息,如果也通过,那么说明该内核模块操作请求是可以接受的,则执行相应的加载/卸载操作。
在本发明的一个实施例中,上述装置中,监测单元220,适于为内核模块提供安全接口,以使内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过安全接口获取该指定系统调用行为。
如前面所述,许多系统中设置有安全模块来对一些危险操作进行安全控制,LSM(Linux Security Module,Linux安全模块)就是Linux内核的安全模型或是说安全框架,其支持多种安全模块,如selinux、apparmor、smack、yama等。
在LSM中设置有多个监测点,例如前面示例的chmod+x、remount等,当有这些操作发生时,实际的流程是调用LSM的函数,LSM再调用上述selinux、apparmor等安全模块的接口。
在本实施例中,由于上述的selinux、apparmor等安全模块不能有效地防护系统不受ELF病毒的破坏,但是还需要这些安全模块来实现其他的安全防护,因此可以采用例如hook的方式,预先设置一个安全接口供内核模块调用。具体来说,由于LSM中本身就设置有若干监测点,那么基于此再设置相关联的安全接口就较为容易。
LSM中有一个用于调用安全模块的总指针security_ops,其指向安全模块中的结构体。在本发明的一个实施例中,上述装置中,LSM调用安全模块的总指针指向安全结构体,安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;安全接口用于获取函数指针的调用事件。
上述的安全结构体实际上是对安全模块中结构体进行复制得到的,正如前面所述,LSM对安全模块的正常调用流程为(以安全模块为selinux为例):通过security_ops调用selinux的selinux_security结构体,selinux_security结构体中保存有对应监测点的指针。而在本实施例中,对selinux_security结构体进行复制,得到安全结构体,并修改security_ops不指向selinux_security结构体而是指向安全结构体。这样由于安全结构体中保存的函数指针与selinux_security结构体中保存的函数指针相同,在没有加载指定类型的内核模块时,其可以正常执行原LSM调用selinux的逻辑。
而在加载了指定类型的内核模块的情况下,在本发明的一个实施例中,上述装置中,安全控制单元230,适于在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向内核模块中的安全控制函数,以使安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
例如对系统分区执行remount操作,LSM中已有相应的监测点,在现有技术中,LSM的security_ops指针指向selinux_security结构体,其中与上述监测点对应的函数指针被调用,执行remount操作(当然这里还包括selinux对操作发起者的权限验证)。而在本实施例中,LSM的security_ops指针指向安全结构体,则可以动态修改与上述监测点对应的函数指针指向内核模块中的安全控制函数,这样获取到了系统调用行为,也可以执行相应的安全控制操作。由于安全控制操作的种类是预设的,也可以以接口方式实现。在本发明的一个实施例中,上述装置中,预设的安全控制操作包括如下的一种或多种:拦截系统调用行为;记录执行该系统调用行为的进程的名称和/或特征值;上报已记录的进程的名称和/或特征值。则相应的接口可以为拦截接口、记录接口、上报接口,特征值可以为sha1值。
在执行了相应的安全控制操作后,可以继续跳转回selinux,通过原结构体执行后续逻辑,当然,在执行拦截操作时也可以不需要这样处理。
在上述各实施例中,已经说明了内核模块操作请求可以是由安全软件发出的。更进一步来说,安全软件可以是从服务器获取到内核模块后,再发出相应的内核模块操作请求,而服务器则是可以根据搜集的恶意程序、病毒信息生成内核模块。
综上所述,本发明的技术方案,通过动态地在系统内核加载、卸载指定类型的内核模块,基于已加载的内核模块可以对指定系统调用行为进行监测,并在监测到指定系统调用行为时执行预设的安全控制操作。该技术方案针对某些病毒具备系统级的操作权限,而普通的安全软件操作权限较低,无法应对的问题,通过动态加载的内核模块实现了对指定系统调用行为的监测,而这些行为往往是只有病毒才会执行的系统调用行为,也就实现了对病毒的检测和后续的处理,安全有效,稳定性高。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的终端安全控制装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
例如,图3示出了根据本发明一个实施例的一种计算机可读存储介质的结构示意图。该计算机可读存储介质300存储有用于执行根据本发明的方法步骤的计算机可读程序代码310,例如可以被电子设备的处理器读取的程序代码,当这些程序代码由电子设备运行时,导致该电子设备执行上面所描述的方法中的各个步骤。程序代码可以以适当形式进行压缩。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明的实施例公开了A1、一种终端安全控制方法,包括:
响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;
基于已加载的指定类型的内核模块监测相应的指定系统调用行为;
当监测到指定系统调用行为时,执行预设的安全控制操作。
A2、如A1所述的方法,其中,所述响应于内核模块操作请求,加载和/或卸载指定类型的内核模块包括:
由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
A3、如A2所述的方法,其中,该方法还包括:
设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
A4、如A2所述的方法,其中,所述由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块包括:
由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
A5、如A1所述的方法,其中,所述基于所述内核模块监测指定类型的系统调用行为包括:
为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为。
A6、如A5所述的方法,其中,所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
A7、如A6所述的方法,其中,所述执行预设的安全控制操作包括:
在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
A8、如A1所述的方法,其中,所述预设的安全控制操作包括如下的一种或多种:
拦截所述系统调用行为;
记录执行该系统调用行为的进程的名称和/或特征值;
上报已记录的进程的名称和/或特征值。
本发明的实施例还公开了B9、一种终端安全控制装置,包括:
内核模块操作单元,适于响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;
监测单元,适于基于已加载的指定类型的内核模块监测相应的指定系统调用行为;
安全控制单元,适于当监测到指定系统调用行为时,执行预设的安全控制操作。
B10、如B9所述的装置,其中,
所述内核模块操作单元,适于由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
B11、如B10所述的装置,其中,
所述内核模块操作单元,适于设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
B12、如B10所述的装置,其中,
所述内核模块操作单元,适于由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
B13、如B9所述的装置,其中,
所述监测单元,适于为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为。
B14、如B13所述的装置,其中,所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
B15、如B14所述的装置,其中,
所述安全控制单元,适于在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
B16、如B9所述的装置,其中,所述预设的安全控制操作包括如下的一种或多种:拦截所述系统调用行为;记录执行该系统调用行为的进程的名称和/或特征值;上报已记录的进程的名称和/或特征值。
本发明的实施例还公开了C17、一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如A1-A8中任一项所述的方法。

Claims (13)

1.一种终端安全控制方法,包括:
响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;所述指定类型的内核模块为针对某种类型的病毒或某个特定病毒而开发的;
基于已加载的指定类型的内核模块监测相应的指定系统调用行为;所述指定类型的内核模块与一种或多种待监测的指定系统调用行为相对应,所述指定系统调用行为为危险的系统调用行为;
当监测到指定系统调用行为时,执行预设的安全控制操作;
所述基于所述内核模块监测指定类型的系统调用行为包括:
为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为;
所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
2.如权利要求1所述的方法,其中,
所述响应于内核模块操作请求,加载和/或卸载指定类型的内核模块包括:
由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
3.如权利要求2所述的方法,其中,该方法还包括:
设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
4.如权利要求2所述的方法,其中,所述由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块包括:
由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
5.如权利要求1所述的方法,其中,所述执行预设的安全控制操作包括:
在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
6.如权利要求1所述的方法,其中,所述预设的安全控制操作包括如下的一种或多种:
拦截所述系统调用行为;
记录执行该系统调用行为的进程的名称和/或特征值;
上报已记录的进程的名称和/或特征值。
7.一种终端安全控制装置,包括:
内核模块操作单元,适于响应于内核模块操作请求,加载和/或卸载指定类型的内核模块;所述指定类型的内核模块是针对某种类型的病毒或某个特定病毒而开发的;
监测单元,适于基于已加载的指定类型的内核模块监测相应的指定系统调用行为;所述指定类型的内核模块与一种或多种待监测的指定系统调用行为相对应的,所述指定系统调用行为为危险的系统调用行为;
安全控制单元,适于当监测到指定系统调用行为时,执行预设的安全控制操作;
所述监测单元,适于为所述内核模块提供安全接口,以使所述内核模块在有应用通过Linux安全模块LSM进行指定系统调用行为时,通过所述安全接口获取该指定系统调用行为;
所述LSM调用安全模块的总指针指向安全结构体,所述安全结构体中保存有若干个函数指针,各函数指针用于指向安全模块中与各系统调用行为对应的执行函数;所述安全接口用于获取所述函数指针的调用事件。
8.如权利要求7所述的装置,其中,
所述内核模块操作单元,适于由内核模块管理服务接收所述内核模块操作请求,根据接收到的内核模块操作请求加载和/或卸载相应的内核模块。
9.如权利要求7所述的装置,其中,
所述内核模块操作单元,适于设置所述内核模块管理服务在所述终端的操作系统启动过程中启动,并在所述操作系统的运行过程中常驻。
10.如权利要求7所述的装置,其中,
所述内核模块操作单元,适于由所述内核模块管理服务提供内核模块操作接口,通过所述内核模块操作接口接收内核模块操作请求;对所述内核模块操作请求的发出者的签名信息进行验证,和/或,对待操作的内核模块的签名信息进行验证;在通过验证时加载和/或卸载相应待操作的内核模块。
11.如权利要求7所述的装置,其中,
所述安全控制单元,适于在获取到指定函数指针的调用事件后,动态修改该指定函数指针指向所述内核模块中的安全控制函数,以使所述安全控制函数通过相应的安全控制接口执行相应的安全控制操作。
12.如权利要求7所述的装置,其中,所述预设的安全控制操作包括如下的一种或多种:拦截所述系统调用行为;记录执行该系统调用行为的进程的名称和/或特征值;上报已记录的进程的名称和/或特征值。
13.一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如权利要求1-6中任一项所述的方法。
CN201810463406.1A 2018-05-15 2018-05-15 终端安全控制方法、装置和计算机可读存储介质 Active CN108647512B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810463406.1A CN108647512B (zh) 2018-05-15 2018-05-15 终端安全控制方法、装置和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810463406.1A CN108647512B (zh) 2018-05-15 2018-05-15 终端安全控制方法、装置和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108647512A CN108647512A (zh) 2018-10-12
CN108647512B true CN108647512B (zh) 2022-10-21

Family

ID=63756016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810463406.1A Active CN108647512B (zh) 2018-05-15 2018-05-15 终端安全控制方法、装置和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108647512B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114138362B (zh) * 2021-11-18 2024-03-01 武汉深之度科技有限公司 一种内核模块防卸载方法、防卸载装置及计算设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103176817B (zh) * 2012-12-21 2016-08-10 中国电力科学研究院 一种基于自学习的Linux安全策略配置方法
CN105844152B (zh) * 2016-03-22 2018-10-26 山东超越数控电子有限公司 一种基于SELinux系统的Linux内核加固方法及硬件平台
CN106096400B (zh) * 2016-06-06 2019-10-01 中国科学院信息工程研究所 一种Linux内核并行LSM框架实现方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
inux内核模块的安全;刘少东;《https://www.cnblogs.com/liushaodong/p/the_security_of_linux_kernel_module.html》;20130927;第1-4页 *
基于内核函数监控的Linux系统防护方法的研究与实现;翟高寿 等;《信息网络安全》;20180310(第03期);正文第26-38页 *
翟高寿 等.基于内核函数监控的Linux系统防护方法的研究与实现.《信息网络安全》.2018,(第03期), *

Also Published As

Publication number Publication date
CN108647512A (zh) 2018-10-12

Similar Documents

Publication Publication Date Title
US9703957B2 (en) Atomic detection and repair of kernel memory
CN110110522B (zh) 内核修复方法和装置
CN104750534B (zh) 触发虚拟机自省的方法、装置及系统
KR101671795B1 (ko) 동적 링크 라이브러리 삽입 공격을 방지하는 컴퓨터 시스템 및 방법
EP3509270B1 (en) Data backup method and device, storage medium and electronic apparatus
US10733296B2 (en) Software security
US20170289193A1 (en) Secure smart terminal and an information processing method
CN105302711B (zh) 一种应用修复方法、装置及终端
WO2016019893A1 (zh) 应用安装的方法和装置
JP2008135004A (ja) オペレーティングシステム監視設定情報生成装置及びオペレーティングシステム監視装置
CN102930202A (zh) 在Linux系统中执行操作的方法
TW201506788A (zh) 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全啓動覆蓋技術
CN103577757A (zh) 病毒防御方法和装置
CN104268468A (zh) 一种对Android系统动态链接库保护方法及系统
CN104461594A (zh) 嵌入式操作系统的升级方法及装置
US20170168902A1 (en) Processor state integrity protection using hash verification
KR101064164B1 (ko) 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법
CN110688653A (zh) 客户端的安全防护方法及装置、终端设备
CN108647512B (zh) 终端安全控制方法、装置和计算机可读存储介质
KR101500512B1 (ko) 데이터 프로세싱 시스템 보안 장치와 보안방법
CN109376529A (zh) 应用程序运行方法及装置
CN107967192B (zh) 一种智能终端的系统崩溃处理方法和装置
KR20040090373A (ko) 무선 단말기에서 실시간 바이러스 감시/진단/치료 방법
CN105653960A (zh) 一种Linux能力分配方法及装置
CN108647516B (zh) 一种防御漏洞非法提权方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant