Windows中基于硬件的缓冲区溢出攻击防范技术——DEP

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:shizex
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:DEP是微软公司新推出的一项硬件安全技术,它能够有效地防范缓冲区溢出攻击。本文在简单介绍了windows缓冲区溢出攻击的基础上,对DEP技术的基本原理、软硬件支持情况、使用方法等方面做了较为详细的分析,并指出DEP技术和一般的防病毒软件的区别。
  关键词:DEP;缓冲区;溢出攻击;堆栈
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10665-02
  
  1 引言
  
  缓冲区溢出漏洞是当前计算机和互联网系统中最普遍也是威胁最大的安全漏洞,利用缓冲区溢出漏洞实施的攻击已经成为当前Internet上最普遍、危害最大的一种网络攻击手段。据统计,大约80%的安全事件与缓冲区溢出攻击有关[1]。缓冲区溢出攻击是利用目标程序的缓冲区溢出漏洞,通过往目标程序的缓冲区写入超出其长度的数据,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的[2]。
  目前,较为有效的防范缓冲区溢出攻击的措施主要包括[3]:强制程序开发人员书写正确的、安全的代码;通过数组操作检查工具(例如:Compaq C编译器、gcc补丁等)对数组的读写操作进行边界检查来实现对缓冲区的保护,使得缓冲区溢出不可能出现;通过设置缓冲区的堆栈段为不可执行,从而阻止攻击者植入攻击代码(也即ShellCode)。这些措施当中,如果仅仅从软件的层面来进行防范,一方面,由于软件的复杂性和集成度日益提高,其留下的大量漏洞反而会给缓冲区溢出攻击所利用;另一方面,从效率的角度考虑,基于软件的防范措施也已经很难满足现代用户的安全需求。因此,从硬件的层面采取措施来进行缓冲区溢出的防范,已经成为目前业界的一个研发重点。DEP(Data Execute Protection,数据执行保护)技术正是微软公司在其Windows XP SP2、Windows Server 2003 SP1及其更高版本中推出的一项基于硬件的防范缓冲区溢出攻击的安全技术,它是通过设置缓冲区的堆栈段为不可执行来实现的。本文将对这一技术做较为详细的分析研究。
  
  2 缓冲区溢出攻击的基本原理
  
  一个程序在内存中运行时,按照从内存低端到内存高端的方向通常可以分为程序段、数据段和堆栈三个部分,如图1所示:
  程序段里存放着程序的机器码和只读数据,数据段里存放着程序中的静态数据,而堆栈中存放着程序的动态数据。缓冲区正是在内存的堆栈上分配的一段连续的内存空间,它是程序运行时用于存放动态数据的空间,它的大小在程序运行时固定申请。
  堆栈是一个后进先出(LIFO)的队列,它的生长方向与内存的生长方向正好相反,如图2所示。
  当程序中发生函数调用时,计算机的处理器会依次将函数的参数、返回地址及基址寄存器EBP(该寄存器存储的内存地址为函数在参数和返回地址压栈之前的内存地址)压入堆栈中,然后把当前的堆栈指针(ESP)作为新的基地址。如果函数中存在局部变量,则函数会把堆栈指针ESP减去某个值,为需要的动态局部变量腾出所需的内存空间,函数内使用的缓冲区就分配在腾出的这段内存空间上。函数返回时,将会弹出EBP,恢复堆栈到函数调用前的地址;弹出返回地址到指令指针寄存器(EIP)以继续执行原程序。
  现在,假设向目标程序的缓冲区写入一个长度超过其长度的数据,输入的数据将占满缓冲区的所有空间,并且超越缓冲区边界延伸到缓冲区以外的空间。而由于堆栈的生长方向与内存的生长方向正好相反,超出缓冲区边界的数据就可能将EBP和返回地址覆盖,造成所谓的缓冲区溢出。一般情况下,缓冲区溢出会导致程序运行失败。但如果覆盖EIP的值刚好是黑客精心设计的一段攻击代码(ShellCode)的内存地址,程序将改变正常的流程而跳转到该攻击代码的位置并开始执行,攻击者就能获取对系统的控制,利用ShellCode实现各种功能,比如,得到一个Shell,监听一个端口,添加一个用户,等等,从而达到攻击的目的。这正是缓冲区溢出攻击的基本原理。
  从上面的分析中可以看出,攻击者要达到攻击目的,必须同时完成下面的两个步骤[1]:(1)在程序的适当地址空间里安排攻击代码;(2)设法使程序跳转到该段代码处执行。本文分析的DEP技术,是通过阻止第二个步骤来实现的。
  
  3 缓冲区溢出攻击的防范技术——DEP
  
  为了有效的防范缓冲区溢出攻击,提高系统的安全性能,微软公司和包括Intel和AMD在內的处理器制造商展开密切合作,在其推出的Windows XP SP2、Windows Server 2003 SP1及其更高版本的Windows操作系统中支持了DEP这一功能。
  3.1 DEP的技术原理
  在计算机系统中,系统程序或某些应用软件会被要求在特定的内存区域内运行,这个内存区域如果受到其他程序的破坏,会导致程序出错,甚至系统崩溃。而DEP技术可以有效地防止这类情况发生。当在Windows XP SP2中打开某些有害进程时,如果系统启动了DEP技术,Windows就会自动弹出消息提示框──“为了帮助保护您的计算机,Windows已经关闭了此程序。”下面会附上程序的名称和发行商信息,这就是DEP在发挥作用。
  Windows系统中集成的DEP技术也即数据执行保护技术,它是通过在程序执行时将其可执行代码所占用的内存区域自动标记出来,支持DEP的CPU利用NX(No eXecute,不执行)技术识别这些标记出来的区域,如果发现当前执行的代码没有明确标记为可执行(例如程序执行之后,由病毒溢出到代码执行区的那部分代码),则禁止执行,那么病毒和其它利用溢出技术进行的网络攻击行为就无法利用溢出进行破坏了,从而帮助用户保护计算机免受病毒和其他缓冲区溢出攻击的破坏[5]。
  这个技术之所以可行是因为几乎没有任何合法程序会在内存的堆栈段中存放执行代码,而缓冲区溢出后执行的代码又是放在堆栈段上的。
  3.2 DEP的软硬件支持
  要想发挥DEP的保护功能,除了windows操作系统要升级到Windows XP SP2、Windows Server 2003 SP1或者更高版本之外,由于DEP是一项基于硬件的安全技术,所以CPU必须支持DEP技术才行。
  目前,32位的CPU处理器不支持DEP技术,支持DEP的CPU有:AMD 阵营的Athlon 64、AMD Opteron;Intel阵营的安腾系列CPU、J系列的P4(采用Prescott核心)。如果CPU不支持DEP,支持DEP的Windows操作系统则会以软件方式进行模拟(当然就没有硬件支持来得好了)。
  3.3 DEP的启用和配置
  在支持DEP的Windows系统中,打开DEP功能的步骤是:以系统管理员的身份登录系统,然后右击桌面“我的电脑”图标→选择“属性”,在“系统属性”对话框中切换到“高级”选项卡,点“性能”下的“设置”按钮打开“性能选项”对话框,切换到“数据执行保护”选项卡下,在这里就会显示关于DEP的信息,如图3所示。在图3中,左边所示的计算机是以软件的方式模拟DEP技术的情况,在该对话框的下方会显示“你的计算机的处理器不支持基于硬件的DEP。但是,Windows可以使用DEP软件帮助保护免受某些类型的攻击。”;而右边所示的计算机由于硬件上支持DEP,因此不需要以软件的方式模拟。
  图3 DEP的设置界面
  如图3所示,默认情况下系统仅为基本Windows程序和服务启动DEP。要为其它程序和服务启用DEP,可以在图3所示的对话框中选择“为除下列选定程序之外的所有程序和服务启动DEP”单选按钮,如图4所示。
  这样,就为除了DEP保护排除列表中的其他所有程序和服务都启用了DEP,这些程序就处于DEP的保护之下,不会导致缓冲区溢出攻击。
  如果运行某个程序被DEP关闭了,说明该程序被DEP检测为带有危害性。为了运行该程序,用户可以向该程序的开发商获取与DEP兼容的程序版本;或者通过在图4所示的对话框中点击“添加”按钮,将其添加到DEP保护排除列表中并勾选(这样运行该程序会有缓冲区溢出的危险,因此建议定期检查是否有与DEP兼容的程序更新版本,并在更新程序后重新启用DEP)。例如,图5表示的是将Microsoft Word添加到DEP保护排除列表的情况,这时将不对Microsoft Word启动DEP保护。
  3.4 DEP与防病毒软件的区别
  DEP同一般的防病毒或防火墙软件不同,它并不是一种防病毒软件,不能阻止有害的程序安装到计算机中,也不具备一般的防病毒软件的检测和查杀功能,而是通过对程序进行监控,确定它们是否能够安全地使用系统内存。所以,确切地说,DEP是一种操作系统底层的安全机制,通过这种安全机制,可以对利用缓冲区漏洞溢出的病毒起防护作用,而不是对所有类型的病毒都具有防护作用。
  
  4 结束语
  
  在缓冲区溢出攻击日益成为网络攻击的主要手段的今天,Windows系统内集成的DEP技术能够有效地防范利用缓冲区溢出漏洞所实施的攻击,大大提高了系統的安全性能。本文通过对DEP技术的相关方面(技术原理、软硬件支持情况、启动和配置方法、与防病毒软件的区别)进行较为详细的分析,对帮助计算机用户认识和提高系统的安全、有效地防范缓冲区溢出攻击起到积极的作用。
  参考文献:
  [1] 谢恒建, 胡兆阳. 缓冲区溢出攻击的防护技术分析[J]. 微计算机信息, 2005,9-3:11-13.
  [2] 胡忠望, 刘卫东. 基于CPU硬件的缓冲区溢出攻击的防范技术[J]. 微电子学与计算机, 2006,7:9-12.
  [3] 池瑞楠. Windows缓冲区溢出的深入研究[J]. 电脑编程技术及维护, 2006,9:79-81.
  [4] 富宇唐, 国维, 刘显德. 缓冲区溢出的预防与检测技术综述[J]. 计算机工程与应用, 2005,32:149-152.
  [5] 大熊. Windows内置的病毒防护——DEP[J]. 电脑爱好者,2005,7:86-87.
  本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘要:由我国提交的第三代移动通信标准TD-SCDMA系统的关键技术之一就是智能天线技术,本文介绍了智能天线的提出及其分类,并且根据其优点深入分析了该技术在TD-SCDMA中的运用。  关键词:智能天线;第三代移动通信系统TD-SCDMA  中图分类号:V351文献标识码:A文章编号:1009-3044(2007)03-10654-02    1 引言    最近几年来随着全球移动通信业务的迅速发展
期刊
摘要:随着网络技术与计算机开发语言的发展,越来越多的程序员利用Java来编写网络程序。数据报通讯是一个高效的网络通讯方式。通过C/S模型的程序来说明Java中如何利用UDP进行多播通信,对于网络编程有一定的参考价值。  关键词:Java;数据报;UDP;C/S;通讯  中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)03-10669-01    1 引言    Java
期刊
摘要:本文介绍了在Word 中输入各类符号的方法。  关键词:Word;公式;符号  中图分类号:TP317文献标识码:A文章编号:1009-3044(2007)03-10660-01    1 引言    在各行各业的应用中,会需要一些特殊的公式及符号,如数学公式中用到的 等,如化学符号 等,还有如物理中用到的 等等。(本文以Word 2000为例,其它版本,界面虽略有区别,但大致相同,可灵活运
期刊
摘要:利用ASP.NET和ADO.NET技术开发的教育网站学生管理系统,实现了网站学生的动态管理,使得对教育信息的管理更加即时,提高了管理效率。本文首先对系统的开发原理进行了具体分析,然后对设计方案进行了详细介绍。  关键词:ASP.NET; ADO.NET; 学生管理系统  中图分类号:TP317文献标识码:A 文章编号:1009-3044(2007)03-10637-01    1 前言   
期刊
摘要:分析了用户输入对web程序的安全带来的威胁,提出了构建应用程序安全的对策,并介绍了几种常用的工具。  关键词:安全;用户输入;校验;攻击  中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)03-10677-02    1 引言    用户输入部分是应用程序与用户交互的窗口,一般应用程序都是通过用户输入的数据来进行操作的。一些带有恶意的用户,往往会利用用户输入部分对
期刊
摘要:eXtensible Markup Language,简称XML,已革命性的改变了以Web为基础的网络应用,XML提供并實现了系统分层、平台独立、资源整合等基于网络的软件应用模式。本文对XML产生的原因、优势、应用进行了较全面的介绍和分析,并就可能的前景作出了估计。  关键词:可扩展标记语言;可扩展样式语言;电子数据交换;数据定义;电子商务  中图分类号:TP311文献标识码:A文章编号:1
期刊
摘要:XML可作为行业内数据交换的标准表示。XML文档的有效性验证是检查该文档是否遵循行业规定的XML文档格式。在进行数据交换时,首先必须对XML文档表示的数据进行有效性验证。文中主要讨论.NET框架下利用XML Schema对XML文档进行有效性验证的算法。  关键词:XML;XML Schema;有效性验证;.NET框架  中图分类号:TP301 文献标识码:A文章编号:1009-3044(2
期刊
摘要:对基于Lorenz混沌控制同步的保密数据通信的研究,根据所要的傳送信号,将混沌系统中的某一参数加以改变,通过Lorenz控制方法,在混沌系统同步的基础上分别识别出系统的原参数和改变后的参数,进行分析比较后复原传送信号。利用Lyapunov稳定性定理,严格证明了同步方法的正确性。  关键词:混沌同步;Lorenz系统;Lyapunov函数;保密通信;全局指数稳定  中图分类号:TP301文献标
期刊
摘要:为环境领域设计的搜索引擎软件缩写是SEES(Search Engine for Environmental Software),是具有完善的功能的搜索引擎。SEES软件提供管理者功能;使用者功能和创作者功能。所使用的技术是JSP、JavaBeans、JavaScript、SQL。SEES可以成功的运行于Linux和Windows XP系统上。  关键词:Java;搜索引擎;SEES  中图分
期刊
摘要: 本文通过介绍我院校园网网关与认证系统的总体设计过程,并针对校园网的特点,提出了一种新的实用的校园网网关与认证模式,同时具体描述了包括IP转发控制、身份认证、数据库、网关控制模块、流量控制等实现过程。该系统实现了对于用户身份的鉴别,同时保证了对于上层的协议和用户的透明性,用户与IP地址绑定,而且充分利用网络特性能够支持大型网络。系统具有实用、易扩展、灵活、安全、使用方便的特点。  关键词:I
期刊