XPE系统安全加固的研究与实现

2011-07-27 10:12:10冯荣耀彭金辉张志鸿郑州大学教育技术中心河南郑州45000郑州大学信息工程学院河南郑州45000
邮电设计技术 2011年8期
关键词:安全级别注册表访问控制

冯荣耀,彭金辉 ,张志鸿(.郑州大学教育技术中心,河南 郑州 45000;.郑州大学信息工程学院,河南 郑州 45000)

0 前言

随着计算机用户的不断增加,PC操作系统的安全性变的越来越重要。针对计算机系统恶意程序的检测和防御的研究正成为当前安全研究的热点课题。一些技术应运而生,如主动防御、侦测与反侦测等,而且在系统的应用层和内核层不同层次上实现。Window系统是当前最流行的PC操作系统,同时也是安全防护最关注的操作系统,针对恶意程序的防御和系统安全措施的研究在不断深入,这也是当前的研究重点。目前可选择的是USBKEY嵌入式版的Windows XPE,通过对XPE进行可信安全加固,研究、设计并实现了一个主动防御的安全操作系统原型(SR-XPE)。

1 SR-XPE系统设计

1.1 文件可信度量规则

文件可信度量是指文件完整性和真实性的度量,它反映了文件的本来面目,是主动防御保护系统安全的重要前提。一切对文件的非法修改(如恶意程序的攻击)都将破坏文件的完整性。因此可以通过检查文件(包括可执行文件)的完整性信息,来鉴别文件是否遭到病毒攻击。使用文件摘要(HASH值)来保存文件的完整性信息。首先保存要保护的重要文件和进程的HASH,当校验文件完整性时,重新计算文件摘要,并比较是否一致,以此判断是否被修改。这里称这些文件摘要为策略预设值。目前,常用的完整性算法包括MD5、SHA等,通常使用SHA1算法来计算文件的摘要信息。

1.2 可信引导和核心文件保护

可信引导是在安全操作系统中实现可信计算的重要一环。SR-XPE采用开源的Grub2可信引导,Grub2是Grub的新版本,可以用来引导多种计算机体系结构下的几乎所有的操作系统。SR-XPE在理解Grub2内核的基础上对Grub2的框架内容和执行过程做了修改。

Grub2内核裁剪与安装。在Linux操作系统下编译,把开机引导程序使用的所有模块静态加载到内核中,删除动态加载模块时所用到的所有文件,保证计算机从USB启动时,能够正常加载修改后的Grub2。引导程序必须使用的模块体现在创建内核文件的命令中。

Grub引导过程的一个重要工作是核心文件保护。保护文件校验是为防止敏感文件遭恶意程序修改而进行的文件完整性校验。开机引导程序实现对保护文件列表中的所有文件进行校验。依据文件可信度量规则校验,只要发现核心文件被修改,就不允许启动操作系统。

Window XPE操作系统的引导程序为ntldr,开机引导程序文件校验完成后将直接读取U盘上的ntldr,实现对硬盘上的操作系统进行引导。

1.3 操作系统登录身份认证

SR-XPE使用特有的用户身份认证模块,以增强系统安全。Windows系统在默认情况下调用GINA进行用户认证。GINA是一个动态链接库,是Windows操作系统的组成部分。GINA在启动进程中被Winlogon.exe加载。加载成功后,GINA主要功能有用户登录身份认证、CTRL+ALT+DEL键响应、启动Shell等。

使用定制GINA替换msgina.dll,就可以在验证用户身份时,加入需要的其他验证模块,如指纹识别、PIN码验证等。定制GINA需要实现msgina.dll的全部接口,最简单的办法是仅修改自己关心的部分接口,其余直接调用操作系统接口。图1为修改后的SR-XPE系统登录界面,此种方式重新实现了GINA的WlxLoggedOutSAS函数,去掉了用户密码验证,增加了PIN码(即USBKEY口令)验证。下面是需要实现的关键函数。

int WINAPI WlxLoggedOutSAS(PVOID pWlxContext,DWORD dwSasType,PLUID pAuthenticationId,PSID pLogonSid,PDWORD pdwOptions,PHANDLE ph-Token,PWLX_MPR_NOTIFY_INFO pMprNotifyInfo,PVOID*pProfile)。

图1 XPE系统登录界面

1.4 进程启动控制

SR-XPE提供对执行程序真实性和完整性度量功能,可执行程序是一类特殊的文件。执行程序真实性度量可以确保系统中的执行程序都是合法的,阻止非授权程序的运行。执行程序完整性度量用来保证系统所启动的执行程序都是可信的,禁止不符合预期的程序的启动。执行程序启动前,SR-XPE核心模块会度量该程序相关模块的真实性和完整性,只有在度量结果和策略预存值一致的前提下,该程序才允许启动,否则拒绝其执行。因此如果SR-XPE中的某个程序被病毒或木马感染,由于其不再可信,系统将禁止其执行,从而阻止了恶意代码继续传播和破坏,降低了系统完整性被破坏的风险,实现了对恶意代码的免疫功能。

Windows系统分应用层和内核层,程序首先调用Win32子系统动态库的API,然后调用Ntdll.dll导出的Native API。XPE中Ntdll.dll通过SYSENTER指令软中断陷入内核。系统(内核文件ntoskrnl.exe)调用SSDT确定要调用的系统服务代码地址,从Executive转向内核执行系统调用。

文件系统驱动接收打开、创建、读写、关闭磁盘文件的请求操作。这些请求一般由用户进程产生通过I/O子系统管理器发送的文件系统。I/O管理器构造一个I/O Request Package(IRP)来描述这个请求,并把请求发向挂载逻辑盘的文件系统驱动。在发送请求之前,检查是否挂载其他驱动设备对象,如果设备对象栈顶端存在过滤驱动,I/O管理器会把请求先发给过滤驱动。

虽然Windows不允许直接修改源码来实现安全框架,微软还是提供了很多相关技术。通过编写底层驱动程序,可以提高代码权限。文件系统过滤的实现,就是基于成熟的HOOK技术,通过修改系统SSDT来控制操作系统内核层对象。应用层调用的API CreateFile对应驱动层收到的IRP主功能号是IRP_MJ_CREATE。HOOK截获IRP请求包之后,计算进程摘要,并和策略预设值比较,如果允许则放行,否则直接返回拒绝(策略预设值即策略库,包括预收集的进程白名单、进程黑名单列表)。

1.5 网络访问控制

SR-XPE网络访问控制实现防火墙的功能。和文件过滤驱动类似,通过底层加挂HOOK拦截数据包,可以分析数据包的内容,达到过滤效果。可以在TDI上实现数据包的拦截,也可以在NDIS层上实现,这不仅仅表现在拦截时机不一样,还表现了拦截的程度不同。TDI可以拦截进程级网络数据包,NDIS可以拦截IP级网络数据包。当有网络数据包发送或接收时,系统核心模块会检查数据包的IP地址、端口号和协议类型,只有在策略预设值允许的情况下才放行数据包,否则丢弃数据包。

SR-XPE实现的方式是对所有IRP包进行拦截,获得应用与下层协议栈交互的命令和数据,经过分析和仲裁,依据策略做出判断。拦截的IRP请求包括创建 (IRP_MJ_CREATE)、 关 闭 (IRP_MJ_CLOSE)、关 联请求(TDI_ASSOCIATE_ADDRESS)等操作。通过解析address_entry可以获取当前操作的目的是IP或者本地进程。系统可以对进程使用网络接口进行通信的方式进行控制。是基于进程控制网络还是基于IP和端口控制网络,取决于制定的网络访问策略,图2是一个基于IP和port的网络策略实例。

2 强制访问控制

2.1 访问控制机制

访问控制是指按用户身份及其所归属的预定义组来限制用户对某些信息项的访问。一般分为自主访问控制(DAC)和强制访问控制(MAC)。前者是指用户有权对自身创建的对象进行访问,并可将访问权授予其他用户。后者是指由系统对用户或进程创建的对象进行统一的强制性控制,按照策略决定哪些用户或进程对哪些对象进行哪些类型访问。强制访问控制的基本思想是:每个主体都有既定的安全属性,每个客体也有既定的安全属性,主体对客体能否执行特定的操作,取决于两者安全属性之间的关系。

在设计实现的强制访问控制策略中,可给主体(进程或用户)和客体(文件或注册表项)指定安全级别,如1~6级。不同级别标记了不同主要程度和能力的实体。不同级别的主体对不同级别的客体的访问是在强制的安全策略下实现的。将安全级别按照从高到低进行排序,规定高级别可以单向读写低级别,低级别禁止读写高级别。

2.2 强制访问控制实现

笔者按照强制访问控制按安全级别控制的原理和windows内核驱动实施方案,实现了一个强制访问控制模型。重要的文件和注册项拥有较高安全级别,只有特定进程才能访问。主体和客体的安全级别由策略规定。

进程启动控制主要分析截获的IRP_MJ_CREATE,强制访问控制还关心文件打开、修改(IRP_MJ_WRITE)、删除操作的控制。基于策略分析主体(进程)和客体(文件),裁决是向下转发IRP还是直接向上层返回请求失败信息。文件是操作系统最重要的信息载体,保证文件安全是操作系统安全最重要的工作之一。系统提供的文件操作HOOK,覆盖了文件的整个生命周期。目前SR-XPE实现了文件打开、重命名、删除等功能。当用户进程试图打开一个txt文件时,内核截获该操作,读取策略比对主体进程和客体文件的安全级别,如果属于恶意越级访问,系统会终止操作并弹出图3所示的提示。

注册表是操作Windows系统的核心数据库,直接控制系统启动、驱动加载和应用程序运行。系统运行期间,注册表的系统调用较频繁。注册表监控的实现原理是,使用SSDT HOOK技术钩住系统注册表操作的API,实现注册表访问控制。应用程序访问设置注册表键值的系统调用流程是:应用程序(kernel32)RegSet-ValueKey转发到 (ntdll)ZwRegSetValueKey陷入内核执行(noskrnl)NtSetValueKey。通过替换操作系统有关注册表操作内核API,来实现对系统所有注册表相关操作的截获和控制。系统提供了所有的注册表操作供安全模块使用,包括注册表的创建、打开、修改、删除、替换等操作。目前SR-XPE实现了注册表防篡改功能。当用户进程试图修改一项安全级别较高的注册表项时,系统会终止操作并弹出提示(见图4),防范针对主机的恶意注册表篡改行为。

图2 网络策略配置库

图3 文件拒绝打开

图4 注册表项拒绝修改

3 结束语

本文介绍了通过可信引导、进程控制、网络控制和强制访问控制等方面对XPE系统进行安全加固的研究和实践,向Windows安全操作系统迈出了一步。下一步研究工作主要有:研究进程控制的动态度量,完善基于进程和IP的2种网络策略的结合优化,进一步提高系统安全性、稳定性和易用性,同时考虑系统向WES7(Win7的嵌入式版)的移植方案。

[1]谭文,杨潇,邵坚磊.Windows内核安全编程[M].北京:电子工业出版社,2009.

[2]刘邦明,邬浙艳,孙黉杰.SSDT挂钩:基于Windows内核的RootKit技术样本[J].网络安全技术与应用,2009(3):62-64.

[3]Li L,Wu J,Guo XW.Framework for Windows Password Function Security Enhancement [J].Journal of Southeast Univesity,2007,37(z1):26-28.

[4]李雪峰,徐开勇.基于保护主机完整性的入侵防御系统设计与实现[J].计算机安全,2008(9).

[5]M.Lacoste,T.Jarboui,R.He.A component-based policy-neutral architecture for kernel-level access control [J].Annales Des Telecommunications-Annals of Telecommunications,2009,64(1-2):121-146.

猜你喜欢
安全级别注册表访问控制
基于Packet tracer防火墙的基本配置仿真实验的设计与实现
软件(2021年2期)2021-08-19 20:55:32
更上一层楼 用好注册表编辑器
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型
通信学报(2016年11期)2016-08-16 03:20:32
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
解除脚本限制导致的163邮箱无法登录
电脑迷(2015年7期)2015-05-30 04:50:35
Endogenous neurotrophin-3 promotes neuronal sprouting from dorsal root ganglia
数据库加密技术及其应用研究
新媒体研究(2014年8期)2014-07-24 15:44:06
学习器揭开注册表面纱
移动一族(2009年3期)2009-05-12 03:14:30