引入强制访问控制旨在解决访问控制规则的更改权限问 题。这些安全规则不能被普通用户或者系统自动修改,只有 安全管理员可以对访问控制规则加以修改。 系统设计文中采用如下页图3所示的设计实现对宿主机操作系统 和虚拟机操作系统之间的可视文件的访问控制。由前述可知, 在宿主机操作系统和虚拟机操作系统之间可视文件的互访实 现主体是进程,所以将进程作为监控的主体,以API为过滤对 象,采用如前所述的方法监控其在操作系统中对文件的操作。 3.1 API 参数信息过滤 设计的访问控制规则格式如下: 表1与文件有关的WindowsKernelAPI 表2访问控制矩阵 图1进程-访问控制规则-客体关系 图2角色-访问控制规则-客体关系 110 学术研究 AcademicResearch 信息安全与通信保密 2010.1 Rule: Program:D:\ProgramFiles\VMware\VMwarePlayer\ VMware-vmx.exe Operation:Read Reaction:Reject Parameters:String:C:\DocumentsandSettings\Administrator\ Desktop\test.txt 其中,Program代表与主体进程对应的可执行程序,Op- eration 表示进程的行为,Reaction 表示对进程上述行为采取 的措施,Parameters 表示受保护的客体档或者文件夹。
为了 能够实时获取进程对文件操作的行为,过滤进程行为需要挂 钩文件操作的API,以NtOpenFile 为例,文中Hook文件操作 API 采用的技术为目前在HIPS 技术中处于领先的Inl neHook [12] ,即将jmp指令和过滤函数的地址写入NtOpenFile 数所在内存的前几个字节中,那么在进程VMware-vmx.exe调用NtOpenFile 读取文件对象的时候,就会执行过滤函数, 具体过程如图4 所示。其中,Target Func 为Nt OpenFil HookFunc为过滤函数,pStub 则存放TargetFunc 的被覆盖 的前几个字节和用于对进程行为过滤后允许相关操作时返回 执行TargetFunc 函数时的地址,图中方框表示内存块。 为了实现对进程行为的过滤,并且保证过滤程序不易被 恶意更改 [13] ,文中采用编写Windows驱动程序的方式实现宿 主机操作系统与虚拟机操作系统之间的可视文件访问。分为 以下几个步骤实现,以VMware-vmx.exe 获取进程列表,比照规则和进程列表,将进程与规则中Program 值对应起来,记录进程VMware-vmx. exe 对应 的规则,并将结果存取到结构体ProcRule 当进程VMware-vmx.exe执行NtOpenFi le 转到过滤函数,读取ProcRul 中的内容获取规则,如果NtOpenFile 将要打开的文件与ProcRule 中的规则一致,则 拒绝执行此操作,若将要打开的文件与ProcRule 中规则不 一致,则允许执行(跳转到原来的API处执行)。
经过以上过程,VMware-vmx.exe 调用NtOpenFi le 操作都将会被过滤。3.2 多角色强制访问控制 在文中研究的内容中,不允许终端主机对安全访问控制 规则进行修改,终端主机更新安全访问控制规则是通过接收 服务器端下发的针对不同登录用户的安全访问控制规则进行 的。终端主机用户登录后,过滤程序随Windows操作系统一 起启动,然后获取使用者标识和类型并发送到服务器,服务器 根据登录的使用者类型下发安全访问控制规则,从而达到多 角色的强制访问控制目的。 测试结果测试环境:宿主机:AMD Athlon(tm)64 X2 Dual, 操作系统:Wi nd ows XP Se 3;虚拟机:VMware Pl ayer 5.0.118166,操作系统:Wi ndows XP Servi ce Pack3; 测试内容:宿主机操作系统与虚拟机操作系统之间的 可视文件访问控制; 过滤程序安装于宿主机操作系统,执行针对Adminis- trator用户的安全访问控制规则,使用前文所述的规则,若 从宿主机操作系统拷贝或者拖拉test.txt文件到虚拟机操作 系统,则会出现错误提示信息,禁止拷贝或者拖拉。