引言
通过监控文件系统操作能够有效地帮助系统管理员及时发现入侵痕迹,保护系统安全。然而,当攻击者入侵成功并获取足够的权限后,就能够破坏计算机系统,关闭系统中的文件监控程序,隐藏文件并清除日志以掩盖入侵踪迹,或者安装后门程序以便再次入侵。因此,如果能够保护好文件系统的操作日志,就能够检测出系统异常,快速找出隐藏文件,恢复系统。目前大部分的文件监控系统和文件保护系统与操作系统运行在同一特权级,如果操作系统被入侵,任何运行在该系统上的文件保护机制都有可能被绕过或关闭,因此,只有保证文件监控系统不被禁用和绕过,才能够持续保护文件系统的安全。
随着虚拟机技术的发展,利用虚拟机进行检测入侵和系统保护的工作得到了广泛关注,由于虚拟机监视器(Virtual Machine Monitor,VMM)相对于运行其上的客户虚拟机(virtual Machine,VM)具有更高的特权级,VMM和VM之间能够进行有效的安全隔离,因此利用虚拟机技术能够对VM中的文件系统进行更加可靠的监控。
一 虚拟化技术与Xen
硬件虚拟化主要有Intel的VT-x和AMD的AMD-V两种技术,都是通过引入新的指令和处理器运行模式,让VMM和Guest OS分别运行在合适的模式下。该系统基于vT-X技术。vT-X引入了两种新的运行模式:VMX root模式和VMX non-root模式,如图1所示。VMM运行在VMX root模式,Guest OS运行在VMX non-root模式。运行在VMX root模式下的VMM 显式调用VMLAUNCH或VMRESUME指令切换到VMX non-root模式,这种转换称为VM entry。Guest OS运行过程中遇到需要VMM处理的特殊事件,或者主动调用VMCALL指令调用VMM的服务,则切换到VMX root模式,这种转换称为VM exit。
在该系统中,当Guest OS运行一些底层系统调用或者产生异常时将会产生VM exit进入到VMX root操作模式,在VM-Exit陷入时实现对系统调用的截获。
Xen是由剑桥大学计算机实验室开发的一个开源的虚拟机软件。Xen存在一个特权域用来辅助Xen管理其他Domain,提供相应的虚拟资源服务,这个特权域称为Domain0,其他域则称为DomainU。Xen同时支持半虚拟化(PV)和全虚拟化(HVM)。前者需要对客户操作系统进行修改;后者不需要修改客户操作系统,但需要CPU的硬件虚拟化支持。该系统利用XEN针对全虚拟(HVM)下的Guest OS进行监控,能对多个操作系统同时进行监控。
二 系统设计与实现
2.1 系统架构
系统结构如图2所示,主要由Xen监测部分、DomO文件分析、日志记录和报警模块组成。
Xen监测模块位于Xen Hypervisor中,主要功能是完成相关系统调用的截获以及文件操作信息的提取,通过对Xen内核进行改动来实现。截获了客户端的系统调用以后,提取出需要监控的有用信息,包括系统调用号及其参数、进程信息、操作文件名称及相关内存信息。
文件分析模块位于Dom0中,首先根据配置策略选择要监控的文件以及目录,利用Xen提供的事件通道机制从VMM中获取文件操作信息;分析当前操作是否对监控文件的敏感操作,是则将当前操作写入日志记录模块,同时产生报警输出,否则将当前操作写入日志记录模块,便于事后离线分析。
日志记录和报警模块分别完成日志记录和报警输出功能。
2.2 设计实现
2.2.1 截获系统调用
Linux的系统调用通过两种方式来实现:使用int Ox80中断方式和快速系统调用sysenter/sysexit方式。
1)int Ox80中断方式
通过对中断向量表上的Ox80中断向量地址修改,使其陷入到VMM中来截获系统调用。首先通过VMM获取客户机的IDT(中断向量表)地址,由IDT找到Ox80中断的地址,并对Xen的影子页表进行改动,将其地址设置为NO_PRESENT。当系统产生int 0x80中断就会触发VM exit进入Xen内核中相应的缺页处理函数,在其中添加处理代码,判断是否由0x80中断产生,从而实现对系统调用的截获。
2)快速系统调用方式
执行快速系统调用指令SYSENTER/SYSEXIT读取相关MSR寄存器值(SYSENTER_CS_MSR,SYSENTER_ESP_MSB,SYSENTER-EIP-MSR),通过修改SYSENTER-EIP-MSR寄存器值进行快速系统调用的截获。在Xen中记录实际MSR寄存器的值并修改SYSENTER-EIP-MSR,将其指向一个不可访问的地址,当系统调用发生时,会由于错误的MSR寄存器地址导致VM exit,就可以截获系统调用进行相关处理。
2.2.2 提取文件操作信息
系统监控信息包括当前运行的DomainU、进行文件操作的进程相关信息、文件操作类型以及其他重要信息(如寄存器或缓冲区内容)。
当前运行的DomainU直接从Xen上下文中获取,并利用寄存器和内核堆栈信息提取出产生当前系统调用的进程信息。
文件操作通过系统调用号判断,截获了系统调用以后,提取出关心的系统调用号以及系统调用参数。Linux系统中,系统调用号存放在EAX寄存器中,寄存器EBX、ECX、EDX、ESI、EDI以及EBP保存的是对应的参数。
由于要对文件系统进行监测, 因此,关注的主要是sys_open、sys_create、sys_read、sys_write、sys_unlink等与文件系统相关的系统调用号及其参数。
系统调用参数以及参数所引用的内存信息对文件监控很重要,通过参数地址或相关数据结构获取。以获取文件名称为例,Linux系统中,与文件操作相关的系统调用大都通过文件描述符表示一个文件,假设当前打开文件描述符为k,利用内核数据结构,可以从当前进程中通过current-files-fd[k]-f_dentry-d_name获取到文件名。
2.2.3 DomO文件分析
当提取文件操作信息结束后,需要将数据提交给位于Dom0域的文件分析模块进行分析。为了减少性能损失,文件分析模块仅对系统中的敏感文件或目录进行监控。
Dom0文件分析模块同时对监控文件或目录进行不同的输出处理,将敏感操作输出到报警模块,其他操作则输出到日志文件中保存。例如对系统配置文件的写操作,对系统日志文件的删除操作定义为敏感操作。
三 功能测试
系统基于Xen 3.3.0和Linux 2.6.18(Guest OS)实现,硬件平台采用Intel Core2 2.4 GHZ CPU,内存为2 G RAM。表1是对Linux下的系统日志目录/vat/log/的监控结果。
入侵者在侵入系统后通常会修改或删除相应的系统日志文件隐藏入侵痕迹,利用该系统能够将文件系统操作记录到另外的不受攻击者控制的机器上,能够及时发现潜在的风险。同时为了评估系统检测恶意代码和隐藏文件的能力,针对目前比较流行的Linux内核rootkit进行测试,测试结果如表2所示。
Linux下rootkit的安装过程中通常会对系统文件进行替换或修改,为了保持隐蔽性,还会有隐藏文件、进程、端口等行为, 内核级rootkit能够绕过用户级和内核级的文件检测工具。该系统中,文件系统监控的目录文件只要有操作,就能实时记录或报警,通过交叉对比,能够快速发现攻击痕迹。
四 结语
文中基于虚拟机架构,利用硬件虚拟化技术,提出了在VMM中监控Guest OS文件系统,能够实时监测文件系统,发现文件系统中的隐藏文件和敏感操作,进而检测出系统中可能存在的安全风险。相对于现有的文件系统监控,利用虚拟机技术能够实现更加可靠透明的监控。系统实现基于全虚拟化技术,监控对象同样适用于Windows等操作系统。该架构只能对文件系统行为进行监控,并不能阻止对于计算机系统的攻击行为。研究如何在虚拟机架构下阻止对敏感文件的修改将是下一步的工作方向。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于虚拟机架构的文件系统监控