论文部分内容阅读
缓冲区溢出攻击是一种攻击计算机系统的手段,通过往被攻击程序的缓冲区写入精心安排的超长内容,造成缓冲区溢出、越界,破坏程序执行逻辑,使之转向执行其他指令,从而达到攻击者的目的。该手段由于技术相对简单而获得的攻击效果比较显著,因此成为各国信息战研究热点之一。但是,缓冲区溢出攻击的实现,必须依靠高级语言来进行描述,而高级语言的描述效率直接决定缓冲区溢出攻击的效率,因此研究缓冲区溢出攻击的高级语言描述问题,对于未来的信息战具有重要的理论和现实意义。目前的缓冲区溢出攻击研究,主要集中于探索缓冲区溢出攻击新技术新方法、研究如何突破缓冲区溢出防御和入侵检测等方面,而从攻击者角度专门研究缓冲区溢出攻击描述的则鲜有案例。当前的缓冲区溢出攻击的描述方法,基本上都是针对具体漏洞以及漏洞的相关信息,手工编写利用程序,描述植入代码的构造和发送步骤。这样的描述方式使得攻击描述的效率比较低,攻击描述通用性比较差,难以应用于实际的计算机网络对抗。针对上述问题,本文通过研究当前的攻击语言,分析其不足之处,进而提出一种新的方案:在目前缓冲区溢出攻击方法和技术基础上,抽象出缓冲区溢出攻击一般规律,设计一种专门描述缓冲区溢出攻击的语言。本文以Windows和Linux/Unix下的缓冲区溢出攻击为研究对象,以栈溢出攻击为主设计完成攻击语言,并对该语言进行形式化分析和证明;本研究工作在Windows系统下实现了该语言,并针对Windows和Linux/Unix系统进行攻击实际验证,结果表明BOAL可以不用描述过程,自动生成植入代码并且其在不同系统间具有良好的适用性能。缓冲区溢出攻击语言的研究工作可以概括为以下几个方面:1、介绍论文的研究背景与意义、涉及的相关理论与技术基础,分析国内外在缓冲区溢出攻击及其高级语言描述方面的研究现状,指出它们存在的不足之处。目前的缓冲区溢出攻击描述,描述效率低且其通用性差。目前缓冲区溢出攻击的研究主要集中在研究新技术新方法、如何突破防御、本地及远程攻击等。对于缓冲区溢出攻击描述方面的研究,则几乎集中于入侵检测方面,对于主动攻击的缓冲区攻击描述难以找到相关方面的资料。2、针对缓冲区溢出攻击中存在的问题,分析目前的缓冲区溢出攻击方法以及攻击语言,对本文所涉及的关键技术进行研究,给出一种新的缓冲区溢出攻击思路。缓冲区溢出攻击描述效率低下且通用性差的原因在于:目前的描述工具仍然是采用命令式的高级语言进行过程描述,无法实现过程描述的自动化。而现有的一些攻击描述语言,如STATL,其描述效率高且通用和移植性能好,但是又由于自身的一些原因,不能用于描述缓冲区溢出攻击。本文借鉴STATL的思想,通过研究栈溢出、堆溢出和bss溢出攻击,并在以栈溢出攻击为主的基础上,将缓冲区溢出攻击抽象为植入代码和控制逻辑两个部分,并对其进行详细的分析研究。同时本文对缓冲区溢出攻击语言定义所涉及的语法和语义进行了研究。3、在给定的研究目标和关键技术的分析基础上,构造一种新的缓冲区溢出攻击攻击自动生成模型,设计缓冲区溢出攻击语言BOAL。根据研究目标和设计原则,本文构造了一种新的缓冲区溢出攻击自动生成模型。该模型的核心思想是用缓冲区溢出攻击语言BOAL来描述目标信息以及攻击信息等,然后由给出的编译器进行解释,直接发起攻击。根据构造的模型,设计缓冲区溢出攻击语言BOAL,并对BOAL的语法规则进行形式化分析与证明。4、根据设计的语法和语义规则,运用VC++6.0、Lex和Yacc等开发工具实现缓冲区溢出攻击语言BOAL。随后给出验证用例,分别在Linux/x86、Unix/x86和Windows/x86系统平台上给予验证,并分析实验结果;结果表明BOAL是可行的。最后对本文工作进行总结,提出今后研究工作的方向。