第8章操作系统安全8.1系统漏洞8.2Windows系统安全模型8.3Windows注册表安全8.4Windows帐号与密码8.5Windows2000安全策略8.6Windows系统的其他安全措施小结习题第8章操作系统安全“漏洞”一词的本义是指小孔或缝隙,引申义为用来表达说话、做事存在不严密的地方。在计算机系统中,漏洞特指系统中存在的弱点或缺陷,计与实现过程中或系统安全策略上存在的缺陷和不足。非法用户可利用漏洞获得计算机系统的额外权限,在未经授权的情况下访问或提高其访问权限,从而破坏系统的安全性。8.1系统漏洞第8章操作系统安全漏洞产生的原因在于程序员不正确和不安全地编程。虽然程序员在设计系统时考虑了很多安全因素,但是由于操作系统功能庞大、涉及内容多,而且开发团队人员众多,总会有考虑不周的地方,这就是通常所说的系统漏洞。漏洞对系统造成的危害在于它可能会被攻击者利用,继而破坏系统的正常运行,而它本身不会直接对系统造成危害。漏洞是广泛存在的,不同的设备、操作系统、应用系统都可能会存在安全漏洞。一般来说,漏洞具有时间局限性,任何系统从发布的第一天起,随着用户的深入使用,以及安全管理人员和黑客的研究,系统中存在的漏洞会被不断地暴露出来。这些被发现的漏洞也会不断地被系统供应商提供的补丁软件修补,或者在以后的新版系统中得以纠正。第8章操作系统安全不过,在新版纠正旧版的系统漏洞的同时,可能会引入一些新的漏洞和错误。随着时间的推移,旧的漏洞会不断地消失,但新的漏洞也会不断地出现,所以系统漏洞问题会长期存在。因此,脱离具体的时间和具体的系统环境来讨论漏洞的问题是毫无意义的。只有针对具体版本的目标系统以及系统设置,才可能讨论系统中存在的漏洞及可行的解决办法。同时,无论操作系统的安全级别如何,它们都可能存在一些漏洞,这些漏洞可能被发现或尚未被发现,但一旦被攻击者利用,攻击者很可能获得对系统的一定的访问权限,继而对第8章操作系统安全1.1)按照漏洞的形成原因,漏洞大体上可以分为程序逻辑结构漏洞、程序设计错误漏洞、开放式协议造成的漏洞和人为(1)程序逻辑结构漏洞有可能是程序员在编写程序时,因为程序的逻辑设计不合理或者错误而造成的。这类漏洞最典型的例子要数微软的Windows2000用户登录的中文输入法漏洞。非授权人员可以通过登录界面的输入法的帮助文件绕过Windows的用户名和密码验证而取得计算机的最高访问权限。这类漏洞也有可能使合法的程序用途被黑客利用去做不正当的事。第8章操作系统安全(2)程序设计错误漏洞是程序员在编写程序时由于技术上的疏忽而造成的。这类漏洞最典型的例子是缓冲区溢出漏(3)开放式协议造成的漏洞是因为在互联网上用户之间的通信普遍采用TCP/IP协议。TCP/IP协议的最初设计者在设计通信协议时只考虑到了协议的实用性,而没有考虑到协议的安全性,所以在TCP/IP协议中存在着很多漏洞。比如说,利用TCP/IP协议的开放性和透明性嗅探网络数据包,窃取数据包里面的用户口令和密码等信息;TCP协议三次握手的潜在第8章操作系统安全(4)人为因素造成的漏洞可能是整个网络系统中存在的最大安全隐患。网络管理员或者网络用户都拥有相应的权限,他们利用这些权限进行非法操作是可能的,隐患是存在的。如操作口令被泄露、磁盘上的机密文件被人利用及未将临时文件删除导致重要信息被窃取,这些都可能使内部网络遭受严重破坏。第8章操作系统安全2)按照漏洞被人掌握的情况,漏洞又可以分为已知漏洞、未知漏洞和0day(1)已知漏洞是指已经被人们发现,并被人们广为传播的公开漏洞。这类漏洞的特点是漏洞形成的原因和利用方法已经被众多的安全组织、黑客和黑客组织所掌握。安全组织或厂商按照公布的漏洞形成原因和利用方法,在他们的安全防护产品或安全服务项目中加入针对相应类型漏洞的防护方法。黑客和黑客组织利用公布的漏洞形成原因,写出专门的具有针对性的漏洞利用程序文件,并能绕过安全防护软件。第8章操作系统安全(2)未知的漏洞则是指那些已经存在但还没有被发现的漏洞,这类漏洞的特征是虽然它们没有被发现,但它们在客观上已经存在了,它们带给计算机网络安全的威胁是隐蔽性的,如果它们哪一天被黑客有意或无意地找出来后,就会对计算机网络安全构成巨大的威胁。所以软件开发商、安全组织、黑客和黑客组织都在努力地发现漏洞,可以说谁先发现第8章操作系统安全(3)0day漏洞是指已经被发掘出来,但还没有大范围传播开的漏洞,也就是说,这类漏洞有可能掌握在极少数人的手里。黑客有可能在这类漏洞的信息还没有大范围地被传播开的时候,利用这段时间差攻击他们想要攻击的目标机器,因为绝大多数用户还没有获取到相关的漏洞信息,也无从防御,第8章操作系统安全2.一般来说,操作系统本身存在很多的安全漏洞,常用的漏洞扫描工具有以下几种:(1)微软公司提供的MBSA(MicrosoftBaselineSecurityAnalyzer)工具,它可以对Windows系统的漏洞进行扫描,分析系统安全配置并形成相关的报表。MBSA工具可以检查Windows系统的漏洞、弱口令、IIS漏洞、SQL漏洞及检测安(2)(3)360(4)(5)X-scan第8章操作系统安全Windows系统具有模块化的设计结构。“模块”就是一组可执行的服务程序,它们运行在内核模式(KernelMode)下。在内核模式之上是用户模式,由非特权服务组成,其启动与否由用户决定。Windows系统的安全性根植于Windows系统的核心层,它为各层次提供一致的安全模型。Windows系统安全模型是Windows系统中的密不可分的子系统,它控制着Windows系统中的对象(如文件、内存、外部设备、网络等)的访问。本节以Windows2000为例介绍Windows8.2Windows第8章操作系统安全Windows系统安全模型由登录流程(LoginProcess,LP)、本地安全授权(LocalSecurityAuthority,LSA)、安全帐号管理器(SecurityAccountManger,SAM)和安全引用监视器(SecurityReferenceMonitor,SRM)组合而成,如图8-2-1所示。第8章操作系统安全图8-2-1Windows系统安全模型第8章操作系统安全1.登录流程接收本地用户或远程用户的登录请求,使用户名和系统之间建立联系。Windows系统登录流程如图8-2-2第8章操作系统安全图8-2-2Windows系统登录流程第8章操作系统安全用户登录时,Windows系统会弹出一个交互对话框,要求用户输入用户名、密码等信息。如果用户信息有效,系统将开始确认用户身份。Windows系统把用户信息通过安全系统传输到安全帐号管理器,安全帐号管理器确认用户身份后返回安全标识(SecurityIdentifier,SID),然后本地安全权威开始构造访问令牌,与用户进行的所有操作相连接。访问令牌的内容将决定允许第8章操作系统安全2.本地安全授权确保用户有读/写系统的权限,进而产生访问令牌,管理本地安全策略并提供交互式的认证服务。同时,本地安全授权控制审计策略,记录安全引用监视器生成的审计信息,能使Windows系统和第三方供应商的有效确认软件包共同管理安全性策略。本地安全授权是一个保护子系统,主要负责下列任务:加载所有的认证包,包括检查存在于注册表\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA中的AuthenticationPackages值;为用户找回本地组的SID以及用户的权限;创建用户的访问令牌;管理本地安全服务的服务帐号;存储和映射用户权限;管理审计策略和设置;管理信任关系等。第8章操作系统安全3.安全帐号管理器维护帐号的安全性数据库(SAM数据库),该数据库包含所有用户和组的帐号信息。用户名和密码等信息通过散列函数并被加密,现有的技术不能将打乱的口令恢复。SAM组成了注册表的5个配置单元之一,它在文件%systemroot%\system32\config\sam中实现。第8章操作系统安全4.访问控制机制的理论基础是安全引用监视器,它由J.P.Anderson在1972年首次提出,D.B.Baker于1996年则再次安全引用监视器是一个抽象的概念,它表现的是一种思想。J.P.Anderson把安全引用监视器的具体实现称为引用验证机制。引用验证机制需要同时满足以下3个原则:(1)必须具有自我保护能力;(2)必须总是处于活跃状态;(3)必须设计得足够小,以利于分析和测试,从而能够引用验证机制是实现安全引用思想的硬件和软件的组合,如图8-2-3第8章操作系统安全图8-2-3安全引用监视器第8章操作系统安全总之,安全引用监视器是Windows系统的一个组成部分,它以内核模式运行,负责检查Windows系统的读/写的合法性,以保护系统免受非法读/第8章操作系统安全注册表是用来存储计算机软、硬件的各种配置数据的,是一个庞大的二进制数据库。注册表中记录了用户安装在计算机上的软件和每个程序的相关信息,用户可以通过注册表调整软件的运行性能、检测和恢复系统错误、定制桌面等。用户修改配置,只需要通过注册表编辑器即可轻松完成。系统管理员还可以通过注册表来完成系统远程管理。因而,用户掌握了注册表,即掌握了对计算机配置的控制权,用户只需要通过注册表即可将自己计算机的工作状态调整到最佳。8.3Windows第8章操作系统安全计算机在执行操作命令时,需要不断地参考这些信息,这些信息包括以下内容:(1)每个用户的配置文件;(2)计算机上安装的文件和每个程序可以创建的文件类型;(3)文件夹和程序的图标设置;(4)计算机硬件参数配置;(5)注册表是按照子树、项、子项和值组成的分层结构。根第8章操作系统安全1.Windows中的注册表是一系列的数据库文件,主要存储在\WINNT\System32\Config目录下;有些注册表文件建立和存储在内存中,这些文件的备份存储在\WINNT\Repair目录下,只有系统的帐号才需要访图8-3-1第8章操作系统安全图8-3-1注册表结构图第8章操作系统安全实际上注册表只有两个子树:HKEY_LOCAL_MACHINE和HKEY_USERS。但为了便于检索,用注册表编辑器打开注册表时,展现为五个子树,这些子树的总体组成了Windows表8-3-1第8章操作系统安全表8-3-1注册表子树第8章操作系统安全2.在Windows2000的32位注册表编辑器窗口中,每个子树都有安全选项,可以对每个子树、项、子项的安全进行设定,从而限制用户对注册表的操作权限。注册表对于很多用户来说是很危险的,尤其是初学者,为了安全,最好是禁止注册表编辑器regedit.exe第8章操作系统安全在注册表编辑器操作界面里,用鼠标依次单击HKEY_CURRENT_USER\SOFTWARE\MicrosoftWindows\CurrentVersion\Policies\键值,在右边的窗口中如果发现Policies下面没有System主键,则应在它下面新建一个主键,取名为System,然后在右边空白处新建一个DWORD串值,取名为DisableRegistryTools,把它的值修改为1,这样修改以后,使用这个计算机的人都无法再运行regedit.exe来修改注册表了。第8章操作系统安全3.1)ActiveXActiveX是微软提出的一组使用COM(ComponentObjectModel,部件对象模型)技术,使得软件部件在网络环境中进行交互的技术集,它与具体的编程语言无关。目前,利用ActiveX技术漏洞的网页木马越来越多,这已成为系统安全不可回避的一个问题。ActiveX技术漏洞对IE、Outlook、Foxmail等也有着巨大的威胁。它把com.ms.activeX.ActiveXComponent对象嵌入APPLET标记,可能导致任意创建和解释执行ActiveX对象,从而可以创建任意文件,写注册表,运行程序,甚至可以