CN103793651A - 基于Xen虚拟化的内核完整性检测方法 - Google Patents

基于Xen虚拟化的内核完整性检测方法 Download PDF

Info

Publication number
CN103793651A
CN103793651A CN201410062486.1A CN201410062486A CN103793651A CN 103793651 A CN103793651 A CN 103793651A CN 201410062486 A CN201410062486 A CN 201410062486A CN 103793651 A CN103793651 A CN 103793651A
Authority
CN
China
Prior art keywords
domu
client territory
kernel
function
logical address
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
CN201410062486.1A
Other languages
English (en)
Other versions
CN103793651B (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.)
Xidian University
Original Assignee
Xidian 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 Xidian University filed Critical Xidian University
Priority to CN201410062486.1A priority Critical patent/CN103793651B/zh
Publication of CN103793651A publication Critical patent/CN103793651A/zh
Application granted granted Critical
Publication of CN103793651B publication Critical patent/CN103793651B/zh
Expired - Fee Related 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

一种基于Xen虚拟化的内核完整性检测方法,利用内核完整性检测系统对运行在Xen虚拟化平台上的虚拟机操作系统进行内核完整性检测。系统在Dom0设置内存映射、信息获取和安全检测三个部分,内存映射部分提供获取DomU中硬件层面的机器字节数据接口,信息获取部分部署通过内存映射部分提供的接口获取DomU中硬件层面的机器字节数据,根据DomU中的操作系统版本将硬件层面的机器字节数据转化成操作系统级别的信息。安全检测部分以轮询方式调用信息获取部分获得DomU中操作系统内核关键数据,并根据系统安全策略,判断DomU中操作系统内核的完整性是否受到破坏。本发明系统将检测系统部署在被监控系统外部,在保证检测系统安全的同时对被监控系统的内核进行完整性检测。

Description

基于Xen虚拟化的内核完整性检测方法
技术领域
本发明涉及计算机虚拟化技术领域,进一步涉及计算机虚拟化以及安全领域。是一种基于Xen虚拟化的内核完整性检测检测方法,用于客户操作系统为Linux或者类Unix操作系统的Xen虚拟化平台上,实现在管理域Dom0中对虚拟化平台上的客户域DomU内的操作系统的内核的关键数据结构与代码进行完整性检测,为运行在虚拟化平台上的操作系统提供安全保障。
背景技术
操作系统安全性是计算机安全不可或缺的一部分。内核,是一个操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础。
近几年来,随着黑客技术特别是Rootkit技术的发展,攻击者已经把触角伸入到了操作系统的内核。操作系统的内核代码面临着严重的威胁。因为内核具有最高特权,Rootkit运行在内核态,可以篡改内核数据结构、更改内核控制流,破坏内核的完整性,对系统安全构成了巨大的威胁。检测内核完整性是否受到破坏、保护内核完整性是检测一个系统是否安全、构建安全系统的基础。
针对操作系统内核的攻击通常的方法是篡改关键数据和改变控制流。现有的内核完整性检测、保护的技术大致可以分为两类:A、保障、检测数据完整性,确保影响系统功能的关键数据对象只能由指定代码在特定情况下修改;B、保障、检测控制流完整性,保护和监控影响代码执行序列的所有因素。利用上述技术实现的完整性保护、检测工具,典型的有checkidt、kem-check等,它们均存在一个不足:内核完整性检测、保护的安全软件与被检测系统在同一地址空间,目前流行的Rootkit等恶意软件运行在系统内核态,与安全软件处于同一特权级别,与恶意软件相比安全软件没有任何的特权优势。Rootkit等恶意软件可以绕过安全软件的检测机制、甚至破坏安全软件。
近年来,虚拟化技术成为计算机系统结构的发展趋势,虚拟机管理器具有更高的权限、更小的可信计算基、更好的隔离性。由于虚拟化架构具有上述优势,基于虚拟化架构构建的安全工具能够有效地监控虚拟机内部状态,同时抵御被监控系统中可能发生的攻击,基于虚拟化架构增强安全工具的安全性成为安全研究的趋势。
发明内容
本发明在分析总结现有的内核完整性检测技术的不足的基础上,结合虚拟化技术、提供了一种新的基于Xen虚拟化的内核完整性检测方法。本发明利用虚拟化架构的特性,将内核完整性检测系统部署在被监控虚拟机外,使内核完整性检测系统不受被监控系统中恶意软件的攻击;利用虚拟机管理器处于虚拟化架构最底层负责管理整个硬件平台的优势,可以有效监控虚拟机的内部状态,使完整性检测机制不被恶意软件绕过。
本发明的检测方法,利用内核完整性检测系统对运行在Xen虚拟化平台上的虚拟机中的Linux或者类Unix操作系统进行内核完整性检测,其特征在于:所述内核完整性检测系统包括内存映射部分、信息获取部分和安全检测部分,这三个部分均部署在管理域Dom0,从管理域Dom0对客户域DomU的操作系统内核完整性进行检测,并有效利用了Xen提供的隔离性,避免内核完整性检测系统受到客户域DomU中的恶意软件的攻击;
所述内存映射部分提供获取客户域DomU中硬件层面的机器字节数据的接口,获取客户域DomU中寄存器二进制数据、物理地址空间对应的随机存储器中的二进制数据和内核态的逻辑地址空间对应的随机存储器的二进制数据,在管理域Dom0模拟客户域DomU操作系统的分页模型,利用libxc,libxs库函数从管理域Dom0中获取客户域DomU内核态的逻辑地址空间对应的随机存储器二进制数据;
所述信息获取部分利用内存映射部分提供的接口,获取客户域DomU中与系统内核状态相关的关键数据即中断描述符表、系统调用表和系统调用函数指令数据;
所述安全检测部分以轮询方式调用信息获取部分获得客户域DomU的中断向量表、系统调用表、系统函数指令数据并求哈希值,与管理域Dom0安全策略文件的中断向量表、系统调用表和系统调用函数的SHA-1哈希值进行对比,检测客户域DomU中内核的完整性。
本发明的检测方法从管理域Dom0对客户域DomU中的操作系统内核进行完整性检测,具体由安全检测部分检测客户域DomU的内核完整性,检测过程如下:
(1)从部署在管理域Dom0中的安全策略文件读取出以下信息:
1.1)中断向量表中每一个的中断处理函数的逻辑地址;
1.2)系统调用表中每个系统调用函数的逻辑地址;
1.3)系统调用号以及其对应的系统调用函数的指令数据的SHA-1哈希值;
(2)以轮询的方式利用信息获取模块提供的接口,获取下列信息:
2.1)客户域DomU中的中断向量表中每个中断处理程序的逻辑地址;
2.2)客户域DomU中的系统调用表中的每个系统调用函数的逻辑地址;
2.3)客户域DomU中的系统调用函数指令的数据,然后利用SHA-1哈希算法计算出系统调用函数指令数据的哈希值;
(3)比较从DomU获取的信息与从安全策略文件中读取的信息:
3.1)比较中断向量表中每个中断处理程序的逻辑地址,如果某一项的数据不一致,说明对应的中断处理程序受到恶意软件的中断处理程序重定向攻击,记录下不一致的表项,并向管理域Dom0告警;;
3.2)比较系统调用表中的每个系统调用函数的逻辑地址,如果某一项的数据不一致,说明对应的系统调用函数被恶意软件进行了系统调用重定向攻击,记录下不一致的表项,并向管理域Dom0告警;
3.3)比较系统调用函数指令数据的哈希值,如果不一致,说明相应的系统函数受到了恶意软件的代码注入攻击,记录下不一致的系统调用号,并向管理域Dom0告警;
本发明与现有技术相比具有以下优点:
第一,本发明结合虚拟化技术,利用虚拟机管理器的特权级别优势、从虚拟化平台获得被监控系统中最底层的信息,确保安全检测工具的监控行为不被恶意软件欺骗、绕过。
第二,本发明利用虚拟技术提供的隔离性、将安全检测工具部署在管理域Dom0,将安全检测工具与监控的客户域DomU隔离开,可以有效确保安全检测工具自身的安全性。
第三,本发明不需要修改客户域操作系统、管理域操作系统、虚拟机监控器,避免了修改可能引入的Bug、导致的紧耦合。
第四,本发明分析了当前流行的进行内核完整性攻击的恶意软件的行为特性以及性状表现,针对内核关键资源进行检测,在能以高准确率检测内核完整性的情况下,不对系统运行效率造成可观影响。
附图说明
图1是本发明检测方法采用的系统整体结构图;
图2是本发明内存映射部分逻辑地址通过分页机制映射到物理地址的示意图;
图3是本发明内存映射部分访问客户域DomU中指定内核态逻辑地址空间数据的流程图;
图4是本发明信息获取部分获取客户域DomU中中断向量表信息的流程图;
图5是本发明信息获取部分获取客户域DomU中系统调用表信息的流程图;
图6是本发明信息获取部分获取客户域DomU中系统调用函数指令数据的流程图;
图7是本发明安全检测部分检测客户域DomU中内核完整性流程图;
具体实施方式
下面结合附图对本发明作进一步的描述。
1、整体结构设计
基于Xen虚拟化的内核完整性检测系统由三个基本部分构成,分别是内存映射部分、信息获取部分、安全检测部分。本发明系统部署在管理域Dom0,有效利用了Xen提供的隔离性、避免本发明系统受到客户域DomU中的恶意软件的攻击。整体系统架构图如图1所示。
上述各部分功能如下:
内存映射部分,在管理域Dom0中模拟客户域DomU中的分页机制,提供了获取客户域DomU中硬件层面的机器字节数据的接口,包括获取客户域DomU中寄存器的二进制数据、物理地址空间对应的随机存储器的二进制数据、内核态逻辑地址空间对应的随机存储器的二进制数据。
所述信息获取部分通过内存映射部分提供的接口,获取客户域DomU中与系统内核状态相关的关键数据包括中断描述符表、系统调用表、系统调用函数指令数据。
安全检测部分,调用信息获取部分获得客户域DomU中操作系统内核的关键数据,并根据安全检测部分中的存储的安全策略,判断客户域DomU中操作系统内核的完整性是否受到破坏。
2、内存映射部分的具体实现
Linux操作系统内有逻辑地址、线性地址、物理地址三种地址。在X86-32处理器架构上Linux的逻辑地址与线性地址相同。Linux操作系统中,逻辑地址用于进程空间的寻址,物理地址用于随机存储器的内存单元的寻址。Linux操作系统中每个进程的逻辑地址空间分为两个部分:1、用户态空间,地址范围从0X00000000到0XBFFFFFFF;2、内核态空间,地址范围从0XC0000000到0XFFFFFFFF。每个进程的用户态空间的信息不相同,但是内核态空间的信息完全一样。Linux操作系统内核的数据、函数存储在进程的内核态空间。
当访问Linux操作系统中某一进程的用户态或者内核态地址空间的数据、函数时,操作系统首先会利用分页单元将逻辑地址转换为物理地址,然后访问该物理地址对应的随机存储器的内存单元的二进制数据,示意图如图2所示。X86-32架构上的Linux操作系统的分页单元有4中分页模型:1、常规分页模型;2、扩展分页模型;3、物理地址扩展模型下的常规分页模型;4、物理地址扩展模型下的扩展分页模型。当编译Linux内核时,通过不同的配置选项可以指定Linux系统采用的分页模型。
本发明系统在管理域Dom0中对客户域DomU中的操作系统内核进行完整性检测,需要获取客户域DomU中的某些内核信息,包括中断描述符表、系统调用表等,这些内核数据结构的地址都是用逻辑地址表示的,因此本发明系统需要在管理域Dom0中访问客户域DomU的内核态逻辑地址空间的信息。
Xen虚拟化平台提供了开发库libxc,libxs。libxc,libxs库提供了以下接口:1、从管理域Dom0获取客户域DomU的中央处理器寄存器二进制数据的接口;2、从管理域Dom0中获取客户域DomU的物理地址空间对应的随机存储器中的二进制数据的接口。
内存映射部分在libxc,libxs库的基础上,在管理域Dom0中模拟客户域DomU中系统的分页模型,实现了从管理域Dom0中获取客户域DomU中内核态逻辑地址空间对应的随机存储器的二进制数据的接口。获取DomU中内核态逻辑地址空间对应的随机存储器的二进制数据的过程如图3所示,具体步骤如下:
(1)首先、假设给定的客户域DomU中的内核态逻辑地址为virtAddr.
(2)确定DomU中操作系统采用的分页模型。
2.1)通过libxc的库函数,获取客户域DomU中中央处理器的CR4寄存器的值。
2.2)取CR4寄存器的PSE允许页扩展标志位的值X,取CR4寄存器的PAE允许物理地址扩展标志位的值Y。
2.3)如果X等于0、Y等于0,则客户域DomU中系统采用的是常规分页模型。如果X等于1、Y等于0,则客户域DomU中系统采用的是扩展分页模型。如果X等于0、Y等于1,则客户域DomU中系统采用的是物理地址扩展模型下的常规分页模型。如果X等于1、Y等于1,则客户域DomU中系统采用的是物理地址扩展模型下的扩展分页模型。
(3)利用libxc的库函数获取客户域DomU中CR3寄存器的值、作为基地址,模拟DomU中操作系统系统的分页模型,将逻辑地址virtAddr转换为物理地址phyAddr。
(4)利用libxc的库函数获取物理地址phyAddr对应的随机存储器中的二进制数据。
X86-64架构上的Linux操作系统中,每个进程都有4GB的逻辑地址空间,前3GB的空间称为用户态空间,最后1GB空间称为内核态空间。两个进程中相同的用户态空间地址可能映射到不同的物理地址空间,相同的内核态空间会映射到相同的物理地址空间。Linux系统运行时,CR3寄存器中存储着当前进程的页目录的物理地址,CR3用于分页机制,用于将当前进程的逻辑地址映射为物理地址。因为DomU中操作系统有4种分页模型,所以在Dom0中模拟DomU中操作系统的分页模型将内核态逻辑地址转换为物理地址,有4种不同的过程。下面分别描述这四种过程。
模拟DomU中的常规分页模型,将内核态逻辑地址转换为物理地址的步骤如下:
(1)首先假设给定的32位内核态逻辑地址为virtAddr.
利用libxc的库函数获取客户域DomU中CR3寄存器的二进制值,求得页目录基地址的物理地址、记为pageDirectoryBaseAddr。
(2)利用pageDirectroyBaseAddr作为基地址,和virtAddr的最高10位构成的偏移量,得到对应的页目录项所在的物理地址、记为pdeAddr.利用libxs的库函数获取物理地址pdeAddr处的数据,求得对应的页表基地址的物理地址,记为pageTableBaseAddr.
(3)利用pageTableBaseAddr作为基地址,和virtAddr的10至19位构成偏移量,得到对应的页表项所在的物理地址、记作pteAddr.利用libxs的库函数获取物理地址pteAddr处的数据,求得对应的页基地址的物理地址、记作pageBaseAddr.
(4)利用pageBaseAddr作为基地址,加上virtAddr的最低12位构成的偏移量,得到内核态逻辑地址virtAddr对应的物理地址phyAddr.
模拟DomU中的扩展分页模型,将内核态逻辑地址转换为物理地址的步骤如下:
(1)首先假设给定的32位内核态逻辑地址为virtAddr.
利用libxc的库函数获取客户域DomU中CR3寄存器的二进制值,求得页目录基地址的物理地址、记为pageDirectoryBaseAddr。
(2)利用pageDirectroyBaseAddr作为基地址,和virtAddr的最高10位构成的偏移量,得到对应的页目录项所在的物理地址、记为pdeAddr.利用libxs的库函数获取物理地址pdeAddr处的数据,求得对应的页基地址的物理地址、记作pageBaseAddr.
(3)利用pageBaseAddr作为基地址,加上virtAddr的最低22位构成的偏移量,得到内核态逻辑地址virtAddr对应的物理地址phyAddr.
模拟DomU中物理地址扩展模型下的常规分页模型,将内核态逻辑地址转换为物理地址的步骤如下:
(1)首先假设给定的32位内核态逻辑地址为virtAddr.
利用libxc的库函数获取客户域DomU中CR3寄存器的二进制值,得到页目录指针表基地址的物理地址、记作pageDirPointerTableAddr.
(2)利用pageDirPointerTableAddr作为基地址,和virtAddr的最高2位构成的偏移量,得到对应的页目录指针项所在的物理地址、记为pdpeAddr.利用libxs的库函数获取物理地址pdpeAddr处的数据,求得对应的页目录基地址的物理地址,记为pageDirectoryBaseAddr.
(3)利用pageDirectroyBaseAddr作为基地址,和virtAddr的2至10位构成的偏移量,得到对应的页目录项所在的物理地址、记为pdeAddr.利用libxs的库函数获取物理地址pdeAddr处的数据,求得对应的页表基地址的物理地址,记为pageTableBaseAddr.
(4)利用pageTableBaseAddr作为基地址,和virtAddr的11至19位构成偏移量,得到对应的页表项所在的物理地址、记作pteAddr.利用libxs的库函数获取物理地址pteAddr处的数据,求得对应的页基地址的物理地址、记作pageBaseAddr.
(5)利用pageBaseAddr作为基地址,加上virtAddr的最低12位构成的偏移量,得到内核态逻辑地址virtAddr对应的物理地址phyAddr.
模拟DomU中物理地址扩展模型下的扩展分页模型,将内核态逻辑地址转换为物理地址的步骤如下:
(1)首先假设给定的32位内核态逻辑地址为virtAddr.
利用libxc的库函数获取客户域DomU中CR3寄存器的二进制值,得到页目录指针表基地址的物理地址、记作pageDirPointerTableAddr.
(2)利用pageDirPointerTableAddr作为基地址,和virtAddr的最高2位构成的偏移量,得到对应的页目录指针项所在的物理地址、记为pdpeAddr.利用libxs的库函数获取物理地址pdpeAddr处的数据,求得对应的页目录基地址的物理地址,记为pageDirectoryBaseAddr.
(3)利用pageDirectroyBaseAddr作为基地址,和virtAddr的2至10位构成的偏移量,得到对应的页目录项所在的物理地址、记为pdeAddr.利用libxs的库函数获取物理地址pdeAddr处的数据,求得对应的页基地址的物理地址,记为pageBaseAddr.
(4)利用pageBaseAddr作为基地址,加上virtAddr的最低21位构成的偏移量,得到内核态逻辑地址virtAddr对应的物理地址phyAddr.
3、信息获取部分的具体实现
通过研究目前主流的破坏内核完整性的恶意软件、以及检测内核完整性技术采用的方法、技术,确定了本发明系统需要检测的关键资源。本发明系统在管理域Dom0中对客户域DomU中的内核完整性进行检测、需要检测客户域DomU中系统的中断向量表、系统调用表、系统调用函数的完整性。信息获取模块提供了获取中断向量表信息、系统调用表信息、系统调用函数指令数据的接口。
Linux系统的中断向量表的地址保存在IDTR寄存器中。Linux系统运行时,IDTR寄存器中存放着中断向量表的32位逻辑地址和16位的表长度值。中断向量表中包含256项,每项占8Byte,每一表项的高16位和低16位合成后表示中断处理程序的32位逻辑地址。获取客户域DomU中系统的中断向量表信息的过程如图4所示,具体步骤如下:
(1)利用libxc库函数获取客户域DomU中的中央处理器的IDTR寄存器的值。
(2)取IDTR寄存器值的最高32位,得到中断向量表的32位逻辑地址,记作idtBaseAddr.。
(3)中断向量表包含256个表项,分别对中断向量表中的每一个表项,进行如下处理:
3.1)假设处理的表项为中断向量表中第N项,其逻辑地址为idtBaseAddr+8*N.
3.2)利用内存映射模块提供的接口获取第N个表项的二进制数据。每一个表项的二进制数据大小为8Byte,取其最高16位与最低16位便得到了对应的中断处理程序的32位逻辑地址。
Linux系统中的系统调用表的逻辑地址在内核编译后其地址是固定的,不同版本的Linux内核系统调用表的地址可能不相同,通过查看Linux系统中的system.map文件中的符号sys_call_table,可以知道系统调用表的逻辑地址,本发明预先将DomU中的系统调用表的逻辑地址存放在Dom0的安全策略文件中。系统调用表中的每个表项占4Byte,每个表项的数据代表一个系统调用函数的32位的逻辑地址。获取客户域DomU中系统的系统调用表信息的过程如图5所示、具体步骤如下:
(1)从部署在管理域Dom0的安全策略文件中读取客户域DomU中操作系统的系统调用表的逻辑地址、记作syscallTableAddr.。
(2)分别对系统调用表中的每一个表项,进行如下处理:
2.1)假设处理的表项为系统调用表中第N项,其逻辑地址为syscallTableAddr+4*N.
2.2)利用内存映射模块提供的接口获取第N个表项的二进制数据,便得到了对应的系统调用函数的32位逻辑地址。
系统调用表中的每个表项占4Byte,每个表项的数据代表一个系统调用函数的逻辑地址。系统调用函数的逻辑地址都在内核空间。每个编译好的Linux内核的系统调用函数的指令数据是固定的,函数指令的长度也是固定的。通过反汇编查看Linux内核源代码编译的目标文件,可以得到系统调用函数的指令的长度。获取客户域DomU中系统的给定的系统调函数的指令数据的过程如图6所示,具体步骤如下:
(1)首先,假设给定的是第N号系统调用。
(2)从部署在管理域Dom0中的安全策略文件中读取客户域DomU中操作系统的系统调用表的32位逻辑地址,记作syscallTableAddr。
(3)从部署在管理域Dom0中的安全策略文件中读取第N号系统调用号对应的系统调用函数指令的长度,记作Len。
(4)对于第N号系统调用,进行如下处理:
4.1)对于第N号系统调用,其对应的系统调用函数的地址存储在系统调用表中的第N个表项,其逻辑地址为syscallTableAddr+4*N.利用内存映射模块的接口获取该表项的值,得到对应的系统调用函数逻辑地址funcAddr。
4.2)利用内存映射部分的接口获取逻辑地址funcAddr处长度为Len的数据。这样便得到了第N个系统调用函数指令的数据。
4、安全检测部分具体实现
编译好的Linux内核的中断向量表、系统调用表、系统函数指令数据是固定的。目前流行的破坏内核完整性的恶意软件大部分通过修改中断向量表、系统调用表、系统函数指令达到破坏内核完整性的目的。本发明系统首先获取完整内核的中断向量表中的每个中断处理程序的逻辑地址、系统调用表中的每个系统调用函数的逻辑地址、每个系统调用函数的指令数据的SHA-1哈希值,将这些信息记录在文件中,这个文件称为安全策略文件。
安全检测部分以轮询方式调用信息获取部分提供的接口,得到客户域DomU中的中断向量表、系统调用表、系统函数指令数据,与部署在管理域Dom0中的安全策略文件中的信息进行对比,检测客户域DomU中内核的完整性是否收到破坏。检测客户域DomU的内核完整性的过程如图7所示,具体步骤如下:
(1)从部署在管理域Dom0中的安全策略文件读取出以下信息:
1.1)中断向量表中每一个的中断处理函数的逻辑地址;
1.2)系统调用表中每个系统调用函数的逻辑地址;
1.3)系统调用号以及其对应的系统调用函数的指令数据的SHA-1哈希值。
(2)以轮询的方式利用信息获取部分提供的接口,获取下列信息:
2.1)客户域DomU中的中断向量表中每个中断处理程序的逻辑地址;
2.2)客户域DomU中的系统调用表中的每个系统调用函数的逻辑地址;
2.3)客户域DomU中的系统调用函数指令的数据,然后利用SHA-1哈希算法计算出系统调用函数指令数据的哈希值。
(3)比较从DomU获取的信息与从安全策略文件中读取的信息:
3.1)比较中断向量表中每个中断处理程序的逻辑地址,如果某一项的数据不一致,说明对应的中断处理程序受到恶意软件的中断处理程序重定向攻击,记录下不一致的表项,并向管理域Dom0告警;
3.2)比较系统调用表中的每个系统调用函数的逻辑地址,如果某一项的数据不一致,说明对应的系统调用函数被恶意软件进行了系统调用重定向攻击,记录下不一致的表项,并向管理域Dom0告警;
3.3)比较系统调用函数指令数据的哈希值,如果不一致,说明相应的系统函数受到了恶意软件的代码注入攻击,记录下不一致的系统调用号,并向管理域Dom0告警。

Claims (4)

1.一种基于Xen虚拟化的内核完整性检测方法,利用内核完整性检测系统对运行在Xen虚拟化平台上的虚拟机的Linux或者类Unix操作系统进行内核完整性检测,其特征在于:所述内核完整性检测系统包括内存映射部分、信息获取部分和安全检测部分,这三个部分均部署在管理域Dom0,从管理域Dom0对客户域DomU的操作系统内核完整性进行检测,并有效利用了Xen提供的隔离性,避免内核完整性检测系统受到客户域DomU中的恶意软件的攻击;
所述内存映射部分提供获取客户域DomU中硬件层面的机器字节数据的接口,获取客户域DomU中寄存器二进制数据、物理地址空间对应的随机存储器中的二进制数据和内核态的逻辑地址空间对应的随机存储器的二进制数据,在管理域Dom0模拟客户域DomU操作系统的分页模型,利用libxc,libxs库函数从管理域Dom0中获取客户域DomU内核态的逻辑地址空间对应的随机存储器二进制数据;
所述信息获取部分利用内存映射部分提供的接口,获取客户域DomU中与系统内核状态相关的关键数据即中断描述符表、系统调用表和系统调用函数指令数据;
所述安全检测部分以轮询方式调用信息获取部分获得客户域DomU的中断向量表、系统调用表、系统函数指令数据并求哈希值,与管理域Dom0安全策略文件的中断向量表、系统调用表和系统调用函数的SHA-1哈希值进行对比,检测客户域DomU中内核的完整性。
2.根据权利要求1所述的基于Xen虚拟化的内核完整性检测方法,其特征在于:内存映射部分获取DomU中内核态逻辑地址空间对应的随机存储器的二进制数据的过程如下:
(1)假设给定的客户域DomU中的内核态逻辑地址为virtAddr;
(2)确定DomU中操作系统采用的分页模型:
2.1)通过libxc的库函数,获取客户域DomU中央处理器的CR4寄存器的值;
2.2)取CR4寄存器的PSE允许页扩展标志位的值X,取CR4寄存器的PAE允许物理地址扩展标志位的值Y;
2.3)如果X等于0、Y等于0,则客户域DomU中系统采用的是常规分页模型;如果X等于1、Y等于0,则客户域DomU中系统采用的是扩展分页模型;如果X等于0、Y等于1,则客户域DomU中系统采用的是物理地址扩展模型下的常规分页模型;如果X等于1、Y等于1,则客户域DomU中系统采用的是物理地址扩展模型下的扩展分页模型;
(3)利用libxc的库函数获取客户域DomU中CR3寄存器的值作为基地址,模拟步骤2.3)操作系统系统的四种分页模型,将逻辑地址virtAddr转换为物理地址phyAddr;
(4)利用libxc的库函数获取物理地址phyAddr对应的随机存储器中的二进制数据。
3.根据权利要求1所述的基于Xen虚拟化的内核完整性检测检测方法,其特征在于:所述信息获取部分通过内存映射部分提供的接口获取客户域DomU中系统的中断向量表信息、系统调用表中每一项表项的信息和安全策略文件中的系统调用函数的哈希值的过程如下:
一、获取中断向量表信息
(1)利用libxc库函数获取客户域DomU中的中央处理器的IDTR寄存器的信息;
(2)取IDTR寄存器值的最高32位,得到中断向量表的32位逻辑地址,记作idtBaseAddr;
(3)中断向量表包含256个表项,分别对中断向量表中的每一个表项,进行如下处理:
3.1)假设处理的表项为中断向量表中第N项,其逻辑地址为idtBaseAddr+8*N;
3.2)利用内存映射模块提供的接口获取第N个表项的二进制数据,每一个表项的二进制数据大小为8Byte,取其最高16位与最低16位便得到了对应的中断处理程序的32位逻辑地址;
二、获取系统调用表信息
(1)从部署在管理域Dom0的安全策略文件中读取客户域DomU中操作系统的系统调用表的逻辑地址,记作syscallTableAddr;
(2)分别对系统调用表中的每一个表项,进行如下处理:
2.1)假设处理的表项为系统调用表中第N项,其逻辑地址为syscallTableAddr+4*N;
2.2)利用内存映射模块提供的接口获取第N个表项的二进制数据,便得到了对应的系统调用函数的32位逻辑地址;
三、获取系统调用函数
(1)首先,假设给定的是第N号系统调用;
(2)从部署在管理域Dom0中的安全策略文件中读取客户域DomU中操作系统的系统调用表的32位逻辑地址,记作syscallTableAddr;
(3)从部署在管理域Dom0中的安全策略文件中读取第N号系统调用号对应的系统调用函数指令的长度,记作Len;
(4)对于第N号系统调用,进行如下处理:
4.1)对于第N号系统调用,其对应的系统调用函数的地址存储在系统调用表中的第N个表项,其逻辑地址为syscallTableAddr+4*N,利用内存映射模块的接口获取该表项的值,得到对应的系统调用函数逻辑地址funcAddr;
4.2)利用内存映射部分的接口获取逻辑地址funcAddr处长度为Len的数据,得到第N个系统调用函数指令的数据。
4.根据权利要求1所述的基于Xen虚拟化的内核完整性检测检测方法,其特征在于:所述安全检测部分从管理域Dom0对客户域DomU的操作系统内核进行完整性检测的操作如下:
(1)从部署在管理域Dom0中的安全策略文件读取出以下信息:
1.1)中断向量表中每一个的中断处理函数的逻辑地址;
1.2)系统调用表中每个系统调用函数的逻辑地址;
1.3)系统调用号以及其对应的系统调用函数的指令数据的SHA-1哈希值;
(2)以轮询的方式利用信息获取部分提供的接口,获取下列信息:
2.1)客户域DomU中的中断向量表中每个中断处理程序的逻辑地址;
2.2)客户域DomU中的系统调用表中的每个系统调用函数的逻辑地址;
2.3)客户域DomU中的系统调用函数指令的数据,然后利用SHA-1哈希算法计算出系统调用函数指令数据的哈希值;
(3)比较从客户域DomU获取的信息与从安全策略文件中读取的信息;
3.1)比较中断向量表中每个中断处理程序的逻辑地址,如果某一项的数据不一致,说明对应的中断处理程序受到恶意软件的中断处理程序重定向攻击,记录下不一致的表项,并向管理域Dom0告警;
3.2)比较系统调用表中的每个系统调用函数的逻辑地址,如果某一项的数据不一致,说明对应的系统调用函数被恶意软件进行了系统调用重定向攻击,记录下不一致的表项,并向管理域Dom0告警;
3.3)比较系统调用函数指令数据的哈希值,如果不一致,说明相应的系统函数受到了恶意软件的代码注入攻击,记录下不一致的系统调用号,并向管理域Dom0告警。
CN201410062486.1A 2014-02-22 2014-02-22 基于Xen虚拟化的内核完整性检测方法 Expired - Fee Related CN103793651B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410062486.1A CN103793651B (zh) 2014-02-22 2014-02-22 基于Xen虚拟化的内核完整性检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410062486.1A CN103793651B (zh) 2014-02-22 2014-02-22 基于Xen虚拟化的内核完整性检测方法

Publications (2)

Publication Number Publication Date
CN103793651A true CN103793651A (zh) 2014-05-14
CN103793651B CN103793651B (zh) 2016-05-25

Family

ID=50669304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410062486.1A Expired - Fee Related CN103793651B (zh) 2014-02-22 2014-02-22 基于Xen虚拟化的内核完整性检测方法

Country Status (1)

Country Link
CN (1) CN103793651B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751050A (zh) * 2015-04-13 2015-07-01 成都睿峰科技有限公司 一种客户端应用程序管理方法
CN105279430A (zh) * 2015-11-19 2016-01-27 国云科技股份有限公司 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法
CN106650355A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种保护函数调用的方法及装置
CN106778257A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机防逃逸装置
WO2017185202A1 (zh) * 2016-04-25 2017-11-02 深圳前海达闼云端智能科技有限公司 一种虚拟化系统监测方法和装置
WO2017193898A1 (zh) * 2016-05-09 2017-11-16 广州广电运通金融电子股份有限公司 一种基于Linux或Unix内核操作系统的串口映射方法及装置
CN108595349A (zh) * 2017-12-28 2018-09-28 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN110688198A (zh) * 2019-09-24 2020-01-14 网易(杭州)网络有限公司 系统调用方法、装置和电子设备
CN111400702A (zh) * 2020-03-24 2020-07-10 上海瓶钵信息科技有限公司 一种虚拟化的操作系统内核保护方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097355A1 (en) * 2011-10-13 2013-04-18 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
CN103544089A (zh) * 2013-10-13 2014-01-29 西安电子科技大学 基于Xen的操作系统识别方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097355A1 (en) * 2011-10-13 2013-04-18 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
CN103544089A (zh) * 2013-10-13 2014-01-29 西安电子科技大学 基于Xen的操作系统识别方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZHI-XIAN CHEN, JUN CUI, WEI LIU AND HAO HUANG: "Using an In-kernel Hypervisor to Protect the Integrity of Operating System", 《2011 INTERNATIONAL CONFERENCE ON COMPUTERS, COMMUNICATIONS, CONTROL AND AUTOMATION (CCCA)》, 31 December 2011 (2011-12-31) *
汪清: "基于Linux内核不变量推测的Rootkit检测", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 September 2013 (2013-09-15) *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104751050A (zh) * 2015-04-13 2015-07-01 成都睿峰科技有限公司 一种客户端应用程序管理方法
CN105279430A (zh) * 2015-11-19 2016-01-27 国云科技股份有限公司 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法
CN107454961A (zh) * 2016-04-25 2017-12-08 深圳前海达闼云端智能科技有限公司 一种虚拟化系统监测方法和装置
WO2017185202A1 (zh) * 2016-04-25 2017-11-02 深圳前海达闼云端智能科技有限公司 一种虚拟化系统监测方法和装置
WO2017193898A1 (zh) * 2016-05-09 2017-11-16 广州广电运通金融电子股份有限公司 一种基于Linux或Unix内核操作系统的串口映射方法及装置
CN106778257A (zh) * 2016-12-08 2017-05-31 北京国电通网络技术有限公司 一种虚拟机防逃逸装置
CN106650355A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种保护函数调用的方法及装置
CN106650355B (zh) * 2016-12-08 2020-04-10 武汉斗鱼网络科技有限公司 一种保护函数调用的方法及装置
CN108595349A (zh) * 2017-12-28 2018-09-28 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
WO2019128200A1 (zh) * 2017-12-28 2019-07-04 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN108595349B (zh) * 2017-12-28 2020-01-31 贵阳忆芯科技有限公司 大容量存储设备的地址转换方法与装置
CN110688198A (zh) * 2019-09-24 2020-01-14 网易(杭州)网络有限公司 系统调用方法、装置和电子设备
CN110688198B (zh) * 2019-09-24 2021-03-02 网易(杭州)网络有限公司 系统调用方法、装置和电子设备
CN111400702A (zh) * 2020-03-24 2020-07-10 上海瓶钵信息科技有限公司 一种虚拟化的操作系统内核保护方法
CN111400702B (zh) * 2020-03-24 2023-06-27 上海瓶钵信息科技有限公司 一种虚拟化的操作系统内核保护方法

Also Published As

Publication number Publication date
CN103793651B (zh) 2016-05-25

Similar Documents

Publication Publication Date Title
CN103793651B (zh) 基于Xen虚拟化的内核完整性检测方法
Ge et al. Sprobes: Enforcing kernel code integrity on the trustzone architecture
Payne et al. Lares: An architecture for secure active monitoring using virtualization
Azab et al. HIMA: A hypervisor-based integrity measurement agent
Volckaert et al. Cloning your gadgets: Complete ROP attack immunity with multi-variant execution
CN102339371B (zh) 一种检测恶意程序的方法、装置及虚拟机
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
Li et al. Fine-cfi: fine-grained control-flow integrity for operating system kernels
US10380336B2 (en) Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
EP3048550B1 (en) Measurement method, electronic device and measurement system
CN104715202A (zh) 一种虚拟机中的隐藏进程检测方法和装置
Tian et al. Kruiser: Semi-synchronized Non-blocking Concurrent Kernel Heap Buffer Overflow Monitoring.
EP3063692B1 (en) Virtual machine introspection
Zhou et al. Hardware-based on-line intrusion detection via system call routine fingerprinting
Zhou et al. Hardware-based workload forensics: Process reconstruction via TLB monitoring
Korkin Two challenges of stealthy hypervisors detection: Time cheating and data fluctuations
Jiang et al. HyperCrop: a hypervisor-based countermeasure for return oriented programming
Zhong et al. A virtualization based monitoring system for mini-intrusive live forensics
US11556645B2 (en) Monitoring control-flow integrity
Suzaki et al. Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints
Zhan et al. A low-overhead kernel object monitoring approach for virtual machine introspection
Ahmed et al. Rule-based integrity checking of interrupt descriptor tables in cloud environments
Zaidenberg et al. Hypervisor memory introspection and hypervisor based malware honeypot
Li et al. Operating system mechanisms for TPM-based lifetime measurement of process integrity

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160525

Termination date: 20210222