操作了。缓冲区溢出攻击之所以成为一种常见安全攻击手段其原因在于缓冲区溢出漏洞太普遍了,并且易于实现。而且,缓冲区溢出成为远程攻击的主要手段其原因在于缓冲区溢出漏洞给予了攻击者他所想要的一切:植入并且执行攻击代码。被植入的攻击代码以一定的权限运行有缓冲区溢出漏洞的程序,从而得到被攻击主机的控制权。在1998年Li
col
实验室用来评估入侵检测的的5种远程攻击中,有2种是缓冲区溢出。而在1998年CERT的13份建议中,有9份是是与缓冲区溢出有关的,在1999年,至少有半数的建议是和缓冲区溢出有关的。在Bugtraq的调查中,23的被调查者认为缓冲区溢出漏洞是一个很严重的有安全问题。缓冲区溢出漏洞和攻击有很多种形式,会在第二节对他们进行描述和分类。相应地防卫手段也随者攻击方法的不同而不同,将在第四节描述,它的内容包括针对每种攻击类型的有效的防卫手段。二、缓冲区溢出的漏洞和攻击缓冲区溢出的漏洞和攻击缓冲区溢出攻击的目的在于扰乱具有某些特权运行的程序的功能,这样可以使得攻击者取得程序的控制权,如果该程序具有足够的权限,那么整个主机就被控制了。一般而言,攻击者攻击root程序,然后执行类似“execsh”的执行代码来获得root权限的shell。为了达到这个目的,攻击者必须达到如下的两个目标:1在程序的地址空间里安排适当的代码。2通过适当的初始化寄存器和内存,让程序跳转到入侵者安排的地址空间执行。根据这两个目标来对缓冲区溢出攻击进行分类。在二1节,将描述攻击代码是如何放入被攻击程序的地址空间的。在二2节,将介绍攻击者如何使一个程序的缓冲区溢出,并且执行转移到攻击代码(这个就是“溢出”的由来)。在二3节,将综合前两节所讨论的代码安排和控制程序执行流程的技术。二1在程序的地址空间里安排适当的代码的方法有两种在被攻击程序地址空间里安排攻击代码的方法:植入法:1、植入法:攻击者向被攻击的程序输入一个字符串,程序会把这个字符串放到缓冲区里。这个字符串包含的资料是可以在这个被攻击的硬件平台上运行的指令序列。在这里,攻击者用被攻击程序的缓冲区来存放攻击代码。缓
f冲区可以设在任何地方:堆栈(stack,自动变量)、堆(heap,动态分配的内存区)和静态资料区。利用已经存在的代码:2、利用已经存在的代码:有时,攻击者想要的代码已经在被攻击的程序中了,攻击者所要做的只是对代码传递一些参数。比如,攻击代码要求执行“exec“bi
sh””,而r