4.1 系统漏洞概述
计算机系统漏洞也被称为系统安全缺陷,这些安全缺陷会被技术高低不等的入侵者所利用,从而达到控制目标主机或造成一些更具破坏性的目的。
4.1.1 什么是系统漏洞
漏洞是指应用软件或操作系统软件在逻辑设计上的缺陷,或在编写时产生的错误,某个程序(包括操作系统)在设计时未考虑周全,则这个缺陷或错误将可能被不法者或黑客利用,通过植入木马、病毒等方式来攻击或控制整个计算机,从而窃取计算机中的重要资料和信息,甚至破坏系统。
系统漏洞又称安全缺陷,可对用户造成不良后果。如漏洞被恶意用户利用,会造成信息泄漏;黑客攻击网站即利用网络服务器操作系统的漏洞对用户操作造成不便,如不明原因的死机和丢失文件等。
4.1.2 系统漏洞产生的原因
系统漏洞的产生不是安装不当的结果,也不是使用后的结果,它受编程人员的能力、经验和当时的安全技术所限,在程序中难免会有不足之处。
归结起来,系统漏洞产生的原因主要有以下三点。
(1)人为因素:编程人员在编写程序过程中故意在程序代码的隐蔽位置保留了后门。
(2)硬件因素:因为硬件的原因,编程人员无法弥补硬件的漏洞,从而使硬件问题通过软件表现出来。
(3)客观因素:受编程人员的能力、经验和当时的安全技术及加密方法所限,在程序中不免存在不足之处,而这些不足恰恰会导致系统漏洞的产生。
4.1.3 常见的系统漏洞类型
这里以Windows XP系统为例进行介绍,其常见的系统漏洞如下。
(1)UPNP服务漏洞
该漏洞允许攻击者执行任意指令。Windows XP默认启动的UPNP服务存在严重的安全漏洞。UPNP(Universal Plug and Play)体系面向无线设备、PC机和智能应用,提供普遍的对等网络连接,在家用信息设备、办公用网络设备间提供TCP/IP连接和Web访问功能,该服务可用于检测和集成UPNP硬件。
UPNP协议存在安全漏洞,使攻击者可非法获取任何Windows XP的系统级访问,进行攻击,还可通过控制多台XP机器发起分布式的攻击。
(2)升级程序漏洞
Windows XP的升级程序不仅会删除IE的补丁文件,还会导致微软公司的升级服务器无法正确识别IE是否存在缺陷,即Windows XP Pro系统存在两个潜在的威胁:一种是某些网页或HTML邮件的脚本可自动调用Windows的程序;一种是可通过IE漏洞窥视用户的计算机文件。
(3)帮助和支持中心漏洞
在Windows XP帮助和支持中心存在漏洞,该漏洞使攻击者可跳过特殊的网页(在打开该网页时调用错误的函数,并将存在的文件或文件夹名字作为参数传送)使上传文件或文件夹的操作失败,随后该网页可在网站上公布,以攻击访问该网站的用户或被作为邮件传播来攻击。该漏洞除使攻击者可删除文件外,不会赋予其他权利,攻击者既无法获取系统管理员的权限,也无法读取或修改文件。
(4)压缩文件夹漏洞
在安装有“Plus”包的Windows XP系统中,“压缩文件夹”功能允许将ZIP文件作为普通文件夹处理。“压缩文件夹”功能存在下面两个漏洞。
1)在解压缩ZIP文件时会有未经检查的缓冲存在于程序中以存放被解压文件,因此很可能导致浏览器崩溃或攻击者的代码被运行。
2)解压缩功能在非用户指定目录中放置文件,可使攻击者在用户系统的已知位置中放置文件。
(5)服务拒绝漏洞
Windows XP支持点对点的协议(PPTP)作为远程访问服务实现的虚拟专用网技术。由于在其控制用于建立、维护和拆开PPTP连接的代码段中存在未经检查的缓存,导致Windows XP的实现中存在漏洞。通过向一台存在该漏洞的服务器发送不正确的PPTP控制数据,攻击者可损坏核心内存并导致系统失效,中断所有系统中正在运行的进程。
该漏洞可攻击任何一台提供PPTP服务的服务器,对于PPTP客户端的工作站,攻击者只需激活PPTP会话即可进行攻击。对于任何遭到攻击的系统,可通过重启来恢复正常操作。
(6)Windows Media Player漏洞
Windows Media Player漏洞主要产生两个问题:一是信息泄漏漏洞,它给攻击者提供了一种可在用户系统上运行代码的方法,微软公司对其定义的严重级别为“严重”;二是脚本执行漏洞,当用户选择播放一个特殊的媒体文件,接着又浏览一个特殊建造的网页后,攻击者就可利用该漏洞运行脚本。
(7)热键漏洞
设置热键后,由于Windows XP的自注销功能,可使系统“假注销”,其他用户即可通过热键调用程序。热键功能是系统提供的服务,当用户离开计算机后,该计算机即处于未被保护情况下,此时Windows XP会自动实施“自注销”,虽然无法进入桌面,但由于热键服务还未停止,仍可使用热键启动应用程序。
(8)账号快速切换漏洞
Windows XP快速账号切换功能存在问题,可造成账号锁定,使所有非管理员账号均无法登录。
(9)缓冲区溢出漏洞
要想充分了解什么是缓冲区溢出,首先需要了解什么是缓冲区。缓冲区是程序运行时自动向计算机内存申请的一个连续的块,用于保存程序给定类型的数据。但是,为了节省内存的使用大小,操作系统会利用一个有动态分配变量的程序在程序运行时才决定给其分配多少内存。
由于缓冲区的分配是由系统的一个动态分配变量程序决定,那么,如果程序在动态分配缓冲区放入太多的数据会出现什么现象呢?很显然,它溢出了,这就像往杯子里注入水一样,一旦水超过了杯子的容量,就会溢出而流到杯子外面,对于计算机来说,这就造成了缓冲区的溢出,这些溢出的数据就会“流到”其他的程序或系统缓冲区之中,覆盖其他程序或系统的合法数据,进而被其他程序或系统所执行。
正是由于这个溢出现象被入侵者发现了,因此,他们就会向程序的缓冲区写入超出其长度的数据,从而破坏程序的堆栈结构,使程序转向执行自己所设计的入侵执行,以达到攻击的目的,这就是缓冲区溢出攻击。