CN105205391A - 一种基于完整性验证的净室实时监控方法 - Google Patents
一种基于完整性验证的净室实时监控方法 Download PDFInfo
- Publication number
- CN105205391A CN105205391A CN201510670209.3A CN201510670209A CN105205391A CN 105205391 A CN105205391 A CN 105205391A CN 201510670209 A CN201510670209 A CN 201510670209A CN 105205391 A CN105205391 A CN 105205391A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- server
- program
- absorbed
- function
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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
- G06F21/53—Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于完整性验证的净室实时监控方法,通过对用户虚拟机的完整性检测和对用户程序的完整性验证,来保证虚拟机的安全。对用虚拟机的监控主要是监控虚拟机的进程、内核模块以及动态库的完整性,通过实时监测虚拟机的运行状态来保证虚拟机不被篡改,彻底的阻止了用户未经授权的行为,保证云计算环境下的用户虚拟机的安全运行,并且保护虚拟机中应用程序的安全。
Description
技术领域
本发明属于计算机科学与技术领域,特别涉及一种基于完整性验证的净室实时监控方法。
背景技术
在云计算飞速发展的今天,数据的安全问题越来越严重,在使用净室保证计算安全的同时,使用净室保证用户程序的安全性也是一项重要的任务。目前实现应用程序的监控和数据的检测技术已经发展地非常丰富。然而对于虚拟机运行中的完整性检测仍然不够完善。在远程服务器上,由于应用程序难以管理,以及网络传输的不安全,可能导致用户程序或者虚拟机被篡改,一旦这些被篡改过的程序进入到净室,就会泄露用户的隐私,甚至造成服务器崩溃等诸多问题,我们需要一种净室实时监控技术,通过该技术能够实时监控虚拟机的运行状态,保证虚拟机的完整和安全,并在此基础上,对进入虚拟机运行的应用程序进行监测,保证程序的合法运行,从而保障虚拟机和用户程序运行环境的安全。
净室实时监控技术是在净室云计算的基础上实施的,在净室云理论中计算执行环境分为“服务态”和“净室态”,用户签订安全服务协议后执行环境就会切换到净室态,净室态的执行环境只面向该用户开放。
通常在虚拟机的监控方法都是基于主机的完整性检测,这种方法是采用在主机上安装监控软件,当用户程序和监控软件同时运行时,通过监控软件来记录程序运行状态,从而检验程序是否被篡改。目前典型的技术是完整性度量架构,在该技术执行下,操作***会从内核初始化开始,对运行在操作***上的应用程序和内核模块进行实时验证。由于这种架构不能防止攻击者对安全列表的修改,需要采用远程验证来检测列表是否被修改,因此这种方法所存在的问题是完整性度量软件和用户程序同时运行在同一环境下,这就会导致度量软件的暴露,攻击者很有可能通过攻击度量软件和度量列表来破坏完整性度量。
发明内容
本发明提供了一种对用户虚拟机的净室实时监控方法,来阻止用户未经授权的行为,保证云计算环境下的用户虚拟机的安全运行,并且保护虚拟机中应用程序的安全。
一种基于完整性验证的净室实时监控方法,包括以下几个步骤:
步骤1:在服务器上安装可信虚拟监视器,利用所述可信虚拟监视器提取服务器初始数据,并计算服务器初始数据的哈希函数值,将服务器初始数据以其对应的哈希函数值备份到服务器中的可信列表中;
所述服务器初始数据包括服务器的***文件和进程数据;所述***文件包括文件类型、文件名和文件大小;进程数据包括该进程的进程名、线程数量和线程峰值数量;
所述可信列表用于保存可信任的***数据、可信任的虚拟机信息以及可信任的用户程序信息;
步骤2:在可信虚拟监视器中安装虚拟机陷入程序,利用虚拟机陷入程序的sh_page_fault函数获得陷入可信虚拟监视器的虚拟机的进程、内核模块及动态库;
所述虚拟机陷入程序的安装是通过将Vmx.c文件中的vmx_vmexit_handler函数的返回地址修改为非法地址完成;
步骤3:在可信虚拟机中运行完整性测量代理,对步骤2获取的虚拟机完整性进行测量,如果虚拟机完整,则进入步骤4,否则,返回步骤2,等待虚拟机陷入程序获取陷入可信虚拟监视器的虚拟机;
所述完整性测量代理是可信虚拟管理器中的组件;
步骤4:计算步骤2所获取的虚拟机的进程、内核模块和动态库的哈希值,并与步骤1所述可信列表中的数据进行比对;
若该虚拟机对应的哈希值存在于可信列表中,则continue函数修改guest_rip为原来的地址使虚拟机正常运行,进入步骤5,否则,调用kill函数终止虚拟机的运行,返回步骤2,等待虚拟机陷入程序获取陷入可信虚拟监视器的虚拟机;
步骤5:在终端安装应用程序监视器,截获用户程序产生的***调用,得到传递给***调用的全部参数;
步骤6:在终端运行完整性测量代理,对步骤5所获取程序的事件类型、事件参数、运行程序的指令计算哈希值;
步骤7:使用netlink创建套接字将步骤6得到的哈希值数据发送到服务器,与服务器的可信列表中的项进行比对;
若步骤5截获的程序对应的哈希值存在于服务器的可信列表中,则调用continue函数继续用户进程执行,并允许用户进程进入步骤2所述虚拟机中运行,否则调用TerminateProcess函数终止程序的运行。
有益效果
本发明提供了一种基于完整性验证的净室实时监控方法,通过对用户虚拟机的完整性检测和对用户程序的完整性验证,来保证虚拟机的安全。对用虚拟机的监控主要是监控虚拟机的进程、内核模块以及动态库的完整性,通过实时监测虚拟机的运行状态来保证虚拟机不被篡改,彻底的阻止了用户未经授权的行为,保证云计算环境下的用户虚拟机的安全运行,并且保护虚拟机中应用程序的安全。
附图说明
图1为本发明所述方法的流程图;
图2为服务器监控模型图;
图3为终端监控模型图。
具体实施方式
下面结合具体实例和说明书附图对本发明做进一步的说明。
在本实例中远程服务器使用Ubuntul4.04作为操作***,数据库为MySQL。客户端为Windows7操作***的台式机。本实例服务器装备了能够远程出发***管理终端的频带外信道,利用***管理模式、智能平台管理接口以及底板管理控制器,客户端通过远程认证的方式对虚拟机的运行过程进行动态完整性检测。
一种基于完整性验证的净室实时监控方法,如图1所示,包括以下步骤:
步骤1:在服务器上安装可信虚拟监视器,利用所述可信虚拟监视器提取服务器初始数据,并计算服务器初始数据的哈希函数值,将服务器初始数据以其对应的哈希函数值备份到服务器中的可信列表中;服务器监控模型如图2所示;
所述服务器初始数据包括服务器的***文件和进程数据;所述***文件包括文件类型、文件名和文件大小;进程数据包括该进程的进程名、线程数量和线程峰值数量;
所述可信列表用于保存可信任的***数据、可信任的虚拟机信息以及可信任的用户程序信息;
通过调用以下函数来获取服务器信息。
GetDriveType(lpRootPathName:PChar):UINT;返回指定驱动器的类型。
GetDiskFreeSpace(lpRootPathName:PChar;varlpSectorsPerCluster,lpBytesPerSector,lpNumberOfFreeClusters,lpTotalNumberOfClusters:DWORD):BOOL;返回指定驱动器的总簇数、剩余簇数及每簇扇区数、每扇区字节数,从而可以计算出总容量和剩余空间。
步骤2:在可信虚拟监视器中安装虚拟机陷入程序,利用虚拟机陷入程序的sh_page_fault函数获得陷入可信虚拟监视器的虚拟机的进程、内核模块及动态库;
所述虚拟机陷入程序的安装是通过将Vmx.c文件中的vmx_vmexit_handler函数的返回地址修改为非法地址完成;
虚拟机陷入程序的安装方法:打开Vmx.c文件并修改vmx_vmexit_handler函数中的返回地址为非法地址。然后在sh_page_fault函数获取陷入虚拟机的进程、内核模块、动态库。
在本实例中可信虚拟监视器采用Xen,用户要获取虚拟机的信息,只需要通过Xencontrol和Xenstore这两个接口就能获得虚拟机的信息。
Xencontrol是Xen提供的控制接口,该接口只能被Dom0使用,用于帮助Dom0控制和管理其他的Domain。通过Xencontrol,Dom0不仅能够创建、销毁、Domain,控制Domain的运行、暂停、恢复以及迁移,还能够实现对其他Domain的CPU调度、内存分配以及设备访问。
XenStore是Xen提供的一个域间共享的存储***,它以字符串形式存放了管理程序和前、后端驱动程序的配置信息。XenStore的存储结构类似于Dom树:每一个节点(Node)有一个字符串值(Value),并且可以有多个子节点。xenstored在根(/)下有三个子目录,vm,local(实际上是/local/domain)和tool。vm存放虚拟机管理信息。tool暂时没有数据。而/local/domain存放了活动虚拟机配置和驱动信息。
步骤3:在可信虚拟机中运行完整性测量代理,对步骤2获取的虚拟机完整性进行测量,如果虚拟机完整,则进入步骤4,否则,返回步骤2;
本实例实施中,服务器运行三个虚拟机分别为test0,test1,test2;其中test0和test1是完整的,test2缺少config.xml(虚拟机的硬件配置),依次运行三个虚拟机,test0和test1正常运行,test2无法运行;
步骤4:计算步骤2所获取的虚拟机的进程、内核模块和动态库的哈希值,并与步骤1所述可信列表中的数据进行比对;
若该虚拟机对应的哈希值存在于可信列表中,则continue函数修改guest_rip为原来的地址使虚拟机正常运行,进入步骤5,否则,调用kill函数终止虚拟机的运行,返回步骤2;
kill函数说明:
intkill(pid_tpid,intsig);
kill()可以用来发送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况:
pid>0将信号传给进程识别码为pid的进程。
pid=0将信号传给和目前进程相同进程组的所有进程
pid=-1将信号广播传送给***内所有的进程
pid<0将信号传给进程组识别码为pid绝对值的所有进程
返回值执行成功则返回0,如果有错误则返回-1。
continue函数说明:
BoolContinue(pid_tpid,Adressadress);
将进程识别码为pid的进程返回地址修改为adress。
在实例实施中,只有test0在可信列表中,test0能够正常运行,test1运行被中止。
步骤6:在终端运行完整性测量代理,对步骤5所获取程序的事件类型、事件参数、运行程序的指令计算哈希值;终端监控模型如图3所示;
所述应用程序监视器在Windows***上是采用APIHOOK机制,设置全局钩子来截获用户程序产生的***调用。
所述***调用参数包含程序的完整路径。
在Windows下当用户程序运行后会产生***调用CreateProcess函数。该函数的结构如下:
BOOLCreateProcess(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTESlpProcessAttributes。
LPSECURITY_ATTRIBUTESlpThreadAttributes,
BOOLbInheritHandles,
DWORDdwCreationFlags,
LPVOIDlpEnvironment,
LPCTSTRlpCurrentDirectory,
LPSTARTUPINFOlpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);
由于要监视所有应用程序的TerminateProcess()和WriteProcessMemory()调用,因此需要设置全局钩子。
全局钩子的安装方法:首先通过调用SetWindowHookEx()来安装一个全局钩子,钩子安装成功后,操作***会把DLL映射到被拦截的进程的地址空间中。在拦截到call指令以后,使用JMP指令概念函数体的前几个字节来重定向到自定义的API函数中去执行,从而截获***调用。
SetWindowHookEx函数结构如下:
HHOOKSetWindowsHookEx(
IntidHook,
HOOKPROClpfn,
HINSTANCEhMod,
DWORDdwThreadId
);
步骤7:使用netlink创建套接字将步骤6得到的哈希值数据发送到服务器,与服务器的可信列表中的项进行比对;
若步骤5截获的程序对应的哈希值存在于服务器的可信列表中,则调用continue函数继续用户进程执行,并允许用户进程进入步骤2所述虚拟机中运行,否则调用TerminateProcess函数终止程序的运行。
TerminateProcess函数说明:
BOOLTerminateProcess(HANDLEhProcess,UINTuExitCode);
其中参数hProcess表示要终止(杀死)进程的句柄。参数uExitCode是设置进程的退出值。
返回值:如果失败将返回FALSE(0),而成功将返回一个非零值。
在实例实施中,终端运行记事本程序出现错误,将该程序的哈希值更新到服务器中,记事本程序能正常运行。
Claims (1)
1.一种基于完整性验证的净室实时监控方法,其特征在于,包括以下几个步骤:
步骤1:在服务器上安装可信虚拟监视器,利用所述可信虚拟监视器提取服务器初始数据,并计算服务器初始数据的哈希函数值,将服务器初始数据以其对应的哈希函数值备份到服务器中的可信列表中;
所述服务器初始数据包括服务器的***文件和进程数据;所述***文件包括文件类型、文件名和文件大小;进程数据包括该进程的进程名、线程数量和线程峰值数量;
所述可信列表用于保存可信任的***数据、可信任的虚拟机信息以及可信任的用户程序信息;
步骤2:在可信虚拟监视器中安装虚拟机陷入程序,利用虚拟机陷入程序的sh_page_fault函数获得陷入可信虚拟监视器的虚拟机的进程、内核模块及动态库;
所述虚拟机陷入程序的安装是通过将Vmx.c文件中的vmx_vmexit_handler函数的返回地址修改为非法地址完成;
步骤3:在可信虚拟机中运行完整性测量代理,对步骤2获取的虚拟机完整性进行测量,如果虚拟机完整,则进入步骤4,否则,返回步骤2,等待虚拟机陷入程序获取陷入可信虚拟监视器的虚拟机;
步骤4:计算步骤2所获取的虚拟机的进程、内核模块和动态库的哈希值,并与步骤1所述可信列表中的数据进行比对;
若该虚拟机对应的哈希值存在于可信列表中,则continue函数修改guest_rip为原来的地址使虚拟机正常运行,进入步骤5,否则,调用kill函数终止虚拟机的运行,返回步骤2,等待虚拟机陷入程序获取陷入可信虚拟监视器的虚拟机;
步骤5:在终端安装应用程序监视器,截获用户程序产生的***调用,得到传递给***调用的全部参数;
步骤6:在终端运行完整性测量代理,对步骤5所获取程序的事件类型、事件参数、运行程序的指令计算哈希值;
步骤7:使用netlink创建套接字将步骤6得到的哈希值数据发送到服务器,与服务器的可信列表中的项进行比对;
若步骤5截获的程序对应的哈希值存在于服务器的可信列表中,则调用continue函数继续用户进程执行,并允许用户进程进入步骤2所述虚拟机中运行,否则调用TerminateProcess函数终止程序的运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510670209.3A CN105205391B (zh) | 2015-10-15 | 2015-10-15 | 一种基于完整性验证的净室实时监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510670209.3A CN105205391B (zh) | 2015-10-15 | 2015-10-15 | 一种基于完整性验证的净室实时监控方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105205391A true CN105205391A (zh) | 2015-12-30 |
CN105205391B CN105205391B (zh) | 2018-08-07 |
Family
ID=54953065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510670209.3A Active CN105205391B (zh) | 2015-10-15 | 2015-10-15 | 一种基于完整性验证的净室实时监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105205391B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126116A (zh) * | 2016-06-16 | 2016-11-16 | 北京航空航天大学 | 一种虚拟机镜像文件的完整性度量优化方法 |
CN106845231A (zh) * | 2016-12-30 | 2017-06-13 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及装置 |
CN107247910A (zh) * | 2017-08-11 | 2017-10-13 | 郑州云海信息技术有限公司 | 一种文件完整性度量检测方法、***及检测设备 |
CN107256368A (zh) * | 2017-06-06 | 2017-10-17 | 北京航空航天大学 | 基于写时复制特性的虚拟机内文件完整性度量方法 |
CN107919960A (zh) * | 2017-12-04 | 2018-04-17 | 北京深思数盾科技股份有限公司 | 一种应用程序的认证方法和*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130097354A1 (en) * | 2011-10-13 | 2013-04-18 | International Business Machines Corporation | Protecting memory of a virtual guest |
CN103841198A (zh) * | 2014-03-07 | 2014-06-04 | 中南大学 | 一种净室云计算数据处理方法及*** |
CN103984536A (zh) * | 2014-02-14 | 2014-08-13 | 中国科学院计算技术研究所 | 一种云计算平台中的 i/o 请求计数***及其方法 |
CN104751050A (zh) * | 2015-04-13 | 2015-07-01 | 成都睿峰科技有限公司 | 一种客户端应用程序管理方法 |
-
2015
- 2015-10-15 CN CN201510670209.3A patent/CN105205391B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130097354A1 (en) * | 2011-10-13 | 2013-04-18 | International Business Machines Corporation | Protecting memory of a virtual guest |
CN103984536A (zh) * | 2014-02-14 | 2014-08-13 | 中国科学院计算技术研究所 | 一种云计算平台中的 i/o 请求计数***及其方法 |
CN103841198A (zh) * | 2014-03-07 | 2014-06-04 | 中南大学 | 一种净室云计算数据处理方法及*** |
CN104751050A (zh) * | 2015-04-13 | 2015-07-01 | 成都睿峰科技有限公司 | 一种客户端应用程序管理方法 |
Non-Patent Citations (1)
Title |
---|
任建宝等: "《基于虚拟机监控器的隐私透明保护》", 《软件学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126116A (zh) * | 2016-06-16 | 2016-11-16 | 北京航空航天大学 | 一种虚拟机镜像文件的完整性度量优化方法 |
CN106845231A (zh) * | 2016-12-30 | 2017-06-13 | 北京瑞星信息技术股份有限公司 | 基于虚拟化环境下的安全防护方法及装置 |
CN106845231B (zh) * | 2016-12-30 | 2020-05-19 | 北京瑞星网安技术股份有限公司 | 基于虚拟化环境下的安全防护方法及装置 |
CN107256368A (zh) * | 2017-06-06 | 2017-10-17 | 北京航空航天大学 | 基于写时复制特性的虚拟机内文件完整性度量方法 |
CN107256368B (zh) * | 2017-06-06 | 2020-02-07 | 北京航空航天大学 | 基于写时复制特性的虚拟机内文件完整性度量方法 |
CN107247910A (zh) * | 2017-08-11 | 2017-10-13 | 郑州云海信息技术有限公司 | 一种文件完整性度量检测方法、***及检测设备 |
CN107919960A (zh) * | 2017-12-04 | 2018-04-17 | 北京深思数盾科技股份有限公司 | 一种应用程序的认证方法和*** |
Also Published As
Publication number | Publication date |
---|---|
CN105205391B (zh) | 2018-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11244056B1 (en) | Verification of trusted threat-aware visualization layer | |
US10528726B1 (en) | Microvisor-based malware detection appliance architecture | |
US20170255545A1 (en) | Methods and systems of function-specific tracing | |
CN105205391A (zh) | 一种基于完整性验证的净室实时监控方法 | |
Jin et al. | A VMM-based intrusion prevention system in cloud computing environment | |
Ma et al. | Shadow attacks: automatically evading system-call-behavior based malware detection | |
US8955104B2 (en) | Method and system for monitoring system memory integrity | |
US9825908B2 (en) | System and method to monitor and manage imperfect or compromised software | |
CN104134038B (zh) | 一种基于虚拟平台的安全可信运行保护方法 | |
US20160232354A1 (en) | System memory integrity monitoring | |
CN104715201A (zh) | 一种虚拟机恶意行为检测方法和*** | |
EP3095058A1 (en) | Exploit detection system with threat-aware microvisor | |
US9965631B2 (en) | Apparatus and method for analyzing malicious code in multi-core environment using a program flow tracer | |
CN103793288A (zh) | 一种软件看门狗***及方法 | |
CN114254304A (zh) | 容器安全入侵检测方法、装置、计算机设备及存储介质 | |
US10430261B2 (en) | Detecting a guest operating system crash on a virtual computing instance | |
KR102088308B1 (ko) | 네트워크 보안 기능 가상화 기반의 클라우드 보안 분석 장치, 보안 정책 관리 장치 및 보안 정책 관리 방법 | |
Lee et al. | Securing KVM-based cloud systems via virtualization introspection | |
CN103425563B (zh) | 基于虚拟化技术的在线i/o电子取证***及其取证方法 | |
Jiang et al. | CRONUS: Fault-isolated, secure and high-performance heterogeneous computing for trusted execution environment | |
Xing et al. | OB‐IMA: out‐of‐the‐box integrity measurement approach for guest virtual machines | |
Jin et al. | Trusted attestation architecture on an infrastructure-as-a-service | |
Hao et al. | vTRUST: a formal modeling and verification framework for virtualization systems | |
CN113806789B (zh) | 一种基于游戏内存隐私保护*** | |
CN107516039A (zh) | 虚拟化***的安全防护方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |