CN101593259A - 软件完整性验证方法及系统 - Google Patents

软件完整性验证方法及系统 Download PDF

Info

Publication number
CN101593259A
CN101593259A CN 200910087986 CN200910087986A CN101593259A CN 101593259 A CN101593259 A CN 101593259A CN 200910087986 CN200910087986 CN 200910087986 CN 200910087986 A CN200910087986 A CN 200910087986A CN 101593259 A CN101593259 A CN 101593259A
Authority
CN
China
Prior art keywords
executable file
system call
instruction
software
integrity verification
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.)
Granted
Application number
CN 200910087986
Other languages
English (en)
Other versions
CN101593259B (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.)
Beihang University
Original Assignee
Beihang University
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 Beihang University filed Critical Beihang University
Priority to CN 200910087986 priority Critical patent/CN101593259B/zh
Publication of CN101593259A publication Critical patent/CN101593259A/zh
Application granted granted Critical
Publication of CN101593259B publication Critical patent/CN101593259B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种软件完整性验证方法。包括:在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;根据可执行文件的路径,获取可执行文件的哈希值;并将可执行文件的哈希值与指纹库中的软件指纹比对;根据指纹比对结果,对可执行文件进行完整性验证。本发明还公开了一种软件完整性验证系统;本发明的软件完整性验证方法及系统在虚拟监控器中实现软件完整性验证,独立于操作系统,不依赖于操作系统的完整性,增强了系统的安全性;具有通用性与兼容性;本发明的技术方案属于软件加载期的完整性验证,与文件系统完整性验证方法相比,减少了验证开销,而且不需要辅助硬件的支持,降低了成本,提高了性能。

Description

软件完整性验证方法及系统
技术领域
本发明涉及一种软件完整性验证方法及系统,特别涉及一种在虚拟机监控器层实现软件完整性验证方法及系统;属于计算机安全技术领域。
背景技术
随着互联网技术的迅猛发展,网络安全已经成为互联网不可忽视的一大方面。而病毒、木马、间谍软件、rootkits等恶意软件的不断泛滥,严重威胁着互联网安全,目前已成为网络安全领域的头号威胁。从技术的角度上看,恶意软件具有如下特点:
(a)隐蔽性:以不被用户察觉的方式在软件系统中运行;运行后通常还隐藏自身的存在,从而逃脱杀毒软件等安全工具的检测,例如,恶意软件常常隐藏自身进程,删除日志记录等。
(b)非法篡改:恶意软件常常通过篡改正常软件的代码和数据,并加入恶意程序和代码以达到破坏和入侵系统的目的。一旦被篡改后的软件加载到系统中,其恶意代码就会得到执行,从而威胁到系统的安全。另一方面,由于这些被篡改的软件通常是常用的应用程序或系统关键文件,用户很难发现并识别出这些被非法篡改的软件。
(c)底层化:恶意软件已经更多的由用户级程序向内核级代码转化。
因此,只要能在恶意软件或代码执行前发现、识别并阻止其运行,就可以保证软件系统的安全。软件完整性检验与保护技术正是这样一种技术。首先,它完整性监控整个软件环境(包括操作系统、文件系统、应用程序执行环境等)的完整性,能准确识别软件的存在、加载及运行。例如能发现并定位存储在文件系统上或内存中的软件二进制代码,能在发现软件进程启动,能识别隐藏进程的运行等。然后,它能完整性检验软件,通常的做法是获取软件的“指纹”(即对软件做哈希运算,测得的哈希值),与软件指纹库中已有的该软件的指纹进行比较。如果两者匹配,说明该软件符合完整性要求;如果不匹配,说明该软件被篡改。再者,它还能对软件进行完整性验证,在恶意软件对系统造成破坏或入侵前阻止其加载与运行。从而保护整个软件系统的完整性,即该软件系统中运行的所有软件都经过验证,并符合完整性要求。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
(1)安全性问题
目前绝大多数的软件完整性验证与保护机制都位于被保护的操作系统内部,使用了操作系统的功能来实现完整性验证机制,因此依赖于操作系统(特别是内核)的完整性。而当前的操作系统由于过于庞大(上百万行代码),不可避免地存在安全漏洞,因而操作系统本身的完整性无法保证。而当前的恶意软件也驻留在操作系统内部,特别是内核级恶意代码,因其具有对操作系统内核的控制权,可以通过诸如隐藏文件和进程、篡改内核代码等方式,绕过甚至破坏完整性验证机制。
(2)兼容性问题
首先,现有的软件完整性验证与保护技术在操作系统内部实现,其实现机制依赖于操作系统的实现原理,这就意味着在linux上的完整性验证技术(由于操作系统实现原理不同)无法适用于windows上;也就是说现有的软件完整性验证与保护技术缺乏通用性和兼容性,在某一种操作系统平台下开发的完整性验证技术往往不适用或无法移植到其他操作系统。
(3)其他问题
而且现有的软件完整性验证与保护技术有时还需要额外的硬件支持。一方面需要购买额外的硬件设备,增加了硬件成本开销;另一方面,由于引入了硬件处理,增加了与硬件的交互,带来了额外的性能开销。
发明内容
本发明提供一种软件完整性验证方法及系统,为了解决现有技术中的软件完整性验证方法都位于操作系统内部,依赖于操作系统的完整性,及现有技术的完整性验证方法缺乏通用性和兼容性的问题。
为实现上述目的,本发明提供一种软件完整性验证方法,包括以下步骤:
在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;
根据所述可执行文件的路径,获取所述可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;
根据所述指纹比对结果,对所述可执行文件进行完整性验证。
为实现上述目的,本发明还提供一种软件完整性验证系统,包括:
获取路径模块,用于在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;
比对模块,用于根据所述可执行文件的路径,获取所述的可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;
完整性验证模块,用于根据所述指纹比对结果,对所述可执行文件进行完整性验证。
本发明提供的软件完整性验证方法及系统,在虚拟监控器中实现软件完整性验证,独立于操作系统,不依赖于操作系统的完整性,增强了系统的安全性;本发明的技术方案在虚拟机监控器层实现,无需对操作系统内核做任何修改,可以支持各种操作系统,包括遗留操作系统和商用操作系统;而且所采用的系统调用机制是现有操作系统普遍采用的机制,因而具有通用性与兼容性;本发明的技术方案属于软件加载期的完整性验证方法,与文件系统完整性验证方法相比,减少了验证开销,而且不需要辅助硬件的支持,降低了成本,提高了性能。
附图说明
图1为本发明实施例一的软件完整性验证方法流程图;
图2为本发明实施例二的获取加载的可执行文件路径的流程图;
图3为本发明实施例三获取加载的可执行文件的路径的流程图;
图4为本发明实施例四获取加载的可执行文件的路径的流程图;
图5为本发明实施例五的软件完整性验证系统的结构图;
图6为本发明实施例六的软件完整性验证系统的结构图;
图7为本发明实施例七的软件完整性验证系统的结构图;
图8为本发明实施例八的软件完整性验证系统的结构图。
具体实施方式
下面结合附图和具体实施例进一步详细介绍本发明的技术方案。
本发明实施例提供一种软件完整性验证方法,用以解决软件完整性验证方法都基于操作系统内部,依赖于操作系统的完整性,及现有的完整性验证方法缺乏通用性和兼容性的问题。
图1为本发明实施例一的软件完整性验证方法流程图;具体包括如下步骤:
步骤100、在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;
本实施的软件完整性验证方法的实施,首先必须在操作系统下插入虚拟机监控器,在虚拟机监控器层实现对可执行文件的完整性验证。本实施例针对文件中的可执行文件进行完整性验证,即可执行代码或可执行软件;在现有操作系统中,可执行代码分为应用程序(Application);动态链接库(linux下也称为共享库);内核模块(windows下也称为驱动)三种类型。在这三种类型的可执行代码加载过程中,都会引发相应的系统调用,本发明实施例中通过在虚拟监控器中截获系统调用来获取可执行文件的路径。
步骤101、根据所述可执行文件的路径,获取所述可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;
具体地,根据所述可执行文件路径,在虚拟机镜像监控器中,首先访问虚拟机镜像的文件系统,然后将该可执行文件从虚拟机文件系统中读入内存;接着用哈希算法(如md5,sha1,sha256等)计算该位于内存中的可执行文件的哈希值。
然后将计算的可执行文件哈希值与软件指纹库中的软件指纹比对;需要说明的是,软件指纹库可以是事先自行建立软件指纹库,也可以从现有技术中直接获取;比如对于windows下的软件,可以直接从美国National SoftwareReference Library中导入软件指纹数据;对于linux下的软件,可以从各linux发行版获取。
计算的可执行文件哈希值与软件指纹库中的软件指纹比对,通常有以下三种情况:
(1)在指纹库中找到该软件的指纹,且两者匹配,记录比对结果为1;
(2)在指纹库中找到该软件的指纹,但是两者不匹配,记录比对结果为-1;
(3)未在指纹库中找到该软件指纹,记录比对结果为0。
未在指纹库中找到该软件指纹的可疑软件,通常为一些Oday病毒和攻击,Oday在网络安全领域是指尚未被官方发现或公布补丁的系统漏洞,也指新发明的病毒样本或攻击模式等。这些系统漏洞、病毒样本和攻击模式往往在杀毒软件或入侵检测系统尚未做出反应(例如杀毒软件厂商还未更新病毒数据库)前发起攻击或进行传播,从而对软件系统和网络造成严重危害,采用本实施例的软件完整性验证方法,在加载期对所有可执行文件进行进行严格验证,确保了软件系统以及网络的安全。
步骤102、根据所述指纹比对结果,对所述可执行文件进行完整性验证。
根据可执行文件哈希值与软件指纹库中的软件指纹比对结果为0,或1或-1,对所述可执行文件进行完整性验证,以进一步确定是否允许所述的可执行文件的运行,具体包含以下情况:
(a)如果收到的比对结果为1,说明该软件符合完整性要求,不做任何操作,允许该软件正常执行;
(b)如果收到的比对结果为-1,说明该软件不符合完整性要求,即已被篡改,拒绝该软件的运行;
(c)如果收到的比对结果为0,说明该软件为可疑软件,调用mail程序给安全管理员发email,由其做进一步处理。
本实施例提供的软件完整性验证方法,通过在操作系统下插入虚拟机监控器,在虚拟监控器中截获系统调用识别软件的加载;将软件完整性验证机制置于操作系统之外,即使恶意软件驻留甚至控制操作系统内核,也无法旁路或破坏底层的安全机制,恶意软件甚至无法意识到软件完整性验证机制的存在,增强了系统的安全性;在虚拟机监控器层实现软件的完整性验证,独立于操作系统,不依赖于操作系统的内核,具有更高的安全性,而且具有很好的通用性与兼容性。而且本实施例技术方案属于软件加载期的完整性验证方法,与文件系统完整性验证方法相比,减少了验证开销,而且不需要辅助硬件的支持,降低了成本,提高了性能。
本发明实施例二提供一种软件完整性验证方法,针对应用程序Execve类型的可执行文件所实现的完整性验证方法。
图2为本发明实施例二的获取加载的可执行文件路径的流程图;本实施例的可执行文件指的是应用程序文件,本实施例在虚拟机监控器中,通过截获上层操作系统的系统调用以获取加载的可执行文件路径,具体包括以下步骤:
步骤200、在虚拟机监控器中,在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
步骤201、获取所述可执行文件的加载的系统调用的参数;
步骤202、从所述可执行文件的加载的系统调用的参数中获取可执行文件路径。
具体地,首先在虚拟机监控器层截获系统调用,首先识别系统调用的功能,比如是open(文件打开)系统调用,或者应用程序加载系统调用,动态链接库加载系统调用及其引发的内存映射系统调用,内核模块加载系统调用及其引发的内存映射系统调用和内核模块初始化系统调用等等;操作系统中每个系统调用都由唯一的系统调用号所标识,系统调用号通常是一个整数,通常置于硬件寄存器中。在虚拟化技术中,虚拟机监控器通过寄存器数据结构来存储系统调用号。例如,windows操作系统和linux操作系统都通过EAX寄存器来存放系统调用号,在虚拟机监控器中可以方便地获取到各个寄存器的值。根据系统调用号唯一确定系统调用的功能后,根据系统调用号确定系统调用对应的进程为可执行文件的加载。例如:表一为Linux操作系统下的加载可执行文件时的系统调用名称及对应的系统调用号;表二为Windows一种操作系统下的加载可执行文件时的系统调用名称及对应的系统调用号。表一、表二仅为示例性说明,实际操作中每种操作系统可能对应不同的系统调用名称和系统调用号,但是都能根据相应系统调用号确定该系统调用的功能。
表一
  类型   系统调用名称   系统调用号
  应用程序   Execve   11
  动态链接库   Mmap with exec参数   192
  内核模块   Init_module   128
表二
  类型   系统调用名称   系统调用号
  应用程序   NtCreateProcess   47
  NTCreateSection   50
  动态链接库   NtMapViewOfSection   108
  内核模块   NtLoadDriver   97
然后通过其他的寄存器来获取该系统调用的参数。系统调用参数可以分为两种类型:一是传值方式;二是指针方式。对于传值方式,可以直接从寄存器中读出相应的参数值;对于指针方式,可以借助虚拟机监控器提供的内存访问函数来直接访问虚拟机操作系统内部的地址,获取该地址所存的内容。不同的操作系统中系统调用参数的传递方式可能不一样。以linux下的execve系统调用为例,其格式为:sys_execve(可执行程序路径,程序名,环境变量);其中指向可执行程序路径字符串的指针、程序名、环境变量分别存放在EBX,ECX,EDX中。可见Linux操作系统是按寄存器号依次存放系统调用参数的。而windows则采用堆栈的方式,在EDX中存放参数在堆栈中的偏移地址,从该偏移地址可以依次获取系统调用的各个参数。
获取到该可执行文件加载对应的系统调用的参数以后,对于应用程序Exceve的可执行文件,可以直接从系统调用的参数中获取可执行文件的路径。
获取到可执行文件的路径后,执行与实施例一步骤101、与步骤102相同的操作,确定加载的应用程序文件是完整的,还是被篡改的,或者是可疑的应用程序文件,以进一步指示是否允许该应用程序文件运行。
需要说明的是,不同的操作系统可能有完成不同功能的系统调用。即使两种操作系统中完成相同功能的两个系统调用,其系统调用的参数也很可能是不同的。但这并不妨碍通过截获系统调用的方法来识别软件加载,因为在软件加载过程中必然要执行系统调用,而现有操作系统都采用了系统调用机制,其原理是一样的,本实施例的系统调用截获方法的对各种操作系统都是适用的。
本实施例提供的软件完整性验证方法,实现应用程序Execve类型的可执行文件的完整性验证方法,在虚拟机监控器中截获系统调用,通过辨别系统调用号识别可执行文件加载,通过获取系统调用参数直接确定可执行文件的路径,进而对可执行文件进行验证;本实施例在虚拟机监控器实现软件的完整性验证,独立于操作系统,不依赖于操作系统的内核,具有更高的安全性,而且具有很好的通用性与兼容性;而且也不依赖于硬件的支持,减少额外开销。
本发明实施例三提供一种软件完整性验证方法,针对动态链接库类型的可执行文件所实现的完整性验证方法。
图3为本发明实施例三获取加载的可执行文件的路径的流程图;本实施例的可执行文件指的是动态链接库文件,linux下也称为共享库;如图3所示,本实施例在虚拟机监控器中,通过截获上层操作系统的系统调用以获取加载的可执行文件路径,具体包含以下步骤:
步骤300、在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
步骤301、获取所述加载可执行文件系统调用的参数,以获取打开可执行文件的系统调用返回的返回值;
步骤302、根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
具体地,本实施例的可执行文件为动态链接库文件,首先执行同实施例二相同的操作,在虚拟机监控器层截获系统调用,根据系统调用号识别系统调用的功能,识别可执行文件加载的系统调用,并获取系统调用参数,这里的识别系统调用的功能的方法同实施例二中根据系统调用号识别系统调用的功能相同,不再赘述;若加载的可执行文件是动态链接库类型,因为加载动态链接库文件通常会引发打开文件系统调用,即open系统调用,及内存映射系统调用,即Mmap系统调用,例如,当虚拟监控器截获到Mmap系统调用时,此时无法直接从获取的系统调用参数中直接获取动态链接库文件的路径,但是可以从Mmap系统调用的参数中获取打开动态链接库文件系统调用返回的返回值(简称为fd),然后根据该返回值fd向上寻找对应的打开动态链接库文件的系统调用进入,从打开动态链接库文件系统调用进入的参数中以获取动态链接库文件的路径。
所以本实施例应该还需要获取打开动态链接库文件的系统调用进入和打开动态链接库文件的系统调用返回所获取的系统调用参数,以方便的根据获取到的打开动态链接库文件的系统调用返回的返回值,向上寻找到对应的打开动态链接库文件的系统调用进入。
本实施例在虚拟机监控器中,截获打开动态链接库文件的系统调用进入,具体包含以下步骤:
步骤400、在虚拟机监控器中,截获打开所述可执行文件的系统调用;
步骤401、获取打开所述可执行文件的系统调用的参数及第一指令。
本实施例截获打开所述可执行文件的系统调用返回,具体包含以下步骤:
步骤500、在虚拟机监控器中,截获打开所述可执行文件的系统调用返回;
步骤501、获取打开所述可执行文件的系统调用返回的返回值及第二指令。
具体地,当打开文件的时候,虚拟机监控器层截获系统调用,系统调用第一次进入虚拟监控器,即系统调用进入,首先识别截获的系统调用的功能,同上述实施例二相同,根据系统调用号唯一确定系统调用的功能,根据系统调用号确定该系统调用为打开文件的系统调用,保存该打开文件的系统调用的参数,从中获取要打开的文件的路径的参数;实际操作中这里打开文件的系统调用包含打开可执行文件的系统调用,当然也可能包含有打开非可执行文件的系统调用,将所有的打开文件的系统调用的参数保存;同理打开文件系统调用返回的时候,此时已经执行完内核中系统调用处理程序,将返回用户空间,虚拟机监控器层再次截获系统调用,系统调用第二次进入虚拟监控器,即系统调用返回,然后获取系统调用返回的返回值。这样当加载动态链接库文件时候,可以根据获取到得系统调用返回值fd向上寻找到对应的打开该动态链接库文件的系统调用进入,获取对应系统调用进入的系统调用参数从而获取到动态链接库文件的路径参数。
但是,从虚拟机监控器的角度来看,系统调用进入与返回之间的执行过程是异步的。也就是说,在虚拟机监控器截获的系统调用进入,与接下来所截获的系统调用返回,很可能不是由同一条中断引发的。所以本实施例采用在打开文件发生系统调用,陷入中断的时候,虚拟监控器截获系统调用并获取第一指令,这里的第一指令指的是操作系统中保存的该打开文件系统调用对应的进程的下一条CPU指令,即next_eip。而且当打开文件系统调用返回,即中断返回时,虚拟监控器截获系统调用返回,并获取第二指令,这里的第二指令指的是操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令,即next_eip,通常情况下,如果系统调用进入和系统调用返回具有相同的下一条CPU指令,即next_eip,这说明这两者可能属于同一个系统调用。但是,不同的进程可能具有相同的下一条CPU指令值,即next_eip;根据第一指令等于第二指令,这样将获取的系统调用的返回值fd与多个系统调用进入之间建立关系;即打开该动态链接库文件的系统调用参数和系统调用返回值之间是多对一的映射关系;因为每一个打开该动态链接库文件的系统调用参数对应包含一个动态链接库文件的路径参数;所以一个系统调用返回值对应多个动态链接库文件的路径参数;仍然无法确定动态链接库文件的路径;本实施例还利用页目录基址寄存器,也称之为CR3寄存器,可以唯一标识了一个进程的页表空间,因此可以用来唯一标识一个进程,再结合上面映射关系,可以识别同一个系统调用的进入和返回,进而可以确定该动态链接库文件的路径。
下面以获取linux中动态链接库的文件路径为例介绍本实施例中获取所述可执行文件的路径的方法。
(1)打开文件时截获系统调用,获取系统调用参数,从系统调用参数中获取文件路径参数,用hash表记录文件路径参数和返回值(文件描述符)间的关系:
步骤一:系统调用进入时;
        设置set(CR3,next_eip)->file path
步骤二:系统调用返回时;
        获取get(CR3,next_eip)=path
        设置set(fd,CR3)->path
CR3为页目录基址寄存器,fd为系统调用返回的返回值。
(2)当截获到sys_mmap系统调用且指定了可执行参数时(说明加载了动态链接库)。
通过sys_mmap系统调用参数中的系统调用返回值fd,结合进程标识CR3,就可以获得动态链接库文件路径,即get(CR3,fd)=path。
获取到可执行文件的路径后,执行与实施例一步骤101、与步骤102相同的操作,确定加载的动态链接库文件是正常的,还是被篡改的,或者是可疑的动态链接库文件文件,以进一步指示是否允许该动态链接库文件运行。
本实施例提供的软件完整性验证方法,实现动态链接库类型的可执行文件的完整性验证方法,在虚拟机监控器中通过“顺藤摸瓜”的逻辑层次分析,获取可执行文件的路径,进而对可执行文件进行验证与执行;本实施例在虚拟机监控器实现软件的完整性验证,独立于操作系统,不依赖于操作系统的内核,具有更高的安全性,而且具有很好的通用性与兼容性;而且也不依赖于硬件的支持,减少额外开销。
本发明实施例四提供一种软件完整性验证方法,针对内核模块类型的可执行文件所实现的完整性验证方法。
图4为本发明实施例四获取加载的可执行文件的路径的流程图;本实施例的可执行文件指的是内核模块文件,windows下也称为驱动,如图4所示,本实施例在虚拟机监控器中,通过截获上层操作系统的系统调用以获取加载的可执行文件路径,具体包含以下步骤:
步骤600、在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
步骤601、获取加载可执行文件的系统调用的参数;以获取所述可执行文件在内存中的映射地址;
步骤602、根据可执行文件在内存中的映射地址并结合用于唯一标识一个进程的页目录基址寄存器,确定与所述内存映射地址对应的内存映射系统调用;
步骤603、获取所述内存映射系统调用的参数,以获取打开可执行文件系统调用返回的返回值;
步骤604、根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
具体地,首先执行同实施例二相同的操作,在虚拟机监控器层截获系统调用,根据系统调用号识别系统调用的功能,识别可执行文件加载的系统调用,并获取系统调用参数,这里的识别系统调用的功能的方法同实施例二中根据系统调用号识别系统调用的功能相同,不再赘述;若加载的可执行文件是内核模块文件时,因为加载内核模块时通常会引发打开文件系统调用,即open系统调用,内存映射系统调用,即Mmap系统调用,以及内核模块初始化系统调用,即Init_module系统调用等系统调用;当虚拟监控器截获到Init_module系统调用时,无法直接从获取的系统调用参数中直接获取内核模块文件的路径,但是可以从Init_module系统调用的参数中获取到内核模块文件在内存中的映射地址(简称为addr)参数;因为addr恰好是加载该内核模块时引发的Mmap系统调用返回的返回值;所以当截获到Init_module系统调用后,然后根据获取到的addr,寻找对应加载该内核模块时所引发的MMap系统调用的MMap系统调用进入,但是从虚拟机监控器的角度来看,系统调用进入与返回之间的执行过程是异步的。也就是说,在虚拟机监控器截获的系统调用进入,与接下来所截获的系统调用返回,很可能不是由同一条中断引发的,所以可以借助页目录基址寄存器,即CR3寄存器,可以唯一标识了一个进程的页表空间,因此可以用来唯一标识一个进程,再结合addr,可以确定返回值是addr的对应加载该内核模块所引发的MMap系统调用进入,获取该MMap系统调用的系统调用参数,再从该MMap系统调用的系统调用参数中,获取打开该内核模块的系统调用返回的返回值fd,然后再根据fd去确定打开可执行文件的系统调用,此过程同上述实施例三相同,不再赘述;找到对应fd的系统调用进入以后,便可获取到该系统调用进入的参数,再从获取到的系统调用参数中获取该内核模块文件的路径。
本实施例需要在初始化内核模块文件之前,在虚拟机监控器中,截获打开内核模块文件的系统调用进入,获取打开对应的内核模块文件系统调用进入的系统调用参数及第一指令;还需要截获打开所述可执行文件的系统调用返回,并获取打开所述内核模块文件的系统调用返回的返回值fd及第二指令。具体实现过程同实施例三,这里不再赘述;需要说明的是:本实施例还需要截获加载该内核模块所引发的MMap系统调用,并获取MMap系统调用进入的系统调用参数,该MMap系统调用参数中包含有打开该内核模块系统调用返回的返回值fd,同理还需要截获该MMap系统调用返回,并获取MMap系统调用返回的返回值,该返回值为内核模块文件在内存中的映射地址addr,而在Init_module系统调用中,该内核模块文件在内存中的映射地址addr正好是Init_module系统调用的系统调用参数中的第一个参数,所以在截获Init_module系统调用中,通过获取该Init_module系统调用参数,可以获得该内核模块文件在内存中的映射地址addr,进而确定加载该内核模块所引发的MMap系统调用,然后从MMap系统调用参数中获取的打开该内核模块系统调用返回的返回值fd,再向上寻找对应打开该内核模块的系统调用进入,并获取对应打开该内核模块的系统调用的参数,以获取该内核模块的路径。
获取到内核模块的路径后,接下来执行与实施例一步骤101、与步骤102相同的操作,确定加载的内核模块是正常的,还是被篡改的,或者是可疑的内核模块文件,以进一步指示是否允许该内核模块文件运行。
本实施例提供的软件完整性验证方法,实现内核模块类型的可执行文件的完整性验证方法,在虚拟机监控器中通过“顺藤摸瓜”的逻辑层次分析,获取可执行文件的路径,进而对可执行文件进行验证;本实施例在虚拟机监控器实现软件的完整性验证,独立于操作系统,不依赖于操作系统的内核,具有更高的安全性,而且具有很好的通用性与兼容性;而且也不依赖于硬件的支持,减少额外开销。
以上实施例一至实施例四提供的软件完整性验证方法,都可以对可执行软件进行安全验证,最终使得可信安全的可执行软件运行,阻止被篡改的不可信软件的运行,对于可疑软件也能有效检测,以提示用户做进一步的处理。
需要说明的是:以上四个实施例中,确定完可执行文件的路径后,都执行步骤101操作,根据所述可执行文件路径,确定所述的可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;当可执行文件的哈希值与指纹库中的软件指纹不一致,也就是可执行文件被篡改的情况下,可以采用将可执行文件的系统调用的参数修改为非法值。这样,系统调用进入操作系统时会因为传入的非法参数而导致失败,从而拒绝该软件的运行,可以有效的阻址被篡改的恶意软件的加载。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例五提供一种软件完整性验证系统,用以解决软件完整性验证方法都基于操作系统内部,依赖于操作系统的完整性,及现有的完整性验证方法缺乏通用性和兼容性的问题。
图5为本发明实施例五的软件完整性验证系统的结构图;如图5所示,本实施例的软件完整性验证系统,包括获取路径模块11,比对模块12和完整性验证模块13,获取路径模块11用于在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;比对模块12,用于根据所述可执行文件的路径,获取所述的可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;完整性验证模块13,用于根据所述指纹比对结果,对所述可执行文件进行完整性验证。
本实施例的各模块之间的实现其功能的机制与本发明实施例一的软件完整性验证方法的实现过程相同,不再赘述。
本实施例提供的软件完整性验证系统,通过在操作系统下插入虚拟机监控器,虚拟监控器实现软件的完整性验证;将软件完整性验证机制置于操作系统之外,即使恶意软件驻留甚至控制操作系统内核,也无法旁路或破坏底层的安全机制,恶意软件甚至无法意识到软件完整性验证机制的存在,增强了系统的安全性;在虚拟机监控器层实现软件的完整性验证,独立于操作系统,不依赖于操作系统的内核,具有更高的安全性,而且具有很好的通用性与兼容性。
图6为本发明实施例六的软件完整性验证系统的结构图;本实施例的软件完整性验证系统主要针对应用程序Execeve类型的可执行文件实现其完整性验证。如图6所示,同上述实施例五相比,本实施例的软件完整性验证系统中的获取路径模块11,进一步包含第一单元,第二单元;第一单元用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用,以获取所述加载可执行文件的系统调用的参数;第二单元用于从所述加载可执行文件的系统调用的参数中获取可执行文件路径。对应各模块及各单元之间的实现其功能的机制与本发明实施例二的软件完整性验证方法的实现过程相同,不再赘述。
图7为本发明实施例七的软件完整性验证系统的结构图;本实施例的软件完整性验证系统主要针对动态链接库类型的可执行文件实现其完整性验证,如图7所示,同上述实施例五相比,本实施例的软件完整性验证系统中的获取路径模块11,进一步包含有第三单元,第四单元;第三单元用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;并获取所述加载可执行文件系统调用的参数,以获取打开可执行文件的系统调用返回的返回值;第四单元用于根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以确定所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。对应各模块及各单元之间的实现其功能的机制与本发明实施例三的软件完整性验证方法的实现过程相同,不再赘述。
图8为本发明实施例八的软件完整性验证系统的结构图;本实施例的软件完整性验证系统主要针对内核模块类型的可执行文件实现其完整性验证,如图8所示,同上述实施例五相比,本实施例的软件完整性验证系统中的获取路径模块11,进一步包含有第五单元,第六单元,第七单元,第八单元;第五单元用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用,并获取加载可执行文件的系统调用的参数;以获取所述可执行文件在内存中的映射地址;第六单元用于根据可执行文件在内存中的映射地址并结合用于唯一标识一个进程的页目录基址寄存器,确定与所述内存映射地址对应的内存映射系统调用;第七单元用于获取所述内存映射系统调用的参数,以获取打开可执行文件系统调用返回的返回值;第八单元用于根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以确定所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。对应各模块及各单元之间的实现其功能的机制与本发明实施例四的软件完整性验证方法的实现过程相同,不再赘述。
需要说明的是:对于动态链接库和内核模块类型的可执行文件实现其完整性验证,软件完整性验证系统中的获取路径模块11,还可以进一步包含有第九单元和第十单元,第九单元用于在虚拟机监控器中,截获打开所述可执行文件的系统调用;获取打开所述可执行文件的系统调用的参数;从所述打开可执行文件的系统调用的参数中获取所述可执行文件路径的参数及第一指令;第十单元用于在虚拟机监控器中,截获打开所述可执行文件的系统调用返回;获取打开所述可执行文件的系统调用返回的返回值及第二指令。
需要说明的是:比对模块12还包括第十一单元,第十一单元用于若所述可执行文件的哈希值与指纹库中的软件指纹不一致,将所述可执行文件的系统调用的参数修改为非法值。这样,系统调用进入操作系统时会因为传入的非法参数而导致失败,从而拒绝该软件的运行,可以有效的阻止恶意软件的加载。
结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1、一种软件完整性验证方法,其特征在于,包括以下步骤:
在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;
根据所述可执行文件的路径,获取所述可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;
根据所述指纹比对结果,对所述可执行文件进行完整性验证。
2、根据权利要求1所述的软件完整性验证方法,其特征在于,所述获取加载的可执行文件的路径,包括:
在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
获取所述加载可执行文件的系统调用的参数;
从所述加载可执行文件的系统调用的参数中获取可执行文件路径。
3、根据权利要求1所述的软件完整性验证方法,其特征在于,所述获取加载的可执行文件的路径,包括:
在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
获取所述加载可执行文件系统调用的参数,以获取打开可执行文件的系统调用返回的返回值;
根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
4、根据权利要求1所述的软件完整性验证方法,其特征在于,所述获取加载的可执行文件的路径,包括:
在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;
获取加载可执行文件的系统调用的参数;以获取所述可执行文件在内存中的映射地址;
根据可执行文件在内存中的映射地址并结合用于唯一标识一个进程的页目录基址寄存器,确定与所述内存映射地址对应的内存映射系统调用;
获取所述内存映射系统调用的参数,以获取打开可执行文件系统调用返回的返回值;
根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
5、根据权利要求3或4所述的软件完整性验证方法,其特征在于,获取所述打开可执行文件系统调用的参数及所述第一指令,通过以下步骤获取:
在虚拟机监控器中,截获打开所述可执行文件的系统调用;
获取打开所述可执行文件的系统调用的参数及第一指令;
获取所述的打开文件系统调用返回的返回值及所述第二指令,通过以下步骤获取:
在虚拟机监控器中,截获打开所述可执行文件的系统调用返回;
获取打开所述可执行文件的系统调用返回的返回值及第二指令。
6、根据权利要求1至4任一项所述的软件完整性验证方法,其特征在于,将所述可执行文件的哈希值与指纹库中的软件指纹比对后,还包括:
若所述可执行文件的哈希值与指纹库中的软件指纹不一致,将所述可执行文件的系统调用的参数修改为非法值。
7、一种软件完整性验证系统,其特征在于,包括:
获取路径模块,用于在虚拟机监控器中,通过截获上层操作系统的系统调用,以获取加载的可执行文件的路径;
比对模块,用于根据所述可执行文件的路径,获取所述可执行文件的哈希值;并将所述可执行文件的哈希值与指纹库中的软件指纹比对;
完整性验证模块,用于根据所述指纹比对结果,对所述可执行文件进行完整性验证。
8、根据权利要求7所述的软件完整性验证系统,其特征在于,所述获取路径模块,包含:
第一单元,用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用,以获取所述加载可执行文件的系统调用的参数;
第二单元,用于从所述加载可执行文件的系统调用的参数中获取可执行文件路径。
9、根据权利要求7所述的软件完整性验证系统,其特征在于,所述获取路径模块,包含:
第三单元,用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;并获取所述加载可执行文件系统调用的参数,以获取打开可执行文件的系统调用返回的返回值;
第四单元,用于根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
10、根据权利要求7所述的软件完整性验证系统,其特征在于,所述获取路径模块,包含:
第五单元,用于在虚拟机监控器中,截获上层操作系统的加载可执行文件的系统调用;并获取加载可执行文件的系统调用的参数;以获取所述可执行文件在内存中的映射地址;
第六单元,用于根据可执行文件在内存中的映射地址并结合用于唯一标识一个进程的页目录基址寄存器,确定与所述内存映射地址对应的内存映射系统调用;
第七单元,用于获取所述内存映射系统调用的参数,以获取打开可执行文件系统调用返回的返回值;
第八单元,用于根据所述打开可执行文件系统调用返回的返回值,并取第一指令等于第二指令,再结合用于唯一标识一个进程的页目录基址寄存器,确定对应所述返回值的打开所述可执行文件的系统调用,获取打开所述可执行文件的系统调用的参数,以获取所述可执行文件的路径;所述第一指令为操作系统中保存的对应打开所述可执行文件系统调用的进程的下一条CPU指令,所述第二指令为操作系统中的对应打开所述可执行文件系统调用返回后当前进程的下一条CPU指令。
CN 200910087986 2009-06-29 2009-06-29 软件完整性验证方法及系统 Expired - Fee Related CN101593259B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910087986 CN101593259B (zh) 2009-06-29 2009-06-29 软件完整性验证方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910087986 CN101593259B (zh) 2009-06-29 2009-06-29 软件完整性验证方法及系统

Publications (2)

Publication Number Publication Date
CN101593259A true CN101593259A (zh) 2009-12-02
CN101593259B CN101593259B (zh) 2011-03-23

Family

ID=41407910

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910087986 Expired - Fee Related CN101593259B (zh) 2009-06-29 2009-06-29 软件完整性验证方法及系统

Country Status (1)

Country Link
CN (1) CN101593259B (zh)

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004879A (zh) * 2010-11-22 2011-04-06 北京北信源软件股份有限公司 一种识别可信任进程的方法
CN103268440A (zh) * 2013-05-17 2013-08-28 广东电网公司电力科学研究院 可信内核动态完整性度量方法
CN103377328A (zh) * 2012-04-30 2013-10-30 通用电气公司 用于控制工业控制系统的文件执行的系统和方法
CN103425118A (zh) * 2012-05-16 2013-12-04 费希尔-罗斯蒙特系统公司 用于识别过程控制系统的完整性降级的方法和装置
CN103593617A (zh) * 2013-10-27 2014-02-19 西安电子科技大学 基于vmm的软件完整性校验系统及其方法
CN104063661A (zh) * 2014-06-09 2014-09-24 来安县新元机电设备设计有限公司 一种计算机软件安全防护方法
CN104063669A (zh) * 2014-06-26 2014-09-24 浪潮电子信息产业股份有限公司 一种实时监测文件完整性的方法
CN104573490A (zh) * 2013-10-29 2015-04-29 桂林电子科技大学 Android平台上已安装软件保护方法
CN104751057A (zh) * 2015-03-13 2015-07-01 安一恒通(北京)科技有限公司 一种用于增强计算机系统安全性的方法及装置
CN104751050A (zh) * 2015-04-13 2015-07-01 成都睿峰科技有限公司 一种客户端应用程序管理方法
CN105243320A (zh) * 2015-10-26 2016-01-13 上海易码信息科技有限公司 云端服务平台对移动应用程序的认证方法
CN106022120A (zh) * 2016-05-24 2016-10-12 北京金山安全软件有限公司 文件监控处理方法、装置及电子设备
CN106126116A (zh) * 2016-06-16 2016-11-16 北京航空航天大学 一种虚拟机镜像文件的完整性度量优化方法
CN106203179A (zh) * 2016-07-12 2016-12-07 何晓行 一种对文件的完整性校验系统及方法
CN106775929A (zh) * 2016-11-25 2017-05-31 中国科学院信息工程研究所 一种虚拟化平台安全监控方法及系统
CN107545181A (zh) * 2017-08-16 2018-01-05 上海策赢网络科技有限公司 程序运行方法、终端及计算机可读存储介质
CN107800536A (zh) * 2016-08-30 2018-03-13 Ncr公司 安全进程模仿检测
CN108256351A (zh) * 2018-01-08 2018-07-06 网易(杭州)网络有限公司 文件处理方法和装置、存储介质及终端
CN108345786A (zh) * 2018-01-17 2018-07-31 中国人民解放军战略支援部队信息工程大学 硬件协助的软件控制流完整性远程证明方法
CN108733843A (zh) * 2018-05-29 2018-11-02 厦门市美亚柏科信息股份有限公司 基于哈希算法的文件检测方法和样本哈希库生成方法
CN109697358A (zh) * 2018-11-05 2019-04-30 国网浙江省电力有限公司 基于虚拟化的应用可信保障方法
CN110245464A (zh) * 2018-10-10 2019-09-17 爱信诺征信有限公司 保护文件的方法和装置
CN110598378A (zh) * 2019-08-01 2019-12-20 华为技术有限公司 全局偏移表度量方法、动态度量方法及相关装置、设备
CN111914250A (zh) * 2020-08-18 2020-11-10 中科方德软件有限公司 一种Linux系统脚本程序运行时验证与管控方法
US11496317B2 (en) 2016-01-21 2022-11-08 Hewlett Packard Enterprise Development Lp Software validation for untrusted computing systems

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9705775B2 (en) * 2014-11-20 2017-07-11 Telefonaktiebolaget Lm Ericsson (Publ) Passive performance measurement for inline service chaining
US9838286B2 (en) 2014-11-20 2017-12-05 Telefonaktiebolaget L M Ericsson (Publ) Passive performance measurement for inline service chaining

Cited By (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004879A (zh) * 2010-11-22 2011-04-06 北京北信源软件股份有限公司 一种识别可信任进程的方法
CN102004879B (zh) * 2010-11-22 2012-12-26 北京北信源软件股份有限公司 一种识别可信任进程的方法
CN103377328A (zh) * 2012-04-30 2013-10-30 通用电气公司 用于控制工业控制系统的文件执行的系统和方法
CN103425118A (zh) * 2012-05-16 2013-12-04 费希尔-罗斯蒙特系统公司 用于识别过程控制系统的完整性降级的方法和装置
CN103268440A (zh) * 2013-05-17 2013-08-28 广东电网公司电力科学研究院 可信内核动态完整性度量方法
CN103593617B (zh) * 2013-10-27 2016-08-17 西安电子科技大学 基于vmm的软件完整性校验系统及其方法
CN103593617A (zh) * 2013-10-27 2014-02-19 西安电子科技大学 基于vmm的软件完整性校验系统及其方法
CN104573490A (zh) * 2013-10-29 2015-04-29 桂林电子科技大学 Android平台上已安装软件保护方法
CN104063661A (zh) * 2014-06-09 2014-09-24 来安县新元机电设备设计有限公司 一种计算机软件安全防护方法
CN104063669A (zh) * 2014-06-26 2014-09-24 浪潮电子信息产业股份有限公司 一种实时监测文件完整性的方法
CN104751057A (zh) * 2015-03-13 2015-07-01 安一恒通(北京)科技有限公司 一种用于增强计算机系统安全性的方法及装置
CN104751057B (zh) * 2015-03-13 2018-08-24 安一恒通(北京)科技有限公司 一种用于增强计算机系统安全性的方法及装置
CN104751050A (zh) * 2015-04-13 2015-07-01 成都睿峰科技有限公司 一种客户端应用程序管理方法
CN105243320A (zh) * 2015-10-26 2016-01-13 上海易码信息科技有限公司 云端服务平台对移动应用程序的认证方法
US11496317B2 (en) 2016-01-21 2022-11-08 Hewlett Packard Enterprise Development Lp Software validation for untrusted computing systems
CN106022120A (zh) * 2016-05-24 2016-10-12 北京金山安全软件有限公司 文件监控处理方法、装置及电子设备
CN106126116A (zh) * 2016-06-16 2016-11-16 北京航空航天大学 一种虚拟机镜像文件的完整性度量优化方法
CN106203179B (zh) * 2016-07-12 2019-06-18 何晓行 一种对文件的完整性校验系统及方法
CN106203179A (zh) * 2016-07-12 2016-12-07 何晓行 一种对文件的完整性校验系统及方法
CN107800536A (zh) * 2016-08-30 2018-03-13 Ncr公司 安全进程模仿检测
CN106775929A (zh) * 2016-11-25 2017-05-31 中国科学院信息工程研究所 一种虚拟化平台安全监控方法及系统
CN106775929B (zh) * 2016-11-25 2019-11-26 中国科学院信息工程研究所 一种虚拟化平台安全监控方法及系统
CN107545181B (zh) * 2017-08-16 2021-04-27 上海策赢网络科技有限公司 程序运行方法、终端及计算机可读存储介质
CN107545181A (zh) * 2017-08-16 2018-01-05 上海策赢网络科技有限公司 程序运行方法、终端及计算机可读存储介质
CN108256351A (zh) * 2018-01-08 2018-07-06 网易(杭州)网络有限公司 文件处理方法和装置、存储介质及终端
CN108345786A (zh) * 2018-01-17 2018-07-31 中国人民解放军战略支援部队信息工程大学 硬件协助的软件控制流完整性远程证明方法
CN108733843A (zh) * 2018-05-29 2018-11-02 厦门市美亚柏科信息股份有限公司 基于哈希算法的文件检测方法和样本哈希库生成方法
CN108733843B (zh) * 2018-05-29 2021-01-12 厦门市美亚柏科信息股份有限公司 基于哈希算法的文件检测方法和样本哈希库生成方法
CN110245464A (zh) * 2018-10-10 2019-09-17 爱信诺征信有限公司 保护文件的方法和装置
CN110245464B (zh) * 2018-10-10 2021-08-27 爱信诺征信有限公司 保护文件的方法和装置
CN109697358A (zh) * 2018-11-05 2019-04-30 国网浙江省电力有限公司 基于虚拟化的应用可信保障方法
CN110598378A (zh) * 2019-08-01 2019-12-20 华为技术有限公司 全局偏移表度量方法、动态度量方法及相关装置、设备
CN110598378B (zh) * 2019-08-01 2023-07-18 华为技术有限公司 全局偏移表度量方法、动态度量方法及相关装置、设备
CN111914250A (zh) * 2020-08-18 2020-11-10 中科方德软件有限公司 一种Linux系统脚本程序运行时验证与管控方法
CN111914250B (zh) * 2020-08-18 2022-05-17 中科方德软件有限公司 一种Linux系统脚本程序运行时验证与管控方法

Also Published As

Publication number Publication date
CN101593259B (zh) 2011-03-23

Similar Documents

Publication Publication Date Title
CN101593259B (zh) 软件完整性验证方法及系统
US9565214B2 (en) Real-time module protection
US9530001B2 (en) System and method for below-operating system trapping and securing loading of code into memory
Jian et al. A defense method against docker escape attack
CN107066311B (zh) 一种内核数据访问控制方法与系统
JP5326062B1 (ja) 非実行ファイル検査装置及び方法
US8650642B2 (en) System and method for below-operating system protection of an operating system kernel
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9032525B2 (en) System and method for below-operating system trapping of driver filter attachment
JP5265061B1 (ja) 悪意のあるファイル検査装置及び方法
US20130312099A1 (en) Realtime Kernel Object Table and Type Protection
JP6909770B2 (ja) ウィルス対策レコードを作成するシステムと方法
KR20140033349A (ko) 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
Nikiforakis et al. HeapSentry: Kernel-assisted protection against heap overflows
CN104200162A (zh) 信息安全监控与防御的计算机程序产品及其方法
RU2460133C1 (ru) Система и способ защиты компьютерных приложений
Grill et al. A practical approach for generic bootkit detection and prevention
Li et al. Kernel malware core implementation: A survey
CN113569240A (zh) 恶意软件的检测方法、装置及设备
EP2720170B1 (en) Automated protection against computer exploits
KR101421630B1 (ko) 코드 인젝션된 악성코드 탐지 시스템 및 방법
Krishnan et al. PAM: process authentication mechanism for protecting system services against malicious code attacks
Gorter et al. Enviral: Fuzzing the Environment for Evasive Malware Analysis
Wampler et al. A method for detecting linux kernel module rootkits
US20230297673A1 (en) Detecting a harmful file using a database of vulnerable drivers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110323

Termination date: 20130629