CN105279430A - 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法 - Google Patents

针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法 Download PDF

Info

Publication number
CN105279430A
CN105279430A CN201510799251.5A CN201510799251A CN105279430A CN 105279430 A CN105279430 A CN 105279430A CN 201510799251 A CN201510799251 A CN 201510799251A CN 105279430 A CN105279430 A CN 105279430A
Authority
CN
China
Prior art keywords
virtual machine
integrity detection
kernel
linux virtual
inconsistent
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.)
Pending
Application number
CN201510799251.5A
Other languages
English (en)
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.)
G Cloud Technology Co Ltd
Original Assignee
G Cloud 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 G Cloud Technology Co Ltd filed Critical G Cloud Technology Co Ltd
Priority to CN201510799251.5A priority Critical patent/CN105279430A/zh
Publication of CN105279430A publication Critical patent/CN105279430A/zh
Pending legal-status Critical Current

Links

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/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
    • G06F21/53Monitoring 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
    • 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

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)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及云计算安全领域,特别是一种针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法。本发明首先将恶意代码检测工具部署在Xen系统的Domain0中,然后启动Linux虚拟机并使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息,每隔一段时间获取目标Linux虚拟机内核关键区域的信息,把获取的内核关键区域信息与第一次获取的信息进行对比;如果信息一致,则认为被检测Linux虚拟机是正常的;如果不一致,则调用处理模块,记录下不一致信息所在的具体位置,向系统管理员告警。本发明解决了传统恶意软件检测工具容易受到攻击导致失效的问题;可以用于Linux虚拟机恶意代码攻击的内核完整性检测。

Description

针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法
技术领域
本发明涉及云计算安全领域,特别是一种针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法。
背景技术
随着云计算的不断发展,其应用领域也越来越大。伴随着云计算安全问题越来越引起人们的关注。恶意代码攻击是一种常见的攻击手段,目前最新的恶意代码尤其是内核态的恶意代码越来越难以被检测到,对操作系统内核的破坏性也越来越大。传统的恶意代码检测方法中多数把检测工具部署在与恶意代码相同的操作系统中,以特征码识别为主要手段对恶意代码进行检测,这种方法能够直接获取被监控操作系统的诸多信息,拥有高可见性,便于判断是否受到攻击,但是也存在以下的弊端:
1、当被监控的操作系统被恶意代码成功入侵时,检测工具同样会暴露在恶意代码的控制之下,不能发挥正常的检测功能。
2、由于内核空间的函数指针、函数代码、静态数据结构数量很多,如果按照特征码识别的方法进行全面检测,那么会消耗过大的计算机资源和时间资源,会严重影响计算机系统性能。
发明内容
本发明解决的技术问题在于提供一种可用、高效的针对虚拟机恶意代码攻击的内核完整性检测方法,解决现有恶意代码检测工具容易受到攻击、损耗过多资源的问题。
本发明解决上述技术问题的技术方案是,包括如下步骤:
所述的方法包括以下步骤:
步骤1:将恶意代码检测工具部署在Xen系统的Domain0中;
步骤2:启动Linux虚拟机;
步骤3:检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息;
步骤4:每隔一段时间,检测工具获取目标Linux虚拟机内核关键区域的信息;
步骤5:检测工具把获取的内核关键区域信息与第一次获取的内核关键区域信息进行对比;如果信息一致,则跳到步骤4;如果不一致,则调用处理模块。
所述的内核关键区域信息指的是Linux操作系统内核的系统调用表、系统调用函数地址、系统调用入口函数、中断调用表和中断或异常服务函数。
所述的启动Linux虚拟机指的是启动Linux虚拟机的操作系统。
所述的DomainU访问接口层指的是C语言库libxc提供的两个接口xc_vcpu_getcontext及xc_map_foreign_range,通过这两个接口,可以实现在Domain0中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。
所述的内核关键区域信息对比包括如下步骤:
步骤1:中断描述符表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤2:中断或异常服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤3:系统调用入口函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤4:系统调用表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤5:系统调用服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块。
本发明利用Xen虚拟机管理器对被检测虚拟机的CPU、内存信息完全可见的优势,针对恶意代码攻击内核的方法和目标的特点,对被检测虚拟机操作系统中的内核的关键区域的完整性进行检测从而确定恶意代码;利用虚拟机架构提供的隔离的特性,保证检测工具不受恶意代码的攻击。本发明的方法能产生如下的有益效果:
1、本发明不需要在虚拟机内部安装任何恶意代码检测工具,避免恶意代码检测工具受到攻击而失效的问题,同时避免了应用传统方式时在每台虚拟机中安装恶意代码检测工具而带来的大工作量;
2、本发明根据恶意代码工具目标的特点,只需要对内核关键区域进行信息收集和信息对比,是一种高效的检测方法。
附图说明
下面结合附图对本发明进一步说明:
图1为本发明的流程图;
图2为本发明的内核完整性信息检测的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面以8086系统架构的计算机上,具体讲述本发明的一个具体实施方式。
首先对DomainU访问层进行扩展,实现以下两个函数:
(1)read_register.
(2)read_kernel_vir_addr.
read_register():在libxc库中xc_vcpu_getcontext函数的基础上实现,对其进行简单的封装。通过read_register()接口可以访问目标Domain中虚拟CPU的EAX、EBX、EXC、EDX、EBP、ESP、ESI、EDI、CR0、CR1、CR2、CR3、CR4、GDTR、LDTR、IDTR等寄存器的数据。
read_register是对xc_vcpu_getcontext函数的简单封装,本文不进行详细叙述。
read_kernel_vir_addr():在libxc库中xc_vcpu_getcontex,xc_map_foreign_range函数的基础上实现。部署在Domain0中的检测工具通过该接口可以访问目标Domain中内核态虚拟地址空间的数据。
把上述修改后的接口层编译后部署在Domain0中;
Domain0启动后,进行以下初始化:
传入中断个数idtNum,sysNum;从system.map读取中断描述符表的地idtBase,读取系统调用表的地址sysBase,中断入口函数system_call地址enAddr1,中断入口函数sysenter_entry的地址enAddr2。
特定的虚拟机DomainU启动后,获取内核关键区域信息:
1)通过read_kernel_vir_addr获取目标Domain内idtBase处长度为8*idtNum的内容,存储在数组initIdtTable[8*idtNum]中。
2)对initIdtTable表中的每个中断描述符表项(8字节大小),提取出中断或异常处理函数的地址,依次调用read-kernel_vir_addr读取这些函数的前N个字节的内容,存储在二维数组initIdtCode[idtNum][N]中。
3)通过read_kernel_vir_addr获取目标Domain内enAddr1处长度为N的内容,存储在数组initSysEnt1Code[N]中。
4)通过read_kernel_vir_addr获取目标Domain内enAddr2处长度为N的内容,存储在数组initSysEnt2[N]中。
5)通过read_kernel_vir_addr获取目标Domain内sysBase处长度为4*sysNum的内容,存储在数组initSysTable[4*]中。
6)对initSysTable表中的每个系统调用表项(4字节大小),提取出系统服务函数的地址,依次调用read-kernel_vir_addr读取这些函数的前N个字节的内容,存储在二维数组initSysCode[sysNum][N]中。
每隔一段时间获取DomainU内相关信息,并进行完整性检测:
1)确定中断描述符表地址。read_register函数读取目标Domain的IDTR寄存器的值,取其高32位作为中断描述发表的基地址,记作idtAddr。将idtAddr与idtBase对比,如果一致,则继续下一步;如果发现不一致,调用处理模块。
2)通过read_kernel_vir_addr获取目标Domain内idtBase处长度为8*idtNum的内容,存储在数组idtTable[8*idtNum]中。将idtTable与initIdtTable中的每一个中断描述符表项进行对比,如果一致,则继续下一步;如果不一致,调用处理模块。
3)对initIdtTable表中的每个中断描述符表项(8字节大小),提取出中断或异常处理函数的地址,依次调用read-kernel_vir_addr读取这些函数的前N个字节的内容,存储在二维数组idtCode[idtNum][N]中。将idtCode与initIdtCode中的没一个进行对比,如果一致,则继续下一步;如果不一致,则调用处理模块。
4)通过read_kernel_vir_addr获取目标Domain内enAddr1处长度为N的内容,存储在数组sysEnt1Code[N]中。将sysEnt1Code与initSysEnt1Code中的每一项进行,如果一致,则继续下一步;如果不一致,则调用处理模块。
5)通过read_kernel_vir_addr获取目标Domain内enAddr2处长度为N的内容,存储在数组sysEnt2Code[N]中。将sysEnt2Code与initSysEnt2Code对比,如果一致,则继续下一步;如果不一致,则调用处理模块。
6)通过read_kernel_vir_addr获取目标Domain内sysBase处长度为4*sysNum的内容,存储在数组sysTable[4*]中。将sysTable与initSysTable中的每一个中断描述符表项进行对比,如果一致,则继续下一步;如果不一致,调用处理模块。
7)对initSysTable表中的每个系统调用表项(4字节大小),提取出系统服务函数的地址,依次调用read-kernel_vir_addr读取这些函数的前N个字节的内容,存储在二维数组sysCode[sysNum][N]中。将sysCode与initSysCode中的每一项,如果一致,则继续下一步;如果不一致,则调用处理模块。
如果在以上检测的过程中没有发现异常,则认为被检测系统是安全的;如果在任何一步中发现了不一致的情况,则调用处理模块,记录下不一致信息所在的具体位置,向系统管理员告警。

Claims (7)

1.一种针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的方法包括以下步骤:
步骤1:将恶意代码检测工具部署在Xen系统的Domain0中;
步骤2:启动Linux虚拟机;
步骤3:检测工具使用Xen的虚拟机管理器的DomainU访问接口层获取Linux虚拟机内核关键区域的信息;
步骤4:每隔一段时间,检测工具获取目标Linux虚拟机内核关键区域的信息;
步骤5:检测工具把获取的内核关键区域信息与第一次获取的内核关键区域信息进行对比;如果信息一致,则跳到步骤4;如果不一致,则调用处理模块。
2.根据权利要求1所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的内核关键区域信息指的是Linux操作系统内核的系统调用表、系统调用函数地址、系统调用入口函数、中断调用表和中断或异常服务函数。
3.根据权利要求1所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的启动Linux虚拟机指的是启动Linux虚拟机的操作系统。
4.根据权利要求2所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的启动Linux虚拟机指的是启动Linux虚拟机的操作系统。
5.根据权利要求1至4任一项所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的DomainU访问接口层指的是C语言库libxc提供的两个接口xc_vcpu_getcontext及xc_map_foreign_range,通过这两个接口,可以实现在Domain0中访问特定虚拟机DomainU中虚拟CPU和伪物理内存。
6.根据权利要求1至4任一项所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的内核关键区域信息对比包括如下步骤:
步骤1:中断描述符表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤2:中断或异常服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤3:系统调用入口函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤4:系统调用表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤5:系统调用服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块。
7.根据权利要求5所述的Linux虚拟机恶意代码攻击的内核完整性检测方法,其特征在于:所述的内核关键区域信息对比包括如下步骤:
步骤1:中断描述符表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤2:中断或异常服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤3:系统调用入口函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤4:系统调用表完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块;
步骤5:系统调用服务函数完整性检测,如果一致,则继续下一步;如果不一致,则调用处理模块。
CN201510799251.5A 2015-11-19 2015-11-19 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法 Pending CN105279430A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510799251.5A CN105279430A (zh) 2015-11-19 2015-11-19 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510799251.5A CN105279430A (zh) 2015-11-19 2015-11-19 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法

Publications (1)

Publication Number Publication Date
CN105279430A true CN105279430A (zh) 2016-01-27

Family

ID=55148427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510799251.5A Pending CN105279430A (zh) 2015-11-19 2015-11-19 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法

Country Status (1)

Country Link
CN (1) CN105279430A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107808096B (zh) * 2017-11-23 2019-12-17 厦门安胜网络科技有限公司 检测apk运行时被注入恶意代码的方法、终端设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423999B2 (en) * 2009-07-13 2013-04-16 Hitachi, Ltd. Computer system, virtual machine monitor and scheduling method for virtual machine monitor
CN103064784A (zh) * 2012-11-29 2013-04-24 福建师范大学 面向Xen环境的运行时内存泄漏检测方法及其实现系统
CN103500304A (zh) * 2013-10-13 2014-01-08 西安电子科技大学 基于Xen的虚拟机个性化安全监控系统及监控方法
CN103793651A (zh) * 2014-02-22 2014-05-14 西安电子科技大学 基于Xen虚拟化的内核完整性检测方法
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8423999B2 (en) * 2009-07-13 2013-04-16 Hitachi, Ltd. Computer system, virtual machine monitor and scheduling method for virtual machine monitor
CN103064784A (zh) * 2012-11-29 2013-04-24 福建师范大学 面向Xen环境的运行时内存泄漏检测方法及其实现系统
CN103500304A (zh) * 2013-10-13 2014-01-08 西安电子科技大学 基于Xen的虚拟机个性化安全监控系统及监控方法
CN103793651A (zh) * 2014-02-22 2014-05-14 西安电子科技大学 基于Xen虚拟化的内核完整性检测方法
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄为: "基于Xen虚拟化的内核态rootkit检测", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107808096B (zh) * 2017-11-23 2019-12-17 厦门安胜网络科技有限公司 检测apk运行时被注入恶意代码的方法、终端设备及存储介质

Similar Documents

Publication Publication Date Title
US11841966B2 (en) Inhibiting memory disclosure attacks using destructive code reads
Yan et al. V2e: combining hardware virtualization and softwareemulation for transparent and extensible malware analysis
Graziano et al. Hypervisor memory forensics
EP2063377B1 (en) Method and system for whitelisting software components
CN107066311B (zh) 一种内核数据访问控制方法与系统
CN101782954B (zh) 一种异常进程的检测装置及方法
CN103793651B (zh) 基于Xen虚拟化的内核完整性检测方法
US10121004B2 (en) Apparatus and method for monitoring virtual machine based on hypervisor
EP3063692B1 (en) Virtual machine introspection
CN102147843A (zh) 一种基于内核不变量保护的rootkit入侵检测和系统恢复方法
CN103310152B (zh) 基于系统虚拟化技术的内核态Rootkit检测方法
KR101064164B1 (ko) 리눅스 커널 기반 스마트 플랫폼 내에서의 커널 무결성 검사 및 변조된 커널 데이터 복구 방법
KR101816751B1 (ko) 하이퍼바이저 기반의 가상머신 모니터링 장치 및 방법
Tian et al. Kruiser: Semi-synchronized Non-blocking Concurrent Kernel Heap Buffer Overflow Monitoring.
CN103955649B (zh) 一种安全启动终端设备的方法
CN101499016B (zh) 虚拟机监视器、虚拟机系统及客户操作系统进程处理方法
Zhong et al. A virtualization based monitoring system for mini-intrusive live forensics
Jiang et al. HyperCrop: a hypervisor-based countermeasure for return oriented programming
CN105279430A (zh) 针对基于Xen的Linux虚拟机恶意代码攻击的内核完整性检测方法
Suzaki et al. Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints
CN111194447B (zh) 监视控制流完整性
CN105468967A (zh) 一种针对基于Xen的Linux虚拟机恶意代码攻击的隐藏进程检测方法
Ando et al. Asynchronous pseudo physical memory snapshot and forensics on paravirtualized vmm using split kernel module
Godiyal et al. A lightweight hypervisor for malware analysis
Ahmed et al. Idtchecker: Rule-based integrity checking of interrupt descriptor tables in cloud environments

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160127

WD01 Invention patent application deemed withdrawn after publication