CN103544089B - 基于Xen的操作系统识别方法 - Google Patents
基于Xen的操作系统识别方法 Download PDFInfo
- Publication number
- CN103544089B CN103544089B CN201310477287.2A CN201310477287A CN103544089B CN 103544089 B CN103544089 B CN 103544089B CN 201310477287 A CN201310477287 A CN 201310477287A CN 103544089 B CN103544089 B CN 103544089B
- Authority
- CN
- China
- Prior art keywords
- operating system
- client
- interrupt
- identification
- descriptor table
- 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.)
- Expired - Fee Related
Links
Landscapes
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
一种基于Xen的操作系统识别方法,属于计算机虚拟化技术领域,应用于虚拟化环境下操作系统类别的识别,具体方法是采用细粒度的精确识别与粗粒度的弹性识别相结合的方法,全面识别操作系统类别,所述细粒度的精确识别采用中断描述符表和全局描述符表基址两种识别方式进行识别。细粒度的精确识别能够在管理域中精确的识别客户域中操作系统的类别,如果细粒度精确识别操作系统失效,则利用TCP指纹粗粒度的识别客户域中操作系统的类型,从而实现从管理域识别客户域中操作系统的类型。本发明在识别时不修改客户操作系统,从管理域获取信息,不需要客户操作系统参与,避免被客户操作系统发现保证自身的安全。
Description
技术领域
本发明属于计算机虚拟化技术领域,具体地说是一种在虚拟化环境下识别操作系统类别的方法。应用于虚拟化环境下操作系统类别的识别。
背景技术
随着近年来,虚拟化技术成为计算机系统结构的发展趋势,并为安全监控提供了一种解决思路。由于虚拟机管理器具有更高的权限和更小的可信计算基,利用虚拟机管理器在单独的虚拟机中部署安全工具能够对目标虚拟机进行检测。这种方法能够保证监控工具的有效性和防攻击性。
虚拟机监控与传统的监控有很大的差异。传统的监控是在操作系统内部进行监控,是针对单一系统的监控,在操作系统内部实现监控不存在获取系统事件以及理解其语意的障碍。而在虚拟机监控方面,外部监控是在管理域中监控客户域中的操作系统,监控软件是在客户操作系统的外部。
传统的监控软件是针对特定系统开发的,当这部分软件运用于虚拟机监控方面,如何获取客户操作系统中的事件并且转换成其可以理解的语意信息,是一个关键问题。目前的研究成果大部分需要修改客户域中的操作系统或者提前知道所要监控客户系统的类别信息。
XenAccess实现了虚拟机监控内存自省功能,是应用十分广泛的内存自省工具,但它需要手动识别操作系统类别。VMDriver实现了在管理域中恢复语义,但它需要手动识别操作系统类别。CoPilot、April、XENKimono、SecVisor等都是虚拟化监控领域重要的研究,但是它们都需要被监控操作系统的信息,需要手动识别操作系统。虚拟机监控器上可以同时运行多个虚拟机,各个虚拟机可以运行不同类型的操作系统,若每个系统都需要修改或手动来获取系统的信息,不仅不便捷,而且在客户域中安装了文件或者人工识别操作系统,会造成了潜在的威胁,这就使得这些研究成果的实用性有所降低。
虚拟化环境架构和传统架构的不同,给虚拟化监控领域带来了机遇也带来了挑战。目前的虚拟化监控研究,倾向于虚拟机监控的通用性方面。而识别操作系统是虚拟化监控通用性的关键步骤。识别操作系统的类型,不仅是虚拟机监控通用性研究的关键步骤,而且本身也必须具有很好的通用性:首先,它不修改客户域中的操作系统;其次,它提供一个通用的库,方便监控软件通过统一接口获得系统识别的信息。
发明内容
本发明所要解决的技术问题是针对在现有的虚拟化环境下识别操作系统均需要手动修改或手动来获取系统的信息,从而影响虚拟机监控的通用性的缺陷,而提出了一种基于Xen的操作系统识别方法,在不修改客户操作系统的条件下,实现了从管理域识别客户域操作系统。
本发明解决技术问题的主要方案概括为:采用细粒度的精确识别与粗粒度的弹性识别相结合的方法,全方位识别操作系统。细粒度的精确识别采用中断描述符表和全局描述符表基址两种识别方式进行识别,细粒度的精确识别能够在客户域中精确的识别客户域中的操作系统的类别。当细粒度精确识别操作系统失效,利用TCP指纹粗粒度地识别客户域操作系统类型。具体识别过程如下:
(1)在管理域中判别客户域是半虚拟化还是硬件虚拟化环境。
(2)当客户域是半虚拟化环境
2a)在管理域中,利用libxc的库函数,直接获取客户域操作系统中断描述符表的内容;
2b)对中断描述符表进行哈希操作,获取半虚拟化中断描述符表的指纹;
2c)将中断描述符表的指纹与半虚拟化中断描述符表指纹库进行对比,精确识别半虚拟化操作系统的类别;
2d)半虚拟化中断描述符表精确识别失败的时候,进行TCP指纹被动识别。抓取客户域操作系统的网络数据包,提取指纹关键字来粗粒度识别操作系统的类别。
(3)当客户域是硬件虚拟化环境
3a)在管理域中利用libxc库函数,获取客户域操作系统中断描述符表的线性基址;将该地址进行地址转换,使其从线性地址转换为伪物理地址;
3b)把中断描述符表的伪物理地址所在的内存页面从客户域映射到管理域,在管理域中读取客户域中操作系统的中断描述符表;对该表进行哈希操作,获取硬件虚拟化中断描述符表的指纹,对比硬件虚拟化中断描述符表的指纹库,精确识别硬件虚拟化操作系统的类别。
3c)当中断描述符表识别失败的时候,通过全局描述符表基址来识别操作系统的类别。利用libxc库函数获取客户域操作系统的全局描述符表的基址,将该基址与硬件虚拟化全局描述符表表基址的指纹库对比,精确识别硬件虚拟化操作系统的类型。
3d)当全局描述符表基址识别失败的时候,进行TCP指纹别动识别。抓取客户域操作系统的网络数据包,提取指纹关键字来粗粒度识别操作系统的类别。
识别操作系统的类型是虚拟机监控的关键步骤,针对新架构下的监控的特点,应用上述方法实现了从管理域识别客户域操作系统的方法。
识别系统方法的总体流程图如图1所示。
本发明与现有的技术相比,具有以下特点:
1.识别系统的全面性
将细粒度的精确识别与粗粒度的弹性识别相结合,全方位识别操作系统的类型,利用系统中断描述符表和全局描述符表基址,能够精确(100%)识别操作系统,甚至能识别相同操作系统不同的细小升级版本之间的差异。在精确识别操作系统失效的情况下,根据各个操作系统TCP/IP协议栈有一定的继承性的特性,利用TCP指纹粗粒度的识别操作系统的类型。避免了对操作系统的错误识别。
2.不修改客户操作系统
在虚拟环境下,一个主机上运行的操作系统数量成千上万,系统类型也千变万化。若为了识别操作系统的类型,对每一个操作系统都进行修改,那么会引入很多问题。首先,针对不同的操作系统需要进行不同的修改,并且还要提供统一的接口供监控域的软件使用。其次,需要制定客户操作系统与管理域的通信方式,用来传递识别的结果。再次,这种大批量的修改可能会引入bug,给客户操作系统带来安全隐患,这有违安全监控的初衷。本发明设计的操作系统识别系统不修改客户域的操作系统,针对不同的操作系统,有着统一的识别流程,避免了针对不同操作系统进行修改的繁重任务,也避免了由于修改操作系统而引入的安全隐患。
3.识别过程不被客户操作系统发现
当识别客户操作系统的时候,应当避免被客户操作系统发现。若客户操作系统发现有监控软件正在识别自己的系统类型,它可能会采取某些措施,降低识别的精准度,甚至将监控导向错误的系统类型。本发明的识别方法在识别客户操作系统的时候,所有的信息都是在管理域中获取的,获取信息的过程完全不需要客户操作系统的参与,避免了被客户操作系统发现。
4.保证自身的安全
若操作系统识别系统能够被客户操作系统攻击,那么该识别系统就不能很好的对客户操作系统进行识别。本发明的操作系统识别系统完全工作在管理域,所以客户域的操作系统无法访问管理域,这样便切断了客户域操作系统企图修改识别系统的途径,保证了识别系统的安全性。
5.可移植性
本发明所用的识别方法不修改虚拟机监控器,虚拟机监控器粘沾性不强,便于移植到不同的虚拟机监控器上。
附图说明
图1是本发明的识别系统方法的总体流程图
图2是半虚拟环境下,中断描述符表识别操作系统图
图3是硬件虚拟化环境下,获取客户域操作系统中断描述符表图
图4是硬件虚拟化环境下,全局描述符表基址识别操作系统图
图5是利用TCP指纹被动识别操作系统图
具体实施方式
下面参照说明书附图对本发明的技术方案的具体实施作详细描述。
半虚拟化下的精确识别
由于半虚拟化的特殊性,本发明在半虚拟情况下精确识别客户域操作系统的方法,采用中断描述符表进行识别,而不使用全局描述符表基址进行识别。在半虚拟情况下,VCPU的结构体中直接包含了中断描述符表,利用libxc库函数,读取客户域操作系统的VCPU,直接从VCPU中读取出中断描述符表,对其进行哈希操作获得系统的中断描述符表指纹,并与半虚拟化中断描述符指纹库进行比较,识别出操作系统的类别。其流程如图2所示。
硬件虚拟化下的精确识别
硬件虚拟化情况下,客户域操作系统并不知道自己运行在虚拟环境下,利用中断描述符表和全局描述符表基址精确识别操作系统的类型。
首先利用中断描述符表来识别操作系统的类别。在硬件虚拟情况下,获取中断描述符的方法与半虚拟情况不同。从管理域获取客户域的VCPU,从VCPU中不能直接读取客户域操作系统中断描述符表的内容,获取的是中断描述符表起始位置在内存中的地址,以及表的长度。Xen将地址分为三层:机器地址、物理地址、线性地址。硬件虚拟化的客户操作系统运行在伪物理地址层,其中断描述符表存在于线性地址中。
要在管理域中读取客户域操作系统中断描述符表的内容,需要进行三步重要的步骤:首先,在硬件虚拟化情况下,对于客户操作系统本身来说,和传统的情况下是一致的。在传统模式下,要读取中断描述符表的内容,需要将中断描述符表基址从线性地址转换为物理地址(在硬件虚拟化下为伪物理地址),然后根据该地址读取中断描述符表的内容;然后,由于Xen对各个域的内存地址空间提供了隔离性,使得管理域和客户域处于不同的内存空间。因此,同样的地址数据在管理域和客户域中指向的是不同的地址。为了在管理域中获取客户域操作系统的中断描述符表,还需要将客户域中存储中断描述符表的内存映射到管理域中;最后,在管理域中读取中断描述符表的内容。硬件虚拟化环境下,获取客户域操作系统中断描述符表的过程如图3所示。
在管理域获取了客户域操作系统中断描述符表后,对其进行哈希操作,获取硬件虚拟化客户操作系统中断描述符表指纹,对比硬件虚拟化中断描述符表指纹库,精确识别客户操作系统类型。
当中断描述符表指纹识别失败的时候,利用全局描述符表基址精确识别操作系统。在传统的模式下,虽然局部描述符表等内容的变更会使全局描述符表的内容发生变化,而且全局描述符表理论上可以加载在内存的任何一个地方。但是,一个操作系统有且仅存在一个全局描述符表,当一个系统启动后,全局描述符表在内存中的位置也不会发生变动;对于同一个操作系统,当其启动后,CPU寄存器GDTR加载的全局描述符表基址是同一个地址;对于不同的操作系统,其全局描述符表基址是不同的。在硬件虚拟化的情况下,对于客户操作系统来说和传统环境下一致,其运行的环境和传统的环境没有区别。根据这一特性,在硬件虚拟化环境下,利用全局描述符表的基地址来识别操作系统的类别。
通过libxc库提供的函数xc_domain_hvm_getcontext_partial,可以获取硬件虚拟化环境下的VCPU。读取该CPU结构体中的gdtr_base项,可以获取操作系统的全局描述符表基址。然后,利用该地址对比硬件虚拟化全局描述符表基址指纹库识别客户操作系统的类型。其过程如图4所示。
TCP指纹粗粒度识别
利用中断描述符表以及全局描述符表基址可以精确的识别操作系统,甚至可以识别相同系统细小升级版本之间的差异,但是这种精确识别不具有弹性。例如,当一个新操作系统版本发布的时候,其指纹还没来得及加入指纹库,则无法利用精确识别的方法识别客户操作系统。当精确识别失效的情况下,利用TCP协议指纹粗粒度的识别出操作系统的类型。TCP协议指纹识别虽然不精确,但是具有很好的弹性。
由于TCP协议的制定组织只是规定了TCP协议的框架,没有规定TCP协议的具体实现细节,所以各个操作系统对与TCP、IP协议的不同实现,可以用来识别操作系统。TCP指纹识别分为主动识别和被动识别,本发明使用被动识别技术来识别操作系统的类型。
首先初始化libcap库,选择抓取数据包的虚拟网络接口,该虚拟网络接口属于需要识别的客户操作系统所在的客户域,利用libcap库通过虚拟网络接口来抓取数据包。在该虚拟网络接口上抓取的数据包,包含客户操作系统发出的数据包和发往客户操作系统的数据包。识别操作系统所需的数据包为客户操作系统发出的包。
然后,获取客户操作系统的IP地址,利用客户操作系统的IP地址过滤出从客户操作系统发出的数据包。从这些数据包中提取TOS、DF、TTL、windows_size这几个标志字段作为TCP指纹。通过大量抓取数据包,并利用这些指纹来对系统打分,输出得分最高者。使用TCP协议指纹识别操作系统的流程如图5所示。
Claims (1)
1.一种基于Xen的操作系统识别方法,其特征在于:采用细粒度的精确识别与粗粒度的弹性识别相结合的方法,全面识别操作系统类别,所述细粒度的精确识别采用中断描述符表和全局描述符表基址进行识别,细粒度的精确识别能够在管理域中精确的识别客户域中的操作系统的类别,如果细粒度精确识别操作系统失效,则利用TCP指纹粗粒度的识别在客户域的操作系统类型,从而实现从管理域识别客户域中操作系统的类型,具体识别过程如下:
(1)在管理域中判别客户域是硬件虚拟化还是半虚拟化环境;
(2)当客户域是半虚拟化环境:
2a)在管理域中,利用libxc的库函数读取客户域操作系统的VCPU,直接从VCPU中读取出中断描述符表的内容;
2b)对中断描述符表进行哈希操作,获取中断描述符表指纹,并与半虚拟化中断描述符表指纹库进行比较,识别客户域操作系统的类别;
2c)当半虚拟化中断描述符表精确识别失败的时候,进行TCP指纹被动识别,抓取客户域操作系统的网络数据包,提取指纹关键字来粗粒度识别操作系统的类别;
(3)当客户域是硬件虚拟化环境:
3a)在管理域中,利用libxc库函数,读取客户域操作系统的VCPU,从VCPU中获取客户域操作系统中断描述符表的线性基址;接着,将线性基址转换为伪物理地址;
3b)把中断描述符表的伪物理地址所在的内存页面从客户域映射到管理域,在管理域中读取中断描述符表,并进行哈希操作获取硬件虚拟化中断描述符表指纹,对比硬件虚拟化中断描述符表指纹库,识别客户操作系统的类别;
3c)当中断描述符表识别失败的时候,通过全局描述符表基址来识别操作系统的类别,从客户域VCPU中读取全局描述符表基址,利用该基址对比硬件虚拟化全局描述符表基址指纹库,识别客户操作系统的类型;
3d)当全局描述符表基址识别失败的时候,进行TCP指纹被动识别,抓取客户域操作系统的网络数据包,提取指纹关键字来粗粒度识别操作系统的类别。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310477287.2A CN103544089B (zh) | 2013-10-13 | 2013-10-13 | 基于Xen的操作系统识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310477287.2A CN103544089B (zh) | 2013-10-13 | 2013-10-13 | 基于Xen的操作系统识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544089A CN103544089A (zh) | 2014-01-29 |
CN103544089B true CN103544089B (zh) | 2016-05-25 |
Family
ID=49967562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310477287.2A Expired - Fee Related CN103544089B (zh) | 2013-10-13 | 2013-10-13 | 基于Xen的操作系统识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544089B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793651B (zh) * | 2014-02-22 | 2016-05-25 | 西安电子科技大学 | 基于Xen虚拟化的内核完整性检测方法 |
CN105516224B (zh) * | 2014-09-25 | 2019-04-09 | 杭州迪普科技股份有限公司 | 一种操作系统识别方法和装置 |
CN105183541B (zh) * | 2015-08-10 | 2019-07-12 | 上海斐讯数据通信技术有限公司 | 一种中断响应方法及系统 |
CN105554009B (zh) * | 2015-12-28 | 2018-10-30 | 成都千牛信息技术有限公司 | 一种通过网络数据获取设备操作系统信息的方法 |
CN105959321A (zh) * | 2016-07-13 | 2016-09-21 | 中国人民解放军理工大学 | 网络远程主机操作系统被动识别方法及装置 |
CN110213124A (zh) * | 2019-05-06 | 2019-09-06 | 清华大学 | 基于tcp多会话的被动操作系统识别方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
CN101867530A (zh) * | 2010-05-31 | 2010-10-20 | 西安电子科技大学 | 基于虚拟机的物联网网关系统及数据交互方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7802087B2 (en) * | 2003-03-10 | 2010-09-21 | Igt | Universal method for submitting gaming machine source code software to a game certification laboratory |
-
2013
- 2013-10-13 CN CN201310477287.2A patent/CN103544089B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101403983A (zh) * | 2008-11-25 | 2009-04-08 | 北京航空航天大学 | 基于虚拟机的多核处理器的资源监控方法及系统 |
CN101867530A (zh) * | 2010-05-31 | 2010-10-20 | 西安电子科技大学 | 基于虚拟机的物联网网关系统及数据交互方法 |
Non-Patent Citations (1)
Title |
---|
利用虚拟机监视器检测及管理隐藏进程;王丽娜 等;《计算机研究与发展》;20111231;第48卷(第8期);第1534-1541页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103544089A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103544089B (zh) | 基于Xen的操作系统识别方法 | |
US9851918B2 (en) | Copy-on-write by origin host in virtual machine live migration | |
CN103399812B (zh) | 基于Xen硬件虚拟化的磁盘文件操作监控系统及监控方法 | |
US9229758B2 (en) | Passive monitoring of virtual systems using extensible indexing | |
CN103685608B (zh) | 一种自动配置安全虚拟机ip地址的方法及装置 | |
US9898386B2 (en) | Detecting byte ordering type errors in software code | |
US9250940B2 (en) | Virtualization detection | |
US10367688B2 (en) | Discovering changes of network interface controller names | |
US20130111018A1 (en) | Passive monitoring of virtual systems using agent-less, offline indexing | |
US11093611B2 (en) | Utilization of deceptive decoy elements to identify data leakage processes invoked by suspicious entities | |
WO2019112986A1 (en) | Efficient event searching | |
CN108334399A (zh) | 一种基于云探针的多源异构云状态数据获取方法 | |
Gkortzis et al. | An empirical analysis of vulnerabilities in virtualization technologies | |
WO2014190427A1 (en) | Identifying client states | |
CN105205391B (zh) | 一种基于完整性验证的净室实时监控方法 | |
US20150186246A1 (en) | Including kernel object information in a user dump | |
US10235005B2 (en) | Method of generating display name of objects to be managed | |
US20150268984A1 (en) | Preemptive guest merging for virtualization hypervisors | |
CN109189652A (zh) | 一种封闭网络终端行为数据的采集方法及系统 | |
CN108228319A (zh) | 一种基于多桥的语义重构方法 | |
CN109688139B (zh) | 云平台安全检测系统 | |
EP4102361A2 (en) | Method and apparatus for managing functions of a query engine | |
WO2018233365A1 (zh) | 一种信息查询方法、终端、设备以及存储介质 | |
US11050766B2 (en) | Generating unique virtual process identifiers for use in network security mechanisms | |
EP3519966A1 (en) | Non-coupled software lockstep |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for 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 |
Granted publication date: 20160525 Termination date: 20211013 |
|
CF01 | Termination of patent right due to non-payment of annual fee |