一种基于IO序列的虚拟机异常行为检测方法与系统[发明专利]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201611224356.9
(22)申请日 2016.12.27
(71)申请人 四川大学
地址 610065 四川省成都市武侯区一环路
南一段24号
(72)发明人 陈兴蜀 陈佳昕 赵丹丹 金鑫
(74)专利代理机构 成都信博专利代理有限责任
公司 51200
代理人 张辉 崔建中
(51)Int.Cl.
G06F 21/55(2013.01)
G06F 9/455(2006.01)
(54)发明名称一种基于IO序列的虚拟机异常行为检测方法与系统(57)摘要本发明公开了一种基于IO序列的虚拟机异常行为检测方法与系统,其中,检测系统包括异步采集模块、进程获取模块、通信模块和检测模块;异步虚拟机IO序列采集技术,通过在VMM中异步采集虚拟机IO序列来最大程度地减小虚拟机运行过程中的性能损耗;虚拟机IO序列进程语义动态获取技术,利用VMM层动态获取虚拟机进程语义来实现虚拟机IO序列与虚拟机进程的合理映射,从而有助于IO序列的规律分析和对检测结果的确认;基于马尔科夫链的虚拟机恶意行为检测技术,结合虚拟机IO短序列与马尔科夫链构造异常检测模型来完成虚拟机内部恶意行为检测。
本发明准确发现基于虚拟机IO的异常攻击行为,
保护云计算平台的安全。
权利要求书1页 说明书3页 附图3页CN 106650434 A 2017.05.10
C N 106650434
A
1.一种基于IO序列的虚拟机异常行为检测方法,其特征在于,包括以下步骤:
步骤1:截获虚拟机I/O模拟操作,提取所需的虚拟机IO序列并保存于数据缓存区,唤醒自定义内核线程异步采集虚拟机IO序列,恢复VMM正常执行流程;
步骤2:在VMM中实时透明地获取虚拟机进程信息,构造虚拟机进程信息与虚拟机IO序列的合理映射关系;
步骤3:将自定义内核线程中采集到的虚拟机IO序列与对应的虚拟机进程信息保存到宿主机用户层的数据库中;
步骤4:对正常情况下得到的虚拟机IO序列进行行为特征建模,生成正常特征库模型;步骤5:对待测情况下得到的待测虚拟机IO序列构造待测模型,比对正常特征库模型,将待测样本中的恶意虚拟机IO序列与对应的虚拟机进程信息输出到检测日志。
2.如权利要求1所述的一种基于IO序列的虚拟机异常行为检测方法,其特征在于,所述步骤5具体为:
步骤5.1:检测模块读取数据库,将待测虚拟机IO序列构造生成虚拟机IO短序列;
步骤5.2:定义一个检测单元为由w个短序列构成的虚拟机IO短序列集;
步骤5.3:计算一个检测单元中虚拟机IO短序列集的状态转移概率矩阵;
步骤5.4:由状态转移概率矩阵得到一个检测单元中虚拟机IO短序列集的产生概率P w ,若P w 小于规定的阈值ε,判定当前检测单元内虚拟机IO短序列为非法,将非法虚拟机IO短序列和对应虚拟机进程信息输出到检测日志。
3.一种基于IO序列的虚拟机异常行为检测系统,其特征在于,包括异步采集模块、进程获取模块、通信模块和检测模块;
所述异步采集模块:截获虚拟机I/O模拟操作,提取所需的虚拟机IO序列并保存于数据缓存区,唤醒位于所述通信模块的自定义内核线程,恢复VMM正常执行流程;
所述进程获取模块:在VMM中实时透明地获取虚拟机进程信息,构造虚拟机进程信息与虚拟机IO序列的合理映射关系;
所述通信模块:分为通信模块服务端子模块与通信模块客户端子模块,实现数据从宿主机内核层到宿主机用户层的有效传输,并将数据保存至数据库;
所述检测模块:读取数据库中的待测虚拟机IO序列,采用马尔科夫链建模得到待测模型,比对待测模型与正常特征库并将检测结果输出到检测日志,检测日志中包括了恶意的虚拟机IO序列与对应的虚拟机进程信息。
4.如权利要求3所述的一种基于IO序列的虚拟机异常行为检测系统,其特征在于,所述通信模块采用全双工通信机制。
权 利 要 求 书1/1页CN 106650434 A
一种基于IO序列的虚拟机异常行为检测方法与系统
技术领域
[0001]本发明涉及虚拟化安全技术领域,尤其是涉及一种基于IO序列的虚拟机异常行为检测方法与系统。
背景技术
[0002]以虚拟化技术为基础的云计算服务快速发展使得在云计算环境下的安全风险也日益增多。
除了传统的基于主机的安全威胁,诸如计算机病毒、木马、内核Rootkit等外,还有一些新的安全威胁,如虚拟机逃逸攻击等。
这类攻击利用虚拟机对宿主机进行攻击,常通过虚拟机利用宿主机操作系统或Hypervisor存在的安全漏洞,达到篡取宿主机操作系统或Hypervisor权限的目的。
[0003]传统的在主机上基于系统调用序列的程序异常行为检测方法中,以应用程序产生的系统调用为研究粒度,针对系统调用序列包含大量具有周期性重复规律短序列的特点,通过计算偏离正常系统调用短序列的程度来预测程序在执行过程中存在的异常行为。
但在云计算环境下,这种技术不能够发现某些利用虚拟机内核或虚拟机内核模块进行的恶意攻击行为,如虚拟机逃逸攻击。
伴随在虚拟化领域引入硬件辅助虚拟化技术,虚拟机通过I/O 模拟操作实现对真实物理硬件设备的访问,由此产生的IO序列同样是一个具有周期性重复规律短序列的有序序列。
在Hypervisor中采集的虚拟机IO序列不仅反映了虚拟机应用程序的行为特征,也反映了虚拟机内核及内核模块的行为特征。
虚拟机IO序列刻画了虚拟机对宿主机上硬件设备的操作情况,可以在一定程度上描述虚拟机自身的行为。
[0004]现存的技术难点主要有:(1)引入硬件辅助虚拟化后,虚拟机在运行过程中对硬件设备的I/O读写操作较为频繁,不恰当的虚拟机IO序列采集方法将会造成大量的性能损耗;
(2)采集到的虚拟机IO序列是底层Hypervisor理解的二进制语义,将其映射成为虚拟机内的高级语义可以细粒度地描述虚拟机自身的行为,对分析IO序列的规律和制定异常检测规则至关重要;(3)传统的基于主机系统调用序列的方法有短序列枚举法、数据挖掘法、神经网络法等,但云计算环境下相较于单台主机而言存在的安全威胁更为繁杂,单一的检测方法所带来的局限性已不能满足当前云计算环境的需求。
发明内容
[0005]本发明所要解决的技术问题是提供公开了一种基于IO序列的虚拟机异常行为检测方法与系统,用于发现基于虚拟机IO的异常攻击行为,例如一些利用Qemu逻辑漏洞的虚拟机逃逸攻击,保护云计算平台的安全。
[0006]为解决上述技术问题,本发明采用的技术方案是:
[0007]一种基于IO序列的虚拟机异常行为检测方法,包括以下步骤:
[0008]步骤1:截获虚拟机I/O模拟操作,提取所需的虚拟机IO序列并保存于数据缓存区,唤醒自定义内核线程异步采集虚拟机IO序列,恢复VMM正常执行流程;
[0009]步骤2:在VMM中实时透明地获取虚拟机进程信息,构造虚拟机进程信息与虚拟机
IO序列的合理映射关系;
[0010]步骤3:将自定义内核线程中采集到的虚拟机IO序列与对应的虚拟机进程信息保存到宿主机用户层的数据库中;
[0011]步骤4:对正常情况下得到的虚拟机IO序列进行行为特征建模,生成正常特征库模型;
[0012]步骤5:对待测情况下得到的待测虚拟机IO序列构造待测模型,比对正常特征库模型,将待测样本中的恶意虚拟机IO序列与对应的虚拟机进程信息输出到检测日志。
[0013]根据上述方案,所述步骤5具体为:
[0014]步骤5.1:检测模块读取数据库,将待测虚拟机IO序列构造生成虚拟机IO短序列;[0015]步骤5.2:定义一个检测单元为由w个短序列构成的虚拟机IO短序列集;
[0016]步骤5.3:计算一个检测单元中虚拟机IO短序列集的状态转移概率矩阵;[0017]步骤5.4:由状态转移概率矩阵得到一个检测单元中虚拟机IO短序列集的产生概率P w,若P w小于规定的阈值ε,判定当前检测单元内虚拟机IO短序列为非法,将非法虚拟机IO 短序列和对应虚拟机进程信息输出到检测日志。
[0018]一种基于IO序列的虚拟机异常行为检测系统,包括异步采集模块、进程获取模块、通信模块和检测模块;
[0019]所述异步采集模块:截获虚拟机I/O模拟操作,提取所需的虚拟机IO序列并保存于数据缓存区,唤醒位于所述通信模块的自定义内核线程,恢复VMM正常执行流程;
[0020]所述进程获取模块:在VMM中实时透明地获取虚拟机进程信息,构造虚拟机进程信息与虚拟机IO序列的合理映射关系;
[0021]所述通信模块:分为通信模块服务端子模块与通信模块客户端子模块,实现数据从宿主机内核层到宿主机用户层的有效传输,并将数据保存至数据库;
[0022]所述检测模块:读取数据库中的待测虚拟机IO序列,采用马尔科夫链建模得到待测模型,比对待测模型与正常特征库并将检测结果输出到检测日志,检测日志中包括了恶意的虚拟机IO序列与对应的虚拟机进程信息。
[0023]根据上述方案,所述通信模块采用全双工通信机制。
[0024]与现有技术相比,本发明的有益效果是:1)通过在VMM中异步采集虚拟机IO序列来最大程度地减小虚拟机运行过程中的性能损耗;2)利用VMM层动态获取虚拟机进程语义来实现虚拟机IO序列与虚拟机进程的合理映射,从而有助于IO序列的规律分析和对检测结果的确认;3)基于马尔科夫链的虚拟机恶意行为检测技术,结合虚拟机IO短序列与马尔科夫链构造异常检测模型来完成虚拟机内部恶意行为检测,发现基于虚拟机IO的异常攻击行为,保护云计算平台的安全。
附图说明
[0025]图1是基于IO序列的虚拟机异常行为检测系统总体架构图。
[0026]图2是虚拟机IO序列异步采集时序图。
[0027]图3是虚拟机进程语义实时获取示意图。
[0028]图4是本发明检测方法流程图。
具体实施方式
[0029]下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0030]附图1给出了本发明中基于IO序列的KVM(Kernel-based Virtual Machine)虚拟机异常行为检测系统总体架构图。
如图1所示,该系统可用于检测虚拟机内部存在的恶意行为并及时防止已知的虚拟机逃逸攻击,包括异步采集模块、进程获取模块、通信模块和检测模块。
[0031]异步采集模块截获虚拟机的I/O模拟操作,提取所需的虚拟机IO序列并保存于数据缓存区,唤醒位于所述通信模块的自定义内核线程,并恢复VMM正常执行流程。
[0032]附图2给出了所述异步采集模块的时序图。
异步采集模块位于VMM内部,声明了一定大小的数据缓存区用于缓存采集到的虚拟机IO序列。
在虚拟机产生I/O模拟操作时会实时截获当前操作,提取所需的虚拟机IO序列并保存于数据缓存区。
唤醒自定义内核线程并恢复VMM(Virtual Machine Monitor)正常执行流程。
[0033]定义并导出数据缓存区读指针与写指针,用于实现数据缓冲区到自定义内核线程的异步采集过程。
[0034]进程获取模块在VMM中实时透明地获取虚拟机进程信息,构造虚拟机进程信息与虚拟机IO序列的合理映射关系。
[0035]附图3给出了所述进程获取模块的示意图。
进程获取模块位于VMM内部,不需要修改虚拟机操作系统可以实时透明获取虚拟机进程信息。
并建立获取到的虚拟机IO序列与虚拟机进程信息的映射关系。
[0036]在虚拟机退出时,虚拟机的状态处于内核态。
当前虚拟机的内核栈栈顶指针被保存在VCPU的堆栈段寄存器ESP中。
以32位Linux操作系统为例,根据进程内核栈栈帧和thread_info结构体存放在一块独立8K大小的内存区域。
屏蔽ESP的低13位即可以得到thread_info结构体的地址,并进一步得到虚拟机进程结构体task_struct结构体的地址。
[0037]VCPU的CR3控制寄存器保存了虚拟机当前运行进程的页目录基地址,利用控制寄存器CR3作为索引项,得到虚拟机进程信息与虚拟机IO序列的映射关系。
[0038]通信模块分为通信模块服务端子模块与通信模块客户端子模块,实现数据从宿主机内核层到宿主机用户层的有效传输,并将数据保存至数据库。
通信模块可采用全双工通信机制,建立上述通信模块服务端子模块与上述通信模块客户端子模块的有效连接,将建立的虚拟机进程信息与虚拟机IO序列映射关系发送并保存到位于宿主机用户态的数据库。
[0039]检测模块,读取数据库中的待测虚拟机IO序列,采用马尔科夫链建模得到待测模型,比对待测模型与正常特征库并将检测结果输出到检测日志,检测日志中包括了恶意的虚拟机IO序列与对应的虚拟机进程信息。
[0040]附图4给出了检测模块的流程图。
检测模块读取数据库,将待测虚拟机IO序列构造生成虚拟机IO短序列;定义一个检测单元为由w个短序列构成的虚拟机IO短序列集;计算一个检测单元中虚拟机IO短序列集的状态转移概率矩阵;由状态转移概率矩阵得到一个检测单元中虚拟机IO短序列集的产生概率P w,若P w小于规定的阈值ε,判定当前检测单元内虚拟机IO短序列为非法,将非法虚拟机IO短序列和对应虚拟机进程信息输出到检测日志。
图1
图2
图3
图4。